@agent-inspect/langchain 6.7.4 → 6.8.0
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 +17 -5
- package/dist/index.cjs +704 -95
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +77 -3
- package/dist/index.d.ts +77 -3
- package/dist/index.mjs +700 -95
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -3
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/metadata.ts","../src/streaming-metadata.ts","../src/trace-persistence.ts","../src/agent-inspect-callback.ts"],"names":["hasActiveContext","getTraceDirFromContext","resolveTraceDir","getCurrentRunId","createRunId","resolveTraceSafetyOptions","createStepId","initializeTraceFile","prepareTraceEventForDisk","writeTraceEvent","isRecord","BaseCallbackHandler","Redactor","getCurrentCorrelationMetadata"],"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","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\";\n\nexport interface LangChainTracePersistenceOptions {\n runName?: string;\n traceDir?: string;\n runId?: string;\n redact?: RedactionRule[];\n silent?: boolean;\n maxPreviewChars?: number;\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 */\nexport class LangChainTracePersistence {\n readonly #traceDir: string;\n readonly #runId: string;\n readonly #runName: string;\n readonly #standalone: boolean;\n readonly #silent: boolean;\n readonly #safety: ReturnType<typeof resolveTraceSafetyOptions>;\n\n #runStarted = false;\n #runCompleted = false;\n #runStartTime?: number;\n #rootLcRunId?: string;\n /** Live LangChain callback runIds for standalone envelope finalization. */\n readonly #activeLcRunIds = new Set<string>();\n #sawError = false;\n #lastErrorMessage?: string;\n #finalizationToken = 0;\n readonly #lcToStepId = new Map<string, string>();\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 this.#runId =\n (inContext ? getCurrentRunId() : undefined) ??\n options.runId ??\n 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 }\n\n get runId(): string {\n return this.#runId;\n }\n\n get traceDir(): string {\n return this.#traceDir;\n }\n\n reset(): void {\n this.#finalizationToken += 1;\n this.#runStarted = false;\n this.#runCompleted = false;\n this.#runStartTime = undefined;\n this.#rootLcRunId = undefined;\n this.#activeLcRunIds.clear();\n this.#sawError = false;\n this.#lastErrorMessage = undefined;\n this.#lcToStepId.clear();\n }\n\n noteRoot(lcRunId: string, parentRunId?: string): void {\n if (!parentRunId && !this.#rootLcRunId) {\n this.#rootLcRunId = lcRunId;\n }\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 // Invalidate any deferred run_completed — another lifecycle event started.\n this.#finalizationToken += 1;\n this.noteRoot(params.lcRunId, params.lcParentRunId);\n this.#activeLcRunIds.add(params.lcRunId);\n\n if (this.#standalone && !this.#runStarted) {\n await this.#ensureRunStarted(params.startTime, params.attributes);\n }\n\n const stepId = createStepId();\n this.#lcToStepId.set(params.lcRunId, stepId);\n const parentId = this.resolveParentId(params.lcParentRunId);\n const metadata = toStepMetadata(params.attributes);\n if (params.lcParentRunId && !parentId) {\n metadata.parentMapping = \"unresolved\";\n metadata.unresolvedParentRunId = 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 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 let stepId = this.#lcToStepId.get(params.lcRunId);\n if (!stepId && params.completionAttributes) {\n stepId = createStepId();\n this.#lcToStepId.set(params.lcRunId, stepId);\n const parentId = this.resolveParentId(params.lcParentRunId);\n const metadata = toStepMetadata(params.completionAttributes);\n if (params.lcParentRunId && !parentId) {\n metadata.parentMapping = \"unresolved\";\n metadata.unresolvedParentRunId = params.lcParentRunId;\n }\n const startTime = params.endTime - (params.durationMs ?? 0);\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: String(params.completionAttributes.name ?? \"llm:llm\"),\n type: kindToStepType(\n (params.completionAttributes.kind as InspectKind | undefined) ?? \"LLM\",\n ),\n startTime,\n metadata,\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(0, params.endTime - (this.#runStartTime ?? params.endTime));\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 this.#sawError = true;\n if (params.errorMessage) this.#lastErrorMessage = params.errorMessage;\n }\n this.#activeLcRunIds.delete(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.#finalizationToken += 1;\n this.noteRoot(params.lcRunId, params.lcParentRunId);\n this.#activeLcRunIds.add(params.lcRunId);\n\n if (this.#standalone && !this.#runStarted) {\n await this.#ensureRunStarted(params.timestamp, params.attributes);\n }\n\n const stepId = createStepId();\n this.#lcToStepId.set(params.lcRunId, stepId);\n const parentId = this.resolveParentId(params.lcParentRunId);\n const metadata = toStepMetadata(params.attributes);\n if (params.lcParentRunId && !parentId) {\n metadata.parentMapping = \"unresolved\";\n metadata.unresolvedParentRunId = 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 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 this.#sawError = true;\n if (params.errorMessage) this.#lastErrorMessage = params.errorMessage;\n }\n this.#activeLcRunIds.delete(params.lcRunId);\n await this.#scheduleStandaloneFinalization(params.timestamp);\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 || this.#runCompleted || !this.#runStarted) return;\n if (this.#activeLcRunIds.size > 0) return;\n\n const token = ++this.#finalizationToken;\n await Promise.resolve();\n if (token !== this.#finalizationToken) return;\n if (!this.#standalone || this.#runCompleted || !this.#runStarted) return;\n if (this.#activeLcRunIds.size > 0) return;\n\n const status = this.#sawError ? \"error\" : \"success\";\n await this.#ensureRunCompleted(\n endTime,\n status,\n status === \"error\" ? this.#lastErrorMessage : undefined,\n );\n }\n\n async #ensureRunStarted(\n startTime: number,\n attrs: Record<string, unknown>,\n ): Promise<void> {\n if (this.#runStarted) return;\n this.#runStarted = true;\n this.#runStartTime = startTime;\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 (this.#runCompleted || !this.#runStarted) return;\n this.#runCompleted = true;\n\n const startTime = this.#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 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 { 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\n/** Prefer human tool names over wrapper class labels for display/step identity. */\nfunction resolveToolDisplayName(\n tool: Serialized,\n runName?: string,\n metadata?: Record<string, unknown>,\n): string {\n const fromRun = typeof runName === \"string\" ? runName.trim() : \"\";\n if (fromRun) return fromRun;\n const metaName = metadata?.toolName;\n if (typeof metaName === \"string\" && metaName.trim()) return metaName.trim();\n const metaTool = metadata?.tool;\n if (typeof metaTool === \"string\" && metaTool.trim()) return metaTool.trim();\n return serializedLabel(tool) ?? \"tool\";\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 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 this.#opts = {\n capture: options.capture ?? \"metadata-only\",\n silent: options.silent ?? false,\n maxPreviewChars: options.maxPreviewChars ?? 200,\n persist: options.persist ?? false,\n runName: options.runName ?? \"langchain-agent\",\n ...options,\n };\n this.#redactor = new Redactor({ rules: this.#opts.redact });\n if (this.#opts.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 #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 if (this.#opts.traceDir) out.traceDir = this.#opts.traceDir;\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.#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.#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.#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.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"TOOL\");\n const toolName = resolveToolDisplayName(tool, runName, metadata);\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 tool: toolName,\n };\n this.#mergeMetadata(attrs, metadata);\n this.#applyPreview(attrs, previews);\n this.#rememberStartMetadata(runId, attrs);\n const ts = Date.now();\n const stepName = `tool:${toolName}`;\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.#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.#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 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"]}
|