import type { RuntimeBlock } from "./types.js"; export declare const AGENT_TOOL_OBSERVATION_SCHEMA_VERSION = "agent-tool-observation/0.2"; export interface ToolObservationPayload extends Record { schema_version: typeof AGENT_TOOL_OBSERVATION_SCHEMA_VERSION; kind: "tool_call" | "tool_result"; runtime: string; status: "started" | "completed" | "error"; name?: string; tool_call_id?: string; detail_preview?: string; detail_truncated: boolean; detail_full?: string; detail_full_truncated?: boolean; redacted: boolean; } /** * Project a provider tool envelope into durable learner-preview and teaching-audit evidence. * * Only allowlisted operational argument/result fields survive, credentials are removed, * and paths inside the current workspace become workspace-relative. Other semantic content, * including execution-host paths outside that workspace, stays intact. `detail_preview` is * a bounded feed-sized excerpt; `detail_full` carries the same allowlisted projection at * audit fidelity (deeper walk, larger arrays, 64k chars). Message text, model request IDs, and * arbitrary envelope metadata never cross this boundary. */ export declare function buildToolObservation(block: RuntimeBlock, runtime: string, workspaceDir: string): ToolObservationPayload | null; export declare function toolCallId(raw: unknown, depth?: number): string | undefined;