@agent-inspect/ai-sdk 6.17.4 → 6.17.5
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 +2 -1
- package/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +6 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -52,6 +52,7 @@ const result = await generateText({
|
|
|
52
52
|
- Writes JSONL under `.agent-inspect/` only
|
|
53
53
|
- No network calls from AgentInspect
|
|
54
54
|
- Default capture: metadata-only
|
|
55
|
+
- `capture: "preview"` is accepted for compatibility but currently falls back to metadata-only and emits one `AI_ADAPTER_PREVIEW_NOT_AVAILABLE` console warning per integration instance
|
|
55
56
|
|
|
56
57
|
## API
|
|
57
58
|
|
|
@@ -75,7 +76,7 @@ const result = await generateText({
|
|
|
75
76
|
## Troubleshooting
|
|
76
77
|
|
|
77
78
|
- **No trace events:** Ensure `experimental_telemetry.isEnabled: true` and handlers are spread
|
|
78
|
-
- **Preview mode warning:** `capture: "preview"` is not
|
|
79
|
+
- **Preview mode warning:** `capture: "preview"` is not implemented yet; AgentInspect emits `AI_ADAPTER_PREVIEW_NOT_AVAILABLE` once and keeps metadata-only persistence
|
|
79
80
|
|
|
80
81
|
|
|
81
82
|
## Version
|
package/dist/index.cjs
CHANGED
|
@@ -461,15 +461,21 @@ var AgentInspectAiSdkTelemetryIntegration = class {
|
|
|
461
461
|
this.diagnostics.lifecycleWarnings += 1;
|
|
462
462
|
this.diagnostics.lastWarning = message;
|
|
463
463
|
}
|
|
464
|
+
previewCapabilityWarned = false;
|
|
464
465
|
recordCaptureOptionWarnings() {
|
|
465
466
|
const previewOnlyOptions = [];
|
|
466
467
|
if (this.requestedCapture === "preview") previewOnlyOptions.push("capture");
|
|
467
468
|
if (this.options.redactionProfile !== void 0) previewOnlyOptions.push("redactionProfile");
|
|
468
469
|
if (this.options.maxPreviewChars !== void 0) previewOnlyOptions.push("maxPreviewChars");
|
|
469
470
|
if (this.requestedCapture === "preview") {
|
|
471
|
+
const message = `AI_ADAPTER_PREVIEW_NOT_AVAILABLE: capture:"preview" was requested, but this adapter currently persists metadata-only. Effective capture: metadata-only. No preview content was written. See docs/ADAPTERS.md.`;
|
|
470
472
|
this.recordLifecycleWarning(
|
|
471
473
|
`AI SDK preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(", ")}.`
|
|
472
474
|
);
|
|
475
|
+
if (!this.previewCapabilityWarned) {
|
|
476
|
+
this.previewCapabilityWarned = true;
|
|
477
|
+
console.warn(`[agent-inspect:ai-sdk] ${message}`);
|
|
478
|
+
}
|
|
473
479
|
return;
|
|
474
480
|
}
|
|
475
481
|
if (previewOnlyOptions.length > 0) {
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["fileWriter","bindTelemetryIntegration"],"mappings":"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","file":"index.cjs","sourcesContent":["import { bindTelemetryIntegration } from \"ai\";\nimport type {\n OnFinishEvent,\n OnStartEvent,\n OnStepFinishEvent,\n OnStepStartEvent,\n OnToolCallFinishEvent,\n OnToolCallStartEvent,\n TelemetryIntegration,\n} from \"ai\";\nimport type {\n RedactionProfile,\n} from \"agent-inspect/advanced\";\nimport type {\n PersistedInspectEvent,\n PersistedInspectError,\n PersistedTokenUsage,\n} from \"agent-inspect/persisted\";\nimport { fileWriter } from \"agent-inspect/writers\";\nimport type { TraceWriter, TraceWriterStats } from \"agent-inspect/writers\";\n\n/**\n * Experimental capture mode for the AI SDK adapter.\n *\n * @experimental This package is part of the framework adapter train.\n */\nexport type AgentInspectAiSdkCaptureMode = \"metadata-only\" | \"preview\";\n\n/**\n * Options for the experimental AI SDK telemetry integration.\n *\n * @experimental Callers must keep AI SDK telemetry configured with\n * `recordInputs: false` and `recordOutputs: false`.\n */\nexport interface AgentInspectAiSdkOptions {\n /**\n * Explicit local writer for runtime integration.\n */\n writer?: TraceWriter;\n\n /**\n * Convenience local trace directory for writer-owned persistence.\n */\n traceDir?: string;\n\n /**\n * Optional run name used by lifecycle mapping.\n */\n runName?: string;\n\n /**\n * Capture policy. Defaults to metadata-only.\n *\n * @experimental `preview` is currently rejected with diagnostics and falls\n * back to metadata-only until bounded free-text preview capture is implemented.\n */\n capture?: AgentInspectAiSdkCaptureMode;\n\n /**\n * Redaction profile for future preview capture.\n *\n * @experimental Currently diagnostic-only because the adapter persists\n * metadata summaries and does not write raw preview content.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Bounds future preview capture.\n *\n * @experimental Currently diagnostic-only because `preview` falls back to\n * metadata-only capture.\n */\n maxPreviewChars?: number;\n}\n\nexport interface AgentInspectAiSdkDiagnostics {\n writeFailures: number;\n lifecycleWarnings: number;\n flushFailures: number;\n closeFailures: number;\n lastError?: string;\n lastWarning?: string;\n}\n\nexport interface AgentInspectAiSdkIntegration extends TelemetryIntegration {\n getDiagnostics(): AgentInspectAiSdkDiagnostics;\n getWriterStats(): TraceWriterStats | undefined;\n flush(): Promise<void>;\n close(): Promise<void>;\n}\n\ntype AiSdkModelInfo = {\n provider?: string;\n modelId?: string;\n};\n\ntype AiSdkUsage = {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n cachedInputTokens?: number;\n};\n\ninterface ActiveStep {\n eventId: string;\n parentId: string;\n startedAt: string;\n}\n\ninterface ActiveTool {\n eventId: string;\n parentId: string;\n startedAt: string;\n toolName: string;\n}\n\ninterface ActiveRun {\n runId: string;\n eventId: string;\n name: string;\n startedAt: string;\n model?: AiSdkModelInfo;\n steps: Map<number, ActiveStep>;\n tools: Map<string, ActiveTool>;\n}\n\nconst AI_SDK_SOURCE = {\n type: \"ai-sdk\",\n name: \"@agent-inspect/ai-sdk\",\n version: \"experimental\",\n} as const;\n\nfunction nowIso(): string {\n return new Date().toISOString();\n}\n\nfunction createId(prefix: string): string {\n if (typeof crypto !== \"undefined\" && \"randomUUID\" in crypto) {\n return `${prefix}_${crypto.randomUUID()}`;\n }\n return `${prefix}_${Date.now()}_${Math.random().toString(16).slice(2)}`;\n}\n\nfunction normalizeError(error: unknown): string {\n if (error instanceof Error && error.message.trim() !== \"\") {\n return error.message;\n }\n if (typeof error === \"string\" && error.trim() !== \"\") {\n return error;\n }\n return \"Unknown AI SDK integration error\";\n}\n\nfunction durationMs(startedAt: string, endedAt: string): number | undefined {\n const started = Date.parse(startedAt);\n const ended = Date.parse(endedAt);\n if (!Number.isFinite(started) || !Number.isFinite(ended)) return undefined;\n return Math.max(0, ended - started);\n}\n\nfunction countRecordKeys(value: unknown): number | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n return Object.keys(value).length;\n}\n\nfunction normalizeMaxPreviewChars(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nfunction summarizeUnknown(value: unknown): Record<string, unknown> {\n if (value === null) return { type: \"null\" };\n if (Array.isArray(value)) return { type: \"array\", itemCount: value.length };\n\n if (typeof value === \"object\") {\n return { type: \"object\", keyCount: countRecordKeys(value) ?? 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", length: value.length };\n }\n const valueType = typeof value;\n if (valueType === \"number\" || valueType === \"boolean\" || valueType === \"bigint\") {\n return { type: valueType };\n }\n if (valueType === \"undefined\") return { type: \"undefined\" };\n return { type: \"unknown\" };\n}\n\nfunction summarizeError(error: unknown): PersistedInspectError {\n if (error instanceof Error) {\n return {\n name: error.name || \"Error\",\n message: error.message,\n };\n }\n if (typeof error === \"string\") {\n return {\n message: error,\n };\n }\n return {\n message: \"Unknown AI SDK tool error\",\n };\n}\n\nfunction summarizeModel(model: AiSdkModelInfo | undefined): Record<string, unknown> {\n return {\n provider: model?.provider,\n modelId: model?.modelId,\n };\n}\n\nfunction summarizeUsage(usage: AiSdkUsage | undefined): PersistedTokenUsage | undefined {\n if (!usage) return undefined;\n\n const tokenUsage: PersistedTokenUsage = {};\n if (typeof usage.inputTokens === \"number\") tokenUsage.input = usage.inputTokens;\n if (typeof usage.outputTokens === \"number\") tokenUsage.output = usage.outputTokens;\n if (typeof usage.totalTokens === \"number\") tokenUsage.total = usage.totalTokens;\n if (typeof usage.cachedInputTokens === \"number\") tokenUsage.cached = usage.cachedInputTokens;\n\n return Object.keys(tokenUsage).length > 0 ? tokenUsage : undefined;\n}\n\nfunction summarizeFinishReason(\n finishReason: unknown,\n): { finishReason?: string; rawFinishReason?: string } {\n if (typeof finishReason === \"string\") {\n return { finishReason };\n }\n if (typeof finishReason !== \"object\" || finishReason === null) {\n return {};\n }\n\n const value = finishReason as { unified?: unknown; raw?: unknown };\n return {\n finishReason: typeof value.unified === \"string\" ? value.unified : undefined,\n rawFinishReason: typeof value.raw === \"string\" ? value.raw : undefined,\n };\n}\n\nclass AgentInspectAiSdkTelemetryIntegration {\n private readonly writer: TraceWriter | undefined;\n private readonly requestedCapture: AgentInspectAiSdkCaptureMode;\n private readonly effectiveCapture: \"metadata-only\" = \"metadata-only\";\n private readonly diagnostics: AgentInspectAiSdkDiagnostics = {\n writeFailures: 0,\n lifecycleWarnings: 0,\n flushFailures: 0,\n closeFailures: 0,\n };\n private activeRun: ActiveRun | undefined;\n private suspendedReason: string | undefined;\n\n constructor(private readonly options: AgentInspectAiSdkOptions) {\n this.requestedCapture = options.capture ?? \"metadata-only\";\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n this.recordCaptureOptionWarnings();\n }\n\n getDiagnostics(): AgentInspectAiSdkDiagnostics {\n return { ...this.diagnostics };\n }\n\n async onStart(event: OnStartEvent): Promise<void> {\n await this.handleLifecycle(\"onStart\", async () => {\n if (this.activeRun || this.suspendedReason) {\n this.activeRun = undefined;\n this.suspendedReason =\n \"Overlapping AI SDK generation ignored; create one agentInspect() integration per concurrent generation.\";\n this.recordLifecycleWarning(this.suspendedReason);\n return;\n }\n\n const startedAt = nowIso();\n const runId = createId(\"ai_sdk_run\");\n const eventId = createId(\"event\");\n const name =\n this.options.runName ??\n event.functionId ??\n event.model.modelId ??\n \"ai-sdk-generation\";\n\n this.activeRun = {\n runId,\n eventId,\n name,\n startedAt,\n model: event.model,\n steps: new Map(),\n tools: new Map(),\n };\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId,\n kind: \"RUN\",\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"run_started\",\n ...summarizeModel(event.model),\n functionId: event.functionId,\n capture: this.effectiveCapture,\n requestedCapture:\n this.requestedCapture === this.effectiveCapture\n ? undefined\n : this.requestedCapture,\n previewCaptureSupported:\n this.requestedCapture === \"preview\" ? false : undefined,\n redactionProfile: this.options.redactionProfile,\n maxPreviewChars: normalizeMaxPreviewChars(this.options.maxPreviewChars),\n recordInputsRequired: false,\n recordOutputsRequired: false,\n toolCount: countRecordKeys(event.tools),\n hasPrompt: event.prompt !== undefined,\n hasMessages: event.messages !== undefined,\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n });\n });\n }\n\n async onStepStart(event: OnStepStartEvent): Promise<void> {\n await this.handleLifecycle(\"onStepStart\", async () => {\n const run = this.getActiveRun(\"onStepStart\");\n if (!run) return;\n const startedAt = nowIso();\n const stepEventId = createId(\"event\");\n run.steps.set(event.stepNumber, {\n eventId: stepEventId,\n parentId: run.eventId,\n startedAt,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: stepEventId,\n runId: run.runId,\n parentId: run.eventId,\n kind: \"LLM\",\n name: `ai-sdk-step-${event.stepNumber}`,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_started\",\n stepId: stepEventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n priorStepCount: event.steps.length,\n activeToolCount: event.activeTools?.length,\n toolCount: countRecordKeys(event.tools),\n messageCount: event.messages.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n });\n });\n }\n\n async onStepFinish(event: OnStepFinishEvent): Promise<void> {\n await this.handleLifecycle(\"onStepFinish\", async () => {\n const run = this.getActiveRun(\"onStepFinish\");\n if (!run) return;\n const endedAt = nowIso();\n const activeStep = run.steps.get(event.stepNumber);\n if (!activeStep) {\n this.recordLifecycleWarning(\n `onStepFinish ignored because step ${event.stepNumber} has no matching start callback.`,\n );\n return;\n }\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: activeStep.eventId,\n runId: run.runId,\n parentId: activeStep.parentId,\n kind: \"LLM\",\n name: `ai-sdk-step-${event.stepNumber}`,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: activeStep.startedAt,\n endedAt,\n durationMs: durationMs(activeStep.startedAt, endedAt),\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_completed\",\n stepId: activeStep.eventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n ...summarizeFinishReason(event.finishReason),\n warningCount: event.warnings?.length ?? 0,\n contentPartCount: event.content.length,\n toolCallCount: event.toolCalls.length,\n toolResultCount: event.toolResults.length,\n responseId: event.response.id,\n responseModelId: event.response.modelId,\n responseTimestamp: event.response.timestamp?.toISOString(),\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n tokenUsage: summarizeUsage(event.usage),\n outputSummary: {\n contentPartCount: event.content.length,\n textLength: event.text.length,\n reasoningPartCount: event.reasoning.length,\n fileCount: event.files.length,\n sourceCount: event.sources.length,\n },\n });\n });\n }\n\n async onToolCallStart(event: OnToolCallStartEvent): Promise<void> {\n await this.handleLifecycle(\"onToolCallStart\", async () => {\n const run = this.getActiveRun(\"onToolCallStart\");\n if (!run) return;\n const startedAt = nowIso();\n const eventId = createId(\"event\");\n const toolCall = event.toolCall;\n const step = event.stepNumber === undefined ? undefined : run.steps.get(event.stepNumber);\n const parentId = step?.eventId ?? run.eventId;\n if (event.stepNumber === undefined || !step) {\n this.recordLifecycleWarning(\n \"onToolCallStart attached tool to run because the AI SDK callback did not expose a matching active step.\",\n );\n }\n run.tools.set(toolCall.toolCallId, {\n eventId,\n parentId,\n startedAt,\n toolName: toolCall.toolName,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: run.runId,\n parentId,\n kind: \"TOOL\",\n name: toolCall.toolName,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_started\",\n stepId: eventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n dynamic: toolCall.dynamic === true,\n invalid: toolCall.invalid === true,\n providerExecuted: toolCall.providerExecuted === true,\n messageCount: event.messages.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n providerMetadataKeyCount: countRecordKeys(toolCall.providerMetadata),\n toolMetadataKeyCount: countRecordKeys(toolCall.toolMetadata),\n },\n inputSummary: summarizeUnknown(toolCall.input),\n error: toolCall.invalid ? summarizeError(toolCall.error) : undefined,\n });\n });\n }\n\n async onToolCallFinish(event: OnToolCallFinishEvent): Promise<void> {\n await this.handleLifecycle(\"onToolCallFinish\", async () => {\n const run = this.getActiveRun(\"onToolCallFinish\");\n if (!run) return;\n const endedAt = nowIso();\n const toolCall = event.toolCall;\n const activeTool = run.tools.get(toolCall.toolCallId);\n if (!activeTool) {\n this.recordLifecycleWarning(\n `onToolCallFinish ignored because tool call ${toolCall.toolCallId} has no matching start callback.`,\n );\n return;\n }\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: activeTool.eventId,\n runId: run.runId,\n parentId: activeTool.parentId,\n kind: \"TOOL\",\n name: activeTool.toolName,\n status: event.success ? \"ok\" : \"error\",\n timestamp: endedAt,\n startedAt: activeTool.startedAt,\n endedAt,\n durationMs: event.durationMs,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_completed\",\n stepId: activeTool.eventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n dynamic: toolCall.dynamic === true,\n invalid: toolCall.invalid === true,\n providerExecuted: toolCall.providerExecuted === true,\n messageCount: event.messages.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n providerMetadataKeyCount: countRecordKeys(toolCall.providerMetadata),\n toolMetadataKeyCount: countRecordKeys(toolCall.toolMetadata),\n },\n outputSummary: event.success ? summarizeUnknown(event.output) : undefined,\n error: event.success ? undefined : summarizeError(event.error),\n });\n });\n }\n\n async onFinish(event: OnFinishEvent): Promise<void> {\n await this.handleLifecycle(\"onFinish\", async () => {\n if (this.suspendedReason) {\n this.suspendedReason = undefined;\n return;\n }\n const run = this.getActiveRun(\"onFinish\");\n if (!run) return;\n const endedAt = nowIso();\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: run.eventId,\n runId: run.runId,\n kind: \"RUN\",\n name: run.name,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: run.startedAt,\n endedAt,\n durationMs: durationMs(run.startedAt, endedAt),\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"run_completed\",\n ...summarizeModel(event.model ?? run.model),\n functionId: event.functionId,\n ...summarizeFinishReason(event.finishReason),\n stepCount: event.steps.length,\n warningCount: event.warnings?.length ?? 0,\n toolCallCount: event.toolCalls.length,\n toolResultCount: event.toolResults.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n tokenUsage: summarizeUsage(event.totalUsage),\n outputSummary: {\n contentPartCount: event.content.length,\n textLength: event.text.length,\n reasoningPartCount: event.reasoning.length,\n fileCount: event.files.length,\n sourceCount: event.sources.length,\n },\n });\n\n this.activeRun = undefined;\n });\n }\n\n getWriterStats(): TraceWriterStats | undefined {\n return this.writer?.getStats?.();\n }\n\n async flush(): Promise<void> {\n try {\n await this.writer?.flush?.();\n } catch (error) {\n this.diagnostics.flushFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n\n async close(): Promise<void> {\n try {\n await this.writer?.close?.();\n } catch (error) {\n this.diagnostics.closeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n } finally {\n this.activeRun = undefined;\n this.suspendedReason = undefined;\n }\n }\n\n private getActiveRun(callbackName: string): ActiveRun | undefined {\n if (this.suspendedReason) {\n this.recordLifecycleWarning(\n `${callbackName} ignored while integration is suspended: ${this.suspendedReason}`,\n );\n return undefined;\n }\n if (this.activeRun) return this.activeRun;\n\n this.recordLifecycleWarning(\n `${callbackName} ignored because no active AI SDK generation was started.`,\n );\n return undefined;\n }\n\n private async handleLifecycle(\n callbackName: string,\n run: () => Promise<void>,\n ): Promise<void> {\n try {\n await run();\n } catch (error) {\n this.recordLifecycleWarning(`${callbackName}: ${normalizeError(error)}`);\n }\n }\n\n private recordLifecycleWarning(message: string): void {\n this.diagnostics.lifecycleWarnings += 1;\n this.diagnostics.lastWarning = message;\n }\n\n private recordCaptureOptionWarnings(): void {\n const previewOnlyOptions: string[] = [];\n if (this.requestedCapture === \"preview\") previewOnlyOptions.push(\"capture\");\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\n\n if (this.requestedCapture === \"preview\") {\n this.recordLifecycleWarning(\n `AI SDK preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(\", \")}.`,\n );\n return;\n }\n\n if (previewOnlyOptions.length > 0) {\n this.recordLifecycleWarning(\n `AI SDK preview-only options have no effect in metadata-only capture: ${previewOnlyOptions.join(\", \")}.`,\n );\n }\n }\n\n private async write(event: PersistedInspectEvent): Promise<void> {\n if (!this.writer) return;\n\n try {\n await this.writer.write(event);\n } catch (error) {\n this.diagnostics.writeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n}\n\n/**\n * Create an AgentInspect telemetry integration for the Vercel AI SDK.\n *\n * @experimental The adapter maps metadata-only generation, LLM step, and tool\n * lifecycle events. Keep AI SDK telemetry configured with\n * `recordInputs: false` and `recordOutputs: false`.\n */\nexport function agentInspect(\n options: AgentInspectAiSdkOptions = {},\n): AgentInspectAiSdkIntegration {\n const integration = new AgentInspectAiSdkTelemetryIntegration(options);\n return {\n ...bindTelemetryIntegration(integration),\n getDiagnostics: () => integration.getDiagnostics(),\n getWriterStats: () => integration.getWriterStats(),\n flush: () => integration.flush(),\n close: () => integration.close(),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["fileWriter","bindTelemetryIntegration"],"mappings":"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","file":"index.cjs","sourcesContent":["import { bindTelemetryIntegration } from \"ai\";\nimport type {\n OnFinishEvent,\n OnStartEvent,\n OnStepFinishEvent,\n OnStepStartEvent,\n OnToolCallFinishEvent,\n OnToolCallStartEvent,\n TelemetryIntegration,\n} from \"ai\";\nimport type {\n RedactionProfile,\n} from \"agent-inspect/advanced\";\nimport type {\n PersistedInspectEvent,\n PersistedInspectError,\n PersistedTokenUsage,\n} from \"agent-inspect/persisted\";\nimport { fileWriter } from \"agent-inspect/writers\";\nimport type { TraceWriter, TraceWriterStats } from \"agent-inspect/writers\";\n\n/**\n * Experimental capture mode for the AI SDK adapter.\n *\n * @experimental This package is part of the framework adapter train.\n */\nexport type AgentInspectAiSdkCaptureMode = \"metadata-only\" | \"preview\";\n\n/**\n * Options for the experimental AI SDK telemetry integration.\n *\n * @experimental Callers must keep AI SDK telemetry configured with\n * `recordInputs: false` and `recordOutputs: false`.\n */\nexport interface AgentInspectAiSdkOptions {\n /**\n * Explicit local writer for runtime integration.\n */\n writer?: TraceWriter;\n\n /**\n * Convenience local trace directory for writer-owned persistence.\n */\n traceDir?: string;\n\n /**\n * Optional run name used by lifecycle mapping.\n */\n runName?: string;\n\n /**\n * Capture policy. Defaults to metadata-only.\n *\n * @experimental `preview` is currently rejected with diagnostics and falls\n * back to metadata-only until bounded free-text preview capture is implemented.\n */\n capture?: AgentInspectAiSdkCaptureMode;\n\n /**\n * Redaction profile for future preview capture.\n *\n * @experimental Currently diagnostic-only because the adapter persists\n * metadata summaries and does not write raw preview content.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Bounds future preview capture.\n *\n * @experimental Currently diagnostic-only because `preview` falls back to\n * metadata-only capture.\n */\n maxPreviewChars?: number;\n}\n\nexport interface AgentInspectAiSdkDiagnostics {\n writeFailures: number;\n lifecycleWarnings: number;\n flushFailures: number;\n closeFailures: number;\n lastError?: string;\n lastWarning?: string;\n}\n\nexport interface AgentInspectAiSdkIntegration extends TelemetryIntegration {\n getDiagnostics(): AgentInspectAiSdkDiagnostics;\n getWriterStats(): TraceWriterStats | undefined;\n flush(): Promise<void>;\n close(): Promise<void>;\n}\n\ntype AiSdkModelInfo = {\n provider?: string;\n modelId?: string;\n};\n\ntype AiSdkUsage = {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n cachedInputTokens?: number;\n};\n\ninterface ActiveStep {\n eventId: string;\n parentId: string;\n startedAt: string;\n}\n\ninterface ActiveTool {\n eventId: string;\n parentId: string;\n startedAt: string;\n toolName: string;\n}\n\ninterface ActiveRun {\n runId: string;\n eventId: string;\n name: string;\n startedAt: string;\n model?: AiSdkModelInfo;\n steps: Map<number, ActiveStep>;\n tools: Map<string, ActiveTool>;\n}\n\nconst AI_SDK_SOURCE = {\n type: \"ai-sdk\",\n name: \"@agent-inspect/ai-sdk\",\n version: \"experimental\",\n} as const;\n\nfunction nowIso(): string {\n return new Date().toISOString();\n}\n\nfunction createId(prefix: string): string {\n if (typeof crypto !== \"undefined\" && \"randomUUID\" in crypto) {\n return `${prefix}_${crypto.randomUUID()}`;\n }\n return `${prefix}_${Date.now()}_${Math.random().toString(16).slice(2)}`;\n}\n\nfunction normalizeError(error: unknown): string {\n if (error instanceof Error && error.message.trim() !== \"\") {\n return error.message;\n }\n if (typeof error === \"string\" && error.trim() !== \"\") {\n return error;\n }\n return \"Unknown AI SDK integration error\";\n}\n\nfunction durationMs(startedAt: string, endedAt: string): number | undefined {\n const started = Date.parse(startedAt);\n const ended = Date.parse(endedAt);\n if (!Number.isFinite(started) || !Number.isFinite(ended)) return undefined;\n return Math.max(0, ended - started);\n}\n\nfunction countRecordKeys(value: unknown): number | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n return Object.keys(value).length;\n}\n\nfunction normalizeMaxPreviewChars(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nfunction summarizeUnknown(value: unknown): Record<string, unknown> {\n if (value === null) return { type: \"null\" };\n if (Array.isArray(value)) return { type: \"array\", itemCount: value.length };\n\n if (typeof value === \"object\") {\n return { type: \"object\", keyCount: countRecordKeys(value) ?? 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", length: value.length };\n }\n const valueType = typeof value;\n if (valueType === \"number\" || valueType === \"boolean\" || valueType === \"bigint\") {\n return { type: valueType };\n }\n if (valueType === \"undefined\") return { type: \"undefined\" };\n return { type: \"unknown\" };\n}\n\nfunction summarizeError(error: unknown): PersistedInspectError {\n if (error instanceof Error) {\n return {\n name: error.name || \"Error\",\n message: error.message,\n };\n }\n if (typeof error === \"string\") {\n return {\n message: error,\n };\n }\n return {\n message: \"Unknown AI SDK tool error\",\n };\n}\n\nfunction summarizeModel(model: AiSdkModelInfo | undefined): Record<string, unknown> {\n return {\n provider: model?.provider,\n modelId: model?.modelId,\n };\n}\n\nfunction summarizeUsage(usage: AiSdkUsage | undefined): PersistedTokenUsage | undefined {\n if (!usage) return undefined;\n\n const tokenUsage: PersistedTokenUsage = {};\n if (typeof usage.inputTokens === \"number\") tokenUsage.input = usage.inputTokens;\n if (typeof usage.outputTokens === \"number\") tokenUsage.output = usage.outputTokens;\n if (typeof usage.totalTokens === \"number\") tokenUsage.total = usage.totalTokens;\n if (typeof usage.cachedInputTokens === \"number\") tokenUsage.cached = usage.cachedInputTokens;\n\n return Object.keys(tokenUsage).length > 0 ? tokenUsage : undefined;\n}\n\nfunction summarizeFinishReason(\n finishReason: unknown,\n): { finishReason?: string; rawFinishReason?: string } {\n if (typeof finishReason === \"string\") {\n return { finishReason };\n }\n if (typeof finishReason !== \"object\" || finishReason === null) {\n return {};\n }\n\n const value = finishReason as { unified?: unknown; raw?: unknown };\n return {\n finishReason: typeof value.unified === \"string\" ? value.unified : undefined,\n rawFinishReason: typeof value.raw === \"string\" ? value.raw : undefined,\n };\n}\n\nclass AgentInspectAiSdkTelemetryIntegration {\n private readonly writer: TraceWriter | undefined;\n private readonly requestedCapture: AgentInspectAiSdkCaptureMode;\n private readonly effectiveCapture: \"metadata-only\" = \"metadata-only\";\n private readonly diagnostics: AgentInspectAiSdkDiagnostics = {\n writeFailures: 0,\n lifecycleWarnings: 0,\n flushFailures: 0,\n closeFailures: 0,\n };\n private activeRun: ActiveRun | undefined;\n private suspendedReason: string | undefined;\n\n constructor(private readonly options: AgentInspectAiSdkOptions) {\n this.requestedCapture = options.capture ?? \"metadata-only\";\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n this.recordCaptureOptionWarnings();\n }\n\n getDiagnostics(): AgentInspectAiSdkDiagnostics {\n return { ...this.diagnostics };\n }\n\n async onStart(event: OnStartEvent): Promise<void> {\n await this.handleLifecycle(\"onStart\", async () => {\n if (this.activeRun || this.suspendedReason) {\n this.activeRun = undefined;\n this.suspendedReason =\n \"Overlapping AI SDK generation ignored; create one agentInspect() integration per concurrent generation.\";\n this.recordLifecycleWarning(this.suspendedReason);\n return;\n }\n\n const startedAt = nowIso();\n const runId = createId(\"ai_sdk_run\");\n const eventId = createId(\"event\");\n const name =\n this.options.runName ??\n event.functionId ??\n event.model.modelId ??\n \"ai-sdk-generation\";\n\n this.activeRun = {\n runId,\n eventId,\n name,\n startedAt,\n model: event.model,\n steps: new Map(),\n tools: new Map(),\n };\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId,\n kind: \"RUN\",\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"run_started\",\n ...summarizeModel(event.model),\n functionId: event.functionId,\n capture: this.effectiveCapture,\n requestedCapture:\n this.requestedCapture === this.effectiveCapture\n ? undefined\n : this.requestedCapture,\n previewCaptureSupported:\n this.requestedCapture === \"preview\" ? false : undefined,\n redactionProfile: this.options.redactionProfile,\n maxPreviewChars: normalizeMaxPreviewChars(this.options.maxPreviewChars),\n recordInputsRequired: false,\n recordOutputsRequired: false,\n toolCount: countRecordKeys(event.tools),\n hasPrompt: event.prompt !== undefined,\n hasMessages: event.messages !== undefined,\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n });\n });\n }\n\n async onStepStart(event: OnStepStartEvent): Promise<void> {\n await this.handleLifecycle(\"onStepStart\", async () => {\n const run = this.getActiveRun(\"onStepStart\");\n if (!run) return;\n const startedAt = nowIso();\n const stepEventId = createId(\"event\");\n run.steps.set(event.stepNumber, {\n eventId: stepEventId,\n parentId: run.eventId,\n startedAt,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: stepEventId,\n runId: run.runId,\n parentId: run.eventId,\n kind: \"LLM\",\n name: `ai-sdk-step-${event.stepNumber}`,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_started\",\n stepId: stepEventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n priorStepCount: event.steps.length,\n activeToolCount: event.activeTools?.length,\n toolCount: countRecordKeys(event.tools),\n messageCount: event.messages.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n });\n });\n }\n\n async onStepFinish(event: OnStepFinishEvent): Promise<void> {\n await this.handleLifecycle(\"onStepFinish\", async () => {\n const run = this.getActiveRun(\"onStepFinish\");\n if (!run) return;\n const endedAt = nowIso();\n const activeStep = run.steps.get(event.stepNumber);\n if (!activeStep) {\n this.recordLifecycleWarning(\n `onStepFinish ignored because step ${event.stepNumber} has no matching start callback.`,\n );\n return;\n }\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: activeStep.eventId,\n runId: run.runId,\n parentId: activeStep.parentId,\n kind: \"LLM\",\n name: `ai-sdk-step-${event.stepNumber}`,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: activeStep.startedAt,\n endedAt,\n durationMs: durationMs(activeStep.startedAt, endedAt),\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_completed\",\n stepId: activeStep.eventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n ...summarizeFinishReason(event.finishReason),\n warningCount: event.warnings?.length ?? 0,\n contentPartCount: event.content.length,\n toolCallCount: event.toolCalls.length,\n toolResultCount: event.toolResults.length,\n responseId: event.response.id,\n responseModelId: event.response.modelId,\n responseTimestamp: event.response.timestamp?.toISOString(),\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n tokenUsage: summarizeUsage(event.usage),\n outputSummary: {\n contentPartCount: event.content.length,\n textLength: event.text.length,\n reasoningPartCount: event.reasoning.length,\n fileCount: event.files.length,\n sourceCount: event.sources.length,\n },\n });\n });\n }\n\n async onToolCallStart(event: OnToolCallStartEvent): Promise<void> {\n await this.handleLifecycle(\"onToolCallStart\", async () => {\n const run = this.getActiveRun(\"onToolCallStart\");\n if (!run) return;\n const startedAt = nowIso();\n const eventId = createId(\"event\");\n const toolCall = event.toolCall;\n const step = event.stepNumber === undefined ? undefined : run.steps.get(event.stepNumber);\n const parentId = step?.eventId ?? run.eventId;\n if (event.stepNumber === undefined || !step) {\n this.recordLifecycleWarning(\n \"onToolCallStart attached tool to run because the AI SDK callback did not expose a matching active step.\",\n );\n }\n run.tools.set(toolCall.toolCallId, {\n eventId,\n parentId,\n startedAt,\n toolName: toolCall.toolName,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: run.runId,\n parentId,\n kind: \"TOOL\",\n name: toolCall.toolName,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_started\",\n stepId: eventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n dynamic: toolCall.dynamic === true,\n invalid: toolCall.invalid === true,\n providerExecuted: toolCall.providerExecuted === true,\n messageCount: event.messages.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n providerMetadataKeyCount: countRecordKeys(toolCall.providerMetadata),\n toolMetadataKeyCount: countRecordKeys(toolCall.toolMetadata),\n },\n inputSummary: summarizeUnknown(toolCall.input),\n error: toolCall.invalid ? summarizeError(toolCall.error) : undefined,\n });\n });\n }\n\n async onToolCallFinish(event: OnToolCallFinishEvent): Promise<void> {\n await this.handleLifecycle(\"onToolCallFinish\", async () => {\n const run = this.getActiveRun(\"onToolCallFinish\");\n if (!run) return;\n const endedAt = nowIso();\n const toolCall = event.toolCall;\n const activeTool = run.tools.get(toolCall.toolCallId);\n if (!activeTool) {\n this.recordLifecycleWarning(\n `onToolCallFinish ignored because tool call ${toolCall.toolCallId} has no matching start callback.`,\n );\n return;\n }\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: activeTool.eventId,\n runId: run.runId,\n parentId: activeTool.parentId,\n kind: \"TOOL\",\n name: activeTool.toolName,\n status: event.success ? \"ok\" : \"error\",\n timestamp: endedAt,\n startedAt: activeTool.startedAt,\n endedAt,\n durationMs: event.durationMs,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_completed\",\n stepId: activeTool.eventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n dynamic: toolCall.dynamic === true,\n invalid: toolCall.invalid === true,\n providerExecuted: toolCall.providerExecuted === true,\n messageCount: event.messages.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n providerMetadataKeyCount: countRecordKeys(toolCall.providerMetadata),\n toolMetadataKeyCount: countRecordKeys(toolCall.toolMetadata),\n },\n outputSummary: event.success ? summarizeUnknown(event.output) : undefined,\n error: event.success ? undefined : summarizeError(event.error),\n });\n });\n }\n\n async onFinish(event: OnFinishEvent): Promise<void> {\n await this.handleLifecycle(\"onFinish\", async () => {\n if (this.suspendedReason) {\n this.suspendedReason = undefined;\n return;\n }\n const run = this.getActiveRun(\"onFinish\");\n if (!run) return;\n const endedAt = nowIso();\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: run.eventId,\n runId: run.runId,\n kind: \"RUN\",\n name: run.name,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: run.startedAt,\n endedAt,\n durationMs: durationMs(run.startedAt, endedAt),\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"run_completed\",\n ...summarizeModel(event.model ?? run.model),\n functionId: event.functionId,\n ...summarizeFinishReason(event.finishReason),\n stepCount: event.steps.length,\n warningCount: event.warnings?.length ?? 0,\n toolCallCount: event.toolCalls.length,\n toolResultCount: event.toolResults.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n tokenUsage: summarizeUsage(event.totalUsage),\n outputSummary: {\n contentPartCount: event.content.length,\n textLength: event.text.length,\n reasoningPartCount: event.reasoning.length,\n fileCount: event.files.length,\n sourceCount: event.sources.length,\n },\n });\n\n this.activeRun = undefined;\n });\n }\n\n getWriterStats(): TraceWriterStats | undefined {\n return this.writer?.getStats?.();\n }\n\n async flush(): Promise<void> {\n try {\n await this.writer?.flush?.();\n } catch (error) {\n this.diagnostics.flushFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n\n async close(): Promise<void> {\n try {\n await this.writer?.close?.();\n } catch (error) {\n this.diagnostics.closeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n } finally {\n this.activeRun = undefined;\n this.suspendedReason = undefined;\n }\n }\n\n private getActiveRun(callbackName: string): ActiveRun | undefined {\n if (this.suspendedReason) {\n this.recordLifecycleWarning(\n `${callbackName} ignored while integration is suspended: ${this.suspendedReason}`,\n );\n return undefined;\n }\n if (this.activeRun) return this.activeRun;\n\n this.recordLifecycleWarning(\n `${callbackName} ignored because no active AI SDK generation was started.`,\n );\n return undefined;\n }\n\n private async handleLifecycle(\n callbackName: string,\n run: () => Promise<void>,\n ): Promise<void> {\n try {\n await run();\n } catch (error) {\n this.recordLifecycleWarning(`${callbackName}: ${normalizeError(error)}`);\n }\n }\n\n private recordLifecycleWarning(message: string): void {\n this.diagnostics.lifecycleWarnings += 1;\n this.diagnostics.lastWarning = message;\n }\n\n private previewCapabilityWarned = false;\n\n private recordCaptureOptionWarnings(): void {\n const previewOnlyOptions: string[] = [];\n if (this.requestedCapture === \"preview\") previewOnlyOptions.push(\"capture\");\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\n\n if (this.requestedCapture === \"preview\") {\n const message =\n `AI_ADAPTER_PREVIEW_NOT_AVAILABLE: capture:\"preview\" was requested, but this adapter currently persists metadata-only. Effective capture: metadata-only. No preview content was written. See docs/ADAPTERS.md.`;\n this.recordLifecycleWarning(\n `AI SDK preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(\", \")}.`,\n );\n if (!this.previewCapabilityWarned) {\n this.previewCapabilityWarned = true;\n console.warn(`[agent-inspect:ai-sdk] ${message}`);\n }\n return;\n }\n\n if (previewOnlyOptions.length > 0) {\n this.recordLifecycleWarning(\n `AI SDK preview-only options have no effect in metadata-only capture: ${previewOnlyOptions.join(\", \")}.`,\n );\n }\n }\n\n private async write(event: PersistedInspectEvent): Promise<void> {\n if (!this.writer) return;\n\n try {\n await this.writer.write(event);\n } catch (error) {\n this.diagnostics.writeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n}\n\n/**\n * Create an AgentInspect telemetry integration for the Vercel AI SDK.\n *\n * @experimental The adapter maps metadata-only generation, LLM step, and tool\n * lifecycle events. Keep AI SDK telemetry configured with\n * `recordInputs: false` and `recordOutputs: false`.\n */\nexport function agentInspect(\n options: AgentInspectAiSdkOptions = {},\n): AgentInspectAiSdkIntegration {\n const integration = new AgentInspectAiSdkTelemetryIntegration(options);\n return {\n ...bindTelemetryIntegration(integration),\n getDiagnostics: () => integration.getDiagnostics(),\n getWriterStats: () => integration.getWriterStats(),\n flush: () => integration.flush(),\n close: () => integration.close(),\n };\n}\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -459,15 +459,21 @@ var AgentInspectAiSdkTelemetryIntegration = class {
|
|
|
459
459
|
this.diagnostics.lifecycleWarnings += 1;
|
|
460
460
|
this.diagnostics.lastWarning = message;
|
|
461
461
|
}
|
|
462
|
+
previewCapabilityWarned = false;
|
|
462
463
|
recordCaptureOptionWarnings() {
|
|
463
464
|
const previewOnlyOptions = [];
|
|
464
465
|
if (this.requestedCapture === "preview") previewOnlyOptions.push("capture");
|
|
465
466
|
if (this.options.redactionProfile !== void 0) previewOnlyOptions.push("redactionProfile");
|
|
466
467
|
if (this.options.maxPreviewChars !== void 0) previewOnlyOptions.push("maxPreviewChars");
|
|
467
468
|
if (this.requestedCapture === "preview") {
|
|
469
|
+
const message = `AI_ADAPTER_PREVIEW_NOT_AVAILABLE: capture:"preview" was requested, but this adapter currently persists metadata-only. Effective capture: metadata-only. No preview content was written. See docs/ADAPTERS.md.`;
|
|
468
470
|
this.recordLifecycleWarning(
|
|
469
471
|
`AI SDK preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(", ")}.`
|
|
470
472
|
);
|
|
473
|
+
if (!this.previewCapabilityWarned) {
|
|
474
|
+
this.previewCapabilityWarned = true;
|
|
475
|
+
console.warn(`[agent-inspect:ai-sdk] ${message}`);
|
|
476
|
+
}
|
|
471
477
|
return;
|
|
472
478
|
}
|
|
473
479
|
if (previewOnlyOptions.length > 0) {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import { bindTelemetryIntegration } from \"ai\";\nimport type {\n OnFinishEvent,\n OnStartEvent,\n OnStepFinishEvent,\n OnStepStartEvent,\n OnToolCallFinishEvent,\n OnToolCallStartEvent,\n TelemetryIntegration,\n} from \"ai\";\nimport type {\n RedactionProfile,\n} from \"agent-inspect/advanced\";\nimport type {\n PersistedInspectEvent,\n PersistedInspectError,\n PersistedTokenUsage,\n} from \"agent-inspect/persisted\";\nimport { fileWriter } from \"agent-inspect/writers\";\nimport type { TraceWriter, TraceWriterStats } from \"agent-inspect/writers\";\n\n/**\n * Experimental capture mode for the AI SDK adapter.\n *\n * @experimental This package is part of the framework adapter train.\n */\nexport type AgentInspectAiSdkCaptureMode = \"metadata-only\" | \"preview\";\n\n/**\n * Options for the experimental AI SDK telemetry integration.\n *\n * @experimental Callers must keep AI SDK telemetry configured with\n * `recordInputs: false` and `recordOutputs: false`.\n */\nexport interface AgentInspectAiSdkOptions {\n /**\n * Explicit local writer for runtime integration.\n */\n writer?: TraceWriter;\n\n /**\n * Convenience local trace directory for writer-owned persistence.\n */\n traceDir?: string;\n\n /**\n * Optional run name used by lifecycle mapping.\n */\n runName?: string;\n\n /**\n * Capture policy. Defaults to metadata-only.\n *\n * @experimental `preview` is currently rejected with diagnostics and falls\n * back to metadata-only until bounded free-text preview capture is implemented.\n */\n capture?: AgentInspectAiSdkCaptureMode;\n\n /**\n * Redaction profile for future preview capture.\n *\n * @experimental Currently diagnostic-only because the adapter persists\n * metadata summaries and does not write raw preview content.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Bounds future preview capture.\n *\n * @experimental Currently diagnostic-only because `preview` falls back to\n * metadata-only capture.\n */\n maxPreviewChars?: number;\n}\n\nexport interface AgentInspectAiSdkDiagnostics {\n writeFailures: number;\n lifecycleWarnings: number;\n flushFailures: number;\n closeFailures: number;\n lastError?: string;\n lastWarning?: string;\n}\n\nexport interface AgentInspectAiSdkIntegration extends TelemetryIntegration {\n getDiagnostics(): AgentInspectAiSdkDiagnostics;\n getWriterStats(): TraceWriterStats | undefined;\n flush(): Promise<void>;\n close(): Promise<void>;\n}\n\ntype AiSdkModelInfo = {\n provider?: string;\n modelId?: string;\n};\n\ntype AiSdkUsage = {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n cachedInputTokens?: number;\n};\n\ninterface ActiveStep {\n eventId: string;\n parentId: string;\n startedAt: string;\n}\n\ninterface ActiveTool {\n eventId: string;\n parentId: string;\n startedAt: string;\n toolName: string;\n}\n\ninterface ActiveRun {\n runId: string;\n eventId: string;\n name: string;\n startedAt: string;\n model?: AiSdkModelInfo;\n steps: Map<number, ActiveStep>;\n tools: Map<string, ActiveTool>;\n}\n\nconst AI_SDK_SOURCE = {\n type: \"ai-sdk\",\n name: \"@agent-inspect/ai-sdk\",\n version: \"experimental\",\n} as const;\n\nfunction nowIso(): string {\n return new Date().toISOString();\n}\n\nfunction createId(prefix: string): string {\n if (typeof crypto !== \"undefined\" && \"randomUUID\" in crypto) {\n return `${prefix}_${crypto.randomUUID()}`;\n }\n return `${prefix}_${Date.now()}_${Math.random().toString(16).slice(2)}`;\n}\n\nfunction normalizeError(error: unknown): string {\n if (error instanceof Error && error.message.trim() !== \"\") {\n return error.message;\n }\n if (typeof error === \"string\" && error.trim() !== \"\") {\n return error;\n }\n return \"Unknown AI SDK integration error\";\n}\n\nfunction durationMs(startedAt: string, endedAt: string): number | undefined {\n const started = Date.parse(startedAt);\n const ended = Date.parse(endedAt);\n if (!Number.isFinite(started) || !Number.isFinite(ended)) return undefined;\n return Math.max(0, ended - started);\n}\n\nfunction countRecordKeys(value: unknown): number | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n return Object.keys(value).length;\n}\n\nfunction normalizeMaxPreviewChars(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nfunction summarizeUnknown(value: unknown): Record<string, unknown> {\n if (value === null) return { type: \"null\" };\n if (Array.isArray(value)) return { type: \"array\", itemCount: value.length };\n\n if (typeof value === \"object\") {\n return { type: \"object\", keyCount: countRecordKeys(value) ?? 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", length: value.length };\n }\n const valueType = typeof value;\n if (valueType === \"number\" || valueType === \"boolean\" || valueType === \"bigint\") {\n return { type: valueType };\n }\n if (valueType === \"undefined\") return { type: \"undefined\" };\n return { type: \"unknown\" };\n}\n\nfunction summarizeError(error: unknown): PersistedInspectError {\n if (error instanceof Error) {\n return {\n name: error.name || \"Error\",\n message: error.message,\n };\n }\n if (typeof error === \"string\") {\n return {\n message: error,\n };\n }\n return {\n message: \"Unknown AI SDK tool error\",\n };\n}\n\nfunction summarizeModel(model: AiSdkModelInfo | undefined): Record<string, unknown> {\n return {\n provider: model?.provider,\n modelId: model?.modelId,\n };\n}\n\nfunction summarizeUsage(usage: AiSdkUsage | undefined): PersistedTokenUsage | undefined {\n if (!usage) return undefined;\n\n const tokenUsage: PersistedTokenUsage = {};\n if (typeof usage.inputTokens === \"number\") tokenUsage.input = usage.inputTokens;\n if (typeof usage.outputTokens === \"number\") tokenUsage.output = usage.outputTokens;\n if (typeof usage.totalTokens === \"number\") tokenUsage.total = usage.totalTokens;\n if (typeof usage.cachedInputTokens === \"number\") tokenUsage.cached = usage.cachedInputTokens;\n\n return Object.keys(tokenUsage).length > 0 ? tokenUsage : undefined;\n}\n\nfunction summarizeFinishReason(\n finishReason: unknown,\n): { finishReason?: string; rawFinishReason?: string } {\n if (typeof finishReason === \"string\") {\n return { finishReason };\n }\n if (typeof finishReason !== \"object\" || finishReason === null) {\n return {};\n }\n\n const value = finishReason as { unified?: unknown; raw?: unknown };\n return {\n finishReason: typeof value.unified === \"string\" ? value.unified : undefined,\n rawFinishReason: typeof value.raw === \"string\" ? value.raw : undefined,\n };\n}\n\nclass AgentInspectAiSdkTelemetryIntegration {\n private readonly writer: TraceWriter | undefined;\n private readonly requestedCapture: AgentInspectAiSdkCaptureMode;\n private readonly effectiveCapture: \"metadata-only\" = \"metadata-only\";\n private readonly diagnostics: AgentInspectAiSdkDiagnostics = {\n writeFailures: 0,\n lifecycleWarnings: 0,\n flushFailures: 0,\n closeFailures: 0,\n };\n private activeRun: ActiveRun | undefined;\n private suspendedReason: string | undefined;\n\n constructor(private readonly options: AgentInspectAiSdkOptions) {\n this.requestedCapture = options.capture ?? \"metadata-only\";\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n this.recordCaptureOptionWarnings();\n }\n\n getDiagnostics(): AgentInspectAiSdkDiagnostics {\n return { ...this.diagnostics };\n }\n\n async onStart(event: OnStartEvent): Promise<void> {\n await this.handleLifecycle(\"onStart\", async () => {\n if (this.activeRun || this.suspendedReason) {\n this.activeRun = undefined;\n this.suspendedReason =\n \"Overlapping AI SDK generation ignored; create one agentInspect() integration per concurrent generation.\";\n this.recordLifecycleWarning(this.suspendedReason);\n return;\n }\n\n const startedAt = nowIso();\n const runId = createId(\"ai_sdk_run\");\n const eventId = createId(\"event\");\n const name =\n this.options.runName ??\n event.functionId ??\n event.model.modelId ??\n \"ai-sdk-generation\";\n\n this.activeRun = {\n runId,\n eventId,\n name,\n startedAt,\n model: event.model,\n steps: new Map(),\n tools: new Map(),\n };\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId,\n kind: \"RUN\",\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"run_started\",\n ...summarizeModel(event.model),\n functionId: event.functionId,\n capture: this.effectiveCapture,\n requestedCapture:\n this.requestedCapture === this.effectiveCapture\n ? undefined\n : this.requestedCapture,\n previewCaptureSupported:\n this.requestedCapture === \"preview\" ? false : undefined,\n redactionProfile: this.options.redactionProfile,\n maxPreviewChars: normalizeMaxPreviewChars(this.options.maxPreviewChars),\n recordInputsRequired: false,\n recordOutputsRequired: false,\n toolCount: countRecordKeys(event.tools),\n hasPrompt: event.prompt !== undefined,\n hasMessages: event.messages !== undefined,\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n });\n });\n }\n\n async onStepStart(event: OnStepStartEvent): Promise<void> {\n await this.handleLifecycle(\"onStepStart\", async () => {\n const run = this.getActiveRun(\"onStepStart\");\n if (!run) return;\n const startedAt = nowIso();\n const stepEventId = createId(\"event\");\n run.steps.set(event.stepNumber, {\n eventId: stepEventId,\n parentId: run.eventId,\n startedAt,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: stepEventId,\n runId: run.runId,\n parentId: run.eventId,\n kind: \"LLM\",\n name: `ai-sdk-step-${event.stepNumber}`,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_started\",\n stepId: stepEventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n priorStepCount: event.steps.length,\n activeToolCount: event.activeTools?.length,\n toolCount: countRecordKeys(event.tools),\n messageCount: event.messages.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n });\n });\n }\n\n async onStepFinish(event: OnStepFinishEvent): Promise<void> {\n await this.handleLifecycle(\"onStepFinish\", async () => {\n const run = this.getActiveRun(\"onStepFinish\");\n if (!run) return;\n const endedAt = nowIso();\n const activeStep = run.steps.get(event.stepNumber);\n if (!activeStep) {\n this.recordLifecycleWarning(\n `onStepFinish ignored because step ${event.stepNumber} has no matching start callback.`,\n );\n return;\n }\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: activeStep.eventId,\n runId: run.runId,\n parentId: activeStep.parentId,\n kind: \"LLM\",\n name: `ai-sdk-step-${event.stepNumber}`,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: activeStep.startedAt,\n endedAt,\n durationMs: durationMs(activeStep.startedAt, endedAt),\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_completed\",\n stepId: activeStep.eventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n ...summarizeFinishReason(event.finishReason),\n warningCount: event.warnings?.length ?? 0,\n contentPartCount: event.content.length,\n toolCallCount: event.toolCalls.length,\n toolResultCount: event.toolResults.length,\n responseId: event.response.id,\n responseModelId: event.response.modelId,\n responseTimestamp: event.response.timestamp?.toISOString(),\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n tokenUsage: summarizeUsage(event.usage),\n outputSummary: {\n contentPartCount: event.content.length,\n textLength: event.text.length,\n reasoningPartCount: event.reasoning.length,\n fileCount: event.files.length,\n sourceCount: event.sources.length,\n },\n });\n });\n }\n\n async onToolCallStart(event: OnToolCallStartEvent): Promise<void> {\n await this.handleLifecycle(\"onToolCallStart\", async () => {\n const run = this.getActiveRun(\"onToolCallStart\");\n if (!run) return;\n const startedAt = nowIso();\n const eventId = createId(\"event\");\n const toolCall = event.toolCall;\n const step = event.stepNumber === undefined ? undefined : run.steps.get(event.stepNumber);\n const parentId = step?.eventId ?? run.eventId;\n if (event.stepNumber === undefined || !step) {\n this.recordLifecycleWarning(\n \"onToolCallStart attached tool to run because the AI SDK callback did not expose a matching active step.\",\n );\n }\n run.tools.set(toolCall.toolCallId, {\n eventId,\n parentId,\n startedAt,\n toolName: toolCall.toolName,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: run.runId,\n parentId,\n kind: \"TOOL\",\n name: toolCall.toolName,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_started\",\n stepId: eventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n dynamic: toolCall.dynamic === true,\n invalid: toolCall.invalid === true,\n providerExecuted: toolCall.providerExecuted === true,\n messageCount: event.messages.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n providerMetadataKeyCount: countRecordKeys(toolCall.providerMetadata),\n toolMetadataKeyCount: countRecordKeys(toolCall.toolMetadata),\n },\n inputSummary: summarizeUnknown(toolCall.input),\n error: toolCall.invalid ? summarizeError(toolCall.error) : undefined,\n });\n });\n }\n\n async onToolCallFinish(event: OnToolCallFinishEvent): Promise<void> {\n await this.handleLifecycle(\"onToolCallFinish\", async () => {\n const run = this.getActiveRun(\"onToolCallFinish\");\n if (!run) return;\n const endedAt = nowIso();\n const toolCall = event.toolCall;\n const activeTool = run.tools.get(toolCall.toolCallId);\n if (!activeTool) {\n this.recordLifecycleWarning(\n `onToolCallFinish ignored because tool call ${toolCall.toolCallId} has no matching start callback.`,\n );\n return;\n }\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: activeTool.eventId,\n runId: run.runId,\n parentId: activeTool.parentId,\n kind: \"TOOL\",\n name: activeTool.toolName,\n status: event.success ? \"ok\" : \"error\",\n timestamp: endedAt,\n startedAt: activeTool.startedAt,\n endedAt,\n durationMs: event.durationMs,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_completed\",\n stepId: activeTool.eventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n dynamic: toolCall.dynamic === true,\n invalid: toolCall.invalid === true,\n providerExecuted: toolCall.providerExecuted === true,\n messageCount: event.messages.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n providerMetadataKeyCount: countRecordKeys(toolCall.providerMetadata),\n toolMetadataKeyCount: countRecordKeys(toolCall.toolMetadata),\n },\n outputSummary: event.success ? summarizeUnknown(event.output) : undefined,\n error: event.success ? undefined : summarizeError(event.error),\n });\n });\n }\n\n async onFinish(event: OnFinishEvent): Promise<void> {\n await this.handleLifecycle(\"onFinish\", async () => {\n if (this.suspendedReason) {\n this.suspendedReason = undefined;\n return;\n }\n const run = this.getActiveRun(\"onFinish\");\n if (!run) return;\n const endedAt = nowIso();\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: run.eventId,\n runId: run.runId,\n kind: \"RUN\",\n name: run.name,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: run.startedAt,\n endedAt,\n durationMs: durationMs(run.startedAt, endedAt),\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"run_completed\",\n ...summarizeModel(event.model ?? run.model),\n functionId: event.functionId,\n ...summarizeFinishReason(event.finishReason),\n stepCount: event.steps.length,\n warningCount: event.warnings?.length ?? 0,\n toolCallCount: event.toolCalls.length,\n toolResultCount: event.toolResults.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n tokenUsage: summarizeUsage(event.totalUsage),\n outputSummary: {\n contentPartCount: event.content.length,\n textLength: event.text.length,\n reasoningPartCount: event.reasoning.length,\n fileCount: event.files.length,\n sourceCount: event.sources.length,\n },\n });\n\n this.activeRun = undefined;\n });\n }\n\n getWriterStats(): TraceWriterStats | undefined {\n return this.writer?.getStats?.();\n }\n\n async flush(): Promise<void> {\n try {\n await this.writer?.flush?.();\n } catch (error) {\n this.diagnostics.flushFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n\n async close(): Promise<void> {\n try {\n await this.writer?.close?.();\n } catch (error) {\n this.diagnostics.closeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n } finally {\n this.activeRun = undefined;\n this.suspendedReason = undefined;\n }\n }\n\n private getActiveRun(callbackName: string): ActiveRun | undefined {\n if (this.suspendedReason) {\n this.recordLifecycleWarning(\n `${callbackName} ignored while integration is suspended: ${this.suspendedReason}`,\n );\n return undefined;\n }\n if (this.activeRun) return this.activeRun;\n\n this.recordLifecycleWarning(\n `${callbackName} ignored because no active AI SDK generation was started.`,\n );\n return undefined;\n }\n\n private async handleLifecycle(\n callbackName: string,\n run: () => Promise<void>,\n ): Promise<void> {\n try {\n await run();\n } catch (error) {\n this.recordLifecycleWarning(`${callbackName}: ${normalizeError(error)}`);\n }\n }\n\n private recordLifecycleWarning(message: string): void {\n this.diagnostics.lifecycleWarnings += 1;\n this.diagnostics.lastWarning = message;\n }\n\n private recordCaptureOptionWarnings(): void {\n const previewOnlyOptions: string[] = [];\n if (this.requestedCapture === \"preview\") previewOnlyOptions.push(\"capture\");\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\n\n if (this.requestedCapture === \"preview\") {\n this.recordLifecycleWarning(\n `AI SDK preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(\", \")}.`,\n );\n return;\n }\n\n if (previewOnlyOptions.length > 0) {\n this.recordLifecycleWarning(\n `AI SDK preview-only options have no effect in metadata-only capture: ${previewOnlyOptions.join(\", \")}.`,\n );\n }\n }\n\n private async write(event: PersistedInspectEvent): Promise<void> {\n if (!this.writer) return;\n\n try {\n await this.writer.write(event);\n } catch (error) {\n this.diagnostics.writeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n}\n\n/**\n * Create an AgentInspect telemetry integration for the Vercel AI SDK.\n *\n * @experimental The adapter maps metadata-only generation, LLM step, and tool\n * lifecycle events. Keep AI SDK telemetry configured with\n * `recordInputs: false` and `recordOutputs: false`.\n */\nexport function agentInspect(\n options: AgentInspectAiSdkOptions = {},\n): AgentInspectAiSdkIntegration {\n const integration = new AgentInspectAiSdkTelemetryIntegration(options);\n return {\n ...bindTelemetryIntegration(integration),\n getDiagnostics: () => integration.getDiagnostics(),\n getWriterStats: () => integration.getWriterStats(),\n flush: () => integration.flush(),\n close: () => integration.close(),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import { bindTelemetryIntegration } from \"ai\";\nimport type {\n OnFinishEvent,\n OnStartEvent,\n OnStepFinishEvent,\n OnStepStartEvent,\n OnToolCallFinishEvent,\n OnToolCallStartEvent,\n TelemetryIntegration,\n} from \"ai\";\nimport type {\n RedactionProfile,\n} from \"agent-inspect/advanced\";\nimport type {\n PersistedInspectEvent,\n PersistedInspectError,\n PersistedTokenUsage,\n} from \"agent-inspect/persisted\";\nimport { fileWriter } from \"agent-inspect/writers\";\nimport type { TraceWriter, TraceWriterStats } from \"agent-inspect/writers\";\n\n/**\n * Experimental capture mode for the AI SDK adapter.\n *\n * @experimental This package is part of the framework adapter train.\n */\nexport type AgentInspectAiSdkCaptureMode = \"metadata-only\" | \"preview\";\n\n/**\n * Options for the experimental AI SDK telemetry integration.\n *\n * @experimental Callers must keep AI SDK telemetry configured with\n * `recordInputs: false` and `recordOutputs: false`.\n */\nexport interface AgentInspectAiSdkOptions {\n /**\n * Explicit local writer for runtime integration.\n */\n writer?: TraceWriter;\n\n /**\n * Convenience local trace directory for writer-owned persistence.\n */\n traceDir?: string;\n\n /**\n * Optional run name used by lifecycle mapping.\n */\n runName?: string;\n\n /**\n * Capture policy. Defaults to metadata-only.\n *\n * @experimental `preview` is currently rejected with diagnostics and falls\n * back to metadata-only until bounded free-text preview capture is implemented.\n */\n capture?: AgentInspectAiSdkCaptureMode;\n\n /**\n * Redaction profile for future preview capture.\n *\n * @experimental Currently diagnostic-only because the adapter persists\n * metadata summaries and does not write raw preview content.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Bounds future preview capture.\n *\n * @experimental Currently diagnostic-only because `preview` falls back to\n * metadata-only capture.\n */\n maxPreviewChars?: number;\n}\n\nexport interface AgentInspectAiSdkDiagnostics {\n writeFailures: number;\n lifecycleWarnings: number;\n flushFailures: number;\n closeFailures: number;\n lastError?: string;\n lastWarning?: string;\n}\n\nexport interface AgentInspectAiSdkIntegration extends TelemetryIntegration {\n getDiagnostics(): AgentInspectAiSdkDiagnostics;\n getWriterStats(): TraceWriterStats | undefined;\n flush(): Promise<void>;\n close(): Promise<void>;\n}\n\ntype AiSdkModelInfo = {\n provider?: string;\n modelId?: string;\n};\n\ntype AiSdkUsage = {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n cachedInputTokens?: number;\n};\n\ninterface ActiveStep {\n eventId: string;\n parentId: string;\n startedAt: string;\n}\n\ninterface ActiveTool {\n eventId: string;\n parentId: string;\n startedAt: string;\n toolName: string;\n}\n\ninterface ActiveRun {\n runId: string;\n eventId: string;\n name: string;\n startedAt: string;\n model?: AiSdkModelInfo;\n steps: Map<number, ActiveStep>;\n tools: Map<string, ActiveTool>;\n}\n\nconst AI_SDK_SOURCE = {\n type: \"ai-sdk\",\n name: \"@agent-inspect/ai-sdk\",\n version: \"experimental\",\n} as const;\n\nfunction nowIso(): string {\n return new Date().toISOString();\n}\n\nfunction createId(prefix: string): string {\n if (typeof crypto !== \"undefined\" && \"randomUUID\" in crypto) {\n return `${prefix}_${crypto.randomUUID()}`;\n }\n return `${prefix}_${Date.now()}_${Math.random().toString(16).slice(2)}`;\n}\n\nfunction normalizeError(error: unknown): string {\n if (error instanceof Error && error.message.trim() !== \"\") {\n return error.message;\n }\n if (typeof error === \"string\" && error.trim() !== \"\") {\n return error;\n }\n return \"Unknown AI SDK integration error\";\n}\n\nfunction durationMs(startedAt: string, endedAt: string): number | undefined {\n const started = Date.parse(startedAt);\n const ended = Date.parse(endedAt);\n if (!Number.isFinite(started) || !Number.isFinite(ended)) return undefined;\n return Math.max(0, ended - started);\n}\n\nfunction countRecordKeys(value: unknown): number | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n return Object.keys(value).length;\n}\n\nfunction normalizeMaxPreviewChars(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nfunction summarizeUnknown(value: unknown): Record<string, unknown> {\n if (value === null) return { type: \"null\" };\n if (Array.isArray(value)) return { type: \"array\", itemCount: value.length };\n\n if (typeof value === \"object\") {\n return { type: \"object\", keyCount: countRecordKeys(value) ?? 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", length: value.length };\n }\n const valueType = typeof value;\n if (valueType === \"number\" || valueType === \"boolean\" || valueType === \"bigint\") {\n return { type: valueType };\n }\n if (valueType === \"undefined\") return { type: \"undefined\" };\n return { type: \"unknown\" };\n}\n\nfunction summarizeError(error: unknown): PersistedInspectError {\n if (error instanceof Error) {\n return {\n name: error.name || \"Error\",\n message: error.message,\n };\n }\n if (typeof error === \"string\") {\n return {\n message: error,\n };\n }\n return {\n message: \"Unknown AI SDK tool error\",\n };\n}\n\nfunction summarizeModel(model: AiSdkModelInfo | undefined): Record<string, unknown> {\n return {\n provider: model?.provider,\n modelId: model?.modelId,\n };\n}\n\nfunction summarizeUsage(usage: AiSdkUsage | undefined): PersistedTokenUsage | undefined {\n if (!usage) return undefined;\n\n const tokenUsage: PersistedTokenUsage = {};\n if (typeof usage.inputTokens === \"number\") tokenUsage.input = usage.inputTokens;\n if (typeof usage.outputTokens === \"number\") tokenUsage.output = usage.outputTokens;\n if (typeof usage.totalTokens === \"number\") tokenUsage.total = usage.totalTokens;\n if (typeof usage.cachedInputTokens === \"number\") tokenUsage.cached = usage.cachedInputTokens;\n\n return Object.keys(tokenUsage).length > 0 ? tokenUsage : undefined;\n}\n\nfunction summarizeFinishReason(\n finishReason: unknown,\n): { finishReason?: string; rawFinishReason?: string } {\n if (typeof finishReason === \"string\") {\n return { finishReason };\n }\n if (typeof finishReason !== \"object\" || finishReason === null) {\n return {};\n }\n\n const value = finishReason as { unified?: unknown; raw?: unknown };\n return {\n finishReason: typeof value.unified === \"string\" ? value.unified : undefined,\n rawFinishReason: typeof value.raw === \"string\" ? value.raw : undefined,\n };\n}\n\nclass AgentInspectAiSdkTelemetryIntegration {\n private readonly writer: TraceWriter | undefined;\n private readonly requestedCapture: AgentInspectAiSdkCaptureMode;\n private readonly effectiveCapture: \"metadata-only\" = \"metadata-only\";\n private readonly diagnostics: AgentInspectAiSdkDiagnostics = {\n writeFailures: 0,\n lifecycleWarnings: 0,\n flushFailures: 0,\n closeFailures: 0,\n };\n private activeRun: ActiveRun | undefined;\n private suspendedReason: string | undefined;\n\n constructor(private readonly options: AgentInspectAiSdkOptions) {\n this.requestedCapture = options.capture ?? \"metadata-only\";\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n this.recordCaptureOptionWarnings();\n }\n\n getDiagnostics(): AgentInspectAiSdkDiagnostics {\n return { ...this.diagnostics };\n }\n\n async onStart(event: OnStartEvent): Promise<void> {\n await this.handleLifecycle(\"onStart\", async () => {\n if (this.activeRun || this.suspendedReason) {\n this.activeRun = undefined;\n this.suspendedReason =\n \"Overlapping AI SDK generation ignored; create one agentInspect() integration per concurrent generation.\";\n this.recordLifecycleWarning(this.suspendedReason);\n return;\n }\n\n const startedAt = nowIso();\n const runId = createId(\"ai_sdk_run\");\n const eventId = createId(\"event\");\n const name =\n this.options.runName ??\n event.functionId ??\n event.model.modelId ??\n \"ai-sdk-generation\";\n\n this.activeRun = {\n runId,\n eventId,\n name,\n startedAt,\n model: event.model,\n steps: new Map(),\n tools: new Map(),\n };\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId,\n kind: \"RUN\",\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"run_started\",\n ...summarizeModel(event.model),\n functionId: event.functionId,\n capture: this.effectiveCapture,\n requestedCapture:\n this.requestedCapture === this.effectiveCapture\n ? undefined\n : this.requestedCapture,\n previewCaptureSupported:\n this.requestedCapture === \"preview\" ? false : undefined,\n redactionProfile: this.options.redactionProfile,\n maxPreviewChars: normalizeMaxPreviewChars(this.options.maxPreviewChars),\n recordInputsRequired: false,\n recordOutputsRequired: false,\n toolCount: countRecordKeys(event.tools),\n hasPrompt: event.prompt !== undefined,\n hasMessages: event.messages !== undefined,\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n });\n });\n }\n\n async onStepStart(event: OnStepStartEvent): Promise<void> {\n await this.handleLifecycle(\"onStepStart\", async () => {\n const run = this.getActiveRun(\"onStepStart\");\n if (!run) return;\n const startedAt = nowIso();\n const stepEventId = createId(\"event\");\n run.steps.set(event.stepNumber, {\n eventId: stepEventId,\n parentId: run.eventId,\n startedAt,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: stepEventId,\n runId: run.runId,\n parentId: run.eventId,\n kind: \"LLM\",\n name: `ai-sdk-step-${event.stepNumber}`,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_started\",\n stepId: stepEventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n priorStepCount: event.steps.length,\n activeToolCount: event.activeTools?.length,\n toolCount: countRecordKeys(event.tools),\n messageCount: event.messages.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n });\n });\n }\n\n async onStepFinish(event: OnStepFinishEvent): Promise<void> {\n await this.handleLifecycle(\"onStepFinish\", async () => {\n const run = this.getActiveRun(\"onStepFinish\");\n if (!run) return;\n const endedAt = nowIso();\n const activeStep = run.steps.get(event.stepNumber);\n if (!activeStep) {\n this.recordLifecycleWarning(\n `onStepFinish ignored because step ${event.stepNumber} has no matching start callback.`,\n );\n return;\n }\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: activeStep.eventId,\n runId: run.runId,\n parentId: activeStep.parentId,\n kind: \"LLM\",\n name: `ai-sdk-step-${event.stepNumber}`,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: activeStep.startedAt,\n endedAt,\n durationMs: durationMs(activeStep.startedAt, endedAt),\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_completed\",\n stepId: activeStep.eventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n ...summarizeFinishReason(event.finishReason),\n warningCount: event.warnings?.length ?? 0,\n contentPartCount: event.content.length,\n toolCallCount: event.toolCalls.length,\n toolResultCount: event.toolResults.length,\n responseId: event.response.id,\n responseModelId: event.response.modelId,\n responseTimestamp: event.response.timestamp?.toISOString(),\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n tokenUsage: summarizeUsage(event.usage),\n outputSummary: {\n contentPartCount: event.content.length,\n textLength: event.text.length,\n reasoningPartCount: event.reasoning.length,\n fileCount: event.files.length,\n sourceCount: event.sources.length,\n },\n });\n });\n }\n\n async onToolCallStart(event: OnToolCallStartEvent): Promise<void> {\n await this.handleLifecycle(\"onToolCallStart\", async () => {\n const run = this.getActiveRun(\"onToolCallStart\");\n if (!run) return;\n const startedAt = nowIso();\n const eventId = createId(\"event\");\n const toolCall = event.toolCall;\n const step = event.stepNumber === undefined ? undefined : run.steps.get(event.stepNumber);\n const parentId = step?.eventId ?? run.eventId;\n if (event.stepNumber === undefined || !step) {\n this.recordLifecycleWarning(\n \"onToolCallStart attached tool to run because the AI SDK callback did not expose a matching active step.\",\n );\n }\n run.tools.set(toolCall.toolCallId, {\n eventId,\n parentId,\n startedAt,\n toolName: toolCall.toolName,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: run.runId,\n parentId,\n kind: \"TOOL\",\n name: toolCall.toolName,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_started\",\n stepId: eventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n dynamic: toolCall.dynamic === true,\n invalid: toolCall.invalid === true,\n providerExecuted: toolCall.providerExecuted === true,\n messageCount: event.messages.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n providerMetadataKeyCount: countRecordKeys(toolCall.providerMetadata),\n toolMetadataKeyCount: countRecordKeys(toolCall.toolMetadata),\n },\n inputSummary: summarizeUnknown(toolCall.input),\n error: toolCall.invalid ? summarizeError(toolCall.error) : undefined,\n });\n });\n }\n\n async onToolCallFinish(event: OnToolCallFinishEvent): Promise<void> {\n await this.handleLifecycle(\"onToolCallFinish\", async () => {\n const run = this.getActiveRun(\"onToolCallFinish\");\n if (!run) return;\n const endedAt = nowIso();\n const toolCall = event.toolCall;\n const activeTool = run.tools.get(toolCall.toolCallId);\n if (!activeTool) {\n this.recordLifecycleWarning(\n `onToolCallFinish ignored because tool call ${toolCall.toolCallId} has no matching start callback.`,\n );\n return;\n }\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: activeTool.eventId,\n runId: run.runId,\n parentId: activeTool.parentId,\n kind: \"TOOL\",\n name: activeTool.toolName,\n status: event.success ? \"ok\" : \"error\",\n timestamp: endedAt,\n startedAt: activeTool.startedAt,\n endedAt,\n durationMs: event.durationMs,\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"step_completed\",\n stepId: activeTool.eventId,\n ...summarizeModel(event.model),\n functionId: event.functionId,\n stepNumber: event.stepNumber,\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n dynamic: toolCall.dynamic === true,\n invalid: toolCall.invalid === true,\n providerExecuted: toolCall.providerExecuted === true,\n messageCount: event.messages.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n providerMetadataKeyCount: countRecordKeys(toolCall.providerMetadata),\n toolMetadataKeyCount: countRecordKeys(toolCall.toolMetadata),\n },\n outputSummary: event.success ? summarizeUnknown(event.output) : undefined,\n error: event.success ? undefined : summarizeError(event.error),\n });\n });\n }\n\n async onFinish(event: OnFinishEvent): Promise<void> {\n await this.handleLifecycle(\"onFinish\", async () => {\n if (this.suspendedReason) {\n this.suspendedReason = undefined;\n return;\n }\n const run = this.getActiveRun(\"onFinish\");\n if (!run) return;\n const endedAt = nowIso();\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId: run.eventId,\n runId: run.runId,\n kind: \"RUN\",\n name: run.name,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: run.startedAt,\n endedAt,\n durationMs: durationMs(run.startedAt, endedAt),\n confidence: \"explicit\",\n source: AI_SDK_SOURCE,\n attributes: {\n legacyEvent: \"run_completed\",\n ...summarizeModel(event.model ?? run.model),\n functionId: event.functionId,\n ...summarizeFinishReason(event.finishReason),\n stepCount: event.steps.length,\n warningCount: event.warnings?.length ?? 0,\n toolCallCount: event.toolCalls.length,\n toolResultCount: event.toolResults.length,\n metadataKeyCount: countRecordKeys(event.metadata),\n },\n tokenUsage: summarizeUsage(event.totalUsage),\n outputSummary: {\n contentPartCount: event.content.length,\n textLength: event.text.length,\n reasoningPartCount: event.reasoning.length,\n fileCount: event.files.length,\n sourceCount: event.sources.length,\n },\n });\n\n this.activeRun = undefined;\n });\n }\n\n getWriterStats(): TraceWriterStats | undefined {\n return this.writer?.getStats?.();\n }\n\n async flush(): Promise<void> {\n try {\n await this.writer?.flush?.();\n } catch (error) {\n this.diagnostics.flushFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n\n async close(): Promise<void> {\n try {\n await this.writer?.close?.();\n } catch (error) {\n this.diagnostics.closeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n } finally {\n this.activeRun = undefined;\n this.suspendedReason = undefined;\n }\n }\n\n private getActiveRun(callbackName: string): ActiveRun | undefined {\n if (this.suspendedReason) {\n this.recordLifecycleWarning(\n `${callbackName} ignored while integration is suspended: ${this.suspendedReason}`,\n );\n return undefined;\n }\n if (this.activeRun) return this.activeRun;\n\n this.recordLifecycleWarning(\n `${callbackName} ignored because no active AI SDK generation was started.`,\n );\n return undefined;\n }\n\n private async handleLifecycle(\n callbackName: string,\n run: () => Promise<void>,\n ): Promise<void> {\n try {\n await run();\n } catch (error) {\n this.recordLifecycleWarning(`${callbackName}: ${normalizeError(error)}`);\n }\n }\n\n private recordLifecycleWarning(message: string): void {\n this.diagnostics.lifecycleWarnings += 1;\n this.diagnostics.lastWarning = message;\n }\n\n private previewCapabilityWarned = false;\n\n private recordCaptureOptionWarnings(): void {\n const previewOnlyOptions: string[] = [];\n if (this.requestedCapture === \"preview\") previewOnlyOptions.push(\"capture\");\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\n\n if (this.requestedCapture === \"preview\") {\n const message =\n `AI_ADAPTER_PREVIEW_NOT_AVAILABLE: capture:\"preview\" was requested, but this adapter currently persists metadata-only. Effective capture: metadata-only. No preview content was written. See docs/ADAPTERS.md.`;\n this.recordLifecycleWarning(\n `AI SDK preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(\", \")}.`,\n );\n if (!this.previewCapabilityWarned) {\n this.previewCapabilityWarned = true;\n console.warn(`[agent-inspect:ai-sdk] ${message}`);\n }\n return;\n }\n\n if (previewOnlyOptions.length > 0) {\n this.recordLifecycleWarning(\n `AI SDK preview-only options have no effect in metadata-only capture: ${previewOnlyOptions.join(\", \")}.`,\n );\n }\n }\n\n private async write(event: PersistedInspectEvent): Promise<void> {\n if (!this.writer) return;\n\n try {\n await this.writer.write(event);\n } catch (error) {\n this.diagnostics.writeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n}\n\n/**\n * Create an AgentInspect telemetry integration for the Vercel AI SDK.\n *\n * @experimental The adapter maps metadata-only generation, LLM step, and tool\n * lifecycle events. Keep AI SDK telemetry configured with\n * `recordInputs: false` and `recordOutputs: false`.\n */\nexport function agentInspect(\n options: AgentInspectAiSdkOptions = {},\n): AgentInspectAiSdkIntegration {\n const integration = new AgentInspectAiSdkTelemetryIntegration(options);\n return {\n ...bindTelemetryIntegration(integration),\n getDiagnostics: () => integration.getDiagnostics(),\n getWriterStats: () => integration.getWriterStats(),\n flush: () => integration.flush(),\n close: () => integration.close(),\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-inspect/ai-sdk",
|
|
3
|
-
"version": "6.17.
|
|
3
|
+
"version": "6.17.5",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Vercel AI SDK telemetry integration for AgentInspect local traces and trajectory tests",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"ai": "^6.0.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"agent-inspect": "6.17.
|
|
40
|
+
"agent-inspect": "6.17.5"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"ai": "^6.0.210"
|