@agent-inspect/langchain 6.14.0 → 6.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/index.cjs +112 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.mjs +112 -31
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -3
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/metadata.ts","../src/streaming-metadata.ts","../src/tool-identity.ts","../src/persist-intent.ts","../src/invocation-state.ts","../src/parent-reconciliation.ts","../src/trace-persistence.ts","../src/agent-inspect-callback.ts"],"names":["hasActiveContext","getTraceDirFromContext","resolveTraceDir","getCurrentRunId","createRunId","resolveTraceSafetyOptions","createStepId","initializeTraceFile","prepareTraceEventForDisk","writeTraceEvent","isRecord","serializedLabel","BaseCallbackHandler","Redactor","getCurrentCorrelationMetadata","path"],"mappings":"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","file":"index.cjs","sourcesContent":["export interface TokenUsage {\n input?: number;\n output?: number;\n total?: number;\n}\n\ntype LangGraphAlias = {\n out: string;\n aliases: readonly string[];\n};\n\nfunction isRecord(v: unknown): v is Record<string, unknown> {\n return typeof v === \"object\" && v !== null && !Array.isArray(v);\n}\n\nfunction num(v: unknown): number | undefined {\n if (typeof v === \"number\" && Number.isFinite(v)) return v;\n if (typeof v === \"string\" && v.trim() !== \"\") {\n const n = Number(v);\n if (Number.isFinite(n)) return n;\n }\n return undefined;\n}\n\nfunction normalizeTokenShape(raw: Record<string, unknown>): TokenUsage | undefined {\n const input =\n num(raw.promptTokens) ??\n num(raw.inputTokens) ??\n num(raw.input_tokens) ??\n num(raw.prompt_tokens);\n const output =\n num(raw.completionTokens) ??\n num(raw.outputTokens) ??\n num(raw.output_tokens) ??\n num(raw.completion_tokens);\n let total = num(raw.totalTokens) ?? num(raw.total_tokens);\n\n if (total === undefined && input !== undefined && output !== undefined) {\n total = input + output;\n }\n\n if (input === undefined && output === undefined && total === undefined) {\n return undefined;\n }\n\n const out: TokenUsage = {};\n if (input !== undefined) out.input = input;\n if (output !== undefined) out.output = output;\n if (total !== undefined) out.total = total;\n return out;\n}\n\n/** Extract token usage from LangChain / provider-shaped LLM outputs. Never throws. */\nexport function extractTokenUsage(output: unknown): TokenUsage | undefined {\n try {\n if (!isRecord(output)) return undefined;\n\n const candidates: unknown[] = [\n isRecord(output.llmOutput) ? output.llmOutput.tokenUsage : undefined,\n isRecord(output.llmOutput) ? output.llmOutput.estimatedTokenUsage : undefined,\n output.usage_metadata,\n isRecord(output.response_metadata) ? output.response_metadata.tokenUsage : undefined,\n isRecord(output.response_metadata) ? output.response_metadata.token_usage : undefined,\n ];\n\n for (const c of candidates) {\n if (!isRecord(c)) continue;\n const norm = normalizeTokenShape(c);\n if (norm) return norm;\n }\n\n return undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction readLcKwargs(serializedOrOutput: unknown): Record<string, unknown> | undefined {\n if (!isRecord(serializedOrOutput)) return undefined;\n const lc = serializedOrOutput.lc_kwargs ?? serializedOrOutput.kwargs;\n return isRecord(lc) ? lc : undefined;\n}\n\n/** Best-effort model name from serialized LLM / chat model or provider metadata. */\nexport function extractModelName(serializedOrOutput: unknown): string | undefined {\n try {\n const lc = readLcKwargs(serializedOrOutput);\n const fromLc =\n (lc?.model as string | undefined) ??\n (lc?.modelName as string | undefined) ??\n (lc?.model_name as string | undefined);\n\n if (typeof fromLc === \"string\" && fromLc.trim()) return fromLc;\n\n if (isRecord(serializedOrOutput)) {\n for (const k of [\"model\", \"modelName\", \"model_name\"] as const) {\n const v = serializedOrOutput[k];\n if (typeof v === \"string\" && v.trim()) return v;\n }\n const rm = serializedOrOutput.response_metadata;\n if (isRecord(rm)) {\n const m = rm.model_name ?? rm.model;\n if (typeof m === \"string\" && m.trim()) return m;\n }\n const lo = serializedOrOutput.llmOutput;\n if (isRecord(lo)) {\n const m = lo.model_name;\n if (typeof m === \"string\" && m.trim()) return m;\n }\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n/** Safe truncated string preview for logging-style fields. */\nexport function safePreview(value: unknown, maxChars: number): string | undefined {\n try {\n if (maxChars <= 0) return undefined;\n const seen = new WeakSet<object>();\n const json = JSON.stringify(value, (_k, v) => {\n if (typeof v === \"bigint\") return v.toString();\n if (typeof v === \"function\" || typeof v === \"symbol\") return undefined;\n if (typeof v === \"object\" && v !== null) {\n if (seen.has(v)) return \"[Circular]\";\n seen.add(v);\n }\n return v;\n });\n if (json === undefined) return undefined;\n if (json.length <= maxChars) return json;\n return `${json.slice(0, maxChars)}…`;\n } catch {\n try {\n const s = String(value);\n if (s.length <= maxChars) return s;\n return `${s.slice(0, maxChars)}…`;\n } catch {\n return undefined;\n }\n }\n}\n\nconst MAX_METADATA_KEYS = 40;\n\nconst LANGGRAPH_ALIASES: readonly LangGraphAlias[] = [\n { out: \"graphId\", aliases: [\"graphId\", \"graph_id\", \"langgraph_graph_id\"] },\n { out: \"graphName\", aliases: [\"graphName\", \"graph_name\", \"langgraph_graph_name\"] },\n { out: \"nodeId\", aliases: [\"nodeId\", \"node_id\", \"langgraph_node_id\"] },\n { out: \"nodeName\", aliases: [\"nodeName\", \"node_name\", \"langgraph_node\"] },\n { out: \"subgraphId\", aliases: [\"subgraphId\", \"subgraph_id\", \"langgraph_subgraph_id\"] },\n { out: \"subgraphName\", aliases: [\"subgraphName\", \"subgraph_name\", \"langgraph_subgraph\"] },\n { out: \"taskId\", aliases: [\"taskId\", \"task_id\", \"langgraph_task_id\"] },\n { out: \"taskName\", aliases: [\"taskName\", \"task_name\", \"langgraph_task\"] },\n { out: \"graphStep\", aliases: [\"graphStep\", \"graph_step\", \"langgraph_step\"] },\n { out: \"streamMode\", aliases: [\"streamMode\", \"stream_mode\", \"langgraph_stream_mode\"] },\n { out: \"branch\", aliases: [\"branch\", \"branchName\", \"branch_name\", \"langgraph_branch\"] },\n { out: \"branchPath\", aliases: [\"branchPath\", \"branch_path\", \"langgraph_path\"] },\n { out: \"branchIndex\", aliases: [\"branchIndex\", \"branch_index\", \"langgraph_branch_index\"] },\n {\n out: \"parallelGroupId\",\n aliases: [\"parallelGroupId\", \"parallel_group_id\", \"langgraph_parallel_group_id\"],\n },\n { out: \"checkpointId\", aliases: [\"checkpointId\", \"checkpoint_id\", \"langgraph_checkpoint_id\"] },\n {\n out: \"checkpointNamespace\",\n aliases: [\"checkpointNamespace\", \"checkpoint_ns\", \"langgraph_checkpoint_ns\"],\n },\n { out: \"threadId\", aliases: [\"threadId\", \"thread_id\", \"langgraph_thread_id\"] },\n { out: \"sessionId\", aliases: [\"sessionId\", \"session_id\", \"langgraph_session_id\"] },\n { out: \"retryAttempt\", aliases: [\"retryAttempt\", \"retry_attempt\", \"attempt\"] },\n { out: \"handoffFrom\", aliases: [\"handoffFrom\", \"handoff_from\", \"langgraph_handoff_from\"] },\n { out: \"handoffTo\", aliases: [\"handoffTo\", \"handoff_to\", \"langgraph_handoff_to\"] },\n] as const;\n\nconst LANGGRAPH_SUMMARY_ALIASES: readonly LangGraphAlias[] = [\n { out: \"checkpointSummary\", aliases: [\"checkpoint\", \"langgraph_checkpoint\"] },\n { out: \"branchSummary\", aliases: [\"branches\", \"langgraph_branches\", \"langgraph_triggers\"] },\n { out: \"subgraphSummary\", aliases: [\"subgraphs\", \"langgraph_subgraphs\"] },\n { out: \"taskSummary\", aliases: [\"tasks\", \"langgraph_tasks\"] },\n] as const;\n\nfunction boundedValue(value: unknown): unknown {\n if (value === null) return null;\n if (typeof value === \"string\") return value.length <= 200 ? value : `${value.slice(0, 200)}…`;\n if (typeof value === \"number\" || typeof value === \"boolean\") return value;\n if (typeof value === \"bigint\") return value.toString();\n if (Array.isArray(value)) {\n const items = value.slice(0, 10).map((item) => {\n if (item === null) return null;\n if (typeof item === \"string\" || typeof item === \"number\" || typeof item === \"boolean\") {\n return item;\n }\n if (typeof item === \"bigint\") return item.toString();\n return summarizeValue(item);\n });\n return {\n type: \"array\",\n itemCount: value.length,\n items,\n truncated: value.length > items.length ? true : undefined,\n };\n }\n return summarizeValue(value);\n}\n\nfunction summarizeValue(value: unknown): Record<string, unknown> {\n if (Array.isArray(value)) return { type: \"array\", itemCount: value.length };\n if (isRecord(value)) return { type: \"object\", keyCount: Object.keys(value).length };\n return { type: typeof value };\n}\n\nfunction getAliasValue(\n sources: readonly Record<string, unknown>[],\n aliases: readonly string[],\n): unknown {\n for (const source of sources) {\n for (const alias of aliases) {\n if (Object.prototype.hasOwnProperty.call(source, alias)) {\n return source[alias];\n }\n }\n }\n return undefined;\n}\n\n/** Shallow plain metadata: drops functions/symbols; avoids deep nesting. Never throws. */\nexport function toPlainMetadata(value: unknown): Record<string, unknown> {\n try {\n if (!isRecord(value)) return {};\n const out: Record<string, unknown> = {};\n let n = 0;\n for (const [k, v] of Object.entries(value)) {\n if (n >= MAX_METADATA_KEYS) break;\n if (typeof v === \"function\" || typeof v === \"symbol\") continue;\n if (v === null || typeof v === \"string\" || typeof v === \"number\" || typeof v === \"boolean\") {\n out[k] = v;\n n++;\n continue;\n }\n if (typeof v === \"bigint\") {\n out[k] = v.toString();\n n++;\n continue;\n }\n if (Array.isArray(v)) {\n out[k] = `array(${v.length})`;\n n++;\n continue;\n }\n if (isRecord(v)) {\n out[k] = \"[object]\";\n n++;\n continue;\n }\n out[k] = String(v);\n n++;\n }\n return out;\n } catch {\n return {};\n }\n}\n\n/**\n * Extract bounded LangGraph identity metadata from LangChain callback metadata.\n *\n * The helper preserves known graph/node/task/session identifiers and summarizes\n * potentially large graph state containers instead of copying raw state.\n */\nexport function extractLangGraphMetadata(value: unknown): Record<string, unknown> | undefined {\n try {\n if (!isRecord(value)) return undefined;\n const sources: Record<string, unknown>[] = [value];\n for (const key of [\"langgraph\", \"configurable\"] as const) {\n const nested = value[key];\n if (isRecord(nested)) sources.push(nested);\n }\n const langGraph = value.langgraph;\n if (isRecord(langGraph)) {\n const configurable = langGraph.configurable;\n if (isRecord(configurable)) sources.push(configurable);\n const nestedConfig = langGraph.config;\n if (isRecord(nestedConfig) && isRecord(nestedConfig.configurable)) {\n sources.push(nestedConfig.configurable);\n }\n }\n const config = value.config;\n if (isRecord(config) && isRecord(config.configurable)) {\n sources.push(config.configurable);\n }\n\n const out: Record<string, unknown> = {};\n for (const { out: outKey, aliases } of LANGGRAPH_ALIASES) {\n const raw = getAliasValue(sources, aliases);\n if (raw !== undefined) out[outKey] = boundedValue(raw);\n }\n for (const { out: outKey, aliases } of LANGGRAPH_SUMMARY_ALIASES) {\n const raw = getAliasValue(sources, aliases);\n if (raw !== undefined) out[outKey] = summarizeValue(raw);\n }\n\n return Object.keys(out).length > 0 ? out : undefined;\n } catch {\n return undefined;\n }\n}\n","export interface LlmStreamState {\n chunkCount: number;\n firstChunkAt?: number;\n lastChunkAt?: number;\n streamedCharCount: number;\n previewChars: string;\n previewTruncated: boolean;\n}\n\nexport function createLlmStreamState(): LlmStreamState {\n return {\n chunkCount: 0,\n streamedCharCount: 0,\n previewChars: \"\",\n previewTruncated: false,\n };\n}\n\nexport function recordLlmStreamToken(\n state: LlmStreamState,\n token: string,\n now: number,\n maxPreviewChars: number,\n): void {\n state.chunkCount += 1;\n if (state.firstChunkAt === undefined) {\n state.firstChunkAt = now;\n }\n state.lastChunkAt = now;\n\n if (typeof token === \"string\" && token.length > 0) {\n state.streamedCharCount += token.length;\n if (maxPreviewChars > 0) {\n const remaining = maxPreviewChars - state.previewChars.length;\n if (remaining > 0) {\n const slice = token.slice(0, remaining);\n state.previewChars += slice;\n if (token.length > remaining) {\n state.previewTruncated = true;\n }\n } else {\n state.previewTruncated = true;\n }\n }\n }\n}\n\nexport function streamMetadataFromState(\n state: LlmStreamState | undefined,\n options: {\n capturePreview: boolean;\n maxPreviewChars: number;\n },\n): Record<string, unknown> | undefined {\n if (!state || state.chunkCount === 0) {\n return undefined;\n }\n\n const out: Record<string, unknown> = {\n stream: true,\n chunkCount: state.chunkCount,\n streamedCharCount: state.streamedCharCount,\n };\n\n if (state.firstChunkAt !== undefined) {\n out.firstChunkAt = state.firstChunkAt;\n }\n if (state.lastChunkAt !== undefined) {\n out.lastChunkAt = state.lastChunkAt;\n }\n if (\n state.firstChunkAt !== undefined &&\n state.lastChunkAt !== undefined &&\n state.lastChunkAt >= state.firstChunkAt\n ) {\n out.streamDurationMs = state.lastChunkAt - state.firstChunkAt;\n }\n if (state.previewTruncated) {\n out.previewTruncated = true;\n }\n\n if (options.capturePreview && state.previewChars.length > 0) {\n const preview =\n state.previewChars.length <= options.maxPreviewChars\n ? state.previewChars\n : `${state.previewChars.slice(0, options.maxPreviewChars)}…`;\n out.streamPreview = preview;\n if (state.previewChars.length > options.maxPreviewChars) {\n out.previewTruncated = true;\n }\n }\n\n return out;\n}\n","/**\n * Human-meaningful tool identity vs implementation class.\n *\n * @experimental Part of the v6.8 fidelity contract.\n * @see docs/LANGGRAPH-FIDELITY.md\n */\n\nimport type { Serialized } from \"@langchain/core/load/serializable\";\n\nexport interface ToolIdentity {\n /** Human display name used in `tool:<name>` step labels. */\n readonly displayName: string;\n /** Same as displayName; canonical attribute for contracts/search. */\n readonly toolName: string;\n /** Serialized implementation class / id (e.g. DynamicStructuredTool). */\n readonly toolClass?: string;\n readonly toolCallId?: string;\n /** Original LangChain `runName` when present. */\n readonly frameworkRunName?: string;\n}\n\nfunction serializedLabel(s: Serialized): string | undefined {\n if (typeof s.name === \"string\" && s.name.trim()) return s.name.trim();\n if (Array.isArray(s.id) && s.id.length > 0) {\n const last = s.id[s.id.length - 1];\n if (typeof last === \"string\" && last.trim()) return last.trim();\n }\n return typeof s.type === \"string\" && s.type.trim() ? s.type.trim() : undefined;\n}\n\nfunction nonEmpty(value: unknown): string | undefined {\n if (typeof value !== \"string\") return undefined;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\n/**\n * Precedence: runName → metadata.toolName → metadata.tool → serialized name → unknown-tool.\n * Implementation class is preserved separately when it differs from the display name.\n */\nexport function resolveToolIdentity(\n tool: Serialized,\n runName?: string,\n metadata?: Record<string, unknown>,\n toolCallId?: string,\n): ToolIdentity {\n const frameworkRunName = nonEmpty(runName);\n const metaToolName = nonEmpty(metadata?.toolName);\n const metaTool = nonEmpty(metadata?.tool);\n const classLabel = serializedLabel(tool);\n const callId =\n nonEmpty(toolCallId) ??\n nonEmpty(metadata?.toolCallId) ??\n nonEmpty(metadata?.tool_call_id);\n\n const displayName =\n frameworkRunName ?? metaToolName ?? metaTool ?? classLabel ?? \"unknown-tool\";\n\n return {\n displayName,\n toolName: displayName,\n ...(classLabel && classLabel !== displayName ? { toolClass: classLabel } : {}),\n ...(callId ? { toolCallId: callId } : {}),\n ...(frameworkRunName ? { frameworkRunName } : {}),\n };\n}\n\n/** Attach identity fields onto step attributes (mutates). */\nexport function applyToolIdentityAttributes(\n attrs: Record<string, unknown>,\n identity: ToolIdentity,\n): void {\n attrs.tool = identity.displayName;\n attrs.toolName = identity.toolName;\n if (identity.toolClass) attrs.toolClass = identity.toolClass;\n if (identity.toolCallId) attrs.toolCallId = identity.toolCallId;\n if (identity.frameworkRunName) attrs.frameworkRunName = identity.frameworkRunName;\n}\n","/**\n * Persist-by-intent resolution for AgentInspectCallback.\n *\n * @experimental Part of the v6.8 fidelity contract.\n */\n\nexport interface PersistIntentInput {\n readonly persist?: boolean;\n readonly traceDir?: string;\n}\n\nexport interface PersistIntent {\n readonly persist: boolean;\n /** True when traceDir was set while persist was explicitly false. */\n readonly contradictory: boolean;\n}\n\n/**\n * - traceDir provided + persist omitted → persist\n * - traceDir absent + persist omitted → in-memory\n * - persist false → in-memory (even if traceDir set)\n * - persist true → persist (default or supplied dir)\n */\nexport function resolvePersistIntent(input: PersistIntentInput): PersistIntent {\n const hasTraceDir =\n typeof input.traceDir === \"string\" && input.traceDir.trim().length > 0;\n const explicit = input.persist;\n\n if (explicit === false) {\n return { persist: false, contradictory: hasTraceDir };\n }\n if (explicit === true) {\n return { persist: true, contradictory: false };\n }\n return { persist: hasTraceDir, contradictory: false };\n}\n","/**\n * Per-invocation lifecycle state for LangChain/LangGraph callback persistence.\n *\n * @experimental Part of the v6.8 fidelity contract. Subject to refinement.\n * @see docs/LANGGRAPH-FIDELITY.md\n */\n\nexport interface ActiveCallbackRun {\n readonly lcRunId: string;\n readonly parentLcRunId?: string;\n readonly startedAt: number;\n stepId?: string;\n kind?: string;\n}\n\nexport interface PendingRelationship {\n readonly childLcRunId: string;\n readonly parentLcRunId: string;\n readonly reason: \"unobserved-parent\";\n}\n\nexport interface StructuredAdapterError {\n readonly message: string;\n}\n\n/**\n * One AgentInspect envelope (standalone invocation) of callback activity.\n */\nexport interface AdapterInvocationState {\n envelopeRunId: string;\n readonly activeRuns: Map<string, ActiveCallbackRun>;\n readonly endedRuns: Set<string>;\n /** childLcRunId → parentLcRunId when the parent was an observed callback run. */\n readonly knownRelationships: Map<string, string>;\n readonly pendingRelationships: PendingRelationship[];\n terminalError?: StructuredAdapterError;\n /** Bumped on each start/end that invalidates a deferred finalize. */\n completionGeneration: number;\n envelopeStarted: boolean;\n finalized: boolean;\n runStartTime?: number;\n}\n\nexport function createInvocationState(envelopeRunId: string): AdapterInvocationState {\n return {\n envelopeRunId,\n activeRuns: new Map(),\n endedRuns: new Set(),\n knownRelationships: new Map(),\n pendingRelationships: [],\n completionGeneration: 0,\n envelopeStarted: false,\n finalized: false,\n };\n}\n\n/** True when `parentLcRunId` matches a callback run already observed in this invocation. */\nexport function isObservedCallbackRun(\n state: AdapterInvocationState,\n parentLcRunId: string,\n): boolean {\n return state.activeRuns.has(parentLcRunId) || state.endedRuns.has(parentLcRunId);\n}\n\n/**\n * Record a callback start. Bumps completion generation.\n * Explicit parents are recorded only when the parent run was already observed.\n */\nexport function beginCallbackRun(\n state: AdapterInvocationState,\n input: {\n lcRunId: string;\n parentLcRunId?: string;\n startedAt: number;\n kind?: string;\n stepId?: string;\n },\n): ActiveCallbackRun {\n state.completionGeneration += 1;\n const run: ActiveCallbackRun = {\n lcRunId: input.lcRunId,\n ...(input.parentLcRunId !== undefined ? { parentLcRunId: input.parentLcRunId } : {}),\n startedAt: input.startedAt,\n ...(input.kind !== undefined ? { kind: input.kind } : {}),\n ...(input.stepId !== undefined ? { stepId: input.stepId } : {}),\n };\n state.activeRuns.set(input.lcRunId, run);\n\n if (input.parentLcRunId !== undefined) {\n if (isObservedCallbackRun(state, input.parentLcRunId)) {\n state.knownRelationships.set(input.lcRunId, input.parentLcRunId);\n } else {\n state.pendingRelationships.push({\n childLcRunId: input.lcRunId,\n parentLcRunId: input.parentLcRunId,\n reason: \"unobserved-parent\",\n });\n }\n }\n\n return run;\n}\n\n/**\n * Record a callback end. Returns false when the run was not active (late/duplicate end).\n * Bumps completion generation when a live run ends.\n */\nexport function endCallbackRun(\n state: AdapterInvocationState,\n lcRunId: string,\n): { ended: boolean; late: boolean } {\n const active = state.activeRuns.get(lcRunId);\n if (active === undefined) {\n if (state.endedRuns.has(lcRunId) || state.finalized) {\n return { ended: false, late: true };\n }\n // End without a prior start — treat as late/orphan for diagnostics (caller may synthesize).\n return { ended: false, late: true };\n }\n\n state.completionGeneration += 1;\n state.activeRuns.delete(lcRunId);\n state.endedRuns.add(lcRunId);\n return { ended: true, late: false };\n}\n\nexport function markEnvelopeStarted(\n state: AdapterInvocationState,\n startTime: number,\n): boolean {\n if (state.envelopeStarted) return false;\n state.envelopeStarted = true;\n state.runStartTime = startTime;\n return true;\n}\n\n/** Idempotent finalize mark. Returns true the first time finalize is accepted. */\nexport function markFinalized(state: AdapterInvocationState): boolean {\n if (state.finalized) return false;\n if (!state.envelopeStarted) return false;\n state.finalized = true;\n return true;\n}\n\nexport function noteTerminalError(\n state: AdapterInvocationState,\n message: string,\n): void {\n state.terminalError = { message };\n}\n\nexport function canScheduleFinalize(state: AdapterInvocationState): boolean {\n return (\n state.envelopeStarted &&\n !state.finalized &&\n state.activeRuns.size === 0\n );\n}\n\nexport function bumpCompletionGeneration(state: AdapterInvocationState): number {\n state.completionGeneration += 1;\n return state.completionGeneration;\n}\n\nexport function resetInvocationState(\n state: AdapterInvocationState,\n nextEnvelopeRunId?: string,\n): void {\n state.activeRuns.clear();\n state.endedRuns.clear();\n state.knownRelationships.clear();\n state.pendingRelationships.length = 0;\n state.terminalError = undefined;\n state.completionGeneration += 1;\n state.envelopeStarted = false;\n state.finalized = false;\n state.runStartTime = undefined;\n if (nextEnvelopeRunId !== undefined) {\n state.envelopeRunId = nextEnvelopeRunId;\n }\n}\n","/**\n * Conservative parent reconciliation for LangChain/LangGraph callbacks.\n *\n * Precedence: exact run ID → LangGraph metadata → unique semantic label → unresolved.\n * Never invents parent edges from timestamps alone.\n *\n * @experimental Part of the v6.8 fidelity contract.\n * @see docs/LANGGRAPH-FIDELITY.md\n */\n\nexport type ParentMappingKind =\n | \"exact\"\n | \"langgraph-metadata\"\n | \"semantic-name\"\n | \"synthetic-group\"\n | \"unresolved\";\n\nexport type ParentConfidence = \"explicit\" | \"correlated\" | \"synthetic\" | \"unresolved\";\n\nexport interface ParentResolution {\n readonly parentStepId?: string;\n readonly confidence: ParentConfidence;\n readonly parentMapping: ParentMappingKind;\n /** Observed when parentLcRunId looks like a framework semantic label. */\n readonly semanticParentLabel?: string;\n readonly unresolvedParentRunId?: string;\n /** Which LangGraph key produced a metadata correlation. */\n readonly correlatedVia?: string;\n}\n\n/** Framework labels commonly seen as LangGraph `parentRunId` without a callback run. */\nexport const WELL_KNOWN_SEMANTIC_PARENTS: ReadonlySet<string> = new Set([\n \"LangGraph\",\n \"__start__\",\n \"__end__\",\n]);\n\nexport function isSemanticParentLabel(parentLcRunId: string): boolean {\n if (WELL_KNOWN_SEMANTIC_PARENTS.has(parentLcRunId)) return true;\n // LangGraph internal double-underscore tokens\n return parentLcRunId.startsWith(\"__\") && parentLcRunId.endsWith(\"__\");\n}\n\nexport interface ParentLookupTables {\n /** LangChain callback runId → AgentInspect stepId */\n readonly exactStepByLcRunId: (lcRunId: string) => string | undefined;\n /**\n * Unique index lookup. Must return undefined when zero or multiple matches\n * (ambiguity must not invent a parent).\n */\n readonly uniqueStepByLangGraphKey: (\n key: string,\n value: string,\n ) => string | undefined;\n /** Unique step whose semantic label / run name matches. */\n readonly uniqueStepBySemanticLabel: (label: string) => string | undefined;\n}\n\nconst LANGGRAPH_PARENT_KEYS = [\n \"handoffFrom\",\n \"taskId\",\n \"nodeId\",\n \"nodeName\",\n \"checkpointNamespace\",\n] as const;\n\nfunction langGraphRecord(\n attributes: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n const lg = attributes?.langGraph;\n if (typeof lg !== \"object\" || lg === null || Array.isArray(lg)) return undefined;\n return lg as Record<string, unknown>;\n}\n\n/**\n * Resolve a parent for a new step without fabricating hierarchy.\n */\nexport function resolveParentRelationship(\n input: {\n parentLcRunId?: string;\n attributes?: Record<string, unknown>;\n },\n lookup: ParentLookupTables,\n): ParentResolution {\n const parentLcRunId = input.parentLcRunId;\n\n // 1. Exact parent run ID\n if (parentLcRunId) {\n const exact = lookup.exactStepByLcRunId(parentLcRunId);\n if (exact) {\n return {\n parentStepId: exact,\n confidence: \"explicit\",\n parentMapping: \"exact\",\n };\n }\n }\n\n // 2. Explicit LangGraph metadata relationship (unique keys only)\n const lg = langGraphRecord(input.attributes);\n if (lg) {\n for (const key of LANGGRAPH_PARENT_KEYS) {\n // Prefer dedicated parent-like keys first; taskId/nodeName on the child\n // describe the child itself — only handoffFrom / checkpointNamespace are\n // parent pointers. Keep taskId/nodeId/nodeName for *parent* correlation\n // only when they appear as handoff targets (handled via handoffFrom).\n if (key !== \"handoffFrom\" && key !== \"checkpointNamespace\") continue;\n const raw = lg[key];\n if (typeof raw !== \"string\" || !raw.trim()) continue;\n const stepId = lookup.uniqueStepByLangGraphKey(key === \"handoffFrom\" ? \"taskId\" : key, raw);\n // Also try matching handoffFrom against nodeName when taskId misses.\n const matched =\n stepId ??\n (key === \"handoffFrom\"\n ? lookup.uniqueStepByLangGraphKey(\"nodeName\", raw) ??\n lookup.uniqueStepByLangGraphKey(\"nodeId\", raw)\n : undefined);\n if (matched) {\n return {\n parentStepId: matched,\n confidence: \"correlated\",\n parentMapping: \"langgraph-metadata\",\n correlatedVia: key,\n };\n }\n }\n }\n\n // 3. Unique semantic-name correlation (e.g. parentRunId === \"__start__\")\n if (parentLcRunId && isSemanticParentLabel(parentLcRunId)) {\n const semantic = lookup.uniqueStepBySemanticLabel(parentLcRunId);\n if (semantic) {\n return {\n parentStepId: semantic,\n confidence: \"correlated\",\n parentMapping: \"semantic-name\",\n semanticParentLabel: parentLcRunId,\n };\n }\n return {\n confidence: \"unresolved\",\n parentMapping: \"unresolved\",\n semanticParentLabel: parentLcRunId,\n unresolvedParentRunId: parentLcRunId,\n };\n }\n\n // 5. Unresolved and visible (unobserved callback / external id)\n if (parentLcRunId) {\n return {\n confidence: \"unresolved\",\n parentMapping: \"unresolved\",\n unresolvedParentRunId: parentLcRunId,\n };\n }\n\n // No parent reference — root-like step (not unresolved).\n return {\n confidence: \"explicit\",\n parentMapping: \"exact\",\n };\n}\n\n/** Apply resolution fields onto step metadata (mutates). */\nexport function applyParentResolutionMetadata(\n metadata: Record<string, unknown>,\n resolution: ParentResolution,\n): void {\n const hasParentSignal =\n Boolean(resolution.parentStepId) ||\n Boolean(resolution.unresolvedParentRunId) ||\n Boolean(resolution.semanticParentLabel) ||\n Boolean(resolution.correlatedVia);\n if (!hasParentSignal) return;\n\n metadata.parentMapping = resolution.parentMapping;\n metadata.parentConfidence = resolution.confidence;\n if (resolution.semanticParentLabel) {\n metadata.semanticParentLabel = resolution.semanticParentLabel;\n }\n if (resolution.unresolvedParentRunId) {\n metadata.unresolvedParentRunId = resolution.unresolvedParentRunId;\n }\n if (resolution.correlatedVia) {\n metadata.parentCorrelatedVia = resolution.correlatedVia;\n }\n if (resolution.parentMapping === \"synthetic-group\") {\n metadata.synthetic = true;\n }\n}\n","import {\n createRunId,\n createStepId,\n getCurrentRunId,\n getTraceDirFromContext,\n hasActiveContext,\n initializeTraceFile,\n prepareTraceEventForDisk,\n resolveTraceDir,\n resolveTraceSafetyOptions,\n writeTraceEvent,\n type InspectKind,\n type StepMetadata,\n type StepType,\n type TraceEvent,\n} from \"agent-inspect/advanced\";\nimport type { RedactionRule } from \"agent-inspect/logs\";\nimport {\n beginCallbackRun,\n bumpCompletionGeneration,\n canScheduleFinalize,\n createInvocationState,\n endCallbackRun,\n markEnvelopeStarted,\n markFinalized,\n noteTerminalError,\n resetInvocationState,\n type AdapterInvocationState,\n} from \"./invocation-state.js\";\nimport {\n applyParentResolutionMetadata,\n resolveParentRelationship,\n type ParentResolution,\n} from \"./parent-reconciliation.js\";\n\nexport interface LangChainTracePersistenceOptions {\n runName?: string;\n traceDir?: string;\n runId?: string;\n redact?: RedactionRule[];\n silent?: boolean;\n maxPreviewChars?: number;\n}\n\n/** Options for explicit envelope finalization (serverless / unusual callback shapes). */\nexport interface FinalizeOptions {\n status?: \"success\" | \"error\";\n errorMessage?: string;\n endTime?: number;\n}\n\n/** Bounded persistence diagnostics (no absolute paths / customer payloads). */\nexport interface AdapterPersistenceDiagnostics {\n readonly lateEventCount: number;\n readonly activeRunCount: number;\n readonly endedRunCount: number;\n readonly pendingRelationshipCount: number;\n readonly knownRelationshipCount: number;\n readonly syntheticGroupCount: number;\n readonly envelopeStarted: boolean;\n readonly finalized: boolean;\n readonly completionGeneration: number;\n readonly hasTerminalError: boolean;\n}\n\nfunction kindToStepType(kind: InspectKind): StepType {\n switch (kind) {\n case \"LLM\":\n return \"llm\";\n case \"TOOL\":\n return \"tool\";\n case \"DECISION\":\n return \"decision\";\n default:\n return \"logic\";\n }\n}\n\nfunction toStepMetadata(attrs: Record<string, unknown>): StepMetadata {\n const out: StepMetadata = {\n adapter: \"langchain\",\n confidence: \"explicit\",\n };\n for (const [k, v] of Object.entries(attrs)) {\n out[k] = v;\n }\n return out;\n}\n\n/**\n * Maps LangChain callback lifecycle to schemaVersion \"0.1\" manual JSONL events.\n * One callback session creates one standalone run; inside inspectRun, steps append to the active run.\n *\n * Standalone envelope completion is driven by {@link AdapterInvocationState}\n * (activeRuns / completionGeneration / finalized) — not by empty parentRunId heuristics.\n */\nexport class LangChainTracePersistence {\n readonly #traceDir: string;\n #runId: string;\n readonly #runName: string;\n readonly #standalone: boolean;\n readonly #silent: boolean;\n readonly #safety: ReturnType<typeof resolveTraceSafetyOptions>;\n readonly #lifecycle: AdapterInvocationState;\n readonly #lcToStepId = new Map<string, string>();\n /** `${field}\\0${value}` → stepId, or null when ambiguous. */\n readonly #langGraphIndex = new Map<string, string | null>();\n /** Semantic / display label → stepId, or null when ambiguous. */\n readonly #semanticLabelIndex = new Map<string, string | null>();\n /** Semantic label → synthetic step id (created once ≥2 siblings share the label). */\n readonly #syntheticByLabel = new Map<string, string>();\n /** Count of unresolved semantic-parent children seen per label (this invocation). */\n readonly #semanticParentCounts = new Map<string, number>();\n #lateEventCount = 0;\n\n constructor(options: LangChainTracePersistenceOptions = {}) {\n const inContext = hasActiveContext();\n this.#standalone = !inContext;\n this.#silent = options.silent ?? false;\n this.#traceDir = inContext\n ? (getTraceDirFromContext() ?? resolveTraceDir({ dir: options.traceDir }))\n : resolveTraceDir({ dir: options.traceDir });\n const contextRunId = inContext ? getCurrentRunId() : undefined;\n this.#runId = contextRunId ?? options.runId ?? createRunId();\n this.#runName = options.runName ?? \"langchain-agent\";\n this.#safety = resolveTraceSafetyOptions({\n redact: options.redact ? { rules: options.redact } : true,\n maxPreviewLength: options.maxPreviewChars,\n });\n this.#lifecycle = createInvocationState(this.#runId);\n }\n\n get runId(): string {\n return this.#runId;\n }\n\n get traceDir(): string {\n return this.#traceDir;\n }\n\n /** @internal Test / diagnostics access to per-invocation lifecycle. */\n get lifecycle(): Readonly<AdapterInvocationState> {\n return this.#lifecycle;\n }\n\n /** Count of end/start events ignored after finalize (diagnostics). */\n get lateEventCount(): number {\n return this.#lateEventCount;\n }\n\n /** Bounded adapter diagnostics for CLI/MCP summaries (no filesystem paths). */\n getDiagnostics(): AdapterPersistenceDiagnostics {\n return {\n lateEventCount: this.#lateEventCount,\n activeRunCount: this.#lifecycle.activeRuns.size,\n endedRunCount: this.#lifecycle.endedRuns.size,\n pendingRelationshipCount: this.#lifecycle.pendingRelationships.length,\n knownRelationshipCount: this.#lifecycle.knownRelationships.size,\n syntheticGroupCount: this.#syntheticByLabel.size,\n envelopeStarted: this.#lifecycle.envelopeStarted,\n finalized: this.#lifecycle.finalized,\n completionGeneration: this.#lifecycle.completionGeneration,\n hasTerminalError: Boolean(this.#lifecycle.terminalError),\n };\n }\n\n /**\n * Start a fresh envelope after a prior invocation finalized (callback reuse).\n * Allocates a new run id unless still nested in an inspectRun context.\n */\n beginNewInvocation(): void {\n if (hasActiveContext()) {\n const ctxId = getCurrentRunId();\n if (ctxId) {\n this.#runId = ctxId;\n resetInvocationState(this.#lifecycle, this.#runId);\n this.#clearStepIndexes();\n this.#lateEventCount = 0;\n return;\n }\n }\n this.#runId = createRunId();\n resetInvocationState(this.#lifecycle, this.#runId);\n this.#clearStepIndexes();\n this.#lateEventCount = 0;\n }\n\n reset(): void {\n resetInvocationState(this.#lifecycle);\n this.#clearStepIndexes();\n this.#lateEventCount = 0;\n }\n\n #clearStepIndexes(): void {\n this.#lcToStepId.clear();\n this.#langGraphIndex.clear();\n this.#semanticLabelIndex.clear();\n this.#syntheticByLabel.clear();\n this.#semanticParentCounts.clear();\n }\n\n #registerUnique(\n index: Map<string, string | null>,\n key: string,\n stepId: string,\n ): void {\n if (!index.has(key)) {\n index.set(key, stepId);\n return;\n }\n if (index.get(key) !== stepId) {\n index.set(key, null);\n }\n }\n\n #langGraphIndexKey(field: string, value: string): string {\n return `${field}\\0${value}`;\n }\n\n #registerStepIndexes(\n stepId: string,\n name: string,\n attributes: Record<string, unknown>,\n ): void {\n const labels = new Set<string>([name]);\n const stripped = name.replace(/^(chain|tool|llm|retriever|agent):/, \"\");\n if (stripped) labels.add(stripped);\n for (const label of labels) {\n this.#registerUnique(this.#semanticLabelIndex, label, stepId);\n }\n\n const lg = attributes.langGraph;\n if (typeof lg === \"object\" && lg !== null && !Array.isArray(lg)) {\n const record = lg as Record<string, unknown>;\n for (const field of [\n \"taskId\",\n \"nodeId\",\n \"nodeName\",\n \"checkpointNamespace\",\n ] as const) {\n const raw = record[field];\n if (typeof raw === \"string\" && raw.trim()) {\n this.#registerUnique(\n this.#langGraphIndex,\n this.#langGraphIndexKey(field, raw),\n stepId,\n );\n }\n }\n }\n }\n\n #resolveParent(\n parentLcRunId: string | undefined,\n attributes: Record<string, unknown>,\n ): ParentResolution {\n return resolveParentRelationship(\n { parentLcRunId, attributes },\n {\n exactStepByLcRunId: (lcRunId) => this.#lcToStepId.get(lcRunId),\n uniqueStepByLangGraphKey: (key, value) => {\n const hit = this.#langGraphIndex.get(this.#langGraphIndexKey(key, value));\n return hit === null || hit === undefined ? undefined : hit;\n },\n uniqueStepBySemanticLabel: (label) => {\n const hit = this.#semanticLabelIndex.get(label);\n return hit === null || hit === undefined ? undefined : hit;\n },\n },\n );\n }\n\n /**\n * When ≥2 steps share the same unresolved semantic parent label, emit one\n * synthetic grouping node and attach this (and later) siblings under it.\n * The first sibling remains unresolved (append-only JSONL cannot rewrite it).\n */\n async #maybeAttachSyntheticGroup(\n resolution: ParentResolution,\n startTime: number,\n ): Promise<ParentResolution> {\n const label = resolution.semanticParentLabel;\n if (\n resolution.parentMapping !== \"unresolved\" ||\n !label ||\n resolution.parentStepId\n ) {\n return resolution;\n }\n\n const existing = this.#syntheticByLabel.get(label);\n if (existing) {\n return {\n parentStepId: existing,\n confidence: \"synthetic\",\n parentMapping: \"synthetic-group\",\n semanticParentLabel: label,\n unresolvedParentRunId: label,\n };\n }\n\n const nextCount = (this.#semanticParentCounts.get(label) ?? 0) + 1;\n this.#semanticParentCounts.set(label, nextCount);\n if (nextCount < 2) {\n return resolution;\n }\n\n const syntheticStepId = createStepId();\n this.#syntheticByLabel.set(label, syntheticStepId);\n const metadata: StepMetadata = {\n adapter: \"langchain\",\n confidence: \"synthetic\",\n synthetic: true,\n parentMapping: \"synthetic-group\",\n parentConfidence: \"synthetic\",\n semanticParentLabel: label,\n unresolvedParentRunId: label,\n };\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_started\",\n timestamp: startTime,\n runId: this.#runId,\n stepId: syntheticStepId,\n name: `synthetic:${label}`,\n type: \"logic\",\n startTime,\n metadata,\n };\n await this.#write(event);\n\n return {\n parentStepId: syntheticStepId,\n confidence: \"synthetic\",\n parentMapping: \"synthetic-group\",\n semanticParentLabel: label,\n unresolvedParentRunId: label,\n };\n }\n\n /** Rotate when a prior standalone invocation already finalized. */\n #prepareForStart(): void {\n if (this.#standalone && this.#lifecycle.finalized) {\n this.beginNewInvocation();\n }\n }\n\n /**\n * @deprecated Root-ID heuristics are no longer used for envelope completion.\n * Retained as a no-op for call-site compatibility during the v6.8 train.\n */\n noteRoot(_lcRunId: string, _parentRunId?: string): void {\n // Intentionally empty — completion uses activeRuns lifecycle state.\n }\n\n resolveParentId(lcParentRunId?: string): string | undefined {\n if (!lcParentRunId) return undefined;\n return this.#lcToStepId.get(lcParentRunId);\n }\n\n async onStepStart(params: {\n lcRunId: string;\n lcParentRunId?: string;\n name: string;\n kind: InspectKind;\n startTime: number;\n attributes: Record<string, unknown>;\n }): Promise<void> {\n try {\n this.#prepareForStart();\n const stepId = createStepId();\n this.#lcToStepId.set(params.lcRunId, stepId);\n this.#registerStepIndexes(stepId, params.name, params.attributes);\n beginCallbackRun(this.#lifecycle, {\n lcRunId: params.lcRunId,\n parentLcRunId: params.lcParentRunId,\n startedAt: params.startTime,\n kind: params.kind,\n stepId,\n });\n\n if (this.#standalone && !this.#lifecycle.envelopeStarted) {\n await this.#ensureRunStarted(params.startTime, params.attributes);\n }\n\n const resolution = await this.#maybeAttachSyntheticGroup(\n this.#resolveParent(params.lcParentRunId, params.attributes),\n params.startTime,\n );\n const metadata = toStepMetadata(params.attributes);\n applyParentResolutionMetadata(metadata, resolution);\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_started\",\n timestamp: params.startTime,\n runId: this.#runId,\n stepId,\n ...(resolution.parentStepId ? { parentId: resolution.parentStepId } : {}),\n name: params.name,\n type: kindToStepType(params.kind),\n startTime: params.startTime,\n metadata,\n };\n\n await this.#write(event);\n } catch (err) {\n this.#warn(err);\n }\n }\n\n async onStepEnd(params: {\n lcRunId: string;\n lcParentRunId?: string;\n endTime: number;\n durationMs?: number;\n status: \"success\" | \"error\";\n errorMessage?: string;\n completionAttributes?: Record<string, unknown>;\n }): Promise<void> {\n try {\n if (\n this.#lifecycle.finalized &&\n !this.#lifecycle.activeRuns.has(params.lcRunId) &&\n !this.#lcToStepId.has(params.lcRunId)\n ) {\n this.#lateEventCount += 1;\n return;\n }\n\n let stepId = this.#lcToStepId.get(params.lcRunId);\n if (!stepId && params.completionAttributes) {\n if (this.#lifecycle.finalized) {\n this.#lateEventCount += 1;\n return;\n }\n stepId = createStepId();\n this.#lcToStepId.set(params.lcRunId, stepId);\n const synthName = String(params.completionAttributes.name ?? \"llm:llm\");\n this.#registerStepIndexes(stepId, synthName, params.completionAttributes);\n beginCallbackRun(this.#lifecycle, {\n lcRunId: params.lcRunId,\n parentLcRunId: params.lcParentRunId,\n startedAt: params.endTime - (params.durationMs ?? 0),\n kind:\n (params.completionAttributes.kind as InspectKind | undefined) ?? \"LLM\",\n stepId,\n });\n const startTime = params.endTime - (params.durationMs ?? 0);\n const resolution = await this.#maybeAttachSyntheticGroup(\n this.#resolveParent(params.lcParentRunId, params.completionAttributes),\n startTime,\n );\n const metadata = toStepMetadata(params.completionAttributes);\n applyParentResolutionMetadata(metadata, resolution);\n const started: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_started\",\n timestamp: startTime,\n runId: this.#runId,\n stepId,\n ...(resolution.parentStepId ? { parentId: resolution.parentStepId } : {}),\n name: synthName,\n type: kindToStepType(\n (params.completionAttributes.kind as InspectKind | undefined) ?? \"LLM\",\n ),\n startTime,\n metadata,\n };\n if (this.#standalone && !this.#lifecycle.envelopeStarted) {\n await this.#ensureRunStarted(startTime, params.completionAttributes);\n }\n await this.#write(started);\n }\n if (!stepId) return;\n\n const durationMs =\n typeof params.durationMs === \"number\" && Number.isFinite(params.durationMs)\n ? Math.max(0, Math.floor(params.durationMs))\n : Math.max(\n 0,\n params.endTime - (this.#lifecycle.runStartTime ?? params.endTime),\n );\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_completed\",\n timestamp: params.endTime,\n runId: this.#runId,\n stepId,\n status: params.status,\n endTime: params.endTime,\n durationMs,\n ...(params.status === \"error\" && params.errorMessage\n ? { error: { message: params.errorMessage } }\n : {}),\n };\n\n await this.#write(event);\n\n if (params.status === \"error\") {\n noteTerminalError(\n this.#lifecycle,\n params.errorMessage ?? \"adapter step error\",\n );\n }\n endCallbackRun(this.#lifecycle, params.lcRunId);\n await this.#scheduleStandaloneFinalization(params.endTime);\n } catch (err) {\n this.#warn(err);\n }\n }\n\n /** Point-in-time adapter events (e.g. agent action) — writes start + completed pair. */\n async onInstantStep(params: {\n lcRunId: string;\n lcParentRunId?: string;\n name: string;\n kind: InspectKind;\n timestamp: number;\n attributes: Record<string, unknown>;\n status: \"success\" | \"error\";\n errorMessage?: string;\n }): Promise<void> {\n try {\n this.#prepareForStart();\n const stepId = createStepId();\n this.#lcToStepId.set(params.lcRunId, stepId);\n this.#registerStepIndexes(stepId, params.name, params.attributes);\n beginCallbackRun(this.#lifecycle, {\n lcRunId: params.lcRunId,\n parentLcRunId: params.lcParentRunId,\n startedAt: params.timestamp,\n kind: params.kind,\n stepId,\n });\n\n if (this.#standalone && !this.#lifecycle.envelopeStarted) {\n await this.#ensureRunStarted(params.timestamp, params.attributes);\n }\n\n const resolution = await this.#maybeAttachSyntheticGroup(\n this.#resolveParent(params.lcParentRunId, params.attributes),\n params.timestamp,\n );\n const metadata = toStepMetadata(params.attributes);\n applyParentResolutionMetadata(metadata, resolution);\n\n const started: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_started\",\n timestamp: params.timestamp,\n runId: this.#runId,\n stepId,\n ...(resolution.parentStepId ? { parentId: resolution.parentStepId } : {}),\n name: params.name,\n type: kindToStepType(params.kind),\n startTime: params.timestamp,\n metadata,\n };\n await this.#write(started);\n\n const completed: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_completed\",\n timestamp: params.timestamp,\n runId: this.#runId,\n stepId,\n status: params.status,\n endTime: params.timestamp,\n durationMs: 0,\n ...(params.status === \"error\" && params.errorMessage\n ? { error: { message: params.errorMessage } }\n : {}),\n };\n await this.#write(completed);\n\n if (params.status === \"error\") {\n noteTerminalError(\n this.#lifecycle,\n params.errorMessage ?? \"adapter step error\",\n );\n }\n endCallbackRun(this.#lifecycle, params.lcRunId);\n await this.#scheduleStandaloneFinalization(params.timestamp);\n } catch (err) {\n this.#warn(err);\n }\n }\n\n /**\n * Drain deferred microtask finalization. Idempotent; never throws to callers.\n * @experimental\n */\n async flush(): Promise<void> {\n try {\n await Promise.resolve();\n await Promise.resolve();\n } catch (err) {\n this.#warn(err);\n }\n }\n\n /**\n * Force-complete the standalone envelope when safe/started.\n * Works even if active callback runs remain (unusual framework shapes / serverless).\n * Idempotent; never throws to callers.\n * @experimental\n */\n async finalize(options: FinalizeOptions = {}): Promise<boolean> {\n try {\n if (!this.#standalone) return false;\n if (this.#lifecycle.finalized) return false;\n if (!this.#lifecycle.envelopeStarted) return false;\n\n // Cancel any in-flight deferred finalize so we do not double-write.\n bumpCompletionGeneration(this.#lifecycle);\n\n const status =\n options.status ??\n (this.#lifecycle.terminalError ? \"error\" : \"success\");\n if (status === \"error\") {\n noteTerminalError(\n this.#lifecycle,\n options.errorMessage ??\n this.#lifecycle.terminalError?.message ??\n \"adapter finalize error\",\n );\n }\n\n await this.#ensureRunCompleted(\n options.endTime ?? Date.now(),\n status,\n status === \"error\"\n ? (options.errorMessage ?? this.#lifecycle.terminalError?.message)\n : undefined,\n );\n return this.#lifecycle.finalized;\n } catch (err) {\n this.#warn(err);\n return false;\n }\n }\n\n /**\n * Flush + finalize. Idempotent; never throws to callers.\n * @experimental\n */\n async close(): Promise<void> {\n try {\n await this.flush();\n await this.finalize();\n } catch (err) {\n this.#warn(err);\n }\n }\n\n /**\n * When the last active LangChain callback ends, yield one microtask so a\n * same-turn sibling start can cancel finalization, then write run_completed\n * before the callback promise settles. Unresolved external parents do not\n * block the envelope.\n */\n async #scheduleStandaloneFinalization(endTime: number): Promise<void> {\n if (!this.#standalone || !canScheduleFinalize(this.#lifecycle)) return;\n\n const generation = this.#lifecycle.completionGeneration;\n await Promise.resolve();\n if (this.#lifecycle.completionGeneration !== generation) return;\n if (!this.#standalone || !canScheduleFinalize(this.#lifecycle)) return;\n\n const status = this.#lifecycle.terminalError ? \"error\" : \"success\";\n await this.#ensureRunCompleted(\n endTime,\n status,\n status === \"error\" ? this.#lifecycle.terminalError?.message : undefined,\n );\n }\n\n async #ensureRunStarted(\n startTime: number,\n attrs: Record<string, unknown>,\n ): Promise<void> {\n if (!markEnvelopeStarted(this.#lifecycle, startTime)) return;\n\n await initializeTraceFile(this.#runId, this.#traceDir);\n\n const metadata: Record<string, unknown> = {\n adapter: \"langchain\",\n confidence: \"explicit\",\n };\n if (attrs.langchainRunId) metadata.langchainRunId = attrs.langchainRunId;\n if (attrs.adapterRunName) metadata.adapterRunName = attrs.adapterRunName;\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"run_started\",\n timestamp: startTime,\n runId: this.#runId,\n name: this.#runName,\n startTime,\n metadata,\n };\n await this.#write(event);\n }\n\n async #ensureRunCompleted(\n endTime: number,\n stepStatus: \"success\" | \"error\",\n errorMessage?: string,\n ): Promise<void> {\n if (!markFinalized(this.#lifecycle)) return;\n\n for (const [, syntheticStepId] of this.#syntheticByLabel) {\n const completed: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_completed\",\n timestamp: endTime,\n runId: this.#runId,\n stepId: syntheticStepId,\n status: \"success\",\n endTime,\n durationMs: Math.max(0, endTime - (this.#lifecycle.runStartTime ?? endTime)),\n };\n await this.#write(completed);\n }\n\n const startTime = this.#lifecycle.runStartTime ?? endTime;\n const durationMs = Math.max(0, endTime - startTime);\n const runStatus = stepStatus === \"error\" ? \"error\" : \"success\";\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"run_completed\",\n timestamp: endTime,\n runId: this.#runId,\n status: runStatus,\n endTime,\n durationMs,\n ...(runStatus === \"error\" && errorMessage\n ? { error: { message: errorMessage } }\n : {}),\n };\n await this.#write(event);\n }\n\n async #write(event: TraceEvent): Promise<void> {\n const safe = prepareTraceEventForDisk(event, this.#safety);\n await writeTraceEvent(safe, this.#traceDir);\n }\n\n #warn(err: unknown): void {\n if (!this.#silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n}\n","import path from \"node:path\";\n\nimport type { AgentAction, AgentFinish } from \"@langchain/core/agents\";\nimport { BaseCallbackHandler } from \"@langchain/core/callbacks/base\";\nimport type { Serialized } from \"@langchain/core/load/serializable\";\nimport type { LLMResult } from \"@langchain/core/outputs\";\nimport type { ChainValues } from \"@langchain/core/utils/types\";\n\n/** Subpaths like `@langchain/core/messages/base` are not package exports; derive from the handler contract. */\ntype ChatModelMessages = Parameters<\n NonNullable<BaseCallbackHandler[\"handleChatModelStart\"]>\n>[1];\ntype RetrieverDocuments = Parameters<\n NonNullable<BaseCallbackHandler[\"handleRetrieverEnd\"]>\n>[0];\nimport {\n getCurrentCorrelationMetadata,\n type InspectEvent,\n type InspectKind,\n} from \"agent-inspect/advanced\";\nimport { Redactor } from \"agent-inspect/logs\";\n\nimport {\n extractLangGraphMetadata,\n extractModelName,\n extractTokenUsage,\n safePreview,\n toPlainMetadata,\n} from \"./metadata.js\";\nimport {\n createLlmStreamState,\n recordLlmStreamToken,\n streamMetadataFromState,\n type LlmStreamState,\n} from \"./streaming-metadata.js\";\nimport { applyToolIdentityAttributes, resolveToolIdentity } from \"./tool-identity.js\";\nimport { resolvePersistIntent } from \"./persist-intent.js\";\nimport { LangChainTracePersistence } from \"./trace-persistence.js\";\nimport type { AgentInspectCallbackOptions } from \"./types.js\";\n\ntype StartEntry = { ts: number; kind: InspectKind; langGraph?: Record<string, unknown> };\n\nfunction isRecord(v: unknown): v is Record<string, unknown> {\n return typeof v === \"object\" && v !== null && !Array.isArray(v);\n}\n\nfunction serializedLabel(s: Serialized): string | undefined {\n if (typeof s.name === \"string\" && s.name.trim()) return s.name;\n if (Array.isArray(s.id) && s.id.length > 0) return s.id[s.id.length - 1];\n return s.type;\n}\n\nfunction errorShape(err: unknown): { errorName?: string; errorMessage: string } {\n if (err instanceof Error) {\n return { errorName: err.name, errorMessage: err.message };\n }\n return { errorMessage: String(err) };\n}\n\nexport class AgentInspectCallback extends BaseCallbackHandler {\n name = \"agent-inspect\";\n /**\n * Ensure LangGraph/LangChain awaits async handler work (persistence) before\n * invoke/stream settles. Required for deterministic standalone envelopes.\n */\n awaitHandlers = true;\n\n readonly #opts: Required<\n Pick<AgentInspectCallbackOptions, \"capture\" | \"silent\" | \"maxPreviewChars\">\n > &\n AgentInspectCallbackOptions;\n\n readonly #redactor: Redactor;\n readonly #persistence?: LangChainTracePersistence;\n #events: InspectEvent[] = [];\n readonly #starts = new Map<string, StartEntry>();\n readonly #streamState = new Map<string, LlmStreamState>();\n readonly #deferredPersistStart = new Map<\n string,\n {\n lcParentRunId?: string;\n name: string;\n kind: InspectKind;\n startTime: number;\n attributes: Record<string, unknown>;\n }\n >();\n #rootRunId?: string;\n\n constructor(options: AgentInspectCallbackOptions = {}) {\n super({});\n const intent = resolvePersistIntent(options);\n this.#opts = {\n capture: options.capture ?? \"metadata-only\",\n silent: options.silent ?? false,\n maxPreviewChars: options.maxPreviewChars ?? 200,\n runName: options.runName ?? \"langchain-agent\",\n ...options,\n persist: intent.persist,\n };\n this.#redactor = new Redactor({ rules: this.#opts.redact });\n if (intent.contradictory && !this.#opts.silent) {\n console.error(\n \"[agent-inspect:langchain] persist:false with traceDir set — traces stay in-memory; remove traceDir or set persist:true\",\n );\n }\n if (intent.persist) {\n this.#persistence = new LangChainTracePersistence({\n runName: this.#opts.runName,\n traceDir: this.#opts.traceDir,\n runId: this.#opts.runId,\n redact: this.#opts.redact,\n silent: this.#opts.silent,\n maxPreviewChars: this.#opts.maxPreviewChars,\n });\n }\n }\n\n getEvents(): InspectEvent[] {\n return this.#events.map((e) => ({\n ...e,\n attributes: e.attributes ? { ...e.attributes } : undefined,\n source: { ...e.source },\n }));\n }\n\n clear(): void {\n this.#events = [];\n this.#starts.clear();\n this.#streamState.clear();\n this.#deferredPersistStart.clear();\n this.#rootRunId = undefined;\n this.#persistence?.reset();\n }\n\n /**\n * Bounded adapter diagnostics for the current invocation (counts only).\n * Safe for CLI/MCP summaries — no absolute paths or payloads.\n *\n * @experimental\n */\n getDiagnostics(): {\n lateEventCount: number;\n activeRunCount: number;\n endedRunCount: number;\n pendingRelationshipCount: number;\n knownRelationshipCount: number;\n syntheticGroupCount: number;\n envelopeStarted: boolean;\n finalized: boolean;\n completionGeneration: number;\n hasTerminalError: boolean;\n inMemoryEventCount: number;\n deferredPersistStartCount: number;\n } {\n const base = this.#persistence?.getDiagnostics() ?? {\n lateEventCount: 0,\n activeRunCount: 0,\n endedRunCount: 0,\n pendingRelationshipCount: 0,\n knownRelationshipCount: 0,\n syntheticGroupCount: 0,\n envelopeStarted: false,\n finalized: false,\n completionGeneration: 0,\n hasTerminalError: false,\n };\n return {\n ...base,\n inMemoryEventCount: this.#events.length,\n deferredPersistStartCount: this.#deferredPersistStart.size,\n };\n }\n\n /**\n * Drain deferred completion work (microtask finalization).\n * Idempotent. Failures are isolated and never thrown to user code.\n *\n * @experimental Additive finalization API for serverless / unusual callback shapes.\n */\n async flush(): Promise<void> {\n try {\n await this.#persistence?.flush();\n } catch (err) {\n if (!this.#opts.silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n }\n\n /**\n * Complete the standalone envelope when started. Fallback when automatic\n * completion cannot run (e.g. process shutdown). Idempotent.\n * Failures are isolated and never thrown to user code.\n *\n * @experimental Additive finalization API for serverless / unusual callback shapes.\n */\n async finalize(options?: {\n status?: \"success\" | \"error\";\n errorMessage?: string;\n }): Promise<void> {\n try {\n await this.#persistence?.finalize(options);\n } catch (err) {\n if (!this.#opts.silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n }\n\n /**\n * `flush()` then `finalize()`. Idempotent. Failures are isolated.\n *\n * @experimental Additive finalization API for serverless / unusual callback shapes.\n */\n async close(): Promise<void> {\n try {\n await this.flush();\n await this.finalize();\n } catch (err) {\n if (!this.#opts.silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n }\n\n /**\n * When persist mode has already finalized an envelope, rotate to a new\n * invocation before the next start so reused handlers do not mix runs.\n */\n #prepareCallbackInvocation(): void {\n const persistence = this.#persistence;\n if (!persistence?.lifecycle.finalized) return;\n this.#events = [];\n this.#starts.clear();\n this.#streamState.clear();\n this.#deferredPersistStart.clear();\n this.#rootRunId = undefined;\n persistence.beginNewInvocation();\n }\n\n #streamPreviewLimit(): number {\n if (this.#opts.capture !== \"preview\") return 0;\n return this.#opts.maxStreamPreviewChars ?? this.#opts.maxPreviewChars ?? 200;\n }\n\n #attachStreamMetadata(attrs: Record<string, unknown>, lcRunId: string): void {\n const meta = streamMetadataFromState(this.#streamState.get(lcRunId), {\n capturePreview: this.#opts.capture === \"preview\",\n maxPreviewChars: this.#streamPreviewLimit(),\n });\n if (meta) {\n Object.assign(attrs, meta);\n }\n }\n\n #clearStreamState(lcRunId: string): void {\n this.#streamState.delete(lcRunId);\n this.#deferredPersistStart.delete(lcRunId);\n }\n\n #mergeCorrelation(attrs: Record<string, unknown>): void {\n if (this.#opts.capture === \"none\") return;\n try {\n const corr = getCurrentCorrelationMetadata();\n if (!corr) return;\n for (const [key, value] of Object.entries(corr)) {\n if (typeof value === \"string\" && value.length > 0) {\n attrs[key] = value;\n }\n }\n } catch {\n /* instrumentation must not throw */\n }\n }\n\n async #persistLlmStepStart(\n lcRunId: string,\n lcParentRunId: string | undefined,\n name: string,\n kind: InspectKind,\n startTime: number,\n attributes: Record<string, unknown>,\n ): Promise<void> {\n if (this.#opts.stream && this.#opts.persist) {\n this.#deferredPersistStart.set(lcRunId, {\n lcParentRunId,\n name,\n kind,\n startTime,\n attributes: { ...attributes },\n });\n return;\n }\n await this.#persistStepStart(lcRunId, lcParentRunId, name, kind, attributes, startTime);\n }\n\n async #flushDeferredPersistStart(\n lcRunId: string,\n completionAttributes: Record<string, unknown>,\n ): Promise<void> {\n const pending = this.#deferredPersistStart.get(lcRunId);\n if (!pending || !this.#opts.persist) return;\n const merged = {\n ...pending.attributes,\n ...completionAttributes,\n };\n await this.#persistStepStart(\n lcRunId,\n pending.lcParentRunId,\n pending.name,\n pending.kind,\n merged,\n pending.startTime,\n );\n this.#deferredPersistStart.delete(lcRunId);\n }\n\n #ensureRoot(lcRunId: string, parentRunId?: string): void {\n if (parentRunId) return;\n if (!this.#rootRunId) this.#rootRunId = lcRunId;\n }\n\n #traceRunId(lcRunId: string): string {\n return this.#rootRunId ?? lcRunId;\n }\n\n #durationFor(lcRunId: string): number | undefined {\n const s = this.#starts.get(lcRunId);\n if (!s) return undefined;\n return Date.now() - s.ts;\n }\n\n #rememberStart(lcRunId: string, kind: InspectKind): void {\n this.#starts.set(lcRunId, { ts: Date.now(), kind });\n }\n\n #rememberStartMetadata(lcRunId: string, attrs: Record<string, unknown>): void {\n const start = this.#starts.get(lcRunId);\n if (!start || !isRecord(attrs.langGraph)) return;\n this.#starts.set(lcRunId, { ...start, langGraph: { ...attrs.langGraph } });\n }\n\n #attachStartMetadata(attrs: Record<string, unknown>, lcRunId: string): void {\n const langGraph = this.#starts.get(lcRunId)?.langGraph;\n if (langGraph && !attrs.langGraph) attrs.langGraph = { ...langGraph };\n }\n\n #clearStart(lcRunId: string): void {\n this.#starts.delete(lcRunId);\n }\n\n #baseAttrs(\n lcRunId: string,\n parentRunId: string | undefined,\n tags: string[] | undefined,\n runNameArg: string | undefined,\n ): Record<string, unknown> {\n const out: Record<string, unknown> = {\n langchainRunId: lcRunId,\n };\n if (parentRunId) out.parentRunId = parentRunId;\n if (this.#opts.runName) out.adapterRunName = this.#opts.runName;\n if (runNameArg) out.runName = runNameArg;\n // Never persist absolute local paths (usernames / machine layout) on events.\n if (this.#opts.persist) out.traceStorage = \"local\";\n const configuredTraceDir = this.#opts.traceDir?.trim();\n if (\n configuredTraceDir &&\n !path.isAbsolute(configuredTraceDir) &&\n !/^[A-Za-z]:[\\\\/]/.test(configuredTraceDir)\n ) {\n out.workspaceRelativeTraceDir = configuredTraceDir;\n }\n const cap = this.#opts.capture;\n if (cap !== \"none\" && tags?.length) out.tags = [...tags];\n return out;\n }\n\n #mergeMetadata(\n attrs: Record<string, unknown>,\n metadata: Record<string, unknown> | undefined,\n ): void {\n if (this.#opts.capture === \"none\" || !metadata) return;\n attrs.metadata = this.#redactor.redactRecord(toPlainMetadata(metadata));\n const langGraph = extractLangGraphMetadata(metadata);\n if (langGraph) attrs.langGraph = this.#redactor.redactRecord(langGraph);\n }\n\n #applyPreview(attrs: Record<string, unknown>, previews: Record<string, unknown>): void {\n if (this.#opts.capture !== \"preview\") return;\n const max = this.#opts.maxPreviewChars;\n for (const [k, v] of Object.entries(previews)) {\n const p = safePreview(v, max);\n if (p !== undefined) attrs[k] = p;\n }\n }\n\n #pushEvent(ev: InspectEvent): void {\n try {\n const attributes = ev.attributes\n ? this.#redactor.redactRecord({ ...ev.attributes })\n : undefined;\n this.#events.push({ ...ev, attributes });\n } catch (err) {\n if (!this.#opts.silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n }\n\n async #persistStepStart(\n lcRunId: string,\n lcParentRunId: string | undefined,\n name: string,\n kind: InspectKind,\n attrs: Record<string, unknown>,\n startTime: number,\n ): Promise<void> {\n await this.#persistence?.onStepStart({\n lcRunId,\n lcParentRunId,\n name,\n kind,\n startTime,\n attributes: attrs,\n });\n }\n\n async #persistStepEnd(\n lcRunId: string,\n lcParentRunId: string | undefined,\n status: \"success\" | \"error\",\n endTime: number,\n durationMs: number | undefined,\n errorMessage?: string,\n completionAttributes?: Record<string, unknown>,\n ): Promise<void> {\n await this.#persistence?.onStepEnd({\n lcRunId,\n lcParentRunId,\n endTime,\n durationMs,\n status,\n errorMessage,\n completionAttributes,\n });\n }\n\n async #persistInstant(\n lcRunId: string,\n lcParentRunId: string | undefined,\n name: string,\n kind: InspectKind,\n attrs: Record<string, unknown>,\n status: \"success\" | \"error\",\n errorMessage?: string,\n ): Promise<void> {\n await this.#persistence?.onInstantStep({\n lcRunId,\n lcParentRunId,\n name,\n kind,\n timestamp: Date.now(),\n attributes: attrs,\n status,\n errorMessage,\n });\n }\n\n override async handleChainStart(\n chain: Serialized,\n inputs: ChainValues,\n runId: string,\n runType?: string,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n parentRunId?: string,\n _extra?: Record<string, unknown>,\n ): Promise<void> {\n void runType;\n this.#prepareCallbackInvocation();\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"CHAIN\");\n const label = serializedLabel(chain) ?? \"chain\";\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.inputPreview = inputs;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n };\n this.#mergeMetadata(attrs, metadata);\n this.#applyPreview(attrs, previews);\n this.#rememberStartMetadata(runId, attrs);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:CHAIN:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: `chain:${runName ?? label}`,\n kind: \"CHAIN\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepStart(runId, parentRunId, `chain:${runName ?? label}`, \"CHAIN\", attrs, ts);\n }\n\n override async handleChainEnd(\n outputs: ChainValues,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _kwargs?: { inputs?: Record<string, unknown> },\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.outputPreview = outputs;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:CHAIN:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"chain:end\",\n kind: \"CHAIN\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs);\n }\n\n override async handleChainError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _kwargs?: { inputs?: Record<string, unknown> },\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:CHAIN:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"chain:error\",\n kind: \"CHAIN\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage);\n }\n\n override async handleLLMStart(\n llm: Serialized,\n prompts: string[],\n runId: string,\n parentRunId?: string,\n _extraParams?: Record<string, unknown>,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n ): Promise<void> {\n this.#prepareCallbackInvocation();\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"LLM\");\n const model = extractModelName(llm);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") {\n previews.promptPreview = prompts.length === 1 ? prompts[0] : prompts;\n }\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n };\n if (model && this.#opts.capture !== \"none\") attrs.model = model;\n this.#mergeMetadata(attrs, metadata);\n this.#mergeCorrelation(attrs);\n this.#applyPreview(attrs, previews);\n this.#rememberStartMetadata(runId, attrs);\n const ts = Date.now();\n const stepName = `llm:${model ?? \"llm\"}`;\n this.#pushEvent({\n eventId: `${runId}:LLM:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"LLM\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistLlmStepStart(runId, parentRunId, stepName, \"LLM\", ts, attrs);\n }\n\n override async handleChatModelStart(\n llm: Serialized,\n messages: ChatModelMessages,\n runId: string,\n parentRunId?: string,\n _extraParams?: Record<string, unknown>,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n ): Promise<void> {\n this.#prepareCallbackInvocation();\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"LLM\");\n const model = extractModelName(llm);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.inputPreview = messages;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n };\n if (model && this.#opts.capture !== \"none\") attrs.model = model;\n this.#mergeMetadata(attrs, metadata);\n this.#mergeCorrelation(attrs);\n this.#applyPreview(attrs, previews);\n this.#rememberStartMetadata(runId, attrs);\n const ts = Date.now();\n const stepName = `llm:${model ?? \"llm\"}`;\n this.#pushEvent({\n eventId: `${runId}:CHAT:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"LLM\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistLlmStepStart(runId, parentRunId, stepName, \"LLM\", ts, attrs);\n }\n\n override handleLLMNewToken(\n token: string,\n _idx: { prompt: number; completion: number },\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n _fields?: { chunk?: unknown },\n ): void | Promise<void> {\n void _idx;\n void _parentRunId;\n void _tags;\n void _fields;\n try {\n if (!this.#opts.stream) return;\n let state = this.#streamState.get(runId);\n if (!state) {\n state = createLlmStreamState();\n this.#streamState.set(runId, state);\n }\n recordLlmStreamToken(state, token, Date.now(), this.#streamPreviewLimit());\n } catch (err) {\n if (!this.#opts.silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n }\n\n override async handleLLMEnd(\n output: LLMResult,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _extraParams?: Record<string, unknown>,\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const tokens = extractTokenUsage(output);\n const model = extractModelName(output);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.outputPreview = output;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n if (model && this.#opts.capture !== \"none\") attrs.model = model;\n if (tokens && this.#opts.capture !== \"none\") attrs.tokens = tokens;\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n this.#attachStreamMetadata(attrs, runId);\n this.#mergeCorrelation(attrs);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:LLM:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: `llm:${model ?? \"llm\"}`,\n kind: \"LLM\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#flushDeferredPersistStart(runId, attrs);\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs, undefined, {\n ...attrs,\n name: `llm:${model ?? \"llm\"}`,\n kind: \"LLM\",\n });\n this.#clearStreamState(runId);\n }\n\n override async handleLLMError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _extraParams?: Record<string, unknown>,\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n this.#attachStreamMetadata(attrs, runId);\n this.#mergeCorrelation(attrs);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:LLM:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"llm:error\",\n kind: \"LLM\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#flushDeferredPersistStart(runId, attrs);\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage, {\n ...attrs,\n name: \"llm:error\",\n kind: \"LLM\",\n });\n this.#clearStreamState(runId);\n }\n\n override async handleToolStart(\n tool: Serialized,\n input: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n toolCallId?: string,\n ): Promise<void> {\n this.#prepareCallbackInvocation();\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"TOOL\");\n const identity = resolveToolIdentity(tool, runName, metadata, toolCallId);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.inputPreview = input;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n };\n applyToolIdentityAttributes(attrs, identity);\n this.#mergeMetadata(attrs, metadata);\n this.#applyPreview(attrs, previews);\n this.#rememberStartMetadata(runId, attrs);\n const ts = Date.now();\n const stepName = `tool:${identity.displayName}`;\n this.#pushEvent({\n eventId: `${runId}:TOOL:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"TOOL\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepStart(runId, parentRunId, stepName, \"TOOL\", attrs, ts);\n }\n\n override async handleToolEnd(\n output: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.outputPreview = output;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:TOOL:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"tool:end\",\n kind: \"TOOL\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs);\n }\n\n override async handleToolError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:TOOL:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"tool:error\",\n kind: \"TOOL\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage);\n }\n\n override async handleRetrieverStart(\n retriever: Serialized,\n _query: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: Record<string, unknown>,\n name?: string,\n ): Promise<void> {\n void _query;\n this.#prepareCallbackInvocation();\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"RETRIEVER\");\n const rname = name ?? serializedLabel(retriever) ?? \"retriever\";\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n retriever: rname,\n };\n this.#mergeMetadata(attrs, metadata);\n this.#rememberStartMetadata(runId, attrs);\n const ts = Date.now();\n const stepName = `retriever:${rname}`;\n this.#pushEvent({\n eventId: `${runId}:RETRIEVER:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"RETRIEVER\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepStart(runId, parentRunId, stepName, \"RETRIEVER\", attrs, ts);\n }\n\n override async handleRetrieverEnd(\n documents: RetrieverDocuments,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\" && documents.length > 0) {\n previews.documentPreview = documents.slice(0, 3);\n }\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n documentCount: documents.length,\n };\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:RETRIEVER:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"retriever:end\",\n kind: \"RETRIEVER\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs);\n }\n\n override async handleRetrieverError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:RETRIEVER:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"retriever:error\",\n kind: \"RETRIEVER\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage);\n }\n\n override async handleAgentAction(\n action: AgentAction,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#prepareCallbackInvocation();\n this.#ensureRoot(runId, parentRunId);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n tool: action.tool,\n };\n if (this.#opts.capture === \"preview\") {\n this.#applyPreview(attrs, {\n toolInputPreview: action.toolInput,\n logPreview: action.log,\n });\n }\n this.#pushEvent({\n eventId: `${runId}:AGENT:action:${Date.now()}`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"agent:action\",\n kind: \"DECISION\",\n timestamp: Date.now(),\n status: \"ok\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistInstant(runId, parentRunId, \"agent:action\", \"DECISION\", attrs, \"success\");\n }\n\n override async handleAgentEnd(\n finish: AgentFinish,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n if (this.#opts.capture === \"preview\") {\n this.#applyPreview(attrs, {\n outputPreview: finish.returnValues,\n logPreview: finish.log,\n });\n }\n this.#pushEvent({\n eventId: `${runId}:AGENT:end:${Date.now()}`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"agent:end\",\n kind: \"AGENT\",\n timestamp: Date.now(),\n status: \"ok\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistInstant(runId, parentRunId, \"agent:end\", \"AGENT\", attrs, \"success\");\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/metadata.ts","../src/streaming-metadata.ts","../src/tool-identity.ts","../src/persist-intent.ts","../src/invocation-state.ts","../src/parent-reconciliation.ts","../src/trace-persistence.ts","../src/agent-inspect-callback.ts"],"names":["hasActiveContext","getTraceDirFromContext","resolveTraceDir","getCurrentRunId","createRunId","resolveTraceSafetyOptions","createStepId","initializeTraceFile","prepareTraceEventForDisk","writeTraceEvent","isRecord","serializedLabel","BaseCallbackHandler","Redactor","getCurrentCorrelationMetadata","path"],"mappings":"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","file":"index.cjs","sourcesContent":["export interface TokenUsage {\n input?: number;\n output?: number;\n total?: number;\n}\n\ntype LangGraphAlias = {\n out: string;\n aliases: readonly string[];\n};\n\nfunction isRecord(v: unknown): v is Record<string, unknown> {\n return typeof v === \"object\" && v !== null && !Array.isArray(v);\n}\n\nfunction num(v: unknown): number | undefined {\n if (typeof v === \"number\" && Number.isFinite(v)) return v;\n if (typeof v === \"string\" && v.trim() !== \"\") {\n const n = Number(v);\n if (Number.isFinite(n)) return n;\n }\n return undefined;\n}\n\nfunction normalizeTokenShape(raw: Record<string, unknown>): TokenUsage | undefined {\n const input =\n num(raw.promptTokens) ??\n num(raw.inputTokens) ??\n num(raw.input_tokens) ??\n num(raw.prompt_tokens);\n const output =\n num(raw.completionTokens) ??\n num(raw.outputTokens) ??\n num(raw.output_tokens) ??\n num(raw.completion_tokens);\n let total = num(raw.totalTokens) ?? num(raw.total_tokens);\n\n if (total === undefined && input !== undefined && output !== undefined) {\n total = input + output;\n }\n\n if (input === undefined && output === undefined && total === undefined) {\n return undefined;\n }\n\n const out: TokenUsage = {};\n if (input !== undefined) out.input = input;\n if (output !== undefined) out.output = output;\n if (total !== undefined) out.total = total;\n return out;\n}\n\n/** Extract token usage from LangChain / provider-shaped LLM outputs. Never throws. */\nexport function extractTokenUsage(output: unknown): TokenUsage | undefined {\n try {\n if (!isRecord(output)) return undefined;\n\n const candidates: unknown[] = [\n isRecord(output.llmOutput) ? output.llmOutput.tokenUsage : undefined,\n isRecord(output.llmOutput) ? output.llmOutput.estimatedTokenUsage : undefined,\n output.usage_metadata,\n isRecord(output.response_metadata) ? output.response_metadata.tokenUsage : undefined,\n isRecord(output.response_metadata) ? output.response_metadata.token_usage : undefined,\n ];\n\n for (const c of candidates) {\n if (!isRecord(c)) continue;\n const norm = normalizeTokenShape(c);\n if (norm) return norm;\n }\n\n return undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction readLcKwargs(serializedOrOutput: unknown): Record<string, unknown> | undefined {\n if (!isRecord(serializedOrOutput)) return undefined;\n const lc = serializedOrOutput.lc_kwargs ?? serializedOrOutput.kwargs;\n return isRecord(lc) ? lc : undefined;\n}\n\n/** Best-effort model name from serialized LLM / chat model or provider metadata. */\nexport function extractModelName(serializedOrOutput: unknown): string | undefined {\n try {\n const lc = readLcKwargs(serializedOrOutput);\n const fromLc =\n (lc?.model as string | undefined) ??\n (lc?.modelName as string | undefined) ??\n (lc?.model_name as string | undefined);\n\n if (typeof fromLc === \"string\" && fromLc.trim()) return fromLc;\n\n if (isRecord(serializedOrOutput)) {\n for (const k of [\"model\", \"modelName\", \"model_name\"] as const) {\n const v = serializedOrOutput[k];\n if (typeof v === \"string\" && v.trim()) return v;\n }\n const rm = serializedOrOutput.response_metadata;\n if (isRecord(rm)) {\n const m = rm.model_name ?? rm.model;\n if (typeof m === \"string\" && m.trim()) return m;\n }\n const lo = serializedOrOutput.llmOutput;\n if (isRecord(lo)) {\n const m = lo.model_name;\n if (typeof m === \"string\" && m.trim()) return m;\n }\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n/** Safe truncated string preview for logging-style fields. */\nexport function safePreview(value: unknown, maxChars: number): string | undefined {\n try {\n if (maxChars <= 0) return undefined;\n const seen = new WeakSet<object>();\n const json = JSON.stringify(value, (_k, v) => {\n if (typeof v === \"bigint\") return v.toString();\n if (typeof v === \"function\" || typeof v === \"symbol\") return undefined;\n if (typeof v === \"object\" && v !== null) {\n if (seen.has(v)) return \"[Circular]\";\n seen.add(v);\n }\n return v;\n });\n if (json === undefined) return undefined;\n if (json.length <= maxChars) return json;\n return `${json.slice(0, maxChars)}…`;\n } catch {\n try {\n const s = String(value);\n if (s.length <= maxChars) return s;\n return `${s.slice(0, maxChars)}…`;\n } catch {\n return undefined;\n }\n }\n}\n\nconst MAX_METADATA_KEYS = 40;\n\nconst LANGGRAPH_ALIASES: readonly LangGraphAlias[] = [\n { out: \"graphId\", aliases: [\"graphId\", \"graph_id\", \"langgraph_graph_id\"] },\n { out: \"graphName\", aliases: [\"graphName\", \"graph_name\", \"langgraph_graph_name\"] },\n { out: \"nodeId\", aliases: [\"nodeId\", \"node_id\", \"langgraph_node_id\"] },\n { out: \"nodeName\", aliases: [\"nodeName\", \"node_name\", \"langgraph_node\"] },\n { out: \"subgraphId\", aliases: [\"subgraphId\", \"subgraph_id\", \"langgraph_subgraph_id\"] },\n { out: \"subgraphName\", aliases: [\"subgraphName\", \"subgraph_name\", \"langgraph_subgraph\"] },\n { out: \"taskId\", aliases: [\"taskId\", \"task_id\", \"langgraph_task_id\"] },\n { out: \"taskName\", aliases: [\"taskName\", \"task_name\", \"langgraph_task\"] },\n { out: \"graphStep\", aliases: [\"graphStep\", \"graph_step\", \"langgraph_step\"] },\n { out: \"streamMode\", aliases: [\"streamMode\", \"stream_mode\", \"langgraph_stream_mode\"] },\n { out: \"branch\", aliases: [\"branch\", \"branchName\", \"branch_name\", \"langgraph_branch\"] },\n { out: \"branchPath\", aliases: [\"branchPath\", \"branch_path\", \"langgraph_path\"] },\n { out: \"branchIndex\", aliases: [\"branchIndex\", \"branch_index\", \"langgraph_branch_index\"] },\n {\n out: \"parallelGroupId\",\n aliases: [\"parallelGroupId\", \"parallel_group_id\", \"langgraph_parallel_group_id\"],\n },\n { out: \"checkpointId\", aliases: [\"checkpointId\", \"checkpoint_id\", \"langgraph_checkpoint_id\"] },\n {\n out: \"checkpointNamespace\",\n aliases: [\"checkpointNamespace\", \"checkpoint_ns\", \"langgraph_checkpoint_ns\"],\n },\n { out: \"threadId\", aliases: [\"threadId\", \"thread_id\", \"langgraph_thread_id\"] },\n { out: \"sessionId\", aliases: [\"sessionId\", \"session_id\", \"langgraph_session_id\"] },\n { out: \"retryAttempt\", aliases: [\"retryAttempt\", \"retry_attempt\", \"attempt\"] },\n { out: \"handoffFrom\", aliases: [\"handoffFrom\", \"handoff_from\", \"langgraph_handoff_from\"] },\n { out: \"handoffTo\", aliases: [\"handoffTo\", \"handoff_to\", \"langgraph_handoff_to\"] },\n] as const;\n\nconst LANGGRAPH_SUMMARY_ALIASES: readonly LangGraphAlias[] = [\n { out: \"checkpointSummary\", aliases: [\"checkpoint\", \"langgraph_checkpoint\"] },\n { out: \"branchSummary\", aliases: [\"branches\", \"langgraph_branches\", \"langgraph_triggers\"] },\n { out: \"subgraphSummary\", aliases: [\"subgraphs\", \"langgraph_subgraphs\"] },\n { out: \"taskSummary\", aliases: [\"tasks\", \"langgraph_tasks\"] },\n] as const;\n\nfunction boundedValue(value: unknown): unknown {\n if (value === null) return null;\n if (typeof value === \"string\") return value.length <= 200 ? value : `${value.slice(0, 200)}…`;\n if (typeof value === \"number\" || typeof value === \"boolean\") return value;\n if (typeof value === \"bigint\") return value.toString();\n if (Array.isArray(value)) {\n const items = value.slice(0, 10).map((item) => {\n if (item === null) return null;\n if (typeof item === \"string\" || typeof item === \"number\" || typeof item === \"boolean\") {\n return item;\n }\n if (typeof item === \"bigint\") return item.toString();\n return summarizeValue(item);\n });\n return {\n type: \"array\",\n itemCount: value.length,\n items,\n truncated: value.length > items.length ? true : undefined,\n };\n }\n return summarizeValue(value);\n}\n\nfunction summarizeValue(value: unknown): Record<string, unknown> {\n if (Array.isArray(value)) return { type: \"array\", itemCount: value.length };\n if (isRecord(value)) return { type: \"object\", keyCount: Object.keys(value).length };\n return { type: typeof value };\n}\n\nfunction getAliasValue(\n sources: readonly Record<string, unknown>[],\n aliases: readonly string[],\n): unknown {\n for (const source of sources) {\n for (const alias of aliases) {\n if (Object.prototype.hasOwnProperty.call(source, alias)) {\n return source[alias];\n }\n }\n }\n return undefined;\n}\n\n/** Shallow plain metadata: drops functions/symbols; avoids deep nesting. Never throws. */\nexport function toPlainMetadata(value: unknown): Record<string, unknown> {\n try {\n if (!isRecord(value)) return {};\n const out: Record<string, unknown> = {};\n let n = 0;\n for (const [k, v] of Object.entries(value)) {\n if (n >= MAX_METADATA_KEYS) break;\n if (typeof v === \"function\" || typeof v === \"symbol\") continue;\n if (v === null || typeof v === \"string\" || typeof v === \"number\" || typeof v === \"boolean\") {\n out[k] = v;\n n++;\n continue;\n }\n if (typeof v === \"bigint\") {\n out[k] = v.toString();\n n++;\n continue;\n }\n if (Array.isArray(v)) {\n out[k] = `array(${v.length})`;\n n++;\n continue;\n }\n if (isRecord(v)) {\n out[k] = \"[object]\";\n n++;\n continue;\n }\n out[k] = String(v);\n n++;\n }\n return out;\n } catch {\n return {};\n }\n}\n\n/**\n * Extract bounded LangGraph identity metadata from LangChain callback metadata.\n *\n * The helper preserves known graph/node/task/session identifiers and summarizes\n * potentially large graph state containers instead of copying raw state.\n */\nexport function extractLangGraphMetadata(value: unknown): Record<string, unknown> | undefined {\n try {\n if (!isRecord(value)) return undefined;\n const sources: Record<string, unknown>[] = [value];\n for (const key of [\"langgraph\", \"configurable\"] as const) {\n const nested = value[key];\n if (isRecord(nested)) sources.push(nested);\n }\n const langGraph = value.langgraph;\n if (isRecord(langGraph)) {\n const configurable = langGraph.configurable;\n if (isRecord(configurable)) sources.push(configurable);\n const nestedConfig = langGraph.config;\n if (isRecord(nestedConfig) && isRecord(nestedConfig.configurable)) {\n sources.push(nestedConfig.configurable);\n }\n }\n const config = value.config;\n if (isRecord(config) && isRecord(config.configurable)) {\n sources.push(config.configurable);\n }\n\n const out: Record<string, unknown> = {};\n for (const { out: outKey, aliases } of LANGGRAPH_ALIASES) {\n const raw = getAliasValue(sources, aliases);\n if (raw !== undefined) out[outKey] = boundedValue(raw);\n }\n for (const { out: outKey, aliases } of LANGGRAPH_SUMMARY_ALIASES) {\n const raw = getAliasValue(sources, aliases);\n if (raw !== undefined) out[outKey] = summarizeValue(raw);\n }\n\n return Object.keys(out).length > 0 ? out : undefined;\n } catch {\n return undefined;\n }\n}\n","export interface LlmStreamState {\n chunkCount: number;\n firstChunkAt?: number;\n lastChunkAt?: number;\n streamedCharCount: number;\n previewChars: string;\n previewTruncated: boolean;\n}\n\nexport function createLlmStreamState(): LlmStreamState {\n return {\n chunkCount: 0,\n streamedCharCount: 0,\n previewChars: \"\",\n previewTruncated: false,\n };\n}\n\nexport function recordLlmStreamToken(\n state: LlmStreamState,\n token: string,\n now: number,\n maxPreviewChars: number,\n): void {\n state.chunkCount += 1;\n if (state.firstChunkAt === undefined) {\n state.firstChunkAt = now;\n }\n state.lastChunkAt = now;\n\n if (typeof token === \"string\" && token.length > 0) {\n state.streamedCharCount += token.length;\n if (maxPreviewChars > 0) {\n const remaining = maxPreviewChars - state.previewChars.length;\n if (remaining > 0) {\n const slice = token.slice(0, remaining);\n state.previewChars += slice;\n if (token.length > remaining) {\n state.previewTruncated = true;\n }\n } else {\n state.previewTruncated = true;\n }\n }\n }\n}\n\nexport function streamMetadataFromState(\n state: LlmStreamState | undefined,\n options: {\n capturePreview: boolean;\n maxPreviewChars: number;\n },\n): Record<string, unknown> | undefined {\n if (!state || state.chunkCount === 0) {\n return undefined;\n }\n\n const out: Record<string, unknown> = {\n stream: true,\n chunkCount: state.chunkCount,\n streamedCharCount: state.streamedCharCount,\n };\n\n if (state.firstChunkAt !== undefined) {\n out.firstChunkAt = state.firstChunkAt;\n }\n if (state.lastChunkAt !== undefined) {\n out.lastChunkAt = state.lastChunkAt;\n }\n if (\n state.firstChunkAt !== undefined &&\n state.lastChunkAt !== undefined &&\n state.lastChunkAt >= state.firstChunkAt\n ) {\n out.streamDurationMs = state.lastChunkAt - state.firstChunkAt;\n }\n if (state.previewTruncated) {\n out.previewTruncated = true;\n }\n\n if (options.capturePreview && state.previewChars.length > 0) {\n const preview =\n state.previewChars.length <= options.maxPreviewChars\n ? state.previewChars\n : `${state.previewChars.slice(0, options.maxPreviewChars)}…`;\n out.streamPreview = preview;\n if (state.previewChars.length > options.maxPreviewChars) {\n out.previewTruncated = true;\n }\n }\n\n return out;\n}\n","/**\n * Human-meaningful tool identity vs implementation class.\n *\n * @experimental Part of the v6.8 fidelity contract.\n * @see docs/LANGGRAPH-FIDELITY.md\n */\n\nimport type { Serialized } from \"@langchain/core/load/serializable\";\n\nexport interface ToolIdentity {\n /** Human display name used in `tool:<name>` step labels. */\n readonly displayName: string;\n /** Same as displayName; canonical attribute for contracts/search. */\n readonly toolName: string;\n /** Serialized implementation class / id (e.g. DynamicStructuredTool). */\n readonly toolClass?: string;\n readonly toolCallId?: string;\n /** Original LangChain `runName` when present. */\n readonly frameworkRunName?: string;\n}\n\nfunction serializedLabel(s: Serialized): string | undefined {\n if (typeof s.name === \"string\" && s.name.trim()) return s.name.trim();\n if (Array.isArray(s.id) && s.id.length > 0) {\n const last = s.id[s.id.length - 1];\n if (typeof last === \"string\" && last.trim()) return last.trim();\n }\n return typeof s.type === \"string\" && s.type.trim() ? s.type.trim() : undefined;\n}\n\nfunction nonEmpty(value: unknown): string | undefined {\n if (typeof value !== \"string\") return undefined;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\n/**\n * Precedence: runName → metadata.toolName → metadata.tool → serialized name → unknown-tool.\n * Implementation class is preserved separately when it differs from the display name.\n */\nexport function resolveToolIdentity(\n tool: Serialized,\n runName?: string,\n metadata?: Record<string, unknown>,\n toolCallId?: string,\n): ToolIdentity {\n const frameworkRunName = nonEmpty(runName);\n const metaToolName = nonEmpty(metadata?.toolName);\n const metaTool = nonEmpty(metadata?.tool);\n const classLabel = serializedLabel(tool);\n const callId =\n nonEmpty(toolCallId) ??\n nonEmpty(metadata?.toolCallId) ??\n nonEmpty(metadata?.tool_call_id);\n\n const displayName =\n frameworkRunName ?? metaToolName ?? metaTool ?? classLabel ?? \"unknown-tool\";\n\n return {\n displayName,\n toolName: displayName,\n ...(classLabel && classLabel !== displayName ? { toolClass: classLabel } : {}),\n ...(callId ? { toolCallId: callId } : {}),\n ...(frameworkRunName ? { frameworkRunName } : {}),\n };\n}\n\n/** Attach identity fields onto step attributes (mutates). */\nexport function applyToolIdentityAttributes(\n attrs: Record<string, unknown>,\n identity: ToolIdentity,\n): void {\n attrs.tool = identity.displayName;\n attrs.toolName = identity.toolName;\n if (identity.toolClass) attrs.toolClass = identity.toolClass;\n if (identity.toolCallId) attrs.toolCallId = identity.toolCallId;\n if (identity.frameworkRunName) attrs.frameworkRunName = identity.frameworkRunName;\n}\n","/**\n * Persist-by-intent resolution for AgentInspectCallback.\n *\n * @experimental Part of the v6.8 fidelity contract.\n */\n\nexport interface PersistIntentInput {\n readonly persist?: boolean;\n readonly traceDir?: string;\n}\n\nexport interface PersistIntent {\n readonly persist: boolean;\n /** True when traceDir was set while persist was explicitly false. */\n readonly contradictory: boolean;\n}\n\n/**\n * - traceDir provided + persist omitted → persist\n * - traceDir absent + persist omitted → in-memory\n * - persist false → in-memory (even if traceDir set)\n * - persist true → persist (default or supplied dir)\n */\nexport function resolvePersistIntent(input: PersistIntentInput): PersistIntent {\n const hasTraceDir =\n typeof input.traceDir === \"string\" && input.traceDir.trim().length > 0;\n const explicit = input.persist;\n\n if (explicit === false) {\n return { persist: false, contradictory: hasTraceDir };\n }\n if (explicit === true) {\n return { persist: true, contradictory: false };\n }\n return { persist: hasTraceDir, contradictory: false };\n}\n","/**\n * Per-invocation lifecycle state for LangChain/LangGraph callback persistence.\n *\n * @experimental Part of the v6.8 fidelity contract. Subject to refinement.\n * @see docs/LANGGRAPH-FIDELITY.md\n */\n\nexport interface ActiveCallbackRun {\n readonly lcRunId: string;\n readonly parentLcRunId?: string;\n readonly startedAt: number;\n stepId?: string;\n kind?: string;\n}\n\nexport interface PendingRelationship {\n readonly childLcRunId: string;\n readonly parentLcRunId: string;\n readonly reason: \"unobserved-parent\";\n}\n\nexport interface StructuredAdapterError {\n readonly message: string;\n}\n\n/**\n * One AgentInspect envelope (standalone invocation) of callback activity.\n */\nexport interface AdapterInvocationState {\n envelopeRunId: string;\n readonly activeRuns: Map<string, ActiveCallbackRun>;\n readonly endedRuns: Set<string>;\n /** childLcRunId → parentLcRunId when the parent was an observed callback run. */\n readonly knownRelationships: Map<string, string>;\n readonly pendingRelationships: PendingRelationship[];\n terminalError?: StructuredAdapterError;\n /** Bumped on each start/end that invalidates a deferred finalize. */\n completionGeneration: number;\n envelopeStarted: boolean;\n finalized: boolean;\n runStartTime?: number;\n}\n\nexport function createInvocationState(envelopeRunId: string): AdapterInvocationState {\n return {\n envelopeRunId,\n activeRuns: new Map(),\n endedRuns: new Set(),\n knownRelationships: new Map(),\n pendingRelationships: [],\n completionGeneration: 0,\n envelopeStarted: false,\n finalized: false,\n };\n}\n\n/** True when `parentLcRunId` matches a callback run already observed in this invocation. */\nexport function isObservedCallbackRun(\n state: AdapterInvocationState,\n parentLcRunId: string,\n): boolean {\n return state.activeRuns.has(parentLcRunId) || state.endedRuns.has(parentLcRunId);\n}\n\n/**\n * Record a callback start. Bumps completion generation.\n * Explicit parents are recorded only when the parent run was already observed.\n */\nexport function beginCallbackRun(\n state: AdapterInvocationState,\n input: {\n lcRunId: string;\n parentLcRunId?: string;\n startedAt: number;\n kind?: string;\n stepId?: string;\n },\n): ActiveCallbackRun {\n state.completionGeneration += 1;\n const run: ActiveCallbackRun = {\n lcRunId: input.lcRunId,\n ...(input.parentLcRunId !== undefined ? { parentLcRunId: input.parentLcRunId } : {}),\n startedAt: input.startedAt,\n ...(input.kind !== undefined ? { kind: input.kind } : {}),\n ...(input.stepId !== undefined ? { stepId: input.stepId } : {}),\n };\n state.activeRuns.set(input.lcRunId, run);\n\n if (input.parentLcRunId !== undefined) {\n if (isObservedCallbackRun(state, input.parentLcRunId)) {\n state.knownRelationships.set(input.lcRunId, input.parentLcRunId);\n } else {\n state.pendingRelationships.push({\n childLcRunId: input.lcRunId,\n parentLcRunId: input.parentLcRunId,\n reason: \"unobserved-parent\",\n });\n }\n }\n\n return run;\n}\n\n/**\n * Record a callback end. Returns false when the run was not active (late/duplicate end).\n * Bumps completion generation when a live run ends.\n */\nexport function endCallbackRun(\n state: AdapterInvocationState,\n lcRunId: string,\n): { ended: boolean; late: boolean } {\n const active = state.activeRuns.get(lcRunId);\n if (active === undefined) {\n if (state.endedRuns.has(lcRunId) || state.finalized) {\n return { ended: false, late: true };\n }\n // End without a prior start — treat as late/orphan for diagnostics (caller may synthesize).\n return { ended: false, late: true };\n }\n\n state.completionGeneration += 1;\n state.activeRuns.delete(lcRunId);\n state.endedRuns.add(lcRunId);\n return { ended: true, late: false };\n}\n\nexport function markEnvelopeStarted(\n state: AdapterInvocationState,\n startTime: number,\n): boolean {\n if (state.envelopeStarted) return false;\n state.envelopeStarted = true;\n state.runStartTime = startTime;\n return true;\n}\n\n/** Idempotent finalize mark. Returns true the first time finalize is accepted. */\nexport function markFinalized(state: AdapterInvocationState): boolean {\n if (state.finalized) return false;\n if (!state.envelopeStarted) return false;\n state.finalized = true;\n return true;\n}\n\nexport function noteTerminalError(\n state: AdapterInvocationState,\n message: string,\n): void {\n state.terminalError = { message };\n}\n\nexport function canScheduleFinalize(state: AdapterInvocationState): boolean {\n return (\n state.envelopeStarted &&\n !state.finalized &&\n state.activeRuns.size === 0\n );\n}\n\nexport function bumpCompletionGeneration(state: AdapterInvocationState): number {\n state.completionGeneration += 1;\n return state.completionGeneration;\n}\n\nexport function resetInvocationState(\n state: AdapterInvocationState,\n nextEnvelopeRunId?: string,\n): void {\n state.activeRuns.clear();\n state.endedRuns.clear();\n state.knownRelationships.clear();\n state.pendingRelationships.length = 0;\n state.terminalError = undefined;\n state.completionGeneration += 1;\n state.envelopeStarted = false;\n state.finalized = false;\n state.runStartTime = undefined;\n if (nextEnvelopeRunId !== undefined) {\n state.envelopeRunId = nextEnvelopeRunId;\n }\n}\n","/**\n * Conservative parent reconciliation for LangChain/LangGraph callbacks.\n *\n * Precedence: exact run ID → LangGraph metadata → unique semantic label → unresolved.\n * Never invents parent edges from timestamps alone.\n *\n * @experimental Part of the v6.8 fidelity contract.\n * @see docs/LANGGRAPH-FIDELITY.md\n */\n\nexport type ParentMappingKind =\n | \"exact\"\n | \"langgraph-metadata\"\n | \"semantic-name\"\n | \"synthetic-group\"\n | \"unresolved\";\n\nexport type ParentConfidence = \"explicit\" | \"correlated\" | \"synthetic\" | \"unresolved\";\n\nexport interface ParentResolution {\n readonly parentStepId?: string;\n readonly confidence: ParentConfidence;\n readonly parentMapping: ParentMappingKind;\n /** Observed when parentLcRunId looks like a framework semantic label. */\n readonly semanticParentLabel?: string;\n readonly unresolvedParentRunId?: string;\n /** Which LangGraph key produced a metadata correlation. */\n readonly correlatedVia?: string;\n}\n\n/** Framework labels commonly seen as LangGraph `parentRunId` without a callback run. */\nexport const WELL_KNOWN_SEMANTIC_PARENTS: ReadonlySet<string> = new Set([\n \"LangGraph\",\n \"__start__\",\n \"__end__\",\n]);\n\nexport function isSemanticParentLabel(parentLcRunId: string): boolean {\n if (WELL_KNOWN_SEMANTIC_PARENTS.has(parentLcRunId)) return true;\n // LangGraph internal double-underscore tokens\n return parentLcRunId.startsWith(\"__\") && parentLcRunId.endsWith(\"__\");\n}\n\nexport interface ParentLookupContext {\n /** Child step being created — must never be returned as its own parent. */\n readonly excludeStepId?: string;\n}\n\nexport interface ParentLookupTables {\n /** LangChain callback runId → AgentInspect stepId */\n readonly exactStepByLcRunId: (lcRunId: string) => string | undefined;\n /**\n * Unique index lookup. Must return undefined when zero or multiple matches\n * (ambiguity must not invent a parent).\n */\n readonly uniqueStepByLangGraphKey: (\n key: string,\n value: string,\n ) => string | undefined;\n /** Unique step whose semantic label / run name matches. */\n readonly uniqueStepBySemanticLabel: (label: string) => string | undefined;\n}\n\nfunction excludeSelf(\n stepId: string | undefined,\n excludeStepId: string | undefined,\n): string | undefined {\n if (!stepId) return undefined;\n if (excludeStepId && stepId === excludeStepId) return undefined;\n return stepId;\n}\n\nconst LANGGRAPH_PARENT_KEYS = [\n \"handoffFrom\",\n \"taskId\",\n \"nodeId\",\n \"nodeName\",\n \"checkpointNamespace\",\n] as const;\n\nfunction langGraphRecord(\n attributes: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n const lg = attributes?.langGraph;\n if (typeof lg !== \"object\" || lg === null || Array.isArray(lg)) return undefined;\n return lg as Record<string, unknown>;\n}\n\n/**\n * Resolve a parent for a new step without fabricating hierarchy.\n */\nexport function resolveParentRelationship(\n input: {\n parentLcRunId?: string;\n attributes?: Record<string, unknown>;\n },\n lookup: ParentLookupTables,\n context: ParentLookupContext = {},\n): ParentResolution {\n const parentLcRunId = input.parentLcRunId;\n const excludeStepId = context.excludeStepId;\n\n // 1. Exact parent run ID\n if (parentLcRunId) {\n const exact = excludeSelf(lookup.exactStepByLcRunId(parentLcRunId), excludeStepId);\n if (exact) {\n return {\n parentStepId: exact,\n confidence: \"explicit\",\n parentMapping: \"exact\",\n };\n }\n }\n\n // 2. Explicit LangGraph metadata relationship (unique keys only)\n const lg = langGraphRecord(input.attributes);\n if (lg) {\n for (const key of LANGGRAPH_PARENT_KEYS) {\n // Prefer dedicated parent-like keys first; taskId/nodeName on the child\n // describe the child itself — only handoffFrom / checkpointNamespace are\n // parent pointers. Keep taskId/nodeId/nodeName for *parent* correlation\n // only when they appear as handoff targets (handled via handoffFrom).\n if (key !== \"handoffFrom\" && key !== \"checkpointNamespace\") continue;\n const raw = lg[key];\n if (typeof raw !== \"string\" || !raw.trim()) continue;\n const stepId = excludeSelf(\n lookup.uniqueStepByLangGraphKey(key === \"handoffFrom\" ? \"taskId\" : key, raw),\n excludeStepId,\n );\n // Also try matching handoffFrom against nodeName when taskId misses.\n const matched =\n stepId ??\n excludeSelf(\n key === \"handoffFrom\"\n ? lookup.uniqueStepByLangGraphKey(\"nodeName\", raw) ??\n lookup.uniqueStepByLangGraphKey(\"nodeId\", raw)\n : undefined,\n excludeStepId,\n );\n if (matched) {\n return {\n parentStepId: matched,\n confidence: \"correlated\",\n parentMapping: \"langgraph-metadata\",\n correlatedVia: key,\n };\n }\n }\n }\n\n // 3. Unique semantic-name correlation (e.g. parentRunId === \"__start__\")\n if (parentLcRunId && isSemanticParentLabel(parentLcRunId)) {\n const semantic = excludeSelf(\n lookup.uniqueStepBySemanticLabel(parentLcRunId),\n excludeStepId,\n );\n if (semantic) {\n return {\n parentStepId: semantic,\n confidence: \"correlated\",\n parentMapping: \"semantic-name\",\n semanticParentLabel: parentLcRunId,\n };\n }\n return {\n confidence: \"unresolved\",\n parentMapping: \"unresolved\",\n semanticParentLabel: parentLcRunId,\n unresolvedParentRunId: parentLcRunId,\n };\n }\n\n // 5. Unresolved and visible (unobserved callback / external id)\n if (parentLcRunId) {\n return {\n confidence: \"unresolved\",\n parentMapping: \"unresolved\",\n unresolvedParentRunId: parentLcRunId,\n };\n }\n\n // No parent reference — root-like step (not unresolved).\n return {\n confidence: \"explicit\",\n parentMapping: \"exact\",\n };\n}\n\n/**\n * Drop a self-parent edge if resolution incorrectly points at the child.\n */\nexport function rejectSelfParentResolution(\n resolution: ParentResolution,\n stepId: string,\n parentLcRunId: string | undefined,\n): ParentResolution {\n if (resolution.parentStepId !== stepId) return resolution;\n return {\n confidence: \"unresolved\",\n parentMapping: \"unresolved\",\n unresolvedParentRunId: parentLcRunId ?? resolution.unresolvedParentRunId,\n ...(resolution.semanticParentLabel\n ? { semanticParentLabel: resolution.semanticParentLabel }\n : {}),\n };\n}\n\nexport const AI_LANGGRAPH_SELF_PARENT_REJECTED = \"AI_LANGGRAPH_SELF_PARENT_REJECTED\" as const;\n\n/**\n * Capture-level invariant: never persist parentId === stepId.\n * Mutates metadata with bounded diagnostics; never throws.\n */\nexport function applySelfParentCaptureInvariant(\n stepId: string,\n parentStepId: string | undefined,\n metadata: Record<string, unknown>,\n originalParentRunId?: string,\n): { parentStepId: string | undefined; rejected: boolean } {\n if (!parentStepId || parentStepId !== stepId) {\n return { parentStepId, rejected: false };\n }\n metadata.parentMapping = \"self-parent-rejected\";\n metadata.parentConfidence = \"unresolved\";\n metadata.relationshipWarning = \"self-parent\";\n metadata.diagnosticCode = AI_LANGGRAPH_SELF_PARENT_REJECTED;\n if (originalParentRunId && originalParentRunId.trim()) {\n metadata.originalParentRunId = originalParentRunId.slice(0, 128);\n }\n delete metadata.parentCorrelatedVia;\n return { parentStepId: undefined, rejected: true };\n}\n\n/** Apply resolution fields onto step metadata (mutates). */\nexport function applyParentResolutionMetadata(\n metadata: Record<string, unknown>,\n resolution: ParentResolution,\n): void {\n const hasParentSignal =\n Boolean(resolution.parentStepId) ||\n Boolean(resolution.unresolvedParentRunId) ||\n Boolean(resolution.semanticParentLabel) ||\n Boolean(resolution.correlatedVia);\n if (!hasParentSignal) return;\n\n metadata.parentMapping = resolution.parentMapping;\n metadata.parentConfidence = resolution.confidence;\n if (resolution.semanticParentLabel) {\n metadata.semanticParentLabel = resolution.semanticParentLabel;\n }\n if (resolution.unresolvedParentRunId) {\n metadata.unresolvedParentRunId = resolution.unresolvedParentRunId;\n }\n if (resolution.correlatedVia) {\n metadata.parentCorrelatedVia = resolution.correlatedVia;\n }\n if (resolution.parentMapping === \"synthetic-group\") {\n metadata.synthetic = true;\n }\n}\n","import {\n createRunId,\n createStepId,\n getCurrentRunId,\n getTraceDirFromContext,\n hasActiveContext,\n initializeTraceFile,\n prepareTraceEventForDisk,\n resolveTraceDir,\n resolveTraceSafetyOptions,\n writeTraceEvent,\n type InspectKind,\n type StepMetadata,\n type StepType,\n type TraceEvent,\n} from \"agent-inspect/advanced\";\nimport type { RedactionRule } from \"agent-inspect/logs\";\nimport {\n beginCallbackRun,\n bumpCompletionGeneration,\n canScheduleFinalize,\n createInvocationState,\n endCallbackRun,\n markEnvelopeStarted,\n markFinalized,\n noteTerminalError,\n resetInvocationState,\n type AdapterInvocationState,\n} from \"./invocation-state.js\";\nimport {\n applyParentResolutionMetadata,\n applySelfParentCaptureInvariant,\n rejectSelfParentResolution,\n resolveParentRelationship,\n type ParentResolution,\n} from \"./parent-reconciliation.js\";\n\nexport interface LangChainTracePersistenceOptions {\n runName?: string;\n traceDir?: string;\n runId?: string;\n redact?: RedactionRule[];\n silent?: boolean;\n maxPreviewChars?: number;\n}\n\n/** Options for explicit envelope finalization (serverless / unusual callback shapes). */\nexport interface FinalizeOptions {\n status?: \"success\" | \"error\";\n errorMessage?: string;\n endTime?: number;\n}\n\n/** Bounded persistence diagnostics (no absolute paths / customer payloads). */\nexport interface AdapterPersistenceDiagnostics {\n readonly lateEventCount: number;\n readonly activeRunCount: number;\n readonly endedRunCount: number;\n readonly pendingRelationshipCount: number;\n readonly knownRelationshipCount: number;\n readonly syntheticGroupCount: number;\n readonly selfParentRejectedCount: number;\n readonly envelopeStarted: boolean;\n readonly finalized: boolean;\n readonly completionGeneration: number;\n readonly hasTerminalError: boolean;\n}\n\nfunction kindToStepType(kind: InspectKind): StepType {\n switch (kind) {\n case \"LLM\":\n return \"llm\";\n case \"TOOL\":\n return \"tool\";\n case \"DECISION\":\n return \"decision\";\n default:\n return \"logic\";\n }\n}\n\nfunction toStepMetadata(attrs: Record<string, unknown>): StepMetadata {\n const out: StepMetadata = {\n adapter: \"langchain\",\n confidence: \"explicit\",\n };\n for (const [k, v] of Object.entries(attrs)) {\n out[k] = v;\n }\n return out;\n}\n\n/**\n * Maps LangChain callback lifecycle to schemaVersion \"0.1\" manual JSONL events.\n * One callback session creates one standalone run; inside inspectRun, steps append to the active run.\n *\n * Standalone envelope completion is driven by {@link AdapterInvocationState}\n * (activeRuns / completionGeneration / finalized) — not by empty parentRunId heuristics.\n */\nexport class LangChainTracePersistence {\n readonly #traceDir: string;\n #runId: string;\n readonly #runName: string;\n readonly #standalone: boolean;\n readonly #silent: boolean;\n readonly #safety: ReturnType<typeof resolveTraceSafetyOptions>;\n readonly #lifecycle: AdapterInvocationState;\n readonly #lcToStepId = new Map<string, string>();\n /** `${field}\\0${value}` → stepId, or null when ambiguous. */\n readonly #langGraphIndex = new Map<string, string | null>();\n /** Semantic / display label → stepId, or null when ambiguous. */\n readonly #semanticLabelIndex = new Map<string, string | null>();\n /** Semantic label → synthetic step id (created once ≥2 siblings share the label). */\n readonly #syntheticByLabel = new Map<string, string>();\n /** Count of unresolved semantic-parent children seen per label (this invocation). */\n readonly #semanticParentCounts = new Map<string, number>();\n #lateEventCount = 0;\n #selfParentRejectedCount = 0;\n\n constructor(options: LangChainTracePersistenceOptions = {}) {\n const inContext = hasActiveContext();\n this.#standalone = !inContext;\n this.#silent = options.silent ?? false;\n this.#traceDir = inContext\n ? (getTraceDirFromContext() ?? resolveTraceDir({ dir: options.traceDir }))\n : resolveTraceDir({ dir: options.traceDir });\n const contextRunId = inContext ? getCurrentRunId() : undefined;\n this.#runId = contextRunId ?? options.runId ?? createRunId();\n this.#runName = options.runName ?? \"langchain-agent\";\n this.#safety = resolveTraceSafetyOptions({\n redact: options.redact ? { rules: options.redact } : true,\n maxPreviewLength: options.maxPreviewChars,\n });\n this.#lifecycle = createInvocationState(this.#runId);\n }\n\n get runId(): string {\n return this.#runId;\n }\n\n get traceDir(): string {\n return this.#traceDir;\n }\n\n /** @internal Test / diagnostics access to per-invocation lifecycle. */\n get lifecycle(): Readonly<AdapterInvocationState> {\n return this.#lifecycle;\n }\n\n /** Count of end/start events ignored after finalize (diagnostics). */\n get lateEventCount(): number {\n return this.#lateEventCount;\n }\n\n /** Bounded adapter diagnostics for CLI/MCP summaries (no filesystem paths). */\n getDiagnostics(): AdapterPersistenceDiagnostics {\n return {\n lateEventCount: this.#lateEventCount,\n activeRunCount: this.#lifecycle.activeRuns.size,\n endedRunCount: this.#lifecycle.endedRuns.size,\n pendingRelationshipCount: this.#lifecycle.pendingRelationships.length,\n knownRelationshipCount: this.#lifecycle.knownRelationships.size,\n syntheticGroupCount: this.#syntheticByLabel.size,\n selfParentRejectedCount: this.#selfParentRejectedCount,\n envelopeStarted: this.#lifecycle.envelopeStarted,\n finalized: this.#lifecycle.finalized,\n completionGeneration: this.#lifecycle.completionGeneration,\n hasTerminalError: Boolean(this.#lifecycle.terminalError),\n };\n }\n\n #parentIdForPersist(\n stepId: string,\n resolution: ParentResolution,\n metadata: Record<string, unknown>,\n originalParentRunId?: string,\n ): string | undefined {\n const guarded = applySelfParentCaptureInvariant(\n stepId,\n resolution.parentStepId,\n metadata,\n originalParentRunId ?? resolution.unresolvedParentRunId,\n );\n if (guarded.rejected) {\n this.#selfParentRejectedCount += 1;\n }\n return guarded.parentStepId;\n }\n\n /**\n * Start a fresh envelope after a prior invocation finalized (callback reuse).\n * Allocates a new run id unless still nested in an inspectRun context.\n */\n beginNewInvocation(): void {\n if (hasActiveContext()) {\n const ctxId = getCurrentRunId();\n if (ctxId) {\n this.#runId = ctxId;\n resetInvocationState(this.#lifecycle, this.#runId);\n this.#clearStepIndexes();\n this.#lateEventCount = 0;\n this.#selfParentRejectedCount = 0;\n return;\n }\n }\n this.#runId = createRunId();\n resetInvocationState(this.#lifecycle, this.#runId);\n this.#clearStepIndexes();\n this.#lateEventCount = 0;\n this.#selfParentRejectedCount = 0;\n }\n\n reset(): void {\n resetInvocationState(this.#lifecycle);\n this.#clearStepIndexes();\n this.#lateEventCount = 0;\n this.#selfParentRejectedCount = 0;\n }\n\n #clearStepIndexes(): void {\n this.#lcToStepId.clear();\n this.#langGraphIndex.clear();\n this.#semanticLabelIndex.clear();\n this.#syntheticByLabel.clear();\n this.#semanticParentCounts.clear();\n }\n\n #registerUnique(\n index: Map<string, string | null>,\n key: string,\n stepId: string,\n ): void {\n if (!index.has(key)) {\n index.set(key, stepId);\n return;\n }\n if (index.get(key) !== stepId) {\n index.set(key, null);\n }\n }\n\n #langGraphIndexKey(field: string, value: string): string {\n return `${field}\\0${value}`;\n }\n\n #registerStepIndexes(\n stepId: string,\n name: string,\n attributes: Record<string, unknown>,\n ): void {\n const labels = new Set<string>([name]);\n const stripped = name.replace(/^(chain|tool|llm|retriever|agent):/, \"\");\n if (stripped) labels.add(stripped);\n for (const label of labels) {\n this.#registerUnique(this.#semanticLabelIndex, label, stepId);\n }\n\n const lg = attributes.langGraph;\n if (typeof lg === \"object\" && lg !== null && !Array.isArray(lg)) {\n const record = lg as Record<string, unknown>;\n for (const field of [\n \"taskId\",\n \"nodeId\",\n \"nodeName\",\n \"checkpointNamespace\",\n ] as const) {\n const raw = record[field];\n if (typeof raw === \"string\" && raw.trim()) {\n this.#registerUnique(\n this.#langGraphIndex,\n this.#langGraphIndexKey(field, raw),\n stepId,\n );\n }\n }\n }\n }\n\n #resolveParent(\n parentLcRunId: string | undefined,\n attributes: Record<string, unknown>,\n excludeStepId?: string,\n ): ParentResolution {\n const resolution = resolveParentRelationship(\n { parentLcRunId, attributes },\n {\n exactStepByLcRunId: (lcRunId) => this.#lcToStepId.get(lcRunId),\n uniqueStepByLangGraphKey: (key, value) => {\n const hit = this.#langGraphIndex.get(this.#langGraphIndexKey(key, value));\n return hit === null || hit === undefined ? undefined : hit;\n },\n uniqueStepBySemanticLabel: (label) => {\n const hit = this.#semanticLabelIndex.get(label);\n return hit === null || hit === undefined ? undefined : hit;\n },\n },\n excludeStepId ? { excludeStepId } : {},\n );\n return excludeStepId\n ? rejectSelfParentResolution(resolution, excludeStepId, parentLcRunId)\n : resolution;\n }\n\n /**\n * When ≥2 steps share the same unresolved semantic parent label, emit one\n * synthetic grouping node and attach this (and later) siblings under it.\n * The first sibling remains unresolved (append-only JSONL cannot rewrite it).\n */\n async #maybeAttachSyntheticGroup(\n resolution: ParentResolution,\n startTime: number,\n ): Promise<ParentResolution> {\n const label = resolution.semanticParentLabel;\n if (\n resolution.parentMapping !== \"unresolved\" ||\n !label ||\n resolution.parentStepId\n ) {\n return resolution;\n }\n\n const existing = this.#syntheticByLabel.get(label);\n if (existing) {\n return {\n parentStepId: existing,\n confidence: \"synthetic\",\n parentMapping: \"synthetic-group\",\n semanticParentLabel: label,\n unresolvedParentRunId: label,\n };\n }\n\n const nextCount = (this.#semanticParentCounts.get(label) ?? 0) + 1;\n this.#semanticParentCounts.set(label, nextCount);\n if (nextCount < 2) {\n return resolution;\n }\n\n const syntheticStepId = createStepId();\n this.#syntheticByLabel.set(label, syntheticStepId);\n const metadata: StepMetadata = {\n adapter: \"langchain\",\n confidence: \"synthetic\",\n synthetic: true,\n parentMapping: \"synthetic-group\",\n parentConfidence: \"synthetic\",\n semanticParentLabel: label,\n unresolvedParentRunId: label,\n };\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_started\",\n timestamp: startTime,\n runId: this.#runId,\n stepId: syntheticStepId,\n name: `synthetic:${label}`,\n type: \"logic\",\n startTime,\n metadata,\n };\n await this.#write(event);\n\n return {\n parentStepId: syntheticStepId,\n confidence: \"synthetic\",\n parentMapping: \"synthetic-group\",\n semanticParentLabel: label,\n unresolvedParentRunId: label,\n };\n }\n\n /** Rotate when a prior standalone invocation already finalized. */\n #prepareForStart(): void {\n if (this.#standalone && this.#lifecycle.finalized) {\n this.beginNewInvocation();\n }\n }\n\n /**\n * @deprecated Root-ID heuristics are no longer used for envelope completion.\n * Retained as a no-op for call-site compatibility during the v6.8 train.\n */\n noteRoot(_lcRunId: string, _parentRunId?: string): void {\n // Intentionally empty — completion uses activeRuns lifecycle state.\n }\n\n resolveParentId(lcParentRunId?: string): string | undefined {\n if (!lcParentRunId) return undefined;\n return this.#lcToStepId.get(lcParentRunId);\n }\n\n async onStepStart(params: {\n lcRunId: string;\n lcParentRunId?: string;\n name: string;\n kind: InspectKind;\n startTime: number;\n attributes: Record<string, unknown>;\n }): Promise<void> {\n try {\n this.#prepareForStart();\n const stepId = createStepId();\n // Resolve parent before registering this child in any lookup index (N-4).\n const resolution = await this.#maybeAttachSyntheticGroup(\n this.#resolveParent(params.lcParentRunId, params.attributes, stepId),\n params.startTime,\n );\n\n beginCallbackRun(this.#lifecycle, {\n lcRunId: params.lcRunId,\n parentLcRunId: params.lcParentRunId,\n startedAt: params.startTime,\n kind: params.kind,\n stepId,\n });\n\n if (this.#standalone && !this.#lifecycle.envelopeStarted) {\n await this.#ensureRunStarted(params.startTime, params.attributes);\n }\n\n const metadata = toStepMetadata(params.attributes);\n applyParentResolutionMetadata(metadata, resolution);\n const parentId = this.#parentIdForPersist(\n stepId,\n resolution,\n metadata,\n params.lcParentRunId,\n );\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_started\",\n timestamp: params.startTime,\n runId: this.#runId,\n stepId,\n ...(parentId ? { parentId } : {}),\n name: params.name,\n type: kindToStepType(params.kind),\n startTime: params.startTime,\n metadata,\n };\n\n // Exact run-id map after parent resolve so end events can correlate; semantic /\n // LangGraph indexes wait until after persist so the child cannot parent itself.\n this.#lcToStepId.set(params.lcRunId, stepId);\n await this.#write(event);\n this.#registerStepIndexes(stepId, params.name, params.attributes);\n } catch (err) {\n this.#warn(err);\n }\n }\n\n async onStepEnd(params: {\n lcRunId: string;\n lcParentRunId?: string;\n endTime: number;\n durationMs?: number;\n status: \"success\" | \"error\";\n errorMessage?: string;\n completionAttributes?: Record<string, unknown>;\n }): Promise<void> {\n try {\n if (\n this.#lifecycle.finalized &&\n !this.#lifecycle.activeRuns.has(params.lcRunId) &&\n !this.#lcToStepId.has(params.lcRunId)\n ) {\n this.#lateEventCount += 1;\n return;\n }\n\n let stepId = this.#lcToStepId.get(params.lcRunId);\n if (!stepId && params.completionAttributes) {\n if (this.#lifecycle.finalized) {\n this.#lateEventCount += 1;\n return;\n }\n stepId = createStepId();\n const synthName = String(params.completionAttributes.name ?? \"llm:llm\");\n const startTime = params.endTime - (params.durationMs ?? 0);\n const resolution = await this.#maybeAttachSyntheticGroup(\n this.#resolveParent(\n params.lcParentRunId,\n params.completionAttributes,\n stepId,\n ),\n startTime,\n );\n beginCallbackRun(this.#lifecycle, {\n lcRunId: params.lcRunId,\n parentLcRunId: params.lcParentRunId,\n startedAt: startTime,\n kind:\n (params.completionAttributes.kind as InspectKind | undefined) ?? \"LLM\",\n stepId,\n });\n const metadata = toStepMetadata(params.completionAttributes);\n applyParentResolutionMetadata(metadata, resolution);\n const parentId = this.#parentIdForPersist(\n stepId,\n resolution,\n metadata,\n params.lcParentRunId,\n );\n const started: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_started\",\n timestamp: startTime,\n runId: this.#runId,\n stepId,\n ...(parentId ? { parentId } : {}),\n name: synthName,\n type: kindToStepType(\n (params.completionAttributes.kind as InspectKind | undefined) ?? \"LLM\",\n ),\n startTime,\n metadata,\n };\n if (this.#standalone && !this.#lifecycle.envelopeStarted) {\n await this.#ensureRunStarted(startTime, params.completionAttributes);\n }\n this.#lcToStepId.set(params.lcRunId, stepId);\n await this.#write(started);\n this.#registerStepIndexes(stepId, synthName, params.completionAttributes);\n }\n if (!stepId) return;\n\n const durationMs =\n typeof params.durationMs === \"number\" && Number.isFinite(params.durationMs)\n ? Math.max(0, Math.floor(params.durationMs))\n : Math.max(\n 0,\n params.endTime - (this.#lifecycle.runStartTime ?? params.endTime),\n );\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_completed\",\n timestamp: params.endTime,\n runId: this.#runId,\n stepId,\n status: params.status,\n endTime: params.endTime,\n durationMs,\n ...(params.status === \"error\" && params.errorMessage\n ? { error: { message: params.errorMessage } }\n : {}),\n };\n\n await this.#write(event);\n\n if (params.status === \"error\") {\n noteTerminalError(\n this.#lifecycle,\n params.errorMessage ?? \"adapter step error\",\n );\n }\n endCallbackRun(this.#lifecycle, params.lcRunId);\n await this.#scheduleStandaloneFinalization(params.endTime);\n } catch (err) {\n this.#warn(err);\n }\n }\n\n /** Point-in-time adapter events (e.g. agent action) — writes start + completed pair. */\n async onInstantStep(params: {\n lcRunId: string;\n lcParentRunId?: string;\n name: string;\n kind: InspectKind;\n timestamp: number;\n attributes: Record<string, unknown>;\n status: \"success\" | \"error\";\n errorMessage?: string;\n }): Promise<void> {\n try {\n this.#prepareForStart();\n const stepId = createStepId();\n const resolution = await this.#maybeAttachSyntheticGroup(\n this.#resolveParent(params.lcParentRunId, params.attributes, stepId),\n params.timestamp,\n );\n beginCallbackRun(this.#lifecycle, {\n lcRunId: params.lcRunId,\n parentLcRunId: params.lcParentRunId,\n startedAt: params.timestamp,\n kind: params.kind,\n stepId,\n });\n\n if (this.#standalone && !this.#lifecycle.envelopeStarted) {\n await this.#ensureRunStarted(params.timestamp, params.attributes);\n }\n\n const metadata = toStepMetadata(params.attributes);\n applyParentResolutionMetadata(metadata, resolution);\n const parentId = this.#parentIdForPersist(\n stepId,\n resolution,\n metadata,\n params.lcParentRunId,\n );\n\n const started: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_started\",\n timestamp: params.timestamp,\n runId: this.#runId,\n stepId,\n ...(parentId ? { parentId } : {}),\n name: params.name,\n type: kindToStepType(params.kind),\n startTime: params.timestamp,\n metadata,\n };\n this.#lcToStepId.set(params.lcRunId, stepId);\n await this.#write(started);\n this.#registerStepIndexes(stepId, params.name, params.attributes);\n\n const completed: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_completed\",\n timestamp: params.timestamp,\n runId: this.#runId,\n stepId,\n status: params.status,\n endTime: params.timestamp,\n durationMs: 0,\n ...(params.status === \"error\" && params.errorMessage\n ? { error: { message: params.errorMessage } }\n : {}),\n };\n await this.#write(completed);\n\n if (params.status === \"error\") {\n noteTerminalError(\n this.#lifecycle,\n params.errorMessage ?? \"adapter step error\",\n );\n }\n endCallbackRun(this.#lifecycle, params.lcRunId);\n await this.#scheduleStandaloneFinalization(params.timestamp);\n } catch (err) {\n this.#warn(err);\n }\n }\n\n /**\n * Drain deferred microtask finalization. Idempotent; never throws to callers.\n * @experimental\n */\n async flush(): Promise<void> {\n try {\n await Promise.resolve();\n await Promise.resolve();\n } catch (err) {\n this.#warn(err);\n }\n }\n\n /**\n * Force-complete the standalone envelope when safe/started.\n * Works even if active callback runs remain (unusual framework shapes / serverless).\n * Idempotent; never throws to callers.\n * @experimental\n */\n async finalize(options: FinalizeOptions = {}): Promise<boolean> {\n try {\n if (!this.#standalone) return false;\n if (this.#lifecycle.finalized) return false;\n if (!this.#lifecycle.envelopeStarted) return false;\n\n // Cancel any in-flight deferred finalize so we do not double-write.\n bumpCompletionGeneration(this.#lifecycle);\n\n const status =\n options.status ??\n (this.#lifecycle.terminalError ? \"error\" : \"success\");\n if (status === \"error\") {\n noteTerminalError(\n this.#lifecycle,\n options.errorMessage ??\n this.#lifecycle.terminalError?.message ??\n \"adapter finalize error\",\n );\n }\n\n await this.#ensureRunCompleted(\n options.endTime ?? Date.now(),\n status,\n status === \"error\"\n ? (options.errorMessage ?? this.#lifecycle.terminalError?.message)\n : undefined,\n );\n return this.#lifecycle.finalized;\n } catch (err) {\n this.#warn(err);\n return false;\n }\n }\n\n /**\n * Flush + finalize. Idempotent; never throws to callers.\n * @experimental\n */\n async close(): Promise<void> {\n try {\n await this.flush();\n await this.finalize();\n } catch (err) {\n this.#warn(err);\n }\n }\n\n /**\n * When the last active LangChain callback ends, yield one microtask so a\n * same-turn sibling start can cancel finalization, then write run_completed\n * before the callback promise settles. Unresolved external parents do not\n * block the envelope.\n */\n async #scheduleStandaloneFinalization(endTime: number): Promise<void> {\n if (!this.#standalone || !canScheduleFinalize(this.#lifecycle)) return;\n\n const generation = this.#lifecycle.completionGeneration;\n await Promise.resolve();\n if (this.#lifecycle.completionGeneration !== generation) return;\n if (!this.#standalone || !canScheduleFinalize(this.#lifecycle)) return;\n\n const status = this.#lifecycle.terminalError ? \"error\" : \"success\";\n await this.#ensureRunCompleted(\n endTime,\n status,\n status === \"error\" ? this.#lifecycle.terminalError?.message : undefined,\n );\n }\n\n async #ensureRunStarted(\n startTime: number,\n attrs: Record<string, unknown>,\n ): Promise<void> {\n if (!markEnvelopeStarted(this.#lifecycle, startTime)) return;\n\n await initializeTraceFile(this.#runId, this.#traceDir);\n\n const metadata: Record<string, unknown> = {\n adapter: \"langchain\",\n confidence: \"explicit\",\n };\n if (attrs.langchainRunId) metadata.langchainRunId = attrs.langchainRunId;\n if (attrs.adapterRunName) metadata.adapterRunName = attrs.adapterRunName;\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"run_started\",\n timestamp: startTime,\n runId: this.#runId,\n name: this.#runName,\n startTime,\n metadata,\n };\n await this.#write(event);\n }\n\n async #ensureRunCompleted(\n endTime: number,\n stepStatus: \"success\" | \"error\",\n errorMessage?: string,\n ): Promise<void> {\n if (!markFinalized(this.#lifecycle)) return;\n\n for (const [, syntheticStepId] of this.#syntheticByLabel) {\n const completed: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_completed\",\n timestamp: endTime,\n runId: this.#runId,\n stepId: syntheticStepId,\n status: \"success\",\n endTime,\n durationMs: Math.max(0, endTime - (this.#lifecycle.runStartTime ?? endTime)),\n };\n await this.#write(completed);\n }\n\n const startTime = this.#lifecycle.runStartTime ?? endTime;\n const durationMs = Math.max(0, endTime - startTime);\n const runStatus = stepStatus === \"error\" ? \"error\" : \"success\";\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"run_completed\",\n timestamp: endTime,\n runId: this.#runId,\n status: runStatus,\n endTime,\n durationMs,\n ...(runStatus === \"error\" && errorMessage\n ? { error: { message: errorMessage } }\n : {}),\n };\n await this.#write(event);\n }\n\n async #write(event: TraceEvent): Promise<void> {\n const safe = prepareTraceEventForDisk(event, this.#safety);\n await writeTraceEvent(safe, this.#traceDir);\n }\n\n #warn(err: unknown): void {\n if (!this.#silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n}\n","import path from \"node:path\";\n\nimport type { AgentAction, AgentFinish } from \"@langchain/core/agents\";\nimport { BaseCallbackHandler } from \"@langchain/core/callbacks/base\";\nimport type { Serialized } from \"@langchain/core/load/serializable\";\nimport type { LLMResult } from \"@langchain/core/outputs\";\nimport type { ChainValues } from \"@langchain/core/utils/types\";\n\n/** Subpaths like `@langchain/core/messages/base` are not package exports; derive from the handler contract. */\ntype ChatModelMessages = Parameters<\n NonNullable<BaseCallbackHandler[\"handleChatModelStart\"]>\n>[1];\ntype RetrieverDocuments = Parameters<\n NonNullable<BaseCallbackHandler[\"handleRetrieverEnd\"]>\n>[0];\nimport {\n getCurrentCorrelationMetadata,\n type InspectEvent,\n type InspectKind,\n} from \"agent-inspect/advanced\";\nimport { Redactor } from \"agent-inspect/logs\";\n\nimport {\n extractLangGraphMetadata,\n extractModelName,\n extractTokenUsage,\n safePreview,\n toPlainMetadata,\n} from \"./metadata.js\";\nimport {\n createLlmStreamState,\n recordLlmStreamToken,\n streamMetadataFromState,\n type LlmStreamState,\n} from \"./streaming-metadata.js\";\nimport { applyToolIdentityAttributes, resolveToolIdentity } from \"./tool-identity.js\";\nimport { resolvePersistIntent } from \"./persist-intent.js\";\nimport { LangChainTracePersistence } from \"./trace-persistence.js\";\nimport type { AgentInspectCallbackOptions } from \"./types.js\";\n\ntype StartEntry = { ts: number; kind: InspectKind; langGraph?: Record<string, unknown> };\n\nfunction isRecord(v: unknown): v is Record<string, unknown> {\n return typeof v === \"object\" && v !== null && !Array.isArray(v);\n}\n\nfunction serializedLabel(s: Serialized): string | undefined {\n if (typeof s.name === \"string\" && s.name.trim()) return s.name;\n if (Array.isArray(s.id) && s.id.length > 0) return s.id[s.id.length - 1];\n return s.type;\n}\n\nfunction errorShape(err: unknown): { errorName?: string; errorMessage: string } {\n if (err instanceof Error) {\n return { errorName: err.name, errorMessage: err.message };\n }\n return { errorMessage: String(err) };\n}\n\nexport class AgentInspectCallback extends BaseCallbackHandler {\n name = \"agent-inspect\";\n /**\n * Ensure LangGraph/LangChain awaits async handler work (persistence) before\n * invoke/stream settles. Required for deterministic standalone envelopes.\n */\n awaitHandlers = true;\n\n readonly #opts: Required<\n Pick<AgentInspectCallbackOptions, \"capture\" | \"silent\" | \"maxPreviewChars\">\n > &\n AgentInspectCallbackOptions;\n\n readonly #redactor: Redactor;\n readonly #persistence?: LangChainTracePersistence;\n #events: InspectEvent[] = [];\n readonly #starts = new Map<string, StartEntry>();\n readonly #streamState = new Map<string, LlmStreamState>();\n readonly #deferredPersistStart = new Map<\n string,\n {\n lcParentRunId?: string;\n name: string;\n kind: InspectKind;\n startTime: number;\n attributes: Record<string, unknown>;\n }\n >();\n #rootRunId?: string;\n\n constructor(options: AgentInspectCallbackOptions = {}) {\n super({});\n const intent = resolvePersistIntent(options);\n this.#opts = {\n capture: options.capture ?? \"metadata-only\",\n silent: options.silent ?? false,\n maxPreviewChars: options.maxPreviewChars ?? 200,\n runName: options.runName ?? \"langchain-agent\",\n ...options,\n persist: intent.persist,\n };\n this.#redactor = new Redactor({ rules: this.#opts.redact });\n if (intent.contradictory && !this.#opts.silent) {\n console.error(\n \"[agent-inspect:langchain] persist:false with traceDir set — traces stay in-memory; remove traceDir or set persist:true\",\n );\n }\n if (intent.persist) {\n this.#persistence = new LangChainTracePersistence({\n runName: this.#opts.runName,\n traceDir: this.#opts.traceDir,\n runId: this.#opts.runId,\n redact: this.#opts.redact,\n silent: this.#opts.silent,\n maxPreviewChars: this.#opts.maxPreviewChars,\n });\n }\n }\n\n getEvents(): InspectEvent[] {\n return this.#events.map((e) => ({\n ...e,\n attributes: e.attributes ? { ...e.attributes } : undefined,\n source: { ...e.source },\n }));\n }\n\n clear(): void {\n this.#events = [];\n this.#starts.clear();\n this.#streamState.clear();\n this.#deferredPersistStart.clear();\n this.#rootRunId = undefined;\n this.#persistence?.reset();\n }\n\n /**\n * Bounded adapter diagnostics for the current invocation (counts only).\n * Safe for CLI/MCP summaries — no absolute paths or payloads.\n *\n * @experimental\n */\n getDiagnostics(): {\n lateEventCount: number;\n activeRunCount: number;\n endedRunCount: number;\n pendingRelationshipCount: number;\n knownRelationshipCount: number;\n syntheticGroupCount: number;\n selfParentRejectedCount: number;\n envelopeStarted: boolean;\n finalized: boolean;\n completionGeneration: number;\n hasTerminalError: boolean;\n inMemoryEventCount: number;\n deferredPersistStartCount: number;\n } {\n const base = this.#persistence?.getDiagnostics() ?? {\n lateEventCount: 0,\n activeRunCount: 0,\n endedRunCount: 0,\n pendingRelationshipCount: 0,\n knownRelationshipCount: 0,\n syntheticGroupCount: 0,\n selfParentRejectedCount: 0,\n envelopeStarted: false,\n finalized: false,\n completionGeneration: 0,\n hasTerminalError: false,\n };\n return {\n ...base,\n inMemoryEventCount: this.#events.length,\n deferredPersistStartCount: this.#deferredPersistStart.size,\n };\n }\n\n /**\n * Drain deferred completion work (microtask finalization).\n * Idempotent. Failures are isolated and never thrown to user code.\n *\n * @experimental Additive finalization API for serverless / unusual callback shapes.\n */\n async flush(): Promise<void> {\n try {\n await this.#persistence?.flush();\n } catch (err) {\n if (!this.#opts.silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n }\n\n /**\n * Complete the standalone envelope when started. Fallback when automatic\n * completion cannot run (e.g. process shutdown). Idempotent.\n * Failures are isolated and never thrown to user code.\n *\n * @experimental Additive finalization API for serverless / unusual callback shapes.\n */\n async finalize(options?: {\n status?: \"success\" | \"error\";\n errorMessage?: string;\n }): Promise<void> {\n try {\n await this.#persistence?.finalize(options);\n } catch (err) {\n if (!this.#opts.silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n }\n\n /**\n * `flush()` then `finalize()`. Idempotent. Failures are isolated.\n *\n * @experimental Additive finalization API for serverless / unusual callback shapes.\n */\n async close(): Promise<void> {\n try {\n await this.flush();\n await this.finalize();\n } catch (err) {\n if (!this.#opts.silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n }\n\n /**\n * When persist mode has already finalized an envelope, rotate to a new\n * invocation before the next start so reused handlers do not mix runs.\n */\n #prepareCallbackInvocation(): void {\n const persistence = this.#persistence;\n if (!persistence?.lifecycle.finalized) return;\n this.#events = [];\n this.#starts.clear();\n this.#streamState.clear();\n this.#deferredPersistStart.clear();\n this.#rootRunId = undefined;\n persistence.beginNewInvocation();\n }\n\n #streamPreviewLimit(): number {\n if (this.#opts.capture !== \"preview\") return 0;\n return this.#opts.maxStreamPreviewChars ?? this.#opts.maxPreviewChars ?? 200;\n }\n\n #attachStreamMetadata(attrs: Record<string, unknown>, lcRunId: string): void {\n const meta = streamMetadataFromState(this.#streamState.get(lcRunId), {\n capturePreview: this.#opts.capture === \"preview\",\n maxPreviewChars: this.#streamPreviewLimit(),\n });\n if (meta) {\n Object.assign(attrs, meta);\n }\n }\n\n #clearStreamState(lcRunId: string): void {\n this.#streamState.delete(lcRunId);\n this.#deferredPersistStart.delete(lcRunId);\n }\n\n #mergeCorrelation(attrs: Record<string, unknown>): void {\n if (this.#opts.capture === \"none\") return;\n try {\n const corr = getCurrentCorrelationMetadata();\n if (!corr) return;\n for (const [key, value] of Object.entries(corr)) {\n if (typeof value === \"string\" && value.length > 0) {\n attrs[key] = value;\n }\n }\n } catch {\n /* instrumentation must not throw */\n }\n }\n\n async #persistLlmStepStart(\n lcRunId: string,\n lcParentRunId: string | undefined,\n name: string,\n kind: InspectKind,\n startTime: number,\n attributes: Record<string, unknown>,\n ): Promise<void> {\n if (this.#opts.stream && this.#opts.persist) {\n this.#deferredPersistStart.set(lcRunId, {\n lcParentRunId,\n name,\n kind,\n startTime,\n attributes: { ...attributes },\n });\n return;\n }\n await this.#persistStepStart(lcRunId, lcParentRunId, name, kind, attributes, startTime);\n }\n\n async #flushDeferredPersistStart(\n lcRunId: string,\n completionAttributes: Record<string, unknown>,\n ): Promise<void> {\n const pending = this.#deferredPersistStart.get(lcRunId);\n if (!pending || !this.#opts.persist) return;\n const merged = {\n ...pending.attributes,\n ...completionAttributes,\n };\n await this.#persistStepStart(\n lcRunId,\n pending.lcParentRunId,\n pending.name,\n pending.kind,\n merged,\n pending.startTime,\n );\n this.#deferredPersistStart.delete(lcRunId);\n }\n\n #ensureRoot(lcRunId: string, parentRunId?: string): void {\n if (parentRunId) return;\n if (!this.#rootRunId) this.#rootRunId = lcRunId;\n }\n\n #traceRunId(lcRunId: string): string {\n return this.#rootRunId ?? lcRunId;\n }\n\n #durationFor(lcRunId: string): number | undefined {\n const s = this.#starts.get(lcRunId);\n if (!s) return undefined;\n return Date.now() - s.ts;\n }\n\n #rememberStart(lcRunId: string, kind: InspectKind): void {\n this.#starts.set(lcRunId, { ts: Date.now(), kind });\n }\n\n #rememberStartMetadata(lcRunId: string, attrs: Record<string, unknown>): void {\n const start = this.#starts.get(lcRunId);\n if (!start || !isRecord(attrs.langGraph)) return;\n this.#starts.set(lcRunId, { ...start, langGraph: { ...attrs.langGraph } });\n }\n\n #attachStartMetadata(attrs: Record<string, unknown>, lcRunId: string): void {\n const langGraph = this.#starts.get(lcRunId)?.langGraph;\n if (langGraph && !attrs.langGraph) attrs.langGraph = { ...langGraph };\n }\n\n #clearStart(lcRunId: string): void {\n this.#starts.delete(lcRunId);\n }\n\n #baseAttrs(\n lcRunId: string,\n parentRunId: string | undefined,\n tags: string[] | undefined,\n runNameArg: string | undefined,\n ): Record<string, unknown> {\n const out: Record<string, unknown> = {\n langchainRunId: lcRunId,\n };\n if (parentRunId) out.parentRunId = parentRunId;\n if (this.#opts.runName) out.adapterRunName = this.#opts.runName;\n if (runNameArg) out.runName = runNameArg;\n // Never persist absolute local paths (usernames / machine layout) on events.\n if (this.#opts.persist) out.traceStorage = \"local\";\n const configuredTraceDir = this.#opts.traceDir?.trim();\n if (\n configuredTraceDir &&\n !path.isAbsolute(configuredTraceDir) &&\n !/^[A-Za-z]:[\\\\/]/.test(configuredTraceDir)\n ) {\n out.workspaceRelativeTraceDir = configuredTraceDir;\n }\n const cap = this.#opts.capture;\n if (cap !== \"none\" && tags?.length) out.tags = [...tags];\n return out;\n }\n\n #mergeMetadata(\n attrs: Record<string, unknown>,\n metadata: Record<string, unknown> | undefined,\n ): void {\n if (this.#opts.capture === \"none\" || !metadata) return;\n attrs.metadata = this.#redactor.redactRecord(toPlainMetadata(metadata));\n const langGraph = extractLangGraphMetadata(metadata);\n if (langGraph) attrs.langGraph = this.#redactor.redactRecord(langGraph);\n }\n\n #applyPreview(attrs: Record<string, unknown>, previews: Record<string, unknown>): void {\n if (this.#opts.capture !== \"preview\") return;\n const max = this.#opts.maxPreviewChars;\n for (const [k, v] of Object.entries(previews)) {\n const p = safePreview(v, max);\n if (p !== undefined) attrs[k] = p;\n }\n }\n\n #pushEvent(ev: InspectEvent): void {\n try {\n const attributes = ev.attributes\n ? this.#redactor.redactRecord({ ...ev.attributes })\n : undefined;\n this.#events.push({ ...ev, attributes });\n } catch (err) {\n if (!this.#opts.silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n }\n\n async #persistStepStart(\n lcRunId: string,\n lcParentRunId: string | undefined,\n name: string,\n kind: InspectKind,\n attrs: Record<string, unknown>,\n startTime: number,\n ): Promise<void> {\n await this.#persistence?.onStepStart({\n lcRunId,\n lcParentRunId,\n name,\n kind,\n startTime,\n attributes: attrs,\n });\n }\n\n async #persistStepEnd(\n lcRunId: string,\n lcParentRunId: string | undefined,\n status: \"success\" | \"error\",\n endTime: number,\n durationMs: number | undefined,\n errorMessage?: string,\n completionAttributes?: Record<string, unknown>,\n ): Promise<void> {\n await this.#persistence?.onStepEnd({\n lcRunId,\n lcParentRunId,\n endTime,\n durationMs,\n status,\n errorMessage,\n completionAttributes,\n });\n }\n\n async #persistInstant(\n lcRunId: string,\n lcParentRunId: string | undefined,\n name: string,\n kind: InspectKind,\n attrs: Record<string, unknown>,\n status: \"success\" | \"error\",\n errorMessage?: string,\n ): Promise<void> {\n await this.#persistence?.onInstantStep({\n lcRunId,\n lcParentRunId,\n name,\n kind,\n timestamp: Date.now(),\n attributes: attrs,\n status,\n errorMessage,\n });\n }\n\n override async handleChainStart(\n chain: Serialized,\n inputs: ChainValues,\n runId: string,\n runType?: string,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n parentRunId?: string,\n _extra?: Record<string, unknown>,\n ): Promise<void> {\n void runType;\n this.#prepareCallbackInvocation();\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"CHAIN\");\n const label = serializedLabel(chain) ?? \"chain\";\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.inputPreview = inputs;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n };\n this.#mergeMetadata(attrs, metadata);\n this.#applyPreview(attrs, previews);\n this.#rememberStartMetadata(runId, attrs);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:CHAIN:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: `chain:${runName ?? label}`,\n kind: \"CHAIN\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepStart(runId, parentRunId, `chain:${runName ?? label}`, \"CHAIN\", attrs, ts);\n }\n\n override async handleChainEnd(\n outputs: ChainValues,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _kwargs?: { inputs?: Record<string, unknown> },\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.outputPreview = outputs;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:CHAIN:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"chain:end\",\n kind: \"CHAIN\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs);\n }\n\n override async handleChainError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _kwargs?: { inputs?: Record<string, unknown> },\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:CHAIN:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"chain:error\",\n kind: \"CHAIN\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage);\n }\n\n override async handleLLMStart(\n llm: Serialized,\n prompts: string[],\n runId: string,\n parentRunId?: string,\n _extraParams?: Record<string, unknown>,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n ): Promise<void> {\n this.#prepareCallbackInvocation();\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"LLM\");\n const model = extractModelName(llm);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") {\n previews.promptPreview = prompts.length === 1 ? prompts[0] : prompts;\n }\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n };\n if (model && this.#opts.capture !== \"none\") attrs.model = model;\n this.#mergeMetadata(attrs, metadata);\n this.#mergeCorrelation(attrs);\n this.#applyPreview(attrs, previews);\n this.#rememberStartMetadata(runId, attrs);\n const ts = Date.now();\n const stepName = `llm:${model ?? \"llm\"}`;\n this.#pushEvent({\n eventId: `${runId}:LLM:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"LLM\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistLlmStepStart(runId, parentRunId, stepName, \"LLM\", ts, attrs);\n }\n\n override async handleChatModelStart(\n llm: Serialized,\n messages: ChatModelMessages,\n runId: string,\n parentRunId?: string,\n _extraParams?: Record<string, unknown>,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n ): Promise<void> {\n this.#prepareCallbackInvocation();\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"LLM\");\n const model = extractModelName(llm);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.inputPreview = messages;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n };\n if (model && this.#opts.capture !== \"none\") attrs.model = model;\n this.#mergeMetadata(attrs, metadata);\n this.#mergeCorrelation(attrs);\n this.#applyPreview(attrs, previews);\n this.#rememberStartMetadata(runId, attrs);\n const ts = Date.now();\n const stepName = `llm:${model ?? \"llm\"}`;\n this.#pushEvent({\n eventId: `${runId}:CHAT:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"LLM\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistLlmStepStart(runId, parentRunId, stepName, \"LLM\", ts, attrs);\n }\n\n override handleLLMNewToken(\n token: string,\n _idx: { prompt: number; completion: number },\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n _fields?: { chunk?: unknown },\n ): void | Promise<void> {\n void _idx;\n void _parentRunId;\n void _tags;\n void _fields;\n try {\n if (!this.#opts.stream) return;\n let state = this.#streamState.get(runId);\n if (!state) {\n state = createLlmStreamState();\n this.#streamState.set(runId, state);\n }\n recordLlmStreamToken(state, token, Date.now(), this.#streamPreviewLimit());\n } catch (err) {\n if (!this.#opts.silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n }\n\n override async handleLLMEnd(\n output: LLMResult,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _extraParams?: Record<string, unknown>,\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const tokens = extractTokenUsage(output);\n const model = extractModelName(output);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.outputPreview = output;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n if (model && this.#opts.capture !== \"none\") attrs.model = model;\n if (tokens && this.#opts.capture !== \"none\") attrs.tokens = tokens;\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n this.#attachStreamMetadata(attrs, runId);\n this.#mergeCorrelation(attrs);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:LLM:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: `llm:${model ?? \"llm\"}`,\n kind: \"LLM\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#flushDeferredPersistStart(runId, attrs);\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs, undefined, {\n ...attrs,\n name: `llm:${model ?? \"llm\"}`,\n kind: \"LLM\",\n });\n this.#clearStreamState(runId);\n }\n\n override async handleLLMError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _extraParams?: Record<string, unknown>,\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n this.#attachStreamMetadata(attrs, runId);\n this.#mergeCorrelation(attrs);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:LLM:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"llm:error\",\n kind: \"LLM\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#flushDeferredPersistStart(runId, attrs);\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage, {\n ...attrs,\n name: \"llm:error\",\n kind: \"LLM\",\n });\n this.#clearStreamState(runId);\n }\n\n override async handleToolStart(\n tool: Serialized,\n input: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n toolCallId?: string,\n ): Promise<void> {\n this.#prepareCallbackInvocation();\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"TOOL\");\n const identity = resolveToolIdentity(tool, runName, metadata, toolCallId);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.inputPreview = input;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n };\n applyToolIdentityAttributes(attrs, identity);\n this.#mergeMetadata(attrs, metadata);\n this.#applyPreview(attrs, previews);\n this.#rememberStartMetadata(runId, attrs);\n const ts = Date.now();\n const stepName = `tool:${identity.displayName}`;\n this.#pushEvent({\n eventId: `${runId}:TOOL:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"TOOL\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepStart(runId, parentRunId, stepName, \"TOOL\", attrs, ts);\n }\n\n override async handleToolEnd(\n output: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.outputPreview = output;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:TOOL:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"tool:end\",\n kind: \"TOOL\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs);\n }\n\n override async handleToolError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:TOOL:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"tool:error\",\n kind: \"TOOL\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage);\n }\n\n override async handleRetrieverStart(\n retriever: Serialized,\n _query: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: Record<string, unknown>,\n name?: string,\n ): Promise<void> {\n void _query;\n this.#prepareCallbackInvocation();\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"RETRIEVER\");\n const rname = name ?? serializedLabel(retriever) ?? \"retriever\";\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n retriever: rname,\n };\n this.#mergeMetadata(attrs, metadata);\n this.#rememberStartMetadata(runId, attrs);\n const ts = Date.now();\n const stepName = `retriever:${rname}`;\n this.#pushEvent({\n eventId: `${runId}:RETRIEVER:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"RETRIEVER\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepStart(runId, parentRunId, stepName, \"RETRIEVER\", attrs, ts);\n }\n\n override async handleRetrieverEnd(\n documents: RetrieverDocuments,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\" && documents.length > 0) {\n previews.documentPreview = documents.slice(0, 3);\n }\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n documentCount: documents.length,\n };\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:RETRIEVER:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"retriever:end\",\n kind: \"RETRIEVER\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs);\n }\n\n override async handleRetrieverError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n this.#attachStartMetadata(attrs, runId);\n this.#clearStart(runId);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:RETRIEVER:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"retriever:error\",\n kind: \"RETRIEVER\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage);\n }\n\n override async handleAgentAction(\n action: AgentAction,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#prepareCallbackInvocation();\n this.#ensureRoot(runId, parentRunId);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n tool: action.tool,\n };\n if (this.#opts.capture === \"preview\") {\n this.#applyPreview(attrs, {\n toolInputPreview: action.toolInput,\n logPreview: action.log,\n });\n }\n this.#pushEvent({\n eventId: `${runId}:AGENT:action:${Date.now()}`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"agent:action\",\n kind: \"DECISION\",\n timestamp: Date.now(),\n status: \"ok\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistInstant(runId, parentRunId, \"agent:action\", \"DECISION\", attrs, \"success\");\n }\n\n override async handleAgentEnd(\n finish: AgentFinish,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n if (this.#opts.capture === \"preview\") {\n this.#applyPreview(attrs, {\n outputPreview: finish.returnValues,\n logPreview: finish.log,\n });\n }\n this.#pushEvent({\n eventId: `${runId}:AGENT:end:${Date.now()}`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"agent:end\",\n kind: \"AGENT\",\n timestamp: Date.now(),\n status: \"ok\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistInstant(runId, parentRunId, \"agent:end\", \"AGENT\", attrs, \"success\");\n }\n}\n"]}
|