import type { ChatMessage, ToolCall, ToolResult } from "../../../types.js"; import type { SessionPlan, TaskEvidence } from "../../../store/plan.js"; import type { LooseWorkReceipt, TaskWorkLedger } from "../../task-evidence.js"; export interface ResultFramingPorts { readonly step: number; readonly saveArtifact: (call: ToolCall, output: string) => Promise; readonly setJobArtifact: (path: string) => void; readonly formatContext: (call: ToolCall, result: ToolResult) => string; readonly emitToolResult: (result: ToolResult, contextOutput: string, artifactPath: string | undefined) => void; readonly onToolResult: ((call: ToolCall, result: ToolResult) => void) | undefined; readonly audit: (event: string, payload: Readonly>) => Promise; readonly recordEngagementOutcome: (artifactPath: string | undefined) => Promise; readonly recordLedgerCall: (call: ToolCall, ok: boolean, artifactPath: string | undefined) => void; } export interface FramedResult { readonly result: ToolResult; readonly contextOutput: string; readonly artifactPath: string | undefined; } export declare const frameToolResult: (ports: ResultFramingPorts, call: ToolCall, result: ToolResult) => Promise; export interface WorkCreditPorts { readonly getLedger: () => TaskWorkLedger | null; readonly setLedger: (ledger: TaskWorkLedger | null) => void; readonly bankLooseWork: (receipt: LooseWorkReceipt) => void; readonly persistTaskEvidence: (taskId: string, evidence: TaskEvidence) => Promise; readonly loadPlan: () => Promise; readonly creditId: () => string | undefined; } export declare const creditToolWork: (ports: WorkCreditPorts, call: ToolCall, result: ToolResult) => Promise; export interface FailureReflectionPorts { readonly reflection: () => string | null | undefined; readonly failureCount: () => number; readonly deferMessage: (message: ChatMessage) => void; readonly notify: (level: "info" | "warn", message: string) => void; } export declare const reportToolFailure: (ports: FailureReflectionPorts, ok: boolean) => void;