@mastra/claude 0.3.1 → 0.3.2-alpha.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.
@@ -3,7 +3,7 @@ name: mastra-claude
3
3
  description: Documentation for @mastra/claude. Use when working with @mastra/claude APIs, configuration, or implementation.
4
4
  metadata:
5
5
  package: "@mastra/claude"
6
- version: "0.3.1"
6
+ version: "0.3.2-alpha.0"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.3.1",
2
+ "version": "0.3.2-alpha.0",
3
3
  "package": "@mastra/claude",
4
4
  "exports": {},
5
5
  "modules": {}
package/dist/index.cjs CHANGED
@@ -1,5 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- let crypto = require("crypto");
3
2
  let stream_web = require("stream/web");
4
3
  let _anthropic_ai_claude_agent_sdk = require("@anthropic-ai/claude-agent-sdk");
5
4
  let _mastra_core_agent = require("@mastra/core/agent");
@@ -24,7 +23,7 @@ function createNoopStreamResult() {
24
23
  }
25
24
  function createCompletedMastraStream({ runId, prompt, text, responseId, modelId, usage, providerMetadata, costContext, object }) {
26
25
  return new stream_web.ReadableStream({ start(controller) {
27
- const textId = (0, crypto.randomUUID)();
26
+ const textId = globalThis.crypto.randomUUID();
28
27
  enqueueStartChunks(controller, {
29
28
  runId,
30
29
  prompt,
@@ -64,7 +63,7 @@ function createMastraOutput({ messages, runId, modelId, provider, stream, respon
64
63
  },
65
64
  stream,
66
65
  messageList,
67
- messageId: (0, crypto.randomUUID)(),
66
+ messageId: globalThis.crypto.randomUUID(),
68
67
  options: {
69
68
  ...options,
70
69
  runId
@@ -550,7 +549,7 @@ var ClaudeSDKAgent = class extends _mastra_core_agent.Agent {
550
549
  }
551
550
  async generate(messages, options) {
552
551
  const prompt = promptToText(messages);
553
- const runId = options?.runId ?? (0, crypto.randomUUID)();
552
+ const runId = options?.runId ?? globalThis.crypto.randomUUID();
554
553
  const requestContext = options?.requestContext ?? new _mastra_core_request_context.RequestContext();
555
554
  const instructions = options?.instructions ? promptToText(options.instructions) : void 0;
556
555
  const telemetry = createSDKAgentTelemetry({
@@ -592,7 +591,7 @@ var ClaudeSDKAgent = class extends _mastra_core_agent.Agent {
592
591
  });
593
592
  }
594
593
  async stream(messages, options) {
595
- const runId = options?.runId ?? (0, crypto.randomUUID)();
594
+ const runId = options?.runId ?? globalThis.crypto.randomUUID();
596
595
  const prompt = promptToText(messages);
597
596
  const modelId = getModelId(this.options);
598
597
  const requestContext = options?.requestContext ?? new _mastra_core_request_context.RequestContext();
@@ -689,7 +688,7 @@ async function runClaudeGenerate(prompt, options, telemetry, runOptions) {
689
688
  },
690
689
  usage: usage.toV3Usage(),
691
690
  response: {
692
- id: (0, crypto.randomUUID)(),
691
+ id: globalThis.crypto.randomUUID(),
693
692
  modelId: getModelId(options),
694
693
  timestamp: /* @__PURE__ */ new Date()
695
694
  },
@@ -700,8 +699,8 @@ async function runClaudeGenerate(prompt, options, telemetry, runOptions) {
700
699
  }
701
700
  function runClaudeAsMastraStream(prompt, options, runId, telemetry, runOptions) {
702
701
  return new stream_web.ReadableStream({ start: async (controller) => {
703
- const textId = (0, crypto.randomUUID)();
704
- const responseId = (0, crypto.randomUUID)();
702
+ const textId = globalThis.crypto.randomUUID();
703
+ const responseId = globalThis.crypto.randomUUID();
705
704
  const modelId = getModelId(options);
706
705
  const usage = createClaudeUsageCollector();
707
706
  let text = "";
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["ReadableStream","MessageList","MastraModelOutput","SpanType","EntityType","TransformStream","ChunkFrom","Agent","#mastra","RequestContext","ReadableStream","ChunkFrom"],"sources":["../src/utils.ts","../src/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { ReadableStream, TransformStream } from 'node:stream/web';\nimport type { ReadableStreamDefaultController } from 'node:stream/web';\n\nimport type { AgentExecutionOptionsBase, MastraLanguageModel, PublicStructuredOutputOptions } from '@mastra/core/agent';\nimport { MessageList } from '@mastra/core/agent/message-list';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { EntityType, executeWithContext, getOrCreateSpan, SpanType } from '@mastra/core/observability';\nimport type {\n AIModelGenerationSpan,\n CostContext,\n IModelSpanTracker,\n Span,\n UsageStats,\n} from '@mastra/core/observability';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '@mastra/core/schema';\nimport type { ChunkType, FullOutput, JSONValue, LanguageModelUsage, ProviderMetadata } from '@mastra/core/stream';\nimport { ChunkFrom, MastraModelOutput } from '@mastra/core/stream';\ntype MastraModelOutputOptions<OUTPUT = undefined> = ConstructorParameters<\n typeof MastraModelOutput<OUTPUT>\n>[0]['options'];\n\nexport type SDKAgentRunOptions<OUTPUT = unknown> = AgentExecutionOptionsBase<OUTPUT> & {\n signal?: AbortSignal;\n structuredOutput?: OUTPUT extends {} ? PublicStructuredOutputOptions<OUTPUT> : never;\n [key: string]: unknown;\n};\n\nexport type V3Usage = {\n inputTokens: {\n total: number | undefined;\n noCache?: number;\n cacheRead?: number;\n cacheWrite?: number;\n };\n outputTokens: {\n total: number | undefined;\n text?: number;\n };\n};\n\nexport type SDKModelGenerateResult = {\n content: Array<{ type: 'text'; text: string }>;\n finishReason: { unified: 'stop'; raw: 'stop' };\n usage: V3Usage;\n response: {\n id: string;\n modelId: string;\n timestamp: Date;\n };\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n};\n\nexport function createNoopModel({ modelId, provider }: { modelId: string; provider: string }): MastraLanguageModel {\n return {\n modelId,\n provider,\n specificationVersion: 'v3',\n supportedUrls: {},\n doGenerate: async () => createNoopStreamResult(),\n doStream: async () => createNoopStreamResult(),\n } as MastraLanguageModel;\n}\n\nfunction createNoopStreamResult(): { stream: ReadableStream<never> } {\n return {\n stream: new ReadableStream<never>({\n start: controller => controller.close(),\n }),\n };\n}\n\nexport function createCompletedMastraStream({\n runId,\n prompt,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n}: {\n runId: string;\n prompt: string;\n text: string;\n responseId: string;\n modelId: string;\n usage: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n}): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start(controller) {\n const textId = randomUUID();\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata,\n });\n if (text) {\n enqueueTextDelta(controller, runId, textId, text);\n }\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n });\n controller.close();\n },\n });\n}\n\nexport function createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId,\n provider,\n stream,\n responseText = '',\n options,\n}: {\n messages: MessageListInput;\n runId: string;\n modelId: string;\n provider: string;\n stream: ReadableStream<ChunkType>;\n responseText?: string;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): MastraModelOutput<OUTPUT> {\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n messageList.add([{ role: 'assistant', content: responseText }], 'response');\n\n return new MastraModelOutput<OUTPUT>({\n model: {\n modelId,\n provider,\n version: 'v3',\n },\n stream: stream as ReadableStream<ChunkType<OUTPUT>>,\n messageList,\n messageId: randomUUID(),\n options: {\n ...options,\n runId,\n },\n });\n}\n\nexport function toFullOutput<OUTPUT>({\n messages,\n runId,\n provider,\n result,\n options,\n}: {\n messages: MessageListInput;\n runId: string;\n provider: string;\n result: SDKModelGenerateResult;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): Promise<FullOutput<OUTPUT>> {\n const text = result.content.map(part => part.text).join('');\n const stream = createCompletedMastraStream({\n runId,\n prompt: promptToText(messages),\n text,\n responseId: result.response.id,\n modelId: result.response.modelId,\n usage: toLanguageModelUsage(result.usage),\n providerMetadata: result.providerMetadata,\n costContext: result.costContext,\n object: result.object,\n });\n\n return createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId: result.response.modelId,\n provider,\n stream,\n responseText: text,\n options,\n }).getFullOutput();\n}\n\nexport type SDKAgentTelemetryOptions<OUTPUT = unknown> = {\n agentId: string;\n agentName: string;\n provider: string;\n modelId: string;\n messages: MessageListInput;\n prompt: string;\n runId: string;\n streaming: boolean;\n method: 'generate' | 'stream';\n requestContext: RequestContext;\n instructions?: string;\n maxSteps?: SDKAgentRunOptions<OUTPUT>['maxSteps'];\n tracingOptions?: SDKAgentRunOptions<OUTPUT>['tracingOptions'];\n tracingContext?: SDKAgentRunOptions<OUTPUT>['tracingContext'];\n onFinish?: SDKAgentRunOptions<OUTPUT>['onFinish'];\n onStepFinish?: SDKAgentRunOptions<OUTPUT>['onStepFinish'];\n mastra?: Mastra;\n};\n\nexport type SDKAgentTelemetry<OUTPUT = unknown> = {\n execute<T>(fn: () => Promise<T>): Promise<T>;\n endGenerate(result: SDKModelGenerateResult): void;\n fail(error: unknown): void;\n startToolCall(input: SDKAgentToolCallInput): void;\n endToolCall(output: SDKAgentToolCallOutput): void;\n wrapStream(stream: ReadableStream<ChunkType>): ReadableStream<ChunkType>;\n outputOptions(): Partial<MastraModelOutputOptions<OUTPUT>>;\n};\n\nexport type SDKAgentToolCallInput = {\n toolCallId: string;\n toolName: string;\n input?: unknown;\n};\n\nexport type SDKAgentToolCallOutput = {\n toolCallId: string;\n output?: unknown;\n isError?: boolean;\n};\n\nexport function createSDKAgentTelemetry<OUTPUT>({\n agentId,\n agentName,\n provider,\n modelId,\n messages,\n prompt,\n runId,\n streaming,\n method,\n requestContext,\n instructions,\n maxSteps,\n tracingOptions,\n tracingContext,\n onFinish,\n onStepFinish,\n mastra,\n}: SDKAgentTelemetryOptions<OUTPUT>): SDKAgentTelemetry<OUTPUT> {\n const agentSpan = getOrCreateSpan({\n type: SpanType.AGENT_RUN,\n name: `agent run: '${agentId}'`,\n entityType: EntityType.AGENT,\n entityId: agentId,\n entityName: agentName,\n input: messages,\n attributes: {\n prompt,\n instructions,\n maxSteps,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n },\n tracingOptions,\n tracingContext,\n requestContext,\n mastra,\n });\n\n const modelSpan = agentSpan?.createChildSpan({\n type: SpanType.MODEL_GENERATION,\n name: `llm: '${modelId}'`,\n input: {\n messages,\n },\n attributes: {\n model: modelId,\n provider,\n streaming,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n },\n requestContext,\n });\n const modelSpanTracker = getModelSpanTracker(modelSpan);\n const toolSpans = new Map<string, Span<SpanType.TOOL_CALL> | Span<SpanType.MCP_TOOL_CALL>>();\n\n let ended = false;\n\n const startToolCall = ({ toolCallId, toolName, input }: SDKAgentToolCallInput) => {\n if (toolSpans.has(toolCallId)) {\n return;\n }\n\n const parentSpan = agentSpan ?? modelSpan;\n if (!parentSpan) {\n return;\n }\n\n const mcp = parseMcpToolName(toolName);\n const span = mcp\n ? parentSpan.createChildSpan({\n type: SpanType.MCP_TOOL_CALL,\n name: `mcp_tool: '${toolName}' on '${mcp.serverName}'`,\n input,\n entityType: EntityType.TOOL,\n entityId: toolName,\n entityName: toolName,\n attributes: {\n mcpServer: mcp.serverName,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n toolCallId,\n },\n requestContext,\n })\n : parentSpan.createChildSpan({\n type: SpanType.TOOL_CALL,\n name: `tool: '${toolName}'`,\n input,\n entityType: EntityType.TOOL,\n entityId: toolName,\n entityName: toolName,\n attributes: {\n toolType: 'tool',\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n toolCallId,\n },\n requestContext,\n });\n\n toolSpans.set(toolCallId, span);\n };\n\n const endToolCall = ({ toolCallId, output, isError }: SDKAgentToolCallOutput) => {\n const span = toolSpans.get(toolCallId);\n if (!span) {\n return;\n }\n\n toolSpans.delete(toolCallId);\n if (isError) {\n span.error({\n error:\n output instanceof Error ? output : new Error(typeof output === 'string' ? output : 'SDK tool call failed'),\n attributes: { success: false },\n });\n return;\n }\n\n span.end({\n output,\n attributes: { success: true },\n });\n };\n\n const closeOpenToolSpans = (success: boolean, error?: unknown) => {\n for (const [toolCallId, span] of toolSpans) {\n toolSpans.delete(toolCallId);\n if (success) {\n span.end({ attributes: { success: true } });\n continue;\n }\n\n const normalized = error instanceof Error ? error : new Error(String(error ?? 'SDK agent run failed'));\n span.error({ error: normalized, attributes: { success: false } });\n }\n };\n\n const endModel = ({\n text,\n usage,\n providerMetadata,\n finishReason = 'stop',\n responseId,\n responseModel,\n costContext,\n }: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => {\n if (modelSpanTracker) {\n modelSpanTracker.endGeneration({\n output: {\n text,\n },\n attributes: {\n finishReason,\n responseId,\n responseModel,\n costContext,\n },\n usage,\n providerMetadata,\n });\n return;\n }\n\n modelSpan?.end({\n output: {\n text,\n },\n attributes: {\n finishReason,\n responseId,\n responseModel,\n usage: usage ? toUsageStats(usage) : undefined,\n costContext,\n },\n });\n };\n\n const end = (result: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => {\n if (ended) {\n return;\n }\n\n ended = true;\n closeOpenToolSpans(true);\n endModel(result);\n agentSpan?.end({\n output: {\n text: result.text,\n },\n });\n };\n\n const fail = (error: unknown) => {\n if (ended) {\n return;\n }\n\n ended = true;\n const normalized = error instanceof Error ? error : new Error(String(error));\n closeOpenToolSpans(false, normalized);\n if (modelSpanTracker) {\n modelSpanTracker.reportGenerationError({ error: normalized });\n } else {\n modelSpan?.error({ error: normalized });\n }\n agentSpan?.error({ error: normalized });\n };\n\n return {\n execute: fn => executeWithContext({ span: modelSpan ?? agentSpan, fn }),\n endGenerate(result) {\n end({\n text: result.content.map(part => part.text).join(''),\n usage: toLanguageModelUsage(result.usage),\n providerMetadata: result.providerMetadata,\n finishReason: result.finishReason.unified,\n responseId: result.response.id,\n responseModel: result.response.modelId,\n costContext: result.costContext,\n });\n },\n fail,\n startToolCall,\n endToolCall,\n wrapStream(stream) {\n const trackedStream = (modelSpanTracker?.wrapStream(stream) ?? stream) as ReadableStream<ChunkType>;\n return wrapStreamForAgentSpan(trackedStream, {\n end,\n fail,\n });\n },\n outputOptions() {\n return {\n onFinish,\n onStepFinish,\n requestContext,\n tracingContext: agentSpan ? { currentSpan: agentSpan } : tracingContext,\n };\n },\n };\n}\n\nfunction parseMcpToolName(toolName: string): { serverName: string; toolName: string } | undefined {\n const match = /^mcp__([^_].*?)__(.+)$/.exec(toolName);\n if (!match?.[1] || !match[2]) {\n return undefined;\n }\n\n return {\n serverName: match[1],\n toolName: match[2],\n };\n}\n\nfunction getModelSpanTracker(\n modelSpan: Span<SpanType.MODEL_GENERATION> | AIModelGenerationSpan | undefined,\n): IModelSpanTracker | undefined {\n if (!modelSpan || !('createTracker' in modelSpan)) {\n return undefined;\n }\n\n return modelSpan.createTracker();\n}\n\nfunction wrapStreamForAgentSpan(\n stream: ReadableStream<ChunkType>,\n telemetry: {\n end: (result: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => void;\n fail: (error: unknown) => void;\n },\n): ReadableStream<ChunkType> {\n let text = '';\n\n return stream.pipeThrough(\n new TransformStream<ChunkType, ChunkType>({\n transform(chunk, controller) {\n if (chunk.type === 'text-delta') {\n text += chunk.payload.text;\n }\n\n if (chunk.type === 'finish') {\n telemetry.end({\n text,\n usage: chunk.payload.output.usage,\n providerMetadata: chunk.payload.providerMetadata,\n finishReason: chunk.payload.stepResult.reason,\n responseId: chunk.payload.response?.id,\n responseModel: chunk.payload.response?.modelId,\n costContext: getCostContext(chunk.payload.metadata?.costContext),\n });\n }\n\n if (chunk.type === 'error') {\n telemetry.fail(chunk.payload.error);\n }\n\n controller.enqueue(chunk);\n },\n flush() {\n telemetry.end({ text });\n },\n }),\n );\n}\n\nfunction toUsageStats(usage: LanguageModelUsage): UsageStats {\n return {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n inputDetails: {\n cacheRead: usage.cachedInputTokens,\n cacheWrite: usage.cacheCreationInputTokens,\n },\n outputDetails: {\n text: usage.outputTokens,\n reasoning: usage.reasoningTokens,\n },\n };\n}\n\nfunction getCostContext(value: unknown): CostContext | undefined {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n\n return value as CostContext;\n}\n\nexport function enqueueStartChunks(\n controller: ReadableStreamDefaultController<ChunkType>,\n {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata,\n }: {\n runId: string;\n prompt: string;\n textId: string;\n responseId: string;\n modelId: string;\n providerMetadata?: ProviderMetadata;\n },\n): void {\n controller.enqueue({\n type: 'start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {},\n });\n controller.enqueue({\n type: 'step-start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n request: { body: prompt },\n },\n });\n controller.enqueue({\n type: 'response-metadata',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: responseId,\n modelId,\n timestamp: new Date().toISOString(),\n },\n });\n controller.enqueue({\n type: 'text-start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n providerMetadata,\n },\n });\n}\n\nexport function enqueueTextDelta(\n controller: ReadableStreamDefaultController<ChunkType>,\n runId: string,\n textId: string,\n text: string,\n): void {\n controller.enqueue({\n type: 'text-delta',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n text,\n },\n });\n}\n\nexport function enqueueFinishChunks(\n controller: ReadableStreamDefaultController<ChunkType>,\n {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n }: {\n runId: string;\n prompt: string;\n textId: string;\n text: string;\n responseId: string;\n modelId: string;\n usage: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n },\n): void {\n const timestamp = new Date();\n const response = {\n id: responseId,\n modelId,\n timestamp,\n };\n const metadata = {\n providerMetadata,\n costContext,\n request: { body: prompt },\n modelId,\n timestamp,\n };\n\n controller.enqueue({\n type: 'text-end',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n providerMetadata,\n },\n });\n if (object !== undefined) {\n controller.enqueue({\n type: 'object-result',\n runId,\n from: ChunkFrom.AGENT,\n object,\n } as unknown as ChunkType);\n }\n controller.enqueue({\n type: 'step-finish',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: responseId,\n providerMetadata,\n totalUsage: usage,\n response,\n stepResult: {\n reason: 'stop',\n warnings: [],\n },\n output: {\n text,\n usage,\n steps: [],\n },\n metadata,\n },\n });\n controller.enqueue({\n type: 'finish',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n stepResult: {\n reason: 'stop',\n warnings: [],\n },\n output: {\n usage,\n steps: [],\n },\n metadata,\n providerMetadata,\n messages: {\n all: [],\n user: [],\n nonUser: [],\n },\n response,\n },\n });\n}\n\nexport function toLanguageModelUsage(usage: V3Usage): LanguageModelUsage {\n const inputTokens = usage.inputTokens.total ?? 0;\n const outputTokens = usage.outputTokens.total ?? 0;\n\n return {\n inputTokens,\n outputTokens,\n totalTokens: inputTokens + outputTokens,\n cachedInputTokens: usage.inputTokens.cacheRead,\n cacheCreationInputTokens: usage.inputTokens.cacheWrite,\n raw: usage,\n };\n}\n\nexport function createProviderMetadata(provider: string, metadata: Record<string, unknown>): ProviderMetadata {\n return {\n [provider]: toJsonRecord(metadata),\n };\n}\n\nfunction toJsonRecord(record: Record<string, unknown>): Record<string, JSONValue> {\n return Object.fromEntries(\n Object.entries(record)\n .filter((entry): entry is [string, Exclude<unknown, undefined>] => entry[1] !== undefined)\n .map(([key, value]) => [key, toJsonValue(value)]),\n );\n}\n\nfunction toJsonValue(value: unknown): JSONValue {\n if (value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.filter(item => item !== undefined).map(toJsonValue);\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === 'object') {\n return toJsonRecord(value as Record<string, unknown>);\n }\n\n return String(value);\n}\n\nexport function promptToText(prompt: unknown): string {\n if (typeof prompt === 'string') {\n return prompt;\n }\n\n if (Array.isArray(prompt)) {\n return prompt.map(promptToText).filter(Boolean).join('\\n');\n }\n\n if (!prompt || typeof prompt !== 'object') {\n return '';\n }\n\n const record = prompt as Record<string, unknown>;\n if (typeof record.text === 'string') {\n return record.text;\n }\n if (typeof record.content === 'string') {\n return record.content;\n }\n if (record.content) {\n return promptToText(record.content);\n }\n\n return '';\n}\n\nexport function withStructuredOutputPrompt<OUTPUT>(\n prompt: string,\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): string {\n if (!structuredOutput?.schema) {\n return prompt;\n }\n\n const schema = standardSchemaToJSONSchema(toStandardSchema(structuredOutput.schema));\n const instructions =\n structuredOutput.instructions ??\n 'Return only valid JSON that matches the JSON Schema. Do not include markdown fences or explanatory text.';\n\n return `${prompt}\\n\\n${instructions}\\n\\nJSON Schema:\\n${JSON.stringify(schema)}`;\n}\n\nexport function getStructuredOutputSchema<OUTPUT>(\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Record<string, unknown> | undefined {\n if (!structuredOutput?.schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(structuredOutput.schema)) as Record<string, unknown>;\n}\n\nexport async function getStructuredOutput<OUTPUT>(\n text: string,\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Promise<OUTPUT | undefined> {\n return getStructuredOutputFromValue(text, structuredOutput);\n}\n\nexport async function getStructuredOutputFromValue<OUTPUT>(\n value: unknown,\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Promise<OUTPUT | undefined> {\n if (!structuredOutput?.schema) {\n return undefined;\n }\n\n let parsed: unknown;\n if (typeof value === 'string') {\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n return handleStructuredOutputError(\n new Error('Structured output must be valid JSON.', { cause: error }),\n structuredOutput,\n );\n }\n } else {\n parsed = value;\n }\n\n const schema = toStandardSchema(structuredOutput.schema);\n const result = await schema['~standard'].validate(parsed);\n if (!result.issues) {\n return result.value as OUTPUT;\n }\n\n const message = result.issues.map(issue => `- ${issue.path?.join('.') || 'root'}: ${issue.message}`).join('\\n');\n return handleStructuredOutputError(new Error(`Structured output validation failed:\\n${message}`), structuredOutput);\n}\n\nfunction handleStructuredOutputError<OUTPUT>(\n error: Error,\n structuredOutput: PublicStructuredOutputOptions<OUTPUT>,\n): OUTPUT | undefined {\n if (structuredOutput.errorStrategy === 'fallback') {\n return structuredOutput.fallbackValue;\n }\n\n if (structuredOutput.errorStrategy === 'warn') {\n structuredOutput.logger?.warn(error.message);\n return undefined;\n }\n\n throw error;\n}\n\nexport function sumDefined(...values: Array<number | undefined>): number | undefined {\n const defined = values.filter((value): value is number => typeof value === 'number');\n if (defined.length === 0) {\n return undefined;\n }\n\n return defined.reduce((sum, value) => sum + value, 0);\n}\n","import { randomUUID } from 'node:crypto';\nimport { ReadableStream } from 'node:stream/web';\n\nimport { query } from '@anthropic-ai/claude-agent-sdk';\nimport type { ModelUsage, Options as ClaudeQueryOptions, SDKMessage } from '@anthropic-ai/claude-agent-sdk';\n\nimport { Agent } from '@mastra/core/agent';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { CostContext } from '@mastra/core/observability';\nimport { RequestContext } from '@mastra/core/request-context';\nimport type {\n ChunkType,\n FullOutput,\n LanguageModelUsage,\n ProviderMetadata,\n MastraModelOutput,\n} from '@mastra/core/stream';\nimport { ChunkFrom } from '@mastra/core/stream';\nimport {\n createMastraOutput,\n createNoopModel,\n createProviderMetadata,\n createSDKAgentTelemetry,\n enqueueFinishChunks,\n enqueueStartChunks,\n enqueueTextDelta,\n getStructuredOutputFromValue,\n getStructuredOutputSchema,\n promptToText,\n sumDefined,\n toFullOutput,\n toLanguageModelUsage,\n} from './utils';\nimport type { SDKAgentRunOptions, SDKAgentTelemetry, SDKModelGenerateResult, V3Usage } from './utils';\n\nconst PROVIDER = '@anthropic-ai/claude-agent-sdk';\nconst MODEL_ID = 'claude-agent-sdk';\n\ntype ClaudeUsageTotals = {\n inputTokens?: number;\n outputTokens?: number;\n cacheReadInputTokens?: number;\n cacheCreationInputTokens?: number;\n totalCostUsd?: number;\n modelUsage?: Record<string, ModelUsage>;\n};\n\nexport type ClaudeSDKOptions = ClaudeQueryOptions;\n\nexport type ClaudeAgentOptions = {\n /**\n * Mastra agent id used when registering this wrapper with Mastra.\n */\n id: string;\n /**\n * Optional display name for the Mastra agent. Defaults to `id`.\n */\n name?: string;\n /**\n * Description surfaced by Mastra when listing or selecting agents.\n */\n description: string;\n /**\n * Claude Agent SDK options forwarded to `query()` on every run.\n */\n sdkOptions?: ClaudeSDKOptions;\n};\n\nexport type ClaudeSDKAgentRunOptions<OUTPUT = unknown> = SDKAgentRunOptions<OUTPUT> & {\n /**\n * Claude Agent SDK query options for this run. These are merged over the\n * wrapper's `sdkOptions`, which allows per-call session continuation options\n * such as `resume` or `continue`.\n */\n sdkOptions?: ClaudeSDKOptions;\n};\n\nexport type ClaudeSDKAgentResumeData =\n | {\n /**\n * Message to send while resuming the Claude SDK session.\n */\n message: MessageListInput;\n /**\n * Claude session id to resume.\n */\n sessionId: string;\n /**\n * Fork the resumed session into a new session.\n */\n forkSession?: boolean;\n /**\n * Resume the session up to a specific assistant message UUID.\n */\n resumeSessionAt?: string;\n }\n | {\n /**\n * Message to send while continuing the latest Claude SDK session.\n */\n message: MessageListInput;\n /**\n * Continue the latest Claude session in the current working directory.\n */\n continue: true;\n };\n\nexport class ClaudeSDKAgent extends Agent {\n readonly options: ClaudeAgentOptions;\n #mastra?: Mastra;\n\n constructor(options: ClaudeAgentOptions) {\n super({\n id: options.id,\n name: options.name ?? options.id,\n description: options.description,\n instructions: '',\n model: createNoopModel({\n modelId: getModelId(options),\n provider: PROVIDER,\n }),\n });\n this.options = options;\n }\n\n override __registerMastra(mastra: Mastra): void {\n super.__registerMastra(mastra);\n this.#mastra = mastra;\n }\n\n supportsMemory(): boolean {\n return false;\n }\n\n async generate<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const prompt = promptToText(messages);\n const runId = options?.runId ?? randomUUID();\n const requestContext = options?.requestContext ?? new RequestContext();\n const instructions = options?.instructions ? promptToText(options.instructions) : undefined;\n const telemetry = createSDKAgentTelemetry({\n agentId: this.id,\n agentName: this.name,\n provider: PROVIDER,\n modelId: getModelId(this.options),\n messages,\n prompt,\n runId,\n streaming: false,\n method: 'generate',\n requestContext,\n instructions,\n maxSteps: options?.maxSteps,\n tracingOptions: options?.tracingOptions,\n tracingContext: options?.tracingContext,\n onFinish: options?.onFinish,\n onStepFinish: options?.onStepFinish,\n mastra: this.#mastra,\n });\n let result: SDKModelGenerateResult;\n try {\n result = await telemetry.execute(() => runClaudeGenerate(prompt, this.options, telemetry, options));\n telemetry.endGenerate(result);\n } catch (error) {\n telemetry.fail(error);\n throw error;\n }\n\n return toFullOutput<OUTPUT>({\n messages,\n runId,\n provider: PROVIDER,\n result,\n options: { ...telemetry.outputOptions(), structuredOutput: options?.structuredOutput as any },\n });\n }\n\n async stream<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const runId = options?.runId ?? randomUUID();\n const prompt = promptToText(messages);\n const modelId = getModelId(this.options);\n const requestContext = options?.requestContext ?? new RequestContext();\n const instructions = options?.instructions ? promptToText(options.instructions) : undefined;\n const telemetry = createSDKAgentTelemetry({\n agentId: this.id,\n agentName: this.name,\n provider: PROVIDER,\n modelId,\n messages,\n prompt,\n runId,\n streaming: true,\n method: 'stream',\n requestContext,\n instructions,\n maxSteps: options?.maxSteps,\n tracingOptions: options?.tracingOptions,\n tracingContext: options?.tracingContext,\n onFinish: options?.onFinish,\n onStepFinish: options?.onStepFinish,\n mastra: this.#mastra,\n });\n\n return createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId,\n provider: PROVIDER,\n stream: telemetry.wrapStream(runClaudeAsMastraStream(prompt, this.options, runId, telemetry, options)),\n options: { ...telemetry.outputOptions(), structuredOutput: options?.structuredOutput as any },\n });\n }\n\n async resumeGenerate<OUTPUT = undefined>(\n resumeData: ClaudeSDKAgentResumeData,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const data = validateClaudeResumeData(resumeData);\n return this.generate(data.message, createClaudeResumeRunOptions(data, options));\n }\n\n async resumeStream<OUTPUT = undefined>(\n resumeData: ClaudeSDKAgentResumeData,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const data = validateClaudeResumeData(resumeData);\n return this.stream(data.message, createClaudeResumeRunOptions(data, options));\n }\n}\n\nfunction validateClaudeResumeData(resumeData: ClaudeSDKAgentResumeData): ClaudeSDKAgentResumeData {\n if (!isRecord(resumeData) || !('message' in resumeData)) {\n throw new Error('ClaudeSDKAgent resumeData must include a message.');\n }\n\n const hasSessionId = 'sessionId' in resumeData;\n const hasContinue = 'continue' in resumeData;\n\n if (hasSessionId && hasContinue) {\n throw new Error('ClaudeSDKAgent resumeData must include either sessionId or continue: true, not both.');\n }\n\n if (hasSessionId) {\n if (typeof resumeData.sessionId !== 'string') {\n throw new Error('ClaudeSDKAgent resumeData.sessionId must be a string.');\n }\n return resumeData;\n }\n\n if (hasContinue) {\n if (resumeData.continue !== true) {\n throw new Error('ClaudeSDKAgent resumeData.continue must be true when provided.');\n }\n return resumeData;\n }\n\n throw new Error('ClaudeSDKAgent resumeData must include sessionId or continue: true.');\n}\n\nfunction createClaudeResumeRunOptions<OUTPUT>(\n resumeData: ClaudeSDKAgentResumeData,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): ClaudeSDKAgentRunOptions<OUTPUT> {\n const sdkOptions: ClaudeSDKOptions = { ...options?.sdkOptions };\n\n if ('sessionId' in resumeData && typeof resumeData.sessionId === 'string') {\n sdkOptions.resume = resumeData.sessionId;\n if (resumeData.forkSession !== undefined) {\n sdkOptions.forkSession = resumeData.forkSession;\n }\n if (resumeData.resumeSessionAt !== undefined) {\n sdkOptions.resumeSessionAt = resumeData.resumeSessionAt;\n }\n } else {\n sdkOptions.continue = true;\n }\n\n return {\n ...options,\n sdkOptions,\n };\n}\n\nasync function runClaudeGenerate<OUTPUT>(\n prompt: string,\n options: ClaudeAgentOptions,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): Promise<SDKModelGenerateResult> {\n let text = '';\n let structuredOutputValue: unknown;\n const usage = createClaudeUsageCollector();\n\n for await (const message of observeClaudeMessages(\n runClaude(prompt, options, runOptions?.abortSignal ?? runOptions?.signal, runOptions),\n telemetry,\n )) {\n usage.record(message);\n if (message.type === 'result') {\n if (message.subtype !== 'success') {\n throw new Error(message.errors.join('\\n') || `Claude Agent SDK failed with ${message.subtype}`);\n }\n\n text = message.result;\n structuredOutputValue = getClaudeStructuredOutput(message);\n }\n }\n\n const totals = usage.totals();\n const object = await getStructuredOutputFromValue(\n structuredOutputValue === undefined ? text : structuredOutputValue,\n runOptions?.structuredOutput,\n );\n\n return {\n content: [{ type: 'text', text }],\n finishReason: { unified: 'stop', raw: 'stop' },\n usage: usage.toV3Usage(),\n response: {\n id: randomUUID(),\n modelId: getModelId(options),\n timestamp: new Date(),\n },\n providerMetadata: getClaudeProviderMetadata(options, totals),\n costContext: getClaudeCostContext(options, totals),\n object,\n };\n}\n\nfunction runClaudeAsMastraStream<OUTPUT>(\n prompt: string,\n options: ClaudeAgentOptions,\n runId: string,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start: async controller => {\n const textId = randomUUID();\n const responseId = randomUUID();\n const modelId = getModelId(options);\n const usage = createClaudeUsageCollector();\n let text = '';\n let structuredOutputValue: unknown;\n let sawDelta = false;\n\n try {\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata: getClaudeProviderMetadata(options, usage.totals()),\n });\n\n for await (const message of observeClaudeMessages(\n runClaude(prompt, options, runOptions?.abortSignal ?? runOptions?.signal, runOptions),\n telemetry,\n )) {\n usage.record(message);\n const delta = getTextDelta(message);\n if (delta) {\n sawDelta = true;\n text += delta;\n enqueueTextDelta(controller, runId, textId, delta);\n }\n\n if (message.type === 'result') {\n if (message.subtype !== 'success') {\n throw new Error(message.errors.join('\\n') || `Claude Agent SDK failed with ${message.subtype}`);\n }\n\n if (!sawDelta && message.result) {\n text += message.result;\n enqueueTextDelta(controller, runId, textId, message.result);\n }\n structuredOutputValue = getClaudeStructuredOutput(message);\n }\n }\n\n const totals = usage.totals();\n const providerMetadata = getClaudeProviderMetadata(options, totals);\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage: usage.toLanguageModelUsage(),\n providerMetadata,\n costContext: getClaudeCostContext(options, totals),\n object: await getStructuredOutputFromValue(\n structuredOutputValue === undefined ? text : structuredOutputValue,\n runOptions?.structuredOutput,\n ),\n });\n controller.close();\n } catch (error) {\n controller.enqueue({\n type: 'error',\n runId,\n from: ChunkFrom.AGENT,\n payload: { error },\n });\n controller.close();\n }\n },\n });\n}\n\nfunction runClaude<OUTPUT>(\n prompt: string,\n options: ClaudeAgentOptions,\n signal?: AbortSignal,\n runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): AsyncIterable<SDKMessage> {\n const abortController = createAbortController(signal);\n const queryOptions: ClaudeSDKOptions = {\n ...options.sdkOptions,\n ...runOptions?.sdkOptions,\n };\n const outputSchema = getStructuredOutputSchema(runOptions?.structuredOutput);\n if (outputSchema) {\n queryOptions.outputFormat = {\n type: 'json_schema',\n schema: outputSchema,\n };\n }\n if (abortController) {\n queryOptions.abortController = abortController;\n }\n\n return query({\n prompt,\n options: queryOptions as Parameters<typeof query>[0]['options'],\n }) as AsyncIterable<SDKMessage>;\n}\n\nfunction getClaudeStructuredOutput(message: SDKMessage): unknown {\n if (message.type !== 'result') {\n return undefined;\n }\n\n return (message as { structured_output?: unknown }).structured_output;\n}\n\nasync function* observeClaudeMessages<OUTPUT>(\n messages: AsyncIterable<SDKMessage>,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n): AsyncIterable<SDKMessage> {\n for await (const message of messages) {\n recordClaudeToolTelemetry(message, telemetry);\n yield message;\n }\n}\n\nfunction recordClaudeToolTelemetry<OUTPUT>(message: SDKMessage, telemetry: SDKAgentTelemetry<OUTPUT>): void {\n for (const toolCall of getClaudeToolCalls(message)) {\n telemetry.startToolCall(toolCall);\n }\n\n for (const toolResult of getClaudeToolResults(message)) {\n telemetry.endToolCall(toolResult);\n }\n}\n\nfunction getClaudeToolCalls(message: SDKMessage): Array<{ toolCallId: string; toolName: string; input?: unknown }> {\n if (message.type !== 'assistant') {\n return [];\n }\n\n return getContentBlocks(message.message)\n .filter(isRecord)\n .filter(block => block.type === 'tool_use' && typeof block.id === 'string' && typeof block.name === 'string')\n .map(block => ({\n toolCallId: block.id as string,\n toolName: block.name as string,\n input: block.input,\n }));\n}\n\nfunction getClaudeToolResults(message: SDKMessage): Array<{ toolCallId: string; output?: unknown; isError?: boolean }> {\n if (message.type !== 'user') {\n return [];\n }\n\n return getContentBlocks(message.message)\n .filter(isRecord)\n .filter(block => block.type === 'tool_result' && typeof block.tool_use_id === 'string')\n .map(block => ({\n toolCallId: block.tool_use_id as string,\n output: block.content,\n isError: block.is_error === true,\n }));\n}\n\nfunction getContentBlocks(message: unknown): unknown[] {\n if (!isRecord(message)) {\n return [];\n }\n\n return Array.isArray(message.content) ? message.content : [];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object';\n}\n\nfunction createAbortController(signal: AbortSignal | undefined): AbortController | undefined {\n if (!signal) {\n return undefined;\n }\n\n const controller = new AbortController();\n if (signal.aborted) {\n controller.abort(signal.reason);\n return controller;\n }\n\n signal.addEventListener('abort', () => controller.abort(signal.reason), { once: true });\n return controller;\n}\n\nfunction getModelId(options: ClaudeAgentOptions): string {\n return options.sdkOptions?.model ?? MODEL_ID;\n}\n\nfunction createClaudeUsageCollector() {\n const assistantUsageById = new Map<string, ClaudeUsageTotals>();\n let resultUsage: ClaudeUsageTotals = {};\n\n return {\n record(message: SDKMessage) {\n if (message.type === 'assistant') {\n assistantUsageById.set(message.message.id, usageFromClaudeMessage(message.message.usage));\n return;\n }\n\n if (message.type === 'result') {\n resultUsage = {\n ...usageFromClaudeMessage(message.usage),\n totalCostUsd: message.total_cost_usd,\n modelUsage: message.modelUsage,\n };\n }\n },\n totals(): ClaudeUsageTotals {\n const assistantUsage = getAssistantUsageTotals(assistantUsageById);\n\n if (hasAnyUsage(resultUsage)) {\n return {\n ...resultUsage,\n inputTokens: resultUsage.inputTokens ?? assistantUsage.inputTokens,\n outputTokens: resultUsage.outputTokens ?? assistantUsage.outputTokens,\n cacheReadInputTokens: resultUsage.cacheReadInputTokens ?? assistantUsage.cacheReadInputTokens,\n cacheCreationInputTokens: resultUsage.cacheCreationInputTokens ?? assistantUsage.cacheCreationInputTokens,\n };\n }\n\n return assistantUsage;\n },\n toV3Usage(): V3Usage {\n return toV3Usage(this.totals());\n },\n toLanguageModelUsage(): LanguageModelUsage {\n return toLanguageModelUsage(toV3Usage(this.totals()));\n },\n };\n}\n\nfunction getAssistantUsageTotals(assistantUsageById: Map<string, ClaudeUsageTotals>): ClaudeUsageTotals {\n return [...assistantUsageById.values()].reduce<ClaudeUsageTotals>((totals, item) => {\n totals.inputTokens = addOptional(totals.inputTokens, item.inputTokens);\n totals.outputTokens = addOptional(totals.outputTokens, item.outputTokens);\n totals.cacheReadInputTokens = addOptional(totals.cacheReadInputTokens, item.cacheReadInputTokens);\n totals.cacheCreationInputTokens = addOptional(totals.cacheCreationInputTokens, item.cacheCreationInputTokens);\n return totals;\n }, {});\n}\n\nfunction usageFromClaudeMessage(usage: unknown): ClaudeUsageTotals {\n if (!usage || typeof usage !== 'object') {\n return {};\n }\n\n const record = usage as Record<string, unknown>;\n return {\n inputTokens: getTokenTotal(record.input_tokens),\n outputTokens: getTokenTotal(record.output_tokens),\n cacheReadInputTokens: getTokenTotal(record.cache_read_input_tokens),\n cacheCreationInputTokens: getTokenTotal(record.cache_creation_input_tokens),\n };\n}\n\nfunction hasAnyUsage(usage: ClaudeUsageTotals): boolean {\n return (\n usage.inputTokens !== undefined ||\n usage.outputTokens !== undefined ||\n usage.cacheReadInputTokens !== undefined ||\n usage.cacheCreationInputTokens !== undefined ||\n usage.totalCostUsd !== undefined\n );\n}\n\nfunction addOptional(left: number | undefined, right: number | undefined): number | undefined {\n if (left === undefined) {\n return right;\n }\n if (right === undefined) {\n return left;\n }\n\n return left + right;\n}\n\nfunction toV3Usage(usage: ClaudeUsageTotals): V3Usage {\n const noCache = usage.inputTokens;\n const cacheRead = usage.cacheReadInputTokens;\n const cacheWrite = usage.cacheCreationInputTokens;\n const totalInputTokens = sumDefined(noCache, cacheRead, cacheWrite);\n const outputTokens = usage.outputTokens;\n\n return {\n inputTokens: {\n total: totalInputTokens,\n noCache,\n cacheRead,\n cacheWrite,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens,\n },\n };\n}\n\nfunction getClaudeProviderMetadata(options: ClaudeAgentOptions, usage?: ClaudeUsageTotals): ProviderMetadata {\n const queryOptions = options.sdkOptions;\n\n return createProviderMetadata('claude', {\n totalCostUsd: usage?.totalCostUsd,\n model: getModelId(options),\n cwd: queryOptions?.cwd,\n permissionMode: queryOptions?.permissionMode,\n maxTurns: queryOptions?.maxTurns,\n allowedTools: queryOptions?.allowedTools,\n disallowedTools: queryOptions?.disallowedTools,\n usage,\n });\n}\n\nfunction getClaudeCostContext(options: ClaudeAgentOptions, usage?: ClaudeUsageTotals): CostContext | undefined {\n if (typeof usage?.totalCostUsd !== 'number') {\n return undefined;\n }\n\n return {\n provider: 'anthropic',\n model: getModelId(options),\n estimatedCost: usage.totalCostUsd,\n costUnit: 'USD',\n costMetadata: {\n source: 'sdk_estimate',\n sdkProvider: PROVIDER,\n sdkCostField: 'total_cost_usd',\n scope: 'query_total',\n modelUsage: usage.modelUsage,\n },\n };\n}\n\nfunction getTextDelta(message: SDKMessage): string {\n if (message.type !== 'stream_event') {\n return '';\n }\n\n const event = message.event as {\n type?: string;\n delta?: {\n type?: string;\n text?: string;\n };\n };\n\n if (event.type === 'content_block_delta' && event.delta?.type === 'text_delta') {\n return event.delta.text ?? '';\n }\n\n return '';\n}\n\nfunction getTokenTotal(value: unknown): number | undefined {\n return typeof value === 'number' ? value : undefined;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["ReadableStream","MessageList","MastraModelOutput","SpanType","EntityType","TransformStream","ChunkFrom","Agent","#mastra","RequestContext","ReadableStream","ChunkFrom"],"sources":["../src/utils.ts","../src/index.ts"],"sourcesContent":["import { ReadableStream, TransformStream } from 'node:stream/web';\nimport type { ReadableStreamDefaultController } from 'node:stream/web';\n\nimport type { AgentExecutionOptionsBase, MastraLanguageModel, PublicStructuredOutputOptions } from '@mastra/core/agent';\nimport { MessageList } from '@mastra/core/agent/message-list';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { EntityType, executeWithContext, getOrCreateSpan, SpanType } from '@mastra/core/observability';\nimport type {\n AIModelGenerationSpan,\n CostContext,\n IModelSpanTracker,\n Span,\n UsageStats,\n} from '@mastra/core/observability';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '@mastra/core/schema';\nimport type { ChunkType, FullOutput, JSONValue, LanguageModelUsage, ProviderMetadata } from '@mastra/core/stream';\nimport { ChunkFrom, MastraModelOutput } from '@mastra/core/stream';\ntype MastraModelOutputOptions<OUTPUT = undefined> = ConstructorParameters<\n typeof MastraModelOutput<OUTPUT>\n>[0]['options'];\n\nexport type SDKAgentRunOptions<OUTPUT = unknown> = AgentExecutionOptionsBase<OUTPUT> & {\n signal?: AbortSignal;\n structuredOutput?: OUTPUT extends {} ? PublicStructuredOutputOptions<OUTPUT> : never;\n [key: string]: unknown;\n};\n\nexport type V3Usage = {\n inputTokens: {\n total: number | undefined;\n noCache?: number;\n cacheRead?: number;\n cacheWrite?: number;\n };\n outputTokens: {\n total: number | undefined;\n text?: number;\n };\n};\n\nexport type SDKModelGenerateResult = {\n content: Array<{ type: 'text'; text: string }>;\n finishReason: { unified: 'stop'; raw: 'stop' };\n usage: V3Usage;\n response: {\n id: string;\n modelId: string;\n timestamp: Date;\n };\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n};\n\nexport function createNoopModel({ modelId, provider }: { modelId: string; provider: string }): MastraLanguageModel {\n return {\n modelId,\n provider,\n specificationVersion: 'v3',\n supportedUrls: {},\n doGenerate: async () => createNoopStreamResult(),\n doStream: async () => createNoopStreamResult(),\n } as MastraLanguageModel;\n}\n\nfunction createNoopStreamResult(): { stream: ReadableStream<never> } {\n return {\n stream: new ReadableStream<never>({\n start: controller => controller.close(),\n }),\n };\n}\n\nexport function createCompletedMastraStream({\n runId,\n prompt,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n}: {\n runId: string;\n prompt: string;\n text: string;\n responseId: string;\n modelId: string;\n usage: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n}): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start(controller) {\n const textId = globalThis.crypto.randomUUID();\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata,\n });\n if (text) {\n enqueueTextDelta(controller, runId, textId, text);\n }\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n });\n controller.close();\n },\n });\n}\n\nexport function createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId,\n provider,\n stream,\n responseText = '',\n options,\n}: {\n messages: MessageListInput;\n runId: string;\n modelId: string;\n provider: string;\n stream: ReadableStream<ChunkType>;\n responseText?: string;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): MastraModelOutput<OUTPUT> {\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n messageList.add([{ role: 'assistant', content: responseText }], 'response');\n\n return new MastraModelOutput<OUTPUT>({\n model: {\n modelId,\n provider,\n version: 'v3',\n },\n stream: stream as ReadableStream<ChunkType<OUTPUT>>,\n messageList,\n messageId: globalThis.crypto.randomUUID(),\n options: {\n ...options,\n runId,\n },\n });\n}\n\nexport function toFullOutput<OUTPUT>({\n messages,\n runId,\n provider,\n result,\n options,\n}: {\n messages: MessageListInput;\n runId: string;\n provider: string;\n result: SDKModelGenerateResult;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): Promise<FullOutput<OUTPUT>> {\n const text = result.content.map(part => part.text).join('');\n const stream = createCompletedMastraStream({\n runId,\n prompt: promptToText(messages),\n text,\n responseId: result.response.id,\n modelId: result.response.modelId,\n usage: toLanguageModelUsage(result.usage),\n providerMetadata: result.providerMetadata,\n costContext: result.costContext,\n object: result.object,\n });\n\n return createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId: result.response.modelId,\n provider,\n stream,\n responseText: text,\n options,\n }).getFullOutput();\n}\n\nexport type SDKAgentTelemetryOptions<OUTPUT = unknown> = {\n agentId: string;\n agentName: string;\n provider: string;\n modelId: string;\n messages: MessageListInput;\n prompt: string;\n runId: string;\n streaming: boolean;\n method: 'generate' | 'stream';\n requestContext: RequestContext;\n instructions?: string;\n maxSteps?: SDKAgentRunOptions<OUTPUT>['maxSteps'];\n tracingOptions?: SDKAgentRunOptions<OUTPUT>['tracingOptions'];\n tracingContext?: SDKAgentRunOptions<OUTPUT>['tracingContext'];\n onFinish?: SDKAgentRunOptions<OUTPUT>['onFinish'];\n onStepFinish?: SDKAgentRunOptions<OUTPUT>['onStepFinish'];\n mastra?: Mastra;\n};\n\nexport type SDKAgentTelemetry<OUTPUT = unknown> = {\n execute<T>(fn: () => Promise<T>): Promise<T>;\n endGenerate(result: SDKModelGenerateResult): void;\n fail(error: unknown): void;\n startToolCall(input: SDKAgentToolCallInput): void;\n endToolCall(output: SDKAgentToolCallOutput): void;\n wrapStream(stream: ReadableStream<ChunkType>): ReadableStream<ChunkType>;\n outputOptions(): Partial<MastraModelOutputOptions<OUTPUT>>;\n};\n\nexport type SDKAgentToolCallInput = {\n toolCallId: string;\n toolName: string;\n input?: unknown;\n};\n\nexport type SDKAgentToolCallOutput = {\n toolCallId: string;\n output?: unknown;\n isError?: boolean;\n};\n\nexport function createSDKAgentTelemetry<OUTPUT>({\n agentId,\n agentName,\n provider,\n modelId,\n messages,\n prompt,\n runId,\n streaming,\n method,\n requestContext,\n instructions,\n maxSteps,\n tracingOptions,\n tracingContext,\n onFinish,\n onStepFinish,\n mastra,\n}: SDKAgentTelemetryOptions<OUTPUT>): SDKAgentTelemetry<OUTPUT> {\n const agentSpan = getOrCreateSpan({\n type: SpanType.AGENT_RUN,\n name: `agent run: '${agentId}'`,\n entityType: EntityType.AGENT,\n entityId: agentId,\n entityName: agentName,\n input: messages,\n attributes: {\n prompt,\n instructions,\n maxSteps,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n },\n tracingOptions,\n tracingContext,\n requestContext,\n mastra,\n });\n\n const modelSpan = agentSpan?.createChildSpan({\n type: SpanType.MODEL_GENERATION,\n name: `llm: '${modelId}'`,\n input: {\n messages,\n },\n attributes: {\n model: modelId,\n provider,\n streaming,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n },\n requestContext,\n });\n const modelSpanTracker = getModelSpanTracker(modelSpan);\n const toolSpans = new Map<string, Span<SpanType.TOOL_CALL> | Span<SpanType.MCP_TOOL_CALL>>();\n\n let ended = false;\n\n const startToolCall = ({ toolCallId, toolName, input }: SDKAgentToolCallInput) => {\n if (toolSpans.has(toolCallId)) {\n return;\n }\n\n const parentSpan = agentSpan ?? modelSpan;\n if (!parentSpan) {\n return;\n }\n\n const mcp = parseMcpToolName(toolName);\n const span = mcp\n ? parentSpan.createChildSpan({\n type: SpanType.MCP_TOOL_CALL,\n name: `mcp_tool: '${toolName}' on '${mcp.serverName}'`,\n input,\n entityType: EntityType.TOOL,\n entityId: toolName,\n entityName: toolName,\n attributes: {\n mcpServer: mcp.serverName,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n toolCallId,\n },\n requestContext,\n })\n : parentSpan.createChildSpan({\n type: SpanType.TOOL_CALL,\n name: `tool: '${toolName}'`,\n input,\n entityType: EntityType.TOOL,\n entityId: toolName,\n entityName: toolName,\n attributes: {\n toolType: 'tool',\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n toolCallId,\n },\n requestContext,\n });\n\n toolSpans.set(toolCallId, span);\n };\n\n const endToolCall = ({ toolCallId, output, isError }: SDKAgentToolCallOutput) => {\n const span = toolSpans.get(toolCallId);\n if (!span) {\n return;\n }\n\n toolSpans.delete(toolCallId);\n if (isError) {\n span.error({\n error:\n output instanceof Error ? output : new Error(typeof output === 'string' ? output : 'SDK tool call failed'),\n attributes: { success: false },\n });\n return;\n }\n\n span.end({\n output,\n attributes: { success: true },\n });\n };\n\n const closeOpenToolSpans = (success: boolean, error?: unknown) => {\n for (const [toolCallId, span] of toolSpans) {\n toolSpans.delete(toolCallId);\n if (success) {\n span.end({ attributes: { success: true } });\n continue;\n }\n\n const normalized = error instanceof Error ? error : new Error(String(error ?? 'SDK agent run failed'));\n span.error({ error: normalized, attributes: { success: false } });\n }\n };\n\n const endModel = ({\n text,\n usage,\n providerMetadata,\n finishReason = 'stop',\n responseId,\n responseModel,\n costContext,\n }: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => {\n if (modelSpanTracker) {\n modelSpanTracker.endGeneration({\n output: {\n text,\n },\n attributes: {\n finishReason,\n responseId,\n responseModel,\n costContext,\n },\n usage,\n providerMetadata,\n });\n return;\n }\n\n modelSpan?.end({\n output: {\n text,\n },\n attributes: {\n finishReason,\n responseId,\n responseModel,\n usage: usage ? toUsageStats(usage) : undefined,\n costContext,\n },\n });\n };\n\n const end = (result: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => {\n if (ended) {\n return;\n }\n\n ended = true;\n closeOpenToolSpans(true);\n endModel(result);\n agentSpan?.end({\n output: {\n text: result.text,\n },\n });\n };\n\n const fail = (error: unknown) => {\n if (ended) {\n return;\n }\n\n ended = true;\n const normalized = error instanceof Error ? error : new Error(String(error));\n closeOpenToolSpans(false, normalized);\n if (modelSpanTracker) {\n modelSpanTracker.reportGenerationError({ error: normalized });\n } else {\n modelSpan?.error({ error: normalized });\n }\n agentSpan?.error({ error: normalized });\n };\n\n return {\n execute: fn => executeWithContext({ span: modelSpan ?? agentSpan, fn }),\n endGenerate(result) {\n end({\n text: result.content.map(part => part.text).join(''),\n usage: toLanguageModelUsage(result.usage),\n providerMetadata: result.providerMetadata,\n finishReason: result.finishReason.unified,\n responseId: result.response.id,\n responseModel: result.response.modelId,\n costContext: result.costContext,\n });\n },\n fail,\n startToolCall,\n endToolCall,\n wrapStream(stream) {\n const trackedStream = (modelSpanTracker?.wrapStream(stream) ?? stream) as ReadableStream<ChunkType>;\n return wrapStreamForAgentSpan(trackedStream, {\n end,\n fail,\n });\n },\n outputOptions() {\n return {\n onFinish,\n onStepFinish,\n requestContext,\n tracingContext: agentSpan ? { currentSpan: agentSpan } : tracingContext,\n };\n },\n };\n}\n\nfunction parseMcpToolName(toolName: string): { serverName: string; toolName: string } | undefined {\n const match = /^mcp__([^_].*?)__(.+)$/.exec(toolName);\n if (!match?.[1] || !match[2]) {\n return undefined;\n }\n\n return {\n serverName: match[1],\n toolName: match[2],\n };\n}\n\nfunction getModelSpanTracker(\n modelSpan: Span<SpanType.MODEL_GENERATION> | AIModelGenerationSpan | undefined,\n): IModelSpanTracker | undefined {\n if (!modelSpan || !('createTracker' in modelSpan)) {\n return undefined;\n }\n\n return modelSpan.createTracker();\n}\n\nfunction wrapStreamForAgentSpan(\n stream: ReadableStream<ChunkType>,\n telemetry: {\n end: (result: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => void;\n fail: (error: unknown) => void;\n },\n): ReadableStream<ChunkType> {\n let text = '';\n\n return stream.pipeThrough(\n new TransformStream<ChunkType, ChunkType>({\n transform(chunk, controller) {\n if (chunk.type === 'text-delta') {\n text += chunk.payload.text;\n }\n\n if (chunk.type === 'finish') {\n telemetry.end({\n text,\n usage: chunk.payload.output.usage,\n providerMetadata: chunk.payload.providerMetadata,\n finishReason: chunk.payload.stepResult.reason,\n responseId: chunk.payload.response?.id,\n responseModel: chunk.payload.response?.modelId,\n costContext: getCostContext(chunk.payload.metadata?.costContext),\n });\n }\n\n if (chunk.type === 'error') {\n telemetry.fail(chunk.payload.error);\n }\n\n controller.enqueue(chunk);\n },\n flush() {\n telemetry.end({ text });\n },\n }),\n );\n}\n\nfunction toUsageStats(usage: LanguageModelUsage): UsageStats {\n return {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n inputDetails: {\n cacheRead: usage.cachedInputTokens,\n cacheWrite: usage.cacheCreationInputTokens,\n },\n outputDetails: {\n text: usage.outputTokens,\n reasoning: usage.reasoningTokens,\n },\n };\n}\n\nfunction getCostContext(value: unknown): CostContext | undefined {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n\n return value as CostContext;\n}\n\nexport function enqueueStartChunks(\n controller: ReadableStreamDefaultController<ChunkType>,\n {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata,\n }: {\n runId: string;\n prompt: string;\n textId: string;\n responseId: string;\n modelId: string;\n providerMetadata?: ProviderMetadata;\n },\n): void {\n controller.enqueue({\n type: 'start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {},\n });\n controller.enqueue({\n type: 'step-start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n request: { body: prompt },\n },\n });\n controller.enqueue({\n type: 'response-metadata',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: responseId,\n modelId,\n timestamp: new Date().toISOString(),\n },\n });\n controller.enqueue({\n type: 'text-start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n providerMetadata,\n },\n });\n}\n\nexport function enqueueTextDelta(\n controller: ReadableStreamDefaultController<ChunkType>,\n runId: string,\n textId: string,\n text: string,\n): void {\n controller.enqueue({\n type: 'text-delta',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n text,\n },\n });\n}\n\nexport function enqueueFinishChunks(\n controller: ReadableStreamDefaultController<ChunkType>,\n {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n }: {\n runId: string;\n prompt: string;\n textId: string;\n text: string;\n responseId: string;\n modelId: string;\n usage: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n },\n): void {\n const timestamp = new Date();\n const response = {\n id: responseId,\n modelId,\n timestamp,\n };\n const metadata = {\n providerMetadata,\n costContext,\n request: { body: prompt },\n modelId,\n timestamp,\n };\n\n controller.enqueue({\n type: 'text-end',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n providerMetadata,\n },\n });\n if (object !== undefined) {\n controller.enqueue({\n type: 'object-result',\n runId,\n from: ChunkFrom.AGENT,\n object,\n } as unknown as ChunkType);\n }\n controller.enqueue({\n type: 'step-finish',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: responseId,\n providerMetadata,\n totalUsage: usage,\n response,\n stepResult: {\n reason: 'stop',\n warnings: [],\n },\n output: {\n text,\n usage,\n steps: [],\n },\n metadata,\n },\n });\n controller.enqueue({\n type: 'finish',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n stepResult: {\n reason: 'stop',\n warnings: [],\n },\n output: {\n usage,\n steps: [],\n },\n metadata,\n providerMetadata,\n messages: {\n all: [],\n user: [],\n nonUser: [],\n },\n response,\n },\n });\n}\n\nexport function toLanguageModelUsage(usage: V3Usage): LanguageModelUsage {\n const inputTokens = usage.inputTokens.total ?? 0;\n const outputTokens = usage.outputTokens.total ?? 0;\n\n return {\n inputTokens,\n outputTokens,\n totalTokens: inputTokens + outputTokens,\n cachedInputTokens: usage.inputTokens.cacheRead,\n cacheCreationInputTokens: usage.inputTokens.cacheWrite,\n raw: usage,\n };\n}\n\nexport function createProviderMetadata(provider: string, metadata: Record<string, unknown>): ProviderMetadata {\n return {\n [provider]: toJsonRecord(metadata),\n };\n}\n\nfunction toJsonRecord(record: Record<string, unknown>): Record<string, JSONValue> {\n return Object.fromEntries(\n Object.entries(record)\n .filter((entry): entry is [string, Exclude<unknown, undefined>] => entry[1] !== undefined)\n .map(([key, value]) => [key, toJsonValue(value)]),\n );\n}\n\nfunction toJsonValue(value: unknown): JSONValue {\n if (value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.filter(item => item !== undefined).map(toJsonValue);\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === 'object') {\n return toJsonRecord(value as Record<string, unknown>);\n }\n\n return String(value);\n}\n\nexport function promptToText(prompt: unknown): string {\n if (typeof prompt === 'string') {\n return prompt;\n }\n\n if (Array.isArray(prompt)) {\n return prompt.map(promptToText).filter(Boolean).join('\\n');\n }\n\n if (!prompt || typeof prompt !== 'object') {\n return '';\n }\n\n const record = prompt as Record<string, unknown>;\n if (typeof record.text === 'string') {\n return record.text;\n }\n if (typeof record.content === 'string') {\n return record.content;\n }\n if (record.content) {\n return promptToText(record.content);\n }\n\n return '';\n}\n\nexport function withStructuredOutputPrompt<OUTPUT>(\n prompt: string,\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): string {\n if (!structuredOutput?.schema) {\n return prompt;\n }\n\n const schema = standardSchemaToJSONSchema(toStandardSchema(structuredOutput.schema));\n const instructions =\n structuredOutput.instructions ??\n 'Return only valid JSON that matches the JSON Schema. Do not include markdown fences or explanatory text.';\n\n return `${prompt}\\n\\n${instructions}\\n\\nJSON Schema:\\n${JSON.stringify(schema)}`;\n}\n\nexport function getStructuredOutputSchema<OUTPUT>(\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Record<string, unknown> | undefined {\n if (!structuredOutput?.schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(structuredOutput.schema)) as Record<string, unknown>;\n}\n\nexport async function getStructuredOutput<OUTPUT>(\n text: string,\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Promise<OUTPUT | undefined> {\n return getStructuredOutputFromValue(text, structuredOutput);\n}\n\nexport async function getStructuredOutputFromValue<OUTPUT>(\n value: unknown,\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Promise<OUTPUT | undefined> {\n if (!structuredOutput?.schema) {\n return undefined;\n }\n\n let parsed: unknown;\n if (typeof value === 'string') {\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n return handleStructuredOutputError(\n new Error('Structured output must be valid JSON.', { cause: error }),\n structuredOutput,\n );\n }\n } else {\n parsed = value;\n }\n\n const schema = toStandardSchema(structuredOutput.schema);\n const result = await schema['~standard'].validate(parsed);\n if (!result.issues) {\n return result.value as OUTPUT;\n }\n\n const message = result.issues.map(issue => `- ${issue.path?.join('.') || 'root'}: ${issue.message}`).join('\\n');\n return handleStructuredOutputError(new Error(`Structured output validation failed:\\n${message}`), structuredOutput);\n}\n\nfunction handleStructuredOutputError<OUTPUT>(\n error: Error,\n structuredOutput: PublicStructuredOutputOptions<OUTPUT>,\n): OUTPUT | undefined {\n if (structuredOutput.errorStrategy === 'fallback') {\n return structuredOutput.fallbackValue;\n }\n\n if (structuredOutput.errorStrategy === 'warn') {\n structuredOutput.logger?.warn(error.message);\n return undefined;\n }\n\n throw error;\n}\n\nexport function sumDefined(...values: Array<number | undefined>): number | undefined {\n const defined = values.filter((value): value is number => typeof value === 'number');\n if (defined.length === 0) {\n return undefined;\n }\n\n return defined.reduce((sum, value) => sum + value, 0);\n}\n","import { ReadableStream } from 'node:stream/web';\n\nimport { query } from '@anthropic-ai/claude-agent-sdk';\nimport type { ModelUsage, Options as ClaudeQueryOptions, SDKMessage } from '@anthropic-ai/claude-agent-sdk';\n\nimport { Agent } from '@mastra/core/agent';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { CostContext } from '@mastra/core/observability';\nimport { RequestContext } from '@mastra/core/request-context';\nimport type {\n ChunkType,\n FullOutput,\n LanguageModelUsage,\n ProviderMetadata,\n MastraModelOutput,\n} from '@mastra/core/stream';\nimport { ChunkFrom } from '@mastra/core/stream';\nimport {\n createMastraOutput,\n createNoopModel,\n createProviderMetadata,\n createSDKAgentTelemetry,\n enqueueFinishChunks,\n enqueueStartChunks,\n enqueueTextDelta,\n getStructuredOutputFromValue,\n getStructuredOutputSchema,\n promptToText,\n sumDefined,\n toFullOutput,\n toLanguageModelUsage,\n} from './utils';\nimport type { SDKAgentRunOptions, SDKAgentTelemetry, SDKModelGenerateResult, V3Usage } from './utils';\n\nconst PROVIDER = '@anthropic-ai/claude-agent-sdk';\nconst MODEL_ID = 'claude-agent-sdk';\n\ntype ClaudeUsageTotals = {\n inputTokens?: number;\n outputTokens?: number;\n cacheReadInputTokens?: number;\n cacheCreationInputTokens?: number;\n totalCostUsd?: number;\n modelUsage?: Record<string, ModelUsage>;\n};\n\nexport type ClaudeSDKOptions = ClaudeQueryOptions;\n\nexport type ClaudeAgentOptions = {\n /**\n * Mastra agent id used when registering this wrapper with Mastra.\n */\n id: string;\n /**\n * Optional display name for the Mastra agent. Defaults to `id`.\n */\n name?: string;\n /**\n * Description surfaced by Mastra when listing or selecting agents.\n */\n description: string;\n /**\n * Claude Agent SDK options forwarded to `query()` on every run.\n */\n sdkOptions?: ClaudeSDKOptions;\n};\n\nexport type ClaudeSDKAgentRunOptions<OUTPUT = unknown> = SDKAgentRunOptions<OUTPUT> & {\n /**\n * Claude Agent SDK query options for this run. These are merged over the\n * wrapper's `sdkOptions`, which allows per-call session continuation options\n * such as `resume` or `continue`.\n */\n sdkOptions?: ClaudeSDKOptions;\n};\n\nexport type ClaudeSDKAgentResumeData =\n | {\n /**\n * Message to send while resuming the Claude SDK session.\n */\n message: MessageListInput;\n /**\n * Claude session id to resume.\n */\n sessionId: string;\n /**\n * Fork the resumed session into a new session.\n */\n forkSession?: boolean;\n /**\n * Resume the session up to a specific assistant message UUID.\n */\n resumeSessionAt?: string;\n }\n | {\n /**\n * Message to send while continuing the latest Claude SDK session.\n */\n message: MessageListInput;\n /**\n * Continue the latest Claude session in the current working directory.\n */\n continue: true;\n };\n\nexport class ClaudeSDKAgent extends Agent {\n readonly options: ClaudeAgentOptions;\n #mastra?: Mastra;\n\n constructor(options: ClaudeAgentOptions) {\n super({\n id: options.id,\n name: options.name ?? options.id,\n description: options.description,\n instructions: '',\n model: createNoopModel({\n modelId: getModelId(options),\n provider: PROVIDER,\n }),\n });\n this.options = options;\n }\n\n override __registerMastra(mastra: Mastra): void {\n super.__registerMastra(mastra);\n this.#mastra = mastra;\n }\n\n supportsMemory(): boolean {\n return false;\n }\n\n async generate<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const prompt = promptToText(messages);\n const runId = options?.runId ?? globalThis.crypto.randomUUID();\n const requestContext = options?.requestContext ?? new RequestContext();\n const instructions = options?.instructions ? promptToText(options.instructions) : undefined;\n const telemetry = createSDKAgentTelemetry({\n agentId: this.id,\n agentName: this.name,\n provider: PROVIDER,\n modelId: getModelId(this.options),\n messages,\n prompt,\n runId,\n streaming: false,\n method: 'generate',\n requestContext,\n instructions,\n maxSteps: options?.maxSteps,\n tracingOptions: options?.tracingOptions,\n tracingContext: options?.tracingContext,\n onFinish: options?.onFinish,\n onStepFinish: options?.onStepFinish,\n mastra: this.#mastra,\n });\n let result: SDKModelGenerateResult;\n try {\n result = await telemetry.execute(() => runClaudeGenerate(prompt, this.options, telemetry, options));\n telemetry.endGenerate(result);\n } catch (error) {\n telemetry.fail(error);\n throw error;\n }\n\n return toFullOutput<OUTPUT>({\n messages,\n runId,\n provider: PROVIDER,\n result,\n options: { ...telemetry.outputOptions(), structuredOutput: options?.structuredOutput as any },\n });\n }\n\n async stream<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const runId = options?.runId ?? globalThis.crypto.randomUUID();\n const prompt = promptToText(messages);\n const modelId = getModelId(this.options);\n const requestContext = options?.requestContext ?? new RequestContext();\n const instructions = options?.instructions ? promptToText(options.instructions) : undefined;\n const telemetry = createSDKAgentTelemetry({\n agentId: this.id,\n agentName: this.name,\n provider: PROVIDER,\n modelId,\n messages,\n prompt,\n runId,\n streaming: true,\n method: 'stream',\n requestContext,\n instructions,\n maxSteps: options?.maxSteps,\n tracingOptions: options?.tracingOptions,\n tracingContext: options?.tracingContext,\n onFinish: options?.onFinish,\n onStepFinish: options?.onStepFinish,\n mastra: this.#mastra,\n });\n\n return createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId,\n provider: PROVIDER,\n stream: telemetry.wrapStream(runClaudeAsMastraStream(prompt, this.options, runId, telemetry, options)),\n options: { ...telemetry.outputOptions(), structuredOutput: options?.structuredOutput as any },\n });\n }\n\n async resumeGenerate<OUTPUT = undefined>(\n resumeData: ClaudeSDKAgentResumeData,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const data = validateClaudeResumeData(resumeData);\n return this.generate(data.message, createClaudeResumeRunOptions(data, options));\n }\n\n async resumeStream<OUTPUT = undefined>(\n resumeData: ClaudeSDKAgentResumeData,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const data = validateClaudeResumeData(resumeData);\n return this.stream(data.message, createClaudeResumeRunOptions(data, options));\n }\n}\n\nfunction validateClaudeResumeData(resumeData: ClaudeSDKAgentResumeData): ClaudeSDKAgentResumeData {\n if (!isRecord(resumeData) || !('message' in resumeData)) {\n throw new Error('ClaudeSDKAgent resumeData must include a message.');\n }\n\n const hasSessionId = 'sessionId' in resumeData;\n const hasContinue = 'continue' in resumeData;\n\n if (hasSessionId && hasContinue) {\n throw new Error('ClaudeSDKAgent resumeData must include either sessionId or continue: true, not both.');\n }\n\n if (hasSessionId) {\n if (typeof resumeData.sessionId !== 'string') {\n throw new Error('ClaudeSDKAgent resumeData.sessionId must be a string.');\n }\n return resumeData;\n }\n\n if (hasContinue) {\n if (resumeData.continue !== true) {\n throw new Error('ClaudeSDKAgent resumeData.continue must be true when provided.');\n }\n return resumeData;\n }\n\n throw new Error('ClaudeSDKAgent resumeData must include sessionId or continue: true.');\n}\n\nfunction createClaudeResumeRunOptions<OUTPUT>(\n resumeData: ClaudeSDKAgentResumeData,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): ClaudeSDKAgentRunOptions<OUTPUT> {\n const sdkOptions: ClaudeSDKOptions = { ...options?.sdkOptions };\n\n if ('sessionId' in resumeData && typeof resumeData.sessionId === 'string') {\n sdkOptions.resume = resumeData.sessionId;\n if (resumeData.forkSession !== undefined) {\n sdkOptions.forkSession = resumeData.forkSession;\n }\n if (resumeData.resumeSessionAt !== undefined) {\n sdkOptions.resumeSessionAt = resumeData.resumeSessionAt;\n }\n } else {\n sdkOptions.continue = true;\n }\n\n return {\n ...options,\n sdkOptions,\n };\n}\n\nasync function runClaudeGenerate<OUTPUT>(\n prompt: string,\n options: ClaudeAgentOptions,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): Promise<SDKModelGenerateResult> {\n let text = '';\n let structuredOutputValue: unknown;\n const usage = createClaudeUsageCollector();\n\n for await (const message of observeClaudeMessages(\n runClaude(prompt, options, runOptions?.abortSignal ?? runOptions?.signal, runOptions),\n telemetry,\n )) {\n usage.record(message);\n if (message.type === 'result') {\n if (message.subtype !== 'success') {\n throw new Error(message.errors.join('\\n') || `Claude Agent SDK failed with ${message.subtype}`);\n }\n\n text = message.result;\n structuredOutputValue = getClaudeStructuredOutput(message);\n }\n }\n\n const totals = usage.totals();\n const object = await getStructuredOutputFromValue(\n structuredOutputValue === undefined ? text : structuredOutputValue,\n runOptions?.structuredOutput,\n );\n\n return {\n content: [{ type: 'text', text }],\n finishReason: { unified: 'stop', raw: 'stop' },\n usage: usage.toV3Usage(),\n response: {\n id: globalThis.crypto.randomUUID(),\n modelId: getModelId(options),\n timestamp: new Date(),\n },\n providerMetadata: getClaudeProviderMetadata(options, totals),\n costContext: getClaudeCostContext(options, totals),\n object,\n };\n}\n\nfunction runClaudeAsMastraStream<OUTPUT>(\n prompt: string,\n options: ClaudeAgentOptions,\n runId: string,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start: async controller => {\n const textId = globalThis.crypto.randomUUID();\n const responseId = globalThis.crypto.randomUUID();\n const modelId = getModelId(options);\n const usage = createClaudeUsageCollector();\n let text = '';\n let structuredOutputValue: unknown;\n let sawDelta = false;\n\n try {\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata: getClaudeProviderMetadata(options, usage.totals()),\n });\n\n for await (const message of observeClaudeMessages(\n runClaude(prompt, options, runOptions?.abortSignal ?? runOptions?.signal, runOptions),\n telemetry,\n )) {\n usage.record(message);\n const delta = getTextDelta(message);\n if (delta) {\n sawDelta = true;\n text += delta;\n enqueueTextDelta(controller, runId, textId, delta);\n }\n\n if (message.type === 'result') {\n if (message.subtype !== 'success') {\n throw new Error(message.errors.join('\\n') || `Claude Agent SDK failed with ${message.subtype}`);\n }\n\n if (!sawDelta && message.result) {\n text += message.result;\n enqueueTextDelta(controller, runId, textId, message.result);\n }\n structuredOutputValue = getClaudeStructuredOutput(message);\n }\n }\n\n const totals = usage.totals();\n const providerMetadata = getClaudeProviderMetadata(options, totals);\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage: usage.toLanguageModelUsage(),\n providerMetadata,\n costContext: getClaudeCostContext(options, totals),\n object: await getStructuredOutputFromValue(\n structuredOutputValue === undefined ? text : structuredOutputValue,\n runOptions?.structuredOutput,\n ),\n });\n controller.close();\n } catch (error) {\n controller.enqueue({\n type: 'error',\n runId,\n from: ChunkFrom.AGENT,\n payload: { error },\n });\n controller.close();\n }\n },\n });\n}\n\nfunction runClaude<OUTPUT>(\n prompt: string,\n options: ClaudeAgentOptions,\n signal?: AbortSignal,\n runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): AsyncIterable<SDKMessage> {\n const abortController = createAbortController(signal);\n const queryOptions: ClaudeSDKOptions = {\n ...options.sdkOptions,\n ...runOptions?.sdkOptions,\n };\n const outputSchema = getStructuredOutputSchema(runOptions?.structuredOutput);\n if (outputSchema) {\n queryOptions.outputFormat = {\n type: 'json_schema',\n schema: outputSchema,\n };\n }\n if (abortController) {\n queryOptions.abortController = abortController;\n }\n\n return query({\n prompt,\n options: queryOptions as Parameters<typeof query>[0]['options'],\n }) as AsyncIterable<SDKMessage>;\n}\n\nfunction getClaudeStructuredOutput(message: SDKMessage): unknown {\n if (message.type !== 'result') {\n return undefined;\n }\n\n return (message as { structured_output?: unknown }).structured_output;\n}\n\nasync function* observeClaudeMessages<OUTPUT>(\n messages: AsyncIterable<SDKMessage>,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n): AsyncIterable<SDKMessage> {\n for await (const message of messages) {\n recordClaudeToolTelemetry(message, telemetry);\n yield message;\n }\n}\n\nfunction recordClaudeToolTelemetry<OUTPUT>(message: SDKMessage, telemetry: SDKAgentTelemetry<OUTPUT>): void {\n for (const toolCall of getClaudeToolCalls(message)) {\n telemetry.startToolCall(toolCall);\n }\n\n for (const toolResult of getClaudeToolResults(message)) {\n telemetry.endToolCall(toolResult);\n }\n}\n\nfunction getClaudeToolCalls(message: SDKMessage): Array<{ toolCallId: string; toolName: string; input?: unknown }> {\n if (message.type !== 'assistant') {\n return [];\n }\n\n return getContentBlocks(message.message)\n .filter(isRecord)\n .filter(block => block.type === 'tool_use' && typeof block.id === 'string' && typeof block.name === 'string')\n .map(block => ({\n toolCallId: block.id as string,\n toolName: block.name as string,\n input: block.input,\n }));\n}\n\nfunction getClaudeToolResults(message: SDKMessage): Array<{ toolCallId: string; output?: unknown; isError?: boolean }> {\n if (message.type !== 'user') {\n return [];\n }\n\n return getContentBlocks(message.message)\n .filter(isRecord)\n .filter(block => block.type === 'tool_result' && typeof block.tool_use_id === 'string')\n .map(block => ({\n toolCallId: block.tool_use_id as string,\n output: block.content,\n isError: block.is_error === true,\n }));\n}\n\nfunction getContentBlocks(message: unknown): unknown[] {\n if (!isRecord(message)) {\n return [];\n }\n\n return Array.isArray(message.content) ? message.content : [];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object';\n}\n\nfunction createAbortController(signal: AbortSignal | undefined): AbortController | undefined {\n if (!signal) {\n return undefined;\n }\n\n const controller = new AbortController();\n if (signal.aborted) {\n controller.abort(signal.reason);\n return controller;\n }\n\n signal.addEventListener('abort', () => controller.abort(signal.reason), { once: true });\n return controller;\n}\n\nfunction getModelId(options: ClaudeAgentOptions): string {\n return options.sdkOptions?.model ?? MODEL_ID;\n}\n\nfunction createClaudeUsageCollector() {\n const assistantUsageById = new Map<string, ClaudeUsageTotals>();\n let resultUsage: ClaudeUsageTotals = {};\n\n return {\n record(message: SDKMessage) {\n if (message.type === 'assistant') {\n assistantUsageById.set(message.message.id, usageFromClaudeMessage(message.message.usage));\n return;\n }\n\n if (message.type === 'result') {\n resultUsage = {\n ...usageFromClaudeMessage(message.usage),\n totalCostUsd: message.total_cost_usd,\n modelUsage: message.modelUsage,\n };\n }\n },\n totals(): ClaudeUsageTotals {\n const assistantUsage = getAssistantUsageTotals(assistantUsageById);\n\n if (hasAnyUsage(resultUsage)) {\n return {\n ...resultUsage,\n inputTokens: resultUsage.inputTokens ?? assistantUsage.inputTokens,\n outputTokens: resultUsage.outputTokens ?? assistantUsage.outputTokens,\n cacheReadInputTokens: resultUsage.cacheReadInputTokens ?? assistantUsage.cacheReadInputTokens,\n cacheCreationInputTokens: resultUsage.cacheCreationInputTokens ?? assistantUsage.cacheCreationInputTokens,\n };\n }\n\n return assistantUsage;\n },\n toV3Usage(): V3Usage {\n return toV3Usage(this.totals());\n },\n toLanguageModelUsage(): LanguageModelUsage {\n return toLanguageModelUsage(toV3Usage(this.totals()));\n },\n };\n}\n\nfunction getAssistantUsageTotals(assistantUsageById: Map<string, ClaudeUsageTotals>): ClaudeUsageTotals {\n return [...assistantUsageById.values()].reduce<ClaudeUsageTotals>((totals, item) => {\n totals.inputTokens = addOptional(totals.inputTokens, item.inputTokens);\n totals.outputTokens = addOptional(totals.outputTokens, item.outputTokens);\n totals.cacheReadInputTokens = addOptional(totals.cacheReadInputTokens, item.cacheReadInputTokens);\n totals.cacheCreationInputTokens = addOptional(totals.cacheCreationInputTokens, item.cacheCreationInputTokens);\n return totals;\n }, {});\n}\n\nfunction usageFromClaudeMessage(usage: unknown): ClaudeUsageTotals {\n if (!usage || typeof usage !== 'object') {\n return {};\n }\n\n const record = usage as Record<string, unknown>;\n return {\n inputTokens: getTokenTotal(record.input_tokens),\n outputTokens: getTokenTotal(record.output_tokens),\n cacheReadInputTokens: getTokenTotal(record.cache_read_input_tokens),\n cacheCreationInputTokens: getTokenTotal(record.cache_creation_input_tokens),\n };\n}\n\nfunction hasAnyUsage(usage: ClaudeUsageTotals): boolean {\n return (\n usage.inputTokens !== undefined ||\n usage.outputTokens !== undefined ||\n usage.cacheReadInputTokens !== undefined ||\n usage.cacheCreationInputTokens !== undefined ||\n usage.totalCostUsd !== undefined\n );\n}\n\nfunction addOptional(left: number | undefined, right: number | undefined): number | undefined {\n if (left === undefined) {\n return right;\n }\n if (right === undefined) {\n return left;\n }\n\n return left + right;\n}\n\nfunction toV3Usage(usage: ClaudeUsageTotals): V3Usage {\n const noCache = usage.inputTokens;\n const cacheRead = usage.cacheReadInputTokens;\n const cacheWrite = usage.cacheCreationInputTokens;\n const totalInputTokens = sumDefined(noCache, cacheRead, cacheWrite);\n const outputTokens = usage.outputTokens;\n\n return {\n inputTokens: {\n total: totalInputTokens,\n noCache,\n cacheRead,\n cacheWrite,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens,\n },\n };\n}\n\nfunction getClaudeProviderMetadata(options: ClaudeAgentOptions, usage?: ClaudeUsageTotals): ProviderMetadata {\n const queryOptions = options.sdkOptions;\n\n return createProviderMetadata('claude', {\n totalCostUsd: usage?.totalCostUsd,\n model: getModelId(options),\n cwd: queryOptions?.cwd,\n permissionMode: queryOptions?.permissionMode,\n maxTurns: queryOptions?.maxTurns,\n allowedTools: queryOptions?.allowedTools,\n disallowedTools: queryOptions?.disallowedTools,\n usage,\n });\n}\n\nfunction getClaudeCostContext(options: ClaudeAgentOptions, usage?: ClaudeUsageTotals): CostContext | undefined {\n if (typeof usage?.totalCostUsd !== 'number') {\n return undefined;\n }\n\n return {\n provider: 'anthropic',\n model: getModelId(options),\n estimatedCost: usage.totalCostUsd,\n costUnit: 'USD',\n costMetadata: {\n source: 'sdk_estimate',\n sdkProvider: PROVIDER,\n sdkCostField: 'total_cost_usd',\n scope: 'query_total',\n modelUsage: usage.modelUsage,\n },\n };\n}\n\nfunction getTextDelta(message: SDKMessage): string {\n if (message.type !== 'stream_event') {\n return '';\n }\n\n const event = message.event as {\n type?: string;\n delta?: {\n type?: string;\n text?: string;\n };\n };\n\n if (event.type === 'content_block_delta' && event.delta?.type === 'text_delta') {\n return event.delta.text ?? '';\n }\n\n return '';\n}\n\nfunction getTokenTotal(value: unknown): number | undefined {\n return typeof value === 'number' ? value : undefined;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAc,OAAO,IAAI,kBAAkB,EAAc,MAAM,gCAAgC,CAAC;AAE5G,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,KAAK,EAEV,UAAU,EAGV,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAiB7B,OAAO,KAAK,EAAE,kBAAkB,EAAsD,MAAM,SAAS,CAAC;AActG,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,MAAM,GAAG,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,GAAG;IACpF;;;;OAIG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAChC;IACE;;OAEG;IACH,OAAO,EAAE,gBAAgB,CAAC;IAC1B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACD;IACE;;OAEG;IACH,OAAO,EAAE,gBAAgB,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,IAAI,CAAC;CAChB,CAAC;AAEN,qBAAa,cAAe,SAAQ,KAAK;;IACvC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAGrC,YAAY,OAAO,EAAE,kBAAkB,EAYtC;IAEQ,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAG9C;IAED,cAAc,IAAI,OAAO,CAExB;IAEK,QAAQ,CAAC,MAAM,GAAG,SAAS,EAC/B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,GACzC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAwC7B;IAEK,MAAM,CAAC,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,GACzC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAkCpC;IAEK,cAAc,CAAC,MAAM,GAAG,SAAS,EACrC,UAAU,EAAE,wBAAwB,EACpC,OAAO,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,GACzC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAG7B;IAEK,YAAY,CAAC,MAAM,GAAG,SAAS,EACnC,UAAU,EAAE,wBAAwB,EACpC,OAAO,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,GACzC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAGpC;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,OAAO,IAAI,kBAAkB,EAAc,MAAM,gCAAgC,CAAC;AAE5G,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,KAAK,EAEV,UAAU,EAGV,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAiB7B,OAAO,KAAK,EAAE,kBAAkB,EAAsD,MAAM,SAAS,CAAC;AActG,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,MAAM,GAAG,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,GAAG;IACpF;;;;OAIG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAChC;IACE;;OAEG;IACH,OAAO,EAAE,gBAAgB,CAAC;IAC1B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACD;IACE;;OAEG;IACH,OAAO,EAAE,gBAAgB,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,IAAI,CAAC;CAChB,CAAC;AAEN,qBAAa,cAAe,SAAQ,KAAK;;IACvC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAGrC,YAAY,OAAO,EAAE,kBAAkB,EAYtC;IAEQ,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAG9C;IAED,cAAc,IAAI,OAAO,CAExB;IAEK,QAAQ,CAAC,MAAM,GAAG,SAAS,EAC/B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,GACzC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAwC7B;IAEK,MAAM,CAAC,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,GACzC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAkCpC;IAEK,cAAc,CAAC,MAAM,GAAG,SAAS,EACrC,UAAU,EAAE,wBAAwB,EACpC,OAAO,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,GACzC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAG7B;IAEK,YAAY,CAAC,MAAM,GAAG,SAAS,EACnC,UAAU,EAAE,wBAAwB,EACpC,OAAO,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,GACzC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAGpC;CACF"}
package/dist/index.js CHANGED
@@ -1,4 +1,3 @@
1
- import { randomUUID } from "crypto";
2
1
  import { ReadableStream, TransformStream } from "stream/web";
3
2
  import { query } from "@anthropic-ai/claude-agent-sdk";
4
3
  import { Agent } from "@mastra/core/agent";
@@ -23,7 +22,7 @@ function createNoopStreamResult() {
23
22
  }
24
23
  function createCompletedMastraStream({ runId, prompt, text, responseId, modelId, usage, providerMetadata, costContext, object }) {
25
24
  return new ReadableStream({ start(controller) {
26
- const textId = randomUUID();
25
+ const textId = globalThis.crypto.randomUUID();
27
26
  enqueueStartChunks(controller, {
28
27
  runId,
29
28
  prompt,
@@ -63,7 +62,7 @@ function createMastraOutput({ messages, runId, modelId, provider, stream, respon
63
62
  },
64
63
  stream,
65
64
  messageList,
66
- messageId: randomUUID(),
65
+ messageId: globalThis.crypto.randomUUID(),
67
66
  options: {
68
67
  ...options,
69
68
  runId
@@ -549,7 +548,7 @@ var ClaudeSDKAgent = class extends Agent {
549
548
  }
550
549
  async generate(messages, options) {
551
550
  const prompt = promptToText(messages);
552
- const runId = options?.runId ?? randomUUID();
551
+ const runId = options?.runId ?? globalThis.crypto.randomUUID();
553
552
  const requestContext = options?.requestContext ?? new RequestContext();
554
553
  const instructions = options?.instructions ? promptToText(options.instructions) : void 0;
555
554
  const telemetry = createSDKAgentTelemetry({
@@ -591,7 +590,7 @@ var ClaudeSDKAgent = class extends Agent {
591
590
  });
592
591
  }
593
592
  async stream(messages, options) {
594
- const runId = options?.runId ?? randomUUID();
593
+ const runId = options?.runId ?? globalThis.crypto.randomUUID();
595
594
  const prompt = promptToText(messages);
596
595
  const modelId = getModelId(this.options);
597
596
  const requestContext = options?.requestContext ?? new RequestContext();
@@ -688,7 +687,7 @@ async function runClaudeGenerate(prompt, options, telemetry, runOptions) {
688
687
  },
689
688
  usage: usage.toV3Usage(),
690
689
  response: {
691
- id: randomUUID(),
690
+ id: globalThis.crypto.randomUUID(),
692
691
  modelId: getModelId(options),
693
692
  timestamp: /* @__PURE__ */ new Date()
694
693
  },
@@ -699,8 +698,8 @@ async function runClaudeGenerate(prompt, options, telemetry, runOptions) {
699
698
  }
700
699
  function runClaudeAsMastraStream(prompt, options, runId, telemetry, runOptions) {
701
700
  return new ReadableStream({ start: async (controller) => {
702
- const textId = randomUUID();
703
- const responseId = randomUUID();
701
+ const textId = globalThis.crypto.randomUUID();
702
+ const responseId = globalThis.crypto.randomUUID();
704
703
  const modelId = getModelId(options);
705
704
  const usage = createClaudeUsageCollector();
706
705
  let text = "";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["#mastra"],"sources":["../src/utils.ts","../src/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { ReadableStream, TransformStream } from 'node:stream/web';\nimport type { ReadableStreamDefaultController } from 'node:stream/web';\n\nimport type { AgentExecutionOptionsBase, MastraLanguageModel, PublicStructuredOutputOptions } from '@mastra/core/agent';\nimport { MessageList } from '@mastra/core/agent/message-list';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { EntityType, executeWithContext, getOrCreateSpan, SpanType } from '@mastra/core/observability';\nimport type {\n AIModelGenerationSpan,\n CostContext,\n IModelSpanTracker,\n Span,\n UsageStats,\n} from '@mastra/core/observability';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '@mastra/core/schema';\nimport type { ChunkType, FullOutput, JSONValue, LanguageModelUsage, ProviderMetadata } from '@mastra/core/stream';\nimport { ChunkFrom, MastraModelOutput } from '@mastra/core/stream';\ntype MastraModelOutputOptions<OUTPUT = undefined> = ConstructorParameters<\n typeof MastraModelOutput<OUTPUT>\n>[0]['options'];\n\nexport type SDKAgentRunOptions<OUTPUT = unknown> = AgentExecutionOptionsBase<OUTPUT> & {\n signal?: AbortSignal;\n structuredOutput?: OUTPUT extends {} ? PublicStructuredOutputOptions<OUTPUT> : never;\n [key: string]: unknown;\n};\n\nexport type V3Usage = {\n inputTokens: {\n total: number | undefined;\n noCache?: number;\n cacheRead?: number;\n cacheWrite?: number;\n };\n outputTokens: {\n total: number | undefined;\n text?: number;\n };\n};\n\nexport type SDKModelGenerateResult = {\n content: Array<{ type: 'text'; text: string }>;\n finishReason: { unified: 'stop'; raw: 'stop' };\n usage: V3Usage;\n response: {\n id: string;\n modelId: string;\n timestamp: Date;\n };\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n};\n\nexport function createNoopModel({ modelId, provider }: { modelId: string; provider: string }): MastraLanguageModel {\n return {\n modelId,\n provider,\n specificationVersion: 'v3',\n supportedUrls: {},\n doGenerate: async () => createNoopStreamResult(),\n doStream: async () => createNoopStreamResult(),\n } as MastraLanguageModel;\n}\n\nfunction createNoopStreamResult(): { stream: ReadableStream<never> } {\n return {\n stream: new ReadableStream<never>({\n start: controller => controller.close(),\n }),\n };\n}\n\nexport function createCompletedMastraStream({\n runId,\n prompt,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n}: {\n runId: string;\n prompt: string;\n text: string;\n responseId: string;\n modelId: string;\n usage: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n}): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start(controller) {\n const textId = randomUUID();\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata,\n });\n if (text) {\n enqueueTextDelta(controller, runId, textId, text);\n }\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n });\n controller.close();\n },\n });\n}\n\nexport function createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId,\n provider,\n stream,\n responseText = '',\n options,\n}: {\n messages: MessageListInput;\n runId: string;\n modelId: string;\n provider: string;\n stream: ReadableStream<ChunkType>;\n responseText?: string;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): MastraModelOutput<OUTPUT> {\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n messageList.add([{ role: 'assistant', content: responseText }], 'response');\n\n return new MastraModelOutput<OUTPUT>({\n model: {\n modelId,\n provider,\n version: 'v3',\n },\n stream: stream as ReadableStream<ChunkType<OUTPUT>>,\n messageList,\n messageId: randomUUID(),\n options: {\n ...options,\n runId,\n },\n });\n}\n\nexport function toFullOutput<OUTPUT>({\n messages,\n runId,\n provider,\n result,\n options,\n}: {\n messages: MessageListInput;\n runId: string;\n provider: string;\n result: SDKModelGenerateResult;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): Promise<FullOutput<OUTPUT>> {\n const text = result.content.map(part => part.text).join('');\n const stream = createCompletedMastraStream({\n runId,\n prompt: promptToText(messages),\n text,\n responseId: result.response.id,\n modelId: result.response.modelId,\n usage: toLanguageModelUsage(result.usage),\n providerMetadata: result.providerMetadata,\n costContext: result.costContext,\n object: result.object,\n });\n\n return createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId: result.response.modelId,\n provider,\n stream,\n responseText: text,\n options,\n }).getFullOutput();\n}\n\nexport type SDKAgentTelemetryOptions<OUTPUT = unknown> = {\n agentId: string;\n agentName: string;\n provider: string;\n modelId: string;\n messages: MessageListInput;\n prompt: string;\n runId: string;\n streaming: boolean;\n method: 'generate' | 'stream';\n requestContext: RequestContext;\n instructions?: string;\n maxSteps?: SDKAgentRunOptions<OUTPUT>['maxSteps'];\n tracingOptions?: SDKAgentRunOptions<OUTPUT>['tracingOptions'];\n tracingContext?: SDKAgentRunOptions<OUTPUT>['tracingContext'];\n onFinish?: SDKAgentRunOptions<OUTPUT>['onFinish'];\n onStepFinish?: SDKAgentRunOptions<OUTPUT>['onStepFinish'];\n mastra?: Mastra;\n};\n\nexport type SDKAgentTelemetry<OUTPUT = unknown> = {\n execute<T>(fn: () => Promise<T>): Promise<T>;\n endGenerate(result: SDKModelGenerateResult): void;\n fail(error: unknown): void;\n startToolCall(input: SDKAgentToolCallInput): void;\n endToolCall(output: SDKAgentToolCallOutput): void;\n wrapStream(stream: ReadableStream<ChunkType>): ReadableStream<ChunkType>;\n outputOptions(): Partial<MastraModelOutputOptions<OUTPUT>>;\n};\n\nexport type SDKAgentToolCallInput = {\n toolCallId: string;\n toolName: string;\n input?: unknown;\n};\n\nexport type SDKAgentToolCallOutput = {\n toolCallId: string;\n output?: unknown;\n isError?: boolean;\n};\n\nexport function createSDKAgentTelemetry<OUTPUT>({\n agentId,\n agentName,\n provider,\n modelId,\n messages,\n prompt,\n runId,\n streaming,\n method,\n requestContext,\n instructions,\n maxSteps,\n tracingOptions,\n tracingContext,\n onFinish,\n onStepFinish,\n mastra,\n}: SDKAgentTelemetryOptions<OUTPUT>): SDKAgentTelemetry<OUTPUT> {\n const agentSpan = getOrCreateSpan({\n type: SpanType.AGENT_RUN,\n name: `agent run: '${agentId}'`,\n entityType: EntityType.AGENT,\n entityId: agentId,\n entityName: agentName,\n input: messages,\n attributes: {\n prompt,\n instructions,\n maxSteps,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n },\n tracingOptions,\n tracingContext,\n requestContext,\n mastra,\n });\n\n const modelSpan = agentSpan?.createChildSpan({\n type: SpanType.MODEL_GENERATION,\n name: `llm: '${modelId}'`,\n input: {\n messages,\n },\n attributes: {\n model: modelId,\n provider,\n streaming,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n },\n requestContext,\n });\n const modelSpanTracker = getModelSpanTracker(modelSpan);\n const toolSpans = new Map<string, Span<SpanType.TOOL_CALL> | Span<SpanType.MCP_TOOL_CALL>>();\n\n let ended = false;\n\n const startToolCall = ({ toolCallId, toolName, input }: SDKAgentToolCallInput) => {\n if (toolSpans.has(toolCallId)) {\n return;\n }\n\n const parentSpan = agentSpan ?? modelSpan;\n if (!parentSpan) {\n return;\n }\n\n const mcp = parseMcpToolName(toolName);\n const span = mcp\n ? parentSpan.createChildSpan({\n type: SpanType.MCP_TOOL_CALL,\n name: `mcp_tool: '${toolName}' on '${mcp.serverName}'`,\n input,\n entityType: EntityType.TOOL,\n entityId: toolName,\n entityName: toolName,\n attributes: {\n mcpServer: mcp.serverName,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n toolCallId,\n },\n requestContext,\n })\n : parentSpan.createChildSpan({\n type: SpanType.TOOL_CALL,\n name: `tool: '${toolName}'`,\n input,\n entityType: EntityType.TOOL,\n entityId: toolName,\n entityName: toolName,\n attributes: {\n toolType: 'tool',\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n toolCallId,\n },\n requestContext,\n });\n\n toolSpans.set(toolCallId, span);\n };\n\n const endToolCall = ({ toolCallId, output, isError }: SDKAgentToolCallOutput) => {\n const span = toolSpans.get(toolCallId);\n if (!span) {\n return;\n }\n\n toolSpans.delete(toolCallId);\n if (isError) {\n span.error({\n error:\n output instanceof Error ? output : new Error(typeof output === 'string' ? output : 'SDK tool call failed'),\n attributes: { success: false },\n });\n return;\n }\n\n span.end({\n output,\n attributes: { success: true },\n });\n };\n\n const closeOpenToolSpans = (success: boolean, error?: unknown) => {\n for (const [toolCallId, span] of toolSpans) {\n toolSpans.delete(toolCallId);\n if (success) {\n span.end({ attributes: { success: true } });\n continue;\n }\n\n const normalized = error instanceof Error ? error : new Error(String(error ?? 'SDK agent run failed'));\n span.error({ error: normalized, attributes: { success: false } });\n }\n };\n\n const endModel = ({\n text,\n usage,\n providerMetadata,\n finishReason = 'stop',\n responseId,\n responseModel,\n costContext,\n }: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => {\n if (modelSpanTracker) {\n modelSpanTracker.endGeneration({\n output: {\n text,\n },\n attributes: {\n finishReason,\n responseId,\n responseModel,\n costContext,\n },\n usage,\n providerMetadata,\n });\n return;\n }\n\n modelSpan?.end({\n output: {\n text,\n },\n attributes: {\n finishReason,\n responseId,\n responseModel,\n usage: usage ? toUsageStats(usage) : undefined,\n costContext,\n },\n });\n };\n\n const end = (result: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => {\n if (ended) {\n return;\n }\n\n ended = true;\n closeOpenToolSpans(true);\n endModel(result);\n agentSpan?.end({\n output: {\n text: result.text,\n },\n });\n };\n\n const fail = (error: unknown) => {\n if (ended) {\n return;\n }\n\n ended = true;\n const normalized = error instanceof Error ? error : new Error(String(error));\n closeOpenToolSpans(false, normalized);\n if (modelSpanTracker) {\n modelSpanTracker.reportGenerationError({ error: normalized });\n } else {\n modelSpan?.error({ error: normalized });\n }\n agentSpan?.error({ error: normalized });\n };\n\n return {\n execute: fn => executeWithContext({ span: modelSpan ?? agentSpan, fn }),\n endGenerate(result) {\n end({\n text: result.content.map(part => part.text).join(''),\n usage: toLanguageModelUsage(result.usage),\n providerMetadata: result.providerMetadata,\n finishReason: result.finishReason.unified,\n responseId: result.response.id,\n responseModel: result.response.modelId,\n costContext: result.costContext,\n });\n },\n fail,\n startToolCall,\n endToolCall,\n wrapStream(stream) {\n const trackedStream = (modelSpanTracker?.wrapStream(stream) ?? stream) as ReadableStream<ChunkType>;\n return wrapStreamForAgentSpan(trackedStream, {\n end,\n fail,\n });\n },\n outputOptions() {\n return {\n onFinish,\n onStepFinish,\n requestContext,\n tracingContext: agentSpan ? { currentSpan: agentSpan } : tracingContext,\n };\n },\n };\n}\n\nfunction parseMcpToolName(toolName: string): { serverName: string; toolName: string } | undefined {\n const match = /^mcp__([^_].*?)__(.+)$/.exec(toolName);\n if (!match?.[1] || !match[2]) {\n return undefined;\n }\n\n return {\n serverName: match[1],\n toolName: match[2],\n };\n}\n\nfunction getModelSpanTracker(\n modelSpan: Span<SpanType.MODEL_GENERATION> | AIModelGenerationSpan | undefined,\n): IModelSpanTracker | undefined {\n if (!modelSpan || !('createTracker' in modelSpan)) {\n return undefined;\n }\n\n return modelSpan.createTracker();\n}\n\nfunction wrapStreamForAgentSpan(\n stream: ReadableStream<ChunkType>,\n telemetry: {\n end: (result: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => void;\n fail: (error: unknown) => void;\n },\n): ReadableStream<ChunkType> {\n let text = '';\n\n return stream.pipeThrough(\n new TransformStream<ChunkType, ChunkType>({\n transform(chunk, controller) {\n if (chunk.type === 'text-delta') {\n text += chunk.payload.text;\n }\n\n if (chunk.type === 'finish') {\n telemetry.end({\n text,\n usage: chunk.payload.output.usage,\n providerMetadata: chunk.payload.providerMetadata,\n finishReason: chunk.payload.stepResult.reason,\n responseId: chunk.payload.response?.id,\n responseModel: chunk.payload.response?.modelId,\n costContext: getCostContext(chunk.payload.metadata?.costContext),\n });\n }\n\n if (chunk.type === 'error') {\n telemetry.fail(chunk.payload.error);\n }\n\n controller.enqueue(chunk);\n },\n flush() {\n telemetry.end({ text });\n },\n }),\n );\n}\n\nfunction toUsageStats(usage: LanguageModelUsage): UsageStats {\n return {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n inputDetails: {\n cacheRead: usage.cachedInputTokens,\n cacheWrite: usage.cacheCreationInputTokens,\n },\n outputDetails: {\n text: usage.outputTokens,\n reasoning: usage.reasoningTokens,\n },\n };\n}\n\nfunction getCostContext(value: unknown): CostContext | undefined {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n\n return value as CostContext;\n}\n\nexport function enqueueStartChunks(\n controller: ReadableStreamDefaultController<ChunkType>,\n {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata,\n }: {\n runId: string;\n prompt: string;\n textId: string;\n responseId: string;\n modelId: string;\n providerMetadata?: ProviderMetadata;\n },\n): void {\n controller.enqueue({\n type: 'start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {},\n });\n controller.enqueue({\n type: 'step-start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n request: { body: prompt },\n },\n });\n controller.enqueue({\n type: 'response-metadata',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: responseId,\n modelId,\n timestamp: new Date().toISOString(),\n },\n });\n controller.enqueue({\n type: 'text-start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n providerMetadata,\n },\n });\n}\n\nexport function enqueueTextDelta(\n controller: ReadableStreamDefaultController<ChunkType>,\n runId: string,\n textId: string,\n text: string,\n): void {\n controller.enqueue({\n type: 'text-delta',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n text,\n },\n });\n}\n\nexport function enqueueFinishChunks(\n controller: ReadableStreamDefaultController<ChunkType>,\n {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n }: {\n runId: string;\n prompt: string;\n textId: string;\n text: string;\n responseId: string;\n modelId: string;\n usage: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n },\n): void {\n const timestamp = new Date();\n const response = {\n id: responseId,\n modelId,\n timestamp,\n };\n const metadata = {\n providerMetadata,\n costContext,\n request: { body: prompt },\n modelId,\n timestamp,\n };\n\n controller.enqueue({\n type: 'text-end',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n providerMetadata,\n },\n });\n if (object !== undefined) {\n controller.enqueue({\n type: 'object-result',\n runId,\n from: ChunkFrom.AGENT,\n object,\n } as unknown as ChunkType);\n }\n controller.enqueue({\n type: 'step-finish',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: responseId,\n providerMetadata,\n totalUsage: usage,\n response,\n stepResult: {\n reason: 'stop',\n warnings: [],\n },\n output: {\n text,\n usage,\n steps: [],\n },\n metadata,\n },\n });\n controller.enqueue({\n type: 'finish',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n stepResult: {\n reason: 'stop',\n warnings: [],\n },\n output: {\n usage,\n steps: [],\n },\n metadata,\n providerMetadata,\n messages: {\n all: [],\n user: [],\n nonUser: [],\n },\n response,\n },\n });\n}\n\nexport function toLanguageModelUsage(usage: V3Usage): LanguageModelUsage {\n const inputTokens = usage.inputTokens.total ?? 0;\n const outputTokens = usage.outputTokens.total ?? 0;\n\n return {\n inputTokens,\n outputTokens,\n totalTokens: inputTokens + outputTokens,\n cachedInputTokens: usage.inputTokens.cacheRead,\n cacheCreationInputTokens: usage.inputTokens.cacheWrite,\n raw: usage,\n };\n}\n\nexport function createProviderMetadata(provider: string, metadata: Record<string, unknown>): ProviderMetadata {\n return {\n [provider]: toJsonRecord(metadata),\n };\n}\n\nfunction toJsonRecord(record: Record<string, unknown>): Record<string, JSONValue> {\n return Object.fromEntries(\n Object.entries(record)\n .filter((entry): entry is [string, Exclude<unknown, undefined>] => entry[1] !== undefined)\n .map(([key, value]) => [key, toJsonValue(value)]),\n );\n}\n\nfunction toJsonValue(value: unknown): JSONValue {\n if (value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.filter(item => item !== undefined).map(toJsonValue);\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === 'object') {\n return toJsonRecord(value as Record<string, unknown>);\n }\n\n return String(value);\n}\n\nexport function promptToText(prompt: unknown): string {\n if (typeof prompt === 'string') {\n return prompt;\n }\n\n if (Array.isArray(prompt)) {\n return prompt.map(promptToText).filter(Boolean).join('\\n');\n }\n\n if (!prompt || typeof prompt !== 'object') {\n return '';\n }\n\n const record = prompt as Record<string, unknown>;\n if (typeof record.text === 'string') {\n return record.text;\n }\n if (typeof record.content === 'string') {\n return record.content;\n }\n if (record.content) {\n return promptToText(record.content);\n }\n\n return '';\n}\n\nexport function withStructuredOutputPrompt<OUTPUT>(\n prompt: string,\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): string {\n if (!structuredOutput?.schema) {\n return prompt;\n }\n\n const schema = standardSchemaToJSONSchema(toStandardSchema(structuredOutput.schema));\n const instructions =\n structuredOutput.instructions ??\n 'Return only valid JSON that matches the JSON Schema. Do not include markdown fences or explanatory text.';\n\n return `${prompt}\\n\\n${instructions}\\n\\nJSON Schema:\\n${JSON.stringify(schema)}`;\n}\n\nexport function getStructuredOutputSchema<OUTPUT>(\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Record<string, unknown> | undefined {\n if (!structuredOutput?.schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(structuredOutput.schema)) as Record<string, unknown>;\n}\n\nexport async function getStructuredOutput<OUTPUT>(\n text: string,\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Promise<OUTPUT | undefined> {\n return getStructuredOutputFromValue(text, structuredOutput);\n}\n\nexport async function getStructuredOutputFromValue<OUTPUT>(\n value: unknown,\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Promise<OUTPUT | undefined> {\n if (!structuredOutput?.schema) {\n return undefined;\n }\n\n let parsed: unknown;\n if (typeof value === 'string') {\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n return handleStructuredOutputError(\n new Error('Structured output must be valid JSON.', { cause: error }),\n structuredOutput,\n );\n }\n } else {\n parsed = value;\n }\n\n const schema = toStandardSchema(structuredOutput.schema);\n const result = await schema['~standard'].validate(parsed);\n if (!result.issues) {\n return result.value as OUTPUT;\n }\n\n const message = result.issues.map(issue => `- ${issue.path?.join('.') || 'root'}: ${issue.message}`).join('\\n');\n return handleStructuredOutputError(new Error(`Structured output validation failed:\\n${message}`), structuredOutput);\n}\n\nfunction handleStructuredOutputError<OUTPUT>(\n error: Error,\n structuredOutput: PublicStructuredOutputOptions<OUTPUT>,\n): OUTPUT | undefined {\n if (structuredOutput.errorStrategy === 'fallback') {\n return structuredOutput.fallbackValue;\n }\n\n if (structuredOutput.errorStrategy === 'warn') {\n structuredOutput.logger?.warn(error.message);\n return undefined;\n }\n\n throw error;\n}\n\nexport function sumDefined(...values: Array<number | undefined>): number | undefined {\n const defined = values.filter((value): value is number => typeof value === 'number');\n if (defined.length === 0) {\n return undefined;\n }\n\n return defined.reduce((sum, value) => sum + value, 0);\n}\n","import { randomUUID } from 'node:crypto';\nimport { ReadableStream } from 'node:stream/web';\n\nimport { query } from '@anthropic-ai/claude-agent-sdk';\nimport type { ModelUsage, Options as ClaudeQueryOptions, SDKMessage } from '@anthropic-ai/claude-agent-sdk';\n\nimport { Agent } from '@mastra/core/agent';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { CostContext } from '@mastra/core/observability';\nimport { RequestContext } from '@mastra/core/request-context';\nimport type {\n ChunkType,\n FullOutput,\n LanguageModelUsage,\n ProviderMetadata,\n MastraModelOutput,\n} from '@mastra/core/stream';\nimport { ChunkFrom } from '@mastra/core/stream';\nimport {\n createMastraOutput,\n createNoopModel,\n createProviderMetadata,\n createSDKAgentTelemetry,\n enqueueFinishChunks,\n enqueueStartChunks,\n enqueueTextDelta,\n getStructuredOutputFromValue,\n getStructuredOutputSchema,\n promptToText,\n sumDefined,\n toFullOutput,\n toLanguageModelUsage,\n} from './utils';\nimport type { SDKAgentRunOptions, SDKAgentTelemetry, SDKModelGenerateResult, V3Usage } from './utils';\n\nconst PROVIDER = '@anthropic-ai/claude-agent-sdk';\nconst MODEL_ID = 'claude-agent-sdk';\n\ntype ClaudeUsageTotals = {\n inputTokens?: number;\n outputTokens?: number;\n cacheReadInputTokens?: number;\n cacheCreationInputTokens?: number;\n totalCostUsd?: number;\n modelUsage?: Record<string, ModelUsage>;\n};\n\nexport type ClaudeSDKOptions = ClaudeQueryOptions;\n\nexport type ClaudeAgentOptions = {\n /**\n * Mastra agent id used when registering this wrapper with Mastra.\n */\n id: string;\n /**\n * Optional display name for the Mastra agent. Defaults to `id`.\n */\n name?: string;\n /**\n * Description surfaced by Mastra when listing or selecting agents.\n */\n description: string;\n /**\n * Claude Agent SDK options forwarded to `query()` on every run.\n */\n sdkOptions?: ClaudeSDKOptions;\n};\n\nexport type ClaudeSDKAgentRunOptions<OUTPUT = unknown> = SDKAgentRunOptions<OUTPUT> & {\n /**\n * Claude Agent SDK query options for this run. These are merged over the\n * wrapper's `sdkOptions`, which allows per-call session continuation options\n * such as `resume` or `continue`.\n */\n sdkOptions?: ClaudeSDKOptions;\n};\n\nexport type ClaudeSDKAgentResumeData =\n | {\n /**\n * Message to send while resuming the Claude SDK session.\n */\n message: MessageListInput;\n /**\n * Claude session id to resume.\n */\n sessionId: string;\n /**\n * Fork the resumed session into a new session.\n */\n forkSession?: boolean;\n /**\n * Resume the session up to a specific assistant message UUID.\n */\n resumeSessionAt?: string;\n }\n | {\n /**\n * Message to send while continuing the latest Claude SDK session.\n */\n message: MessageListInput;\n /**\n * Continue the latest Claude session in the current working directory.\n */\n continue: true;\n };\n\nexport class ClaudeSDKAgent extends Agent {\n readonly options: ClaudeAgentOptions;\n #mastra?: Mastra;\n\n constructor(options: ClaudeAgentOptions) {\n super({\n id: options.id,\n name: options.name ?? options.id,\n description: options.description,\n instructions: '',\n model: createNoopModel({\n modelId: getModelId(options),\n provider: PROVIDER,\n }),\n });\n this.options = options;\n }\n\n override __registerMastra(mastra: Mastra): void {\n super.__registerMastra(mastra);\n this.#mastra = mastra;\n }\n\n supportsMemory(): boolean {\n return false;\n }\n\n async generate<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const prompt = promptToText(messages);\n const runId = options?.runId ?? randomUUID();\n const requestContext = options?.requestContext ?? new RequestContext();\n const instructions = options?.instructions ? promptToText(options.instructions) : undefined;\n const telemetry = createSDKAgentTelemetry({\n agentId: this.id,\n agentName: this.name,\n provider: PROVIDER,\n modelId: getModelId(this.options),\n messages,\n prompt,\n runId,\n streaming: false,\n method: 'generate',\n requestContext,\n instructions,\n maxSteps: options?.maxSteps,\n tracingOptions: options?.tracingOptions,\n tracingContext: options?.tracingContext,\n onFinish: options?.onFinish,\n onStepFinish: options?.onStepFinish,\n mastra: this.#mastra,\n });\n let result: SDKModelGenerateResult;\n try {\n result = await telemetry.execute(() => runClaudeGenerate(prompt, this.options, telemetry, options));\n telemetry.endGenerate(result);\n } catch (error) {\n telemetry.fail(error);\n throw error;\n }\n\n return toFullOutput<OUTPUT>({\n messages,\n runId,\n provider: PROVIDER,\n result,\n options: { ...telemetry.outputOptions(), structuredOutput: options?.structuredOutput as any },\n });\n }\n\n async stream<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const runId = options?.runId ?? randomUUID();\n const prompt = promptToText(messages);\n const modelId = getModelId(this.options);\n const requestContext = options?.requestContext ?? new RequestContext();\n const instructions = options?.instructions ? promptToText(options.instructions) : undefined;\n const telemetry = createSDKAgentTelemetry({\n agentId: this.id,\n agentName: this.name,\n provider: PROVIDER,\n modelId,\n messages,\n prompt,\n runId,\n streaming: true,\n method: 'stream',\n requestContext,\n instructions,\n maxSteps: options?.maxSteps,\n tracingOptions: options?.tracingOptions,\n tracingContext: options?.tracingContext,\n onFinish: options?.onFinish,\n onStepFinish: options?.onStepFinish,\n mastra: this.#mastra,\n });\n\n return createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId,\n provider: PROVIDER,\n stream: telemetry.wrapStream(runClaudeAsMastraStream(prompt, this.options, runId, telemetry, options)),\n options: { ...telemetry.outputOptions(), structuredOutput: options?.structuredOutput as any },\n });\n }\n\n async resumeGenerate<OUTPUT = undefined>(\n resumeData: ClaudeSDKAgentResumeData,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const data = validateClaudeResumeData(resumeData);\n return this.generate(data.message, createClaudeResumeRunOptions(data, options));\n }\n\n async resumeStream<OUTPUT = undefined>(\n resumeData: ClaudeSDKAgentResumeData,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const data = validateClaudeResumeData(resumeData);\n return this.stream(data.message, createClaudeResumeRunOptions(data, options));\n }\n}\n\nfunction validateClaudeResumeData(resumeData: ClaudeSDKAgentResumeData): ClaudeSDKAgentResumeData {\n if (!isRecord(resumeData) || !('message' in resumeData)) {\n throw new Error('ClaudeSDKAgent resumeData must include a message.');\n }\n\n const hasSessionId = 'sessionId' in resumeData;\n const hasContinue = 'continue' in resumeData;\n\n if (hasSessionId && hasContinue) {\n throw new Error('ClaudeSDKAgent resumeData must include either sessionId or continue: true, not both.');\n }\n\n if (hasSessionId) {\n if (typeof resumeData.sessionId !== 'string') {\n throw new Error('ClaudeSDKAgent resumeData.sessionId must be a string.');\n }\n return resumeData;\n }\n\n if (hasContinue) {\n if (resumeData.continue !== true) {\n throw new Error('ClaudeSDKAgent resumeData.continue must be true when provided.');\n }\n return resumeData;\n }\n\n throw new Error('ClaudeSDKAgent resumeData must include sessionId or continue: true.');\n}\n\nfunction createClaudeResumeRunOptions<OUTPUT>(\n resumeData: ClaudeSDKAgentResumeData,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): ClaudeSDKAgentRunOptions<OUTPUT> {\n const sdkOptions: ClaudeSDKOptions = { ...options?.sdkOptions };\n\n if ('sessionId' in resumeData && typeof resumeData.sessionId === 'string') {\n sdkOptions.resume = resumeData.sessionId;\n if (resumeData.forkSession !== undefined) {\n sdkOptions.forkSession = resumeData.forkSession;\n }\n if (resumeData.resumeSessionAt !== undefined) {\n sdkOptions.resumeSessionAt = resumeData.resumeSessionAt;\n }\n } else {\n sdkOptions.continue = true;\n }\n\n return {\n ...options,\n sdkOptions,\n };\n}\n\nasync function runClaudeGenerate<OUTPUT>(\n prompt: string,\n options: ClaudeAgentOptions,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): Promise<SDKModelGenerateResult> {\n let text = '';\n let structuredOutputValue: unknown;\n const usage = createClaudeUsageCollector();\n\n for await (const message of observeClaudeMessages(\n runClaude(prompt, options, runOptions?.abortSignal ?? runOptions?.signal, runOptions),\n telemetry,\n )) {\n usage.record(message);\n if (message.type === 'result') {\n if (message.subtype !== 'success') {\n throw new Error(message.errors.join('\\n') || `Claude Agent SDK failed with ${message.subtype}`);\n }\n\n text = message.result;\n structuredOutputValue = getClaudeStructuredOutput(message);\n }\n }\n\n const totals = usage.totals();\n const object = await getStructuredOutputFromValue(\n structuredOutputValue === undefined ? text : structuredOutputValue,\n runOptions?.structuredOutput,\n );\n\n return {\n content: [{ type: 'text', text }],\n finishReason: { unified: 'stop', raw: 'stop' },\n usage: usage.toV3Usage(),\n response: {\n id: randomUUID(),\n modelId: getModelId(options),\n timestamp: new Date(),\n },\n providerMetadata: getClaudeProviderMetadata(options, totals),\n costContext: getClaudeCostContext(options, totals),\n object,\n };\n}\n\nfunction runClaudeAsMastraStream<OUTPUT>(\n prompt: string,\n options: ClaudeAgentOptions,\n runId: string,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start: async controller => {\n const textId = randomUUID();\n const responseId = randomUUID();\n const modelId = getModelId(options);\n const usage = createClaudeUsageCollector();\n let text = '';\n let structuredOutputValue: unknown;\n let sawDelta = false;\n\n try {\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata: getClaudeProviderMetadata(options, usage.totals()),\n });\n\n for await (const message of observeClaudeMessages(\n runClaude(prompt, options, runOptions?.abortSignal ?? runOptions?.signal, runOptions),\n telemetry,\n )) {\n usage.record(message);\n const delta = getTextDelta(message);\n if (delta) {\n sawDelta = true;\n text += delta;\n enqueueTextDelta(controller, runId, textId, delta);\n }\n\n if (message.type === 'result') {\n if (message.subtype !== 'success') {\n throw new Error(message.errors.join('\\n') || `Claude Agent SDK failed with ${message.subtype}`);\n }\n\n if (!sawDelta && message.result) {\n text += message.result;\n enqueueTextDelta(controller, runId, textId, message.result);\n }\n structuredOutputValue = getClaudeStructuredOutput(message);\n }\n }\n\n const totals = usage.totals();\n const providerMetadata = getClaudeProviderMetadata(options, totals);\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage: usage.toLanguageModelUsage(),\n providerMetadata,\n costContext: getClaudeCostContext(options, totals),\n object: await getStructuredOutputFromValue(\n structuredOutputValue === undefined ? text : structuredOutputValue,\n runOptions?.structuredOutput,\n ),\n });\n controller.close();\n } catch (error) {\n controller.enqueue({\n type: 'error',\n runId,\n from: ChunkFrom.AGENT,\n payload: { error },\n });\n controller.close();\n }\n },\n });\n}\n\nfunction runClaude<OUTPUT>(\n prompt: string,\n options: ClaudeAgentOptions,\n signal?: AbortSignal,\n runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): AsyncIterable<SDKMessage> {\n const abortController = createAbortController(signal);\n const queryOptions: ClaudeSDKOptions = {\n ...options.sdkOptions,\n ...runOptions?.sdkOptions,\n };\n const outputSchema = getStructuredOutputSchema(runOptions?.structuredOutput);\n if (outputSchema) {\n queryOptions.outputFormat = {\n type: 'json_schema',\n schema: outputSchema,\n };\n }\n if (abortController) {\n queryOptions.abortController = abortController;\n }\n\n return query({\n prompt,\n options: queryOptions as Parameters<typeof query>[0]['options'],\n }) as AsyncIterable<SDKMessage>;\n}\n\nfunction getClaudeStructuredOutput(message: SDKMessage): unknown {\n if (message.type !== 'result') {\n return undefined;\n }\n\n return (message as { structured_output?: unknown }).structured_output;\n}\n\nasync function* observeClaudeMessages<OUTPUT>(\n messages: AsyncIterable<SDKMessage>,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n): AsyncIterable<SDKMessage> {\n for await (const message of messages) {\n recordClaudeToolTelemetry(message, telemetry);\n yield message;\n }\n}\n\nfunction recordClaudeToolTelemetry<OUTPUT>(message: SDKMessage, telemetry: SDKAgentTelemetry<OUTPUT>): void {\n for (const toolCall of getClaudeToolCalls(message)) {\n telemetry.startToolCall(toolCall);\n }\n\n for (const toolResult of getClaudeToolResults(message)) {\n telemetry.endToolCall(toolResult);\n }\n}\n\nfunction getClaudeToolCalls(message: SDKMessage): Array<{ toolCallId: string; toolName: string; input?: unknown }> {\n if (message.type !== 'assistant') {\n return [];\n }\n\n return getContentBlocks(message.message)\n .filter(isRecord)\n .filter(block => block.type === 'tool_use' && typeof block.id === 'string' && typeof block.name === 'string')\n .map(block => ({\n toolCallId: block.id as string,\n toolName: block.name as string,\n input: block.input,\n }));\n}\n\nfunction getClaudeToolResults(message: SDKMessage): Array<{ toolCallId: string; output?: unknown; isError?: boolean }> {\n if (message.type !== 'user') {\n return [];\n }\n\n return getContentBlocks(message.message)\n .filter(isRecord)\n .filter(block => block.type === 'tool_result' && typeof block.tool_use_id === 'string')\n .map(block => ({\n toolCallId: block.tool_use_id as string,\n output: block.content,\n isError: block.is_error === true,\n }));\n}\n\nfunction getContentBlocks(message: unknown): unknown[] {\n if (!isRecord(message)) {\n return [];\n }\n\n return Array.isArray(message.content) ? message.content : [];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object';\n}\n\nfunction createAbortController(signal: AbortSignal | undefined): AbortController | undefined {\n if (!signal) {\n return undefined;\n }\n\n const controller = new AbortController();\n if (signal.aborted) {\n controller.abort(signal.reason);\n return controller;\n }\n\n signal.addEventListener('abort', () => controller.abort(signal.reason), { once: true });\n return controller;\n}\n\nfunction getModelId(options: ClaudeAgentOptions): string {\n return options.sdkOptions?.model ?? MODEL_ID;\n}\n\nfunction createClaudeUsageCollector() {\n const assistantUsageById = new Map<string, ClaudeUsageTotals>();\n let resultUsage: ClaudeUsageTotals = {};\n\n return {\n record(message: SDKMessage) {\n if (message.type === 'assistant') {\n assistantUsageById.set(message.message.id, usageFromClaudeMessage(message.message.usage));\n return;\n }\n\n if (message.type === 'result') {\n resultUsage = {\n ...usageFromClaudeMessage(message.usage),\n totalCostUsd: message.total_cost_usd,\n modelUsage: message.modelUsage,\n };\n }\n },\n totals(): ClaudeUsageTotals {\n const assistantUsage = getAssistantUsageTotals(assistantUsageById);\n\n if (hasAnyUsage(resultUsage)) {\n return {\n ...resultUsage,\n inputTokens: resultUsage.inputTokens ?? assistantUsage.inputTokens,\n outputTokens: resultUsage.outputTokens ?? assistantUsage.outputTokens,\n cacheReadInputTokens: resultUsage.cacheReadInputTokens ?? assistantUsage.cacheReadInputTokens,\n cacheCreationInputTokens: resultUsage.cacheCreationInputTokens ?? assistantUsage.cacheCreationInputTokens,\n };\n }\n\n return assistantUsage;\n },\n toV3Usage(): V3Usage {\n return toV3Usage(this.totals());\n },\n toLanguageModelUsage(): LanguageModelUsage {\n return toLanguageModelUsage(toV3Usage(this.totals()));\n },\n };\n}\n\nfunction getAssistantUsageTotals(assistantUsageById: Map<string, ClaudeUsageTotals>): ClaudeUsageTotals {\n return [...assistantUsageById.values()].reduce<ClaudeUsageTotals>((totals, item) => {\n totals.inputTokens = addOptional(totals.inputTokens, item.inputTokens);\n totals.outputTokens = addOptional(totals.outputTokens, item.outputTokens);\n totals.cacheReadInputTokens = addOptional(totals.cacheReadInputTokens, item.cacheReadInputTokens);\n totals.cacheCreationInputTokens = addOptional(totals.cacheCreationInputTokens, item.cacheCreationInputTokens);\n return totals;\n }, {});\n}\n\nfunction usageFromClaudeMessage(usage: unknown): ClaudeUsageTotals {\n if (!usage || typeof usage !== 'object') {\n return {};\n }\n\n const record = usage as Record<string, unknown>;\n return {\n inputTokens: getTokenTotal(record.input_tokens),\n outputTokens: getTokenTotal(record.output_tokens),\n cacheReadInputTokens: getTokenTotal(record.cache_read_input_tokens),\n cacheCreationInputTokens: getTokenTotal(record.cache_creation_input_tokens),\n };\n}\n\nfunction hasAnyUsage(usage: ClaudeUsageTotals): boolean {\n return (\n usage.inputTokens !== undefined ||\n usage.outputTokens !== undefined ||\n usage.cacheReadInputTokens !== undefined ||\n usage.cacheCreationInputTokens !== undefined ||\n usage.totalCostUsd !== undefined\n );\n}\n\nfunction addOptional(left: number | undefined, right: number | undefined): number | undefined {\n if (left === undefined) {\n return right;\n }\n if (right === undefined) {\n return left;\n }\n\n return left + right;\n}\n\nfunction toV3Usage(usage: ClaudeUsageTotals): V3Usage {\n const noCache = usage.inputTokens;\n const cacheRead = usage.cacheReadInputTokens;\n const cacheWrite = usage.cacheCreationInputTokens;\n const totalInputTokens = sumDefined(noCache, cacheRead, cacheWrite);\n const outputTokens = usage.outputTokens;\n\n return {\n inputTokens: {\n total: totalInputTokens,\n noCache,\n cacheRead,\n cacheWrite,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens,\n },\n };\n}\n\nfunction getClaudeProviderMetadata(options: ClaudeAgentOptions, usage?: ClaudeUsageTotals): ProviderMetadata {\n const queryOptions = options.sdkOptions;\n\n return createProviderMetadata('claude', {\n totalCostUsd: usage?.totalCostUsd,\n model: getModelId(options),\n cwd: queryOptions?.cwd,\n permissionMode: queryOptions?.permissionMode,\n maxTurns: queryOptions?.maxTurns,\n allowedTools: queryOptions?.allowedTools,\n disallowedTools: queryOptions?.disallowedTools,\n usage,\n });\n}\n\nfunction getClaudeCostContext(options: ClaudeAgentOptions, usage?: ClaudeUsageTotals): CostContext | undefined {\n if (typeof usage?.totalCostUsd !== 'number') {\n return undefined;\n }\n\n return {\n provider: 'anthropic',\n model: getModelId(options),\n estimatedCost: usage.totalCostUsd,\n costUnit: 'USD',\n costMetadata: {\n source: 'sdk_estimate',\n sdkProvider: PROVIDER,\n sdkCostField: 'total_cost_usd',\n scope: 'query_total',\n modelUsage: usage.modelUsage,\n },\n };\n}\n\nfunction getTextDelta(message: SDKMessage): string {\n if (message.type !== 'stream_event') {\n return '';\n }\n\n const event = message.event as {\n type?: string;\n delta?: {\n type?: string;\n text?: string;\n };\n };\n\n if (event.type === 'content_block_delta' && event.delta?.type === 'text_delta') {\n return event.delta.text ?? '';\n }\n\n return '';\n}\n\nfunction getTokenTotal(value: unknown): number | undefined {\n return typeof value === 'number' ? value : undefined;\n}\n"],"mappings":";;;;;;;;;;AAyDA,SAAgB,gBAAgB,EAAE,SAAS,YAAwE;CACjH,OAAO;EACL;EACA;EACA,sBAAsB;EACtB,eAAe,CAAC;EAChB,YAAY,YAAY,uBAAuB;EAC/C,UAAU,YAAY,uBAAuB;CAC/C;AACF;AAEA,SAAS,yBAA4D;CACnE,OAAO,EACL,QAAQ,IAAI,eAAsB,EAChC,QAAO,eAAc,WAAW,MAAM,EACxC,CAAC,EACH;AACF;AAEA,SAAgB,4BAA4B,EAC1C,OACA,QACA,MACA,YACA,SACA,OACA,kBACA,aACA,UAW4B;CAC5B,OAAO,IAAI,eAA0B,EACnC,MAAM,YAAY;EAChB,MAAM,SAAS,WAAW;EAC1B,mBAAmB,YAAY;GAC7B;GACA;GACA;GACA;GACA;GACA;EACF,CAAC;EACD,IAAI,MACF,iBAAiB,YAAY,OAAO,QAAQ,IAAI;EAElD,oBAAoB,YAAY;GAC9B;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAAC;EACD,WAAW,MAAM;CACnB,EACF,CAAC;AACH;AAEA,SAAgB,mBAA2B,EACzC,UACA,OACA,SACA,UACA,QACA,eAAe,IACf,WAS4B;CAC5B,MAAM,cAAc,IAAI,YAAY;CACpC,YAAY,IAAI,UAAU,OAAO;CACjC,YAAY,IAAI,CAAC;EAAE,MAAM;EAAa,SAAS;CAAa,CAAC,GAAG,UAAU;CAE1E,OAAO,IAAI,kBAA0B;EACnC,OAAO;GACL;GACA;GACA,SAAS;EACX;EACQ;EACR;EACA,WAAW,WAAW;EACtB,SAAS;GACP,GAAG;GACH;EACF;CACF,CAAC;AACH;AAEA,SAAgB,aAAqB,EACnC,UACA,OACA,UACA,QACA,WAO8B;CAC9B,MAAM,OAAO,OAAO,QAAQ,KAAI,SAAQ,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE;CAC1D,MAAM,SAAS,4BAA4B;EACzC;EACA,QAAQ,aAAa,QAAQ;EAC7B;EACA,YAAY,OAAO,SAAS;EAC5B,SAAS,OAAO,SAAS;EACzB,OAAO,qBAAqB,OAAO,KAAK;EACxC,kBAAkB,OAAO;EACzB,aAAa,OAAO;EACpB,QAAQ,OAAO;CACjB,CAAC;CAED,OAAO,mBAA2B;EAChC;EACA;EACA,SAAS,OAAO,SAAS;EACzB;EACA;EACA,cAAc;EACd;CACF,CAAC,CAAC,CAAC,cAAc;AACnB;AA4CA,SAAgB,wBAAgC,EAC9C,SACA,WACA,UACA,SACA,UACA,QACA,OACA,WACA,QACA,gBACA,cACA,UACA,gBACA,gBACA,UACA,cACA,UAC8D;CAC9D,MAAM,YAAY,gBAAgB;EAChC,MAAM,SAAS;EACf,MAAM,eAAe,QAAQ;EAC7B,YAAY,WAAW;EACvB,UAAU;EACV,YAAY;EACZ,OAAO;EACP,YAAY;GACV;GACA;GACA;EACF;EACA,UAAU;GACR;GACA,UAAU;GACV,aAAa;GACb,WAAW;EACb;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,YAAY,WAAW,gBAAgB;EAC3C,MAAM,SAAS;EACf,MAAM,SAAS,QAAQ;EACvB,OAAO,EACL,SACF;EACA,YAAY;GACV,OAAO;GACP;GACA;EACF;EACA,UAAU;GACR;GACA,UAAU;GACV,aAAa;GACb,WAAW;EACb;EACA;CACF,CAAC;CACD,MAAM,mBAAmB,oBAAoB,SAAS;CACtD,MAAM,4BAAY,IAAI,IAAqE;CAE3F,IAAI,QAAQ;CAEZ,MAAM,iBAAiB,EAAE,YAAY,UAAU,YAAmC;EAChF,IAAI,UAAU,IAAI,UAAU,GAC1B;EAGF,MAAM,aAAa,aAAa;EAChC,IAAI,CAAC,YACH;EAGF,MAAM,MAAM,iBAAiB,QAAQ;EACrC,MAAM,OAAO,MACT,WAAW,gBAAgB;GACzB,MAAM,SAAS;GACf,MAAM,cAAc,SAAS,QAAQ,IAAI,WAAW;GACpD;GACA,YAAY,WAAW;GACvB,UAAU;GACV,YAAY;GACZ,YAAY,EACV,WAAW,IAAI,WACjB;GACA,UAAU;IACR;IACA,UAAU;IACV,aAAa;IACb,WAAW;IACX;GACF;GACA;EACF,CAAC,IACD,WAAW,gBAAgB;GACzB,MAAM,SAAS;GACf,MAAM,UAAU,SAAS;GACzB;GACA,YAAY,WAAW;GACvB,UAAU;GACV,YAAY;GACZ,YAAY,EACV,UAAU,OACZ;GACA,UAAU;IACR;IACA,UAAU;IACV,aAAa;IACb,WAAW;IACX;GACF;GACA;EACF,CAAC;EAEL,UAAU,IAAI,YAAY,IAAI;CAChC;CAEA,MAAM,eAAe,EAAE,YAAY,QAAQ,cAAsC;EAC/E,MAAM,OAAO,UAAU,IAAI,UAAU;EACrC,IAAI,CAAC,MACH;EAGF,UAAU,OAAO,UAAU;EAC3B,IAAI,SAAS;GACX,KAAK,MAAM;IACT,OACE,kBAAkB,QAAQ,SAAS,IAAI,MAAM,OAAO,WAAW,WAAW,SAAS,sBAAsB;IAC3G,YAAY,EAAE,SAAS,MAAM;GAC/B,CAAC;GACD;EACF;EAEA,KAAK,IAAI;GACP;GACA,YAAY,EAAE,SAAS,KAAK;EAC9B,CAAC;CACH;CAEA,MAAM,sBAAsB,SAAkB,UAAoB;EAChE,KAAK,MAAM,CAAC,YAAY,SAAS,WAAW;GAC1C,UAAU,OAAO,UAAU;GAC3B,IAAI,SAAS;IACX,KAAK,IAAI,EAAE,YAAY,EAAE,SAAS,KAAK,EAAE,CAAC;IAC1C;GACF;GAEA,MAAM,aAAa,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,SAAS,sBAAsB,CAAC;GACrG,KAAK,MAAM;IAAE,OAAO;IAAY,YAAY,EAAE,SAAS,MAAM;GAAE,CAAC;EAClE;CACF;CAEA,MAAM,YAAY,EAChB,MACA,OACA,kBACA,eAAe,QACf,YACA,eACA,kBASI;EACJ,IAAI,kBAAkB;GACpB,iBAAiB,cAAc;IAC7B,QAAQ,EACN,KACF;IACA,YAAY;KACV;KACA;KACA;KACA;IACF;IACA;IACA;GACF,CAAC;GACD;EACF;EAEA,WAAW,IAAI;GACb,QAAQ,EACN,KACF;GACA,YAAY;IACV;IACA;IACA;IACA,OAAO,QAAQ,aAAa,KAAK,IAAI,KAAA;IACrC;GACF;EACF,CAAC;CACH;CAEA,MAAM,OAAO,WAQP;EACJ,IAAI,OACF;EAGF,QAAQ;EACR,mBAAmB,IAAI;EACvB,SAAS,MAAM;EACf,WAAW,IAAI,EACb,QAAQ,EACN,MAAM,OAAO,KACf,EACF,CAAC;CACH;CAEA,MAAM,QAAQ,UAAmB;EAC/B,IAAI,OACF;EAGF,QAAQ;EACR,MAAM,aAAa,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;EAC3E,mBAAmB,OAAO,UAAU;EACpC,IAAI,kBACF,iBAAiB,sBAAsB,EAAE,OAAO,WAAW,CAAC;OAE5D,WAAW,MAAM,EAAE,OAAO,WAAW,CAAC;EAExC,WAAW,MAAM,EAAE,OAAO,WAAW,CAAC;CACxC;CAEA,OAAO;EACL,UAAS,OAAM,mBAAmB;GAAE,MAAM,aAAa;GAAW;EAAG,CAAC;EACtE,YAAY,QAAQ;GAClB,IAAI;IACF,MAAM,OAAO,QAAQ,KAAI,SAAQ,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE;IACnD,OAAO,qBAAqB,OAAO,KAAK;IACxC,kBAAkB,OAAO;IACzB,cAAc,OAAO,aAAa;IAClC,YAAY,OAAO,SAAS;IAC5B,eAAe,OAAO,SAAS;IAC/B,aAAa,OAAO;GACtB,CAAC;EACH;EACA;EACA;EACA;EACA,WAAW,QAAQ;GAEjB,OAAO,uBADgB,kBAAkB,WAAW,MAAM,KAAK,QAClB;IAC3C;IACA;GACF,CAAC;EACH;EACA,gBAAgB;GACd,OAAO;IACL;IACA;IACA;IACA,gBAAgB,YAAY,EAAE,aAAa,UAAU,IAAI;GAC3D;EACF;CACF;AACF;AAEA,SAAS,iBAAiB,UAAwE;CAChG,MAAM,QAAQ,yBAAyB,KAAK,QAAQ;CACpD,IAAI,CAAC,QAAQ,MAAM,CAAC,MAAM,IACxB;CAGF,OAAO;EACL,YAAY,MAAM;EAClB,UAAU,MAAM;CAClB;AACF;AAEA,SAAS,oBACP,WAC+B;CAC/B,IAAI,CAAC,aAAa,EAAE,mBAAmB,YACrC;CAGF,OAAO,UAAU,cAAc;AACjC;AAEA,SAAS,uBACP,QACA,WAY2B;CAC3B,IAAI,OAAO;CAEX,OAAO,OAAO,YACZ,IAAI,gBAAsC;EACxC,UAAU,OAAO,YAAY;GAC3B,IAAI,MAAM,SAAS,cACjB,QAAQ,MAAM,QAAQ;GAGxB,IAAI,MAAM,SAAS,UACjB,UAAU,IAAI;IACZ;IACA,OAAO,MAAM,QAAQ,OAAO;IAC5B,kBAAkB,MAAM,QAAQ;IAChC,cAAc,MAAM,QAAQ,WAAW;IACvC,YAAY,MAAM,QAAQ,UAAU;IACpC,eAAe,MAAM,QAAQ,UAAU;IACvC,aAAa,eAAe,MAAM,QAAQ,UAAU,WAAW;GACjE,CAAC;GAGH,IAAI,MAAM,SAAS,SACjB,UAAU,KAAK,MAAM,QAAQ,KAAK;GAGpC,WAAW,QAAQ,KAAK;EAC1B;EACA,QAAQ;GACN,UAAU,IAAI,EAAE,KAAK,CAAC;EACxB;CACF,CAAC,CACH;AACF;AAEA,SAAS,aAAa,OAAuC;CAC3D,OAAO;EACL,aAAa,MAAM;EACnB,cAAc,MAAM;EACpB,cAAc;GACZ,WAAW,MAAM;GACjB,YAAY,MAAM;EACpB;EACA,eAAe;GACb,MAAM,MAAM;GACZ,WAAW,MAAM;EACnB;CACF;AACF;AAEA,SAAS,eAAe,OAAyC;CAC/D,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B;CAGF,OAAO;AACT;AAEA,SAAgB,mBACd,YACA,EACE,OACA,QACA,QACA,YACA,SACA,oBASI;CACN,WAAW,QAAQ;EACjB,MAAM;EACN;EACA,MAAM,UAAU;EAChB,SAAS,CAAC;CACZ,CAAC;CACD,WAAW,QAAQ;EACjB,MAAM;EACN;EACA,MAAM,UAAU;EAChB,SAAS,EACP,SAAS,EAAE,MAAM,OAAO,EAC1B;CACF,CAAC;CACD,WAAW,QAAQ;EACjB,MAAM;EACN;EACA,MAAM,UAAU;EAChB,SAAS;GACP,IAAI;GACJ;GACA,4BAAW,IAAI,KAAK,EAAA,CAAE,YAAY;EACpC;CACF,CAAC;CACD,WAAW,QAAQ;EACjB,MAAM;EACN;EACA,MAAM,UAAU;EAChB,SAAS;GACP,IAAI;GACJ;EACF;CACF,CAAC;AACH;AAEA,SAAgB,iBACd,YACA,OACA,QACA,MACM;CACN,WAAW,QAAQ;EACjB,MAAM;EACN;EACA,MAAM,UAAU;EAChB,SAAS;GACP,IAAI;GACJ;EACF;CACF,CAAC;AACH;AAEA,SAAgB,oBACd,YACA,EACE,OACA,QACA,QACA,MACA,YACA,SACA,OACA,kBACA,aACA,UAaI;CACN,MAAM,4BAAY,IAAI,KAAK;CAC3B,MAAM,WAAW;EACf,IAAI;EACJ;EACA;CACF;CACA,MAAM,WAAW;EACf;EACA;EACA,SAAS,EAAE,MAAM,OAAO;EACxB;EACA;CACF;CAEA,WAAW,QAAQ;EACjB,MAAM;EACN;EACA,MAAM,UAAU;EAChB,SAAS;GACP,IAAI;GACJ;EACF;CACF,CAAC;CACD,IAAI,WAAW,KAAA,GACb,WAAW,QAAQ;EACjB,MAAM;EACN;EACA,MAAM,UAAU;EAChB;CACF,CAAyB;CAE3B,WAAW,QAAQ;EACjB,MAAM;EACN;EACA,MAAM,UAAU;EAChB,SAAS;GACP,IAAI;GACJ;GACA,YAAY;GACZ;GACA,YAAY;IACV,QAAQ;IACR,UAAU,CAAC;GACb;GACA,QAAQ;IACN;IACA;IACA,OAAO,CAAC;GACV;GACA;EACF;CACF,CAAC;CACD,WAAW,QAAQ;EACjB,MAAM;EACN;EACA,MAAM,UAAU;EAChB,SAAS;GACP,YAAY;IACV,QAAQ;IACR,UAAU,CAAC;GACb;GACA,QAAQ;IACN;IACA,OAAO,CAAC;GACV;GACA;GACA;GACA,UAAU;IACR,KAAK,CAAC;IACN,MAAM,CAAC;IACP,SAAS,CAAC;GACZ;GACA;EACF;CACF,CAAC;AACH;AAEA,SAAgB,qBAAqB,OAAoC;CACvE,MAAM,cAAc,MAAM,YAAY,SAAS;CAC/C,MAAM,eAAe,MAAM,aAAa,SAAS;CAEjD,OAAO;EACL;EACA;EACA,aAAa,cAAc;EAC3B,mBAAmB,MAAM,YAAY;EACrC,0BAA0B,MAAM,YAAY;EAC5C,KAAK;CACP;AACF;AAEA,SAAgB,uBAAuB,UAAkB,UAAqD;CAC5G,OAAO,GACJ,WAAW,aAAa,QAAQ,EACnC;AACF;AAEA,SAAS,aAAa,QAA4D;CAChF,OAAO,OAAO,YACZ,OAAO,QAAQ,MAAM,CAAC,CACnB,QAAQ,UAA0D,MAAM,OAAO,KAAA,CAAS,CAAC,CACzF,KAAK,CAAC,KAAK,WAAW,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CACpD;AACF;AAEA,SAAS,YAAY,OAA2B;CAC9C,IAAI,UAAU,QAAQ,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,WAC/F,OAAO;CAGT,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,MAAM,QAAO,SAAQ,SAAS,KAAA,CAAS,CAAC,CAAC,IAAI,WAAW;CAGjE,IAAI,iBAAiB,MACnB,OAAO,MAAM,YAAY;CAG3B,IAAI,OAAO,UAAU,UACnB,OAAO,aAAa,KAAgC;CAGtD,OAAO,OAAO,KAAK;AACrB;AAEA,SAAgB,aAAa,QAAyB;CACpD,IAAI,OAAO,WAAW,UACpB,OAAO;CAGT,IAAI,MAAM,QAAQ,MAAM,GACtB,OAAO,OAAO,IAAI,YAAY,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,IAAI;CAG3D,IAAI,CAAC,UAAU,OAAO,WAAW,UAC/B,OAAO;CAGT,MAAM,SAAS;CACf,IAAI,OAAO,OAAO,SAAS,UACzB,OAAO,OAAO;CAEhB,IAAI,OAAO,OAAO,YAAY,UAC5B,OAAO,OAAO;CAEhB,IAAI,OAAO,SACT,OAAO,aAAa,OAAO,OAAO;CAGpC,OAAO;AACT;AAkBA,SAAgB,0BACd,kBACqC;CACrC,IAAI,CAAC,kBAAkB,QACrB;CAGF,OAAO,2BAA2B,iBAAiB,iBAAiB,MAAM,CAAC;AAC7E;AASA,eAAsB,6BACpB,OACA,kBAC6B;CAC7B,IAAI,CAAC,kBAAkB,QACrB;CAGF,IAAI;CACJ,IAAI,OAAO,UAAU,UACnB,IAAI;EACF,SAAS,KAAK,MAAM,KAAK;CAC3B,SAAS,OAAO;EACd,OAAO,4BACL,IAAI,MAAM,yCAAyC,EAAE,OAAO,MAAM,CAAC,GACnE,gBACF;CACF;MAEA,SAAS;CAIX,MAAM,SAAS,MADA,iBAAiB,iBAAiB,MACvB,CAAC,CAAC,YAAY,CAAC,SAAS,MAAM;CACxD,IAAI,CAAC,OAAO,QACV,OAAO,OAAO;CAGhB,MAAM,UAAU,OAAO,OAAO,KAAI,UAAS,KAAK,MAAM,MAAM,KAAK,GAAG,KAAK,OAAO,IAAI,MAAM,SAAS,CAAC,CAAC,KAAK,IAAI;CAC9G,OAAO,4CAA4B,IAAI,MAAM,yCAAyC,SAAS,GAAG,gBAAgB;AACpH;AAEA,SAAS,4BACP,OACA,kBACoB;CACpB,IAAI,iBAAiB,kBAAkB,YACrC,OAAO,iBAAiB;CAG1B,IAAI,iBAAiB,kBAAkB,QAAQ;EAC7C,iBAAiB,QAAQ,KAAK,MAAM,OAAO;EAC3C;CACF;CAEA,MAAM;AACR;AAEA,SAAgB,WAAW,GAAG,QAAuD;CACnF,MAAM,UAAU,OAAO,QAAQ,UAA2B,OAAO,UAAU,QAAQ;CACnF,IAAI,QAAQ,WAAW,GACrB;CAGF,OAAO,QAAQ,QAAQ,KAAK,UAAU,MAAM,OAAO,CAAC;AACtD;;;ACn5BA,MAAM,WAAW;AACjB,MAAM,WAAW;AAuEjB,IAAa,iBAAb,cAAoC,MAAM;CACxC;CACA;CAEA,YAAY,SAA6B;EACvC,MAAM;GACJ,IAAI,QAAQ;GACZ,MAAM,QAAQ,QAAQ,QAAQ;GAC9B,aAAa,QAAQ;GACrB,cAAc;GACd,OAAO,gBAAgB;IACrB,SAAS,WAAW,OAAO;IAC3B,UAAU;GACZ,CAAC;EACH,CAAC;EACD,KAAK,UAAU;CACjB;CAEA,iBAA0B,QAAsB;EAC9C,MAAM,iBAAiB,MAAM;EAC7B,KAAKA,UAAU;CACjB;CAEA,iBAA0B;EACxB,OAAO;CACT;CAEA,MAAM,SACJ,UACA,SAC6B;EAC7B,MAAM,SAAS,aAAa,QAAQ;EACpC,MAAM,QAAQ,SAAS,SAAS,WAAW;EAC3C,MAAM,iBAAiB,SAAS,kBAAkB,IAAI,eAAe;EACrE,MAAM,eAAe,SAAS,eAAe,aAAa,QAAQ,YAAY,IAAI,KAAA;EAClF,MAAM,YAAY,wBAAwB;GACxC,SAAS,KAAK;GACd,WAAW,KAAK;GAChB,UAAU;GACV,SAAS,WAAW,KAAK,OAAO;GAChC;GACA;GACA;GACA,WAAW;GACX,QAAQ;GACR;GACA;GACA,UAAU,SAAS;GACnB,gBAAgB,SAAS;GACzB,gBAAgB,SAAS;GACzB,UAAU,SAAS;GACnB,cAAc,SAAS;GACvB,QAAQ,KAAKA;EACf,CAAC;EACD,IAAI;EACJ,IAAI;GACF,SAAS,MAAM,UAAU,cAAc,kBAAkB,QAAQ,KAAK,SAAS,WAAW,OAAO,CAAC;GAClG,UAAU,YAAY,MAAM;EAC9B,SAAS,OAAO;GACd,UAAU,KAAK,KAAK;GACpB,MAAM;EACR;EAEA,OAAO,aAAqB;GAC1B;GACA;GACA,UAAU;GACV;GACA,SAAS;IAAE,GAAG,UAAU,cAAc;IAAG,kBAAkB,SAAS;GAAwB;EAC9F,CAAC;CACH;CAEA,MAAM,OACJ,UACA,SACoC;EACpC,MAAM,QAAQ,SAAS,SAAS,WAAW;EAC3C,MAAM,SAAS,aAAa,QAAQ;EACpC,MAAM,UAAU,WAAW,KAAK,OAAO;EACvC,MAAM,iBAAiB,SAAS,kBAAkB,IAAI,eAAe;EACrE,MAAM,eAAe,SAAS,eAAe,aAAa,QAAQ,YAAY,IAAI,KAAA;EAClF,MAAM,YAAY,wBAAwB;GACxC,SAAS,KAAK;GACd,WAAW,KAAK;GAChB,UAAU;GACV;GACA;GACA;GACA;GACA,WAAW;GACX,QAAQ;GACR;GACA;GACA,UAAU,SAAS;GACnB,gBAAgB,SAAS;GACzB,gBAAgB,SAAS;GACzB,UAAU,SAAS;GACnB,cAAc,SAAS;GACvB,QAAQ,KAAKA;EACf,CAAC;EAED,OAAO,mBAA2B;GAChC;GACA;GACA;GACA,UAAU;GACV,QAAQ,UAAU,WAAW,wBAAwB,QAAQ,KAAK,SAAS,OAAO,WAAW,OAAO,CAAC;GACrG,SAAS;IAAE,GAAG,UAAU,cAAc;IAAG,kBAAkB,SAAS;GAAwB;EAC9F,CAAC;CACH;CAEA,MAAM,eACJ,YACA,SAC6B;EAC7B,MAAM,OAAO,yBAAyB,UAAU;EAChD,OAAO,KAAK,SAAS,KAAK,SAAS,6BAA6B,MAAM,OAAO,CAAC;CAChF;CAEA,MAAM,aACJ,YACA,SACoC;EACpC,MAAM,OAAO,yBAAyB,UAAU;EAChD,OAAO,KAAK,OAAO,KAAK,SAAS,6BAA6B,MAAM,OAAO,CAAC;CAC9E;AACF;AAEA,SAAS,yBAAyB,YAAgE;CAChG,IAAI,CAAC,SAAS,UAAU,KAAK,EAAE,aAAa,aAC1C,MAAM,IAAI,MAAM,mDAAmD;CAGrE,MAAM,eAAe,eAAe;CACpC,MAAM,cAAc,cAAc;CAElC,IAAI,gBAAgB,aAClB,MAAM,IAAI,MAAM,sFAAsF;CAGxG,IAAI,cAAc;EAChB,IAAI,OAAO,WAAW,cAAc,UAClC,MAAM,IAAI,MAAM,uDAAuD;EAEzE,OAAO;CACT;CAEA,IAAI,aAAa;EACf,IAAI,WAAW,aAAa,MAC1B,MAAM,IAAI,MAAM,gEAAgE;EAElF,OAAO;CACT;CAEA,MAAM,IAAI,MAAM,qEAAqE;AACvF;AAEA,SAAS,6BACP,YACA,SACkC;CAClC,MAAM,aAA+B,EAAE,GAAG,SAAS,WAAW;CAE9D,IAAI,eAAe,cAAc,OAAO,WAAW,cAAc,UAAU;EACzE,WAAW,SAAS,WAAW;EAC/B,IAAI,WAAW,gBAAgB,KAAA,GAC7B,WAAW,cAAc,WAAW;EAEtC,IAAI,WAAW,oBAAoB,KAAA,GACjC,WAAW,kBAAkB,WAAW;CAE5C,OACE,WAAW,WAAW;CAGxB,OAAO;EACL,GAAG;EACH;CACF;AACF;AAEA,eAAe,kBACb,QACA,SACA,WACA,YACiC;CACjC,IAAI,OAAO;CACX,IAAI;CACJ,MAAM,QAAQ,2BAA2B;CAEzC,WAAW,MAAM,WAAW,sBAC1B,UAAU,QAAQ,SAAS,YAAY,eAAe,YAAY,QAAQ,UAAU,GACpF,SACF,GAAG;EACD,MAAM,OAAO,OAAO;EACpB,IAAI,QAAQ,SAAS,UAAU;GAC7B,IAAI,QAAQ,YAAY,WACtB,MAAM,IAAI,MAAM,QAAQ,OAAO,KAAK,IAAI,KAAK,gCAAgC,QAAQ,SAAS;GAGhG,OAAO,QAAQ;GACf,wBAAwB,0BAA0B,OAAO;EAC3D;CACF;CAEA,MAAM,SAAS,MAAM,OAAO;CAC5B,MAAM,SAAS,MAAM,6BACnB,0BAA0B,KAAA,IAAY,OAAO,uBAC7C,YAAY,gBACd;CAEA,OAAO;EACL,SAAS,CAAC;GAAE,MAAM;GAAQ;EAAK,CAAC;EAChC,cAAc;GAAE,SAAS;GAAQ,KAAK;EAAO;EAC7C,OAAO,MAAM,UAAU;EACvB,UAAU;GACR,IAAI,WAAW;GACf,SAAS,WAAW,OAAO;GAC3B,2BAAW,IAAI,KAAK;EACtB;EACA,kBAAkB,0BAA0B,SAAS,MAAM;EAC3D,aAAa,qBAAqB,SAAS,MAAM;EACjD;CACF;AACF;AAEA,SAAS,wBACP,QACA,SACA,OACA,WACA,YAC2B;CAC3B,OAAO,IAAI,eAA0B,EACnC,OAAO,OAAM,eAAc;EACzB,MAAM,SAAS,WAAW;EAC1B,MAAM,aAAa,WAAW;EAC9B,MAAM,UAAU,WAAW,OAAO;EAClC,MAAM,QAAQ,2BAA2B;EACzC,IAAI,OAAO;EACX,IAAI;EACJ,IAAI,WAAW;EAEf,IAAI;GACF,mBAAmB,YAAY;IAC7B;IACA;IACA;IACA;IACA;IACA,kBAAkB,0BAA0B,SAAS,MAAM,OAAO,CAAC;GACrE,CAAC;GAED,WAAW,MAAM,WAAW,sBAC1B,UAAU,QAAQ,SAAS,YAAY,eAAe,YAAY,QAAQ,UAAU,GACpF,SACF,GAAG;IACD,MAAM,OAAO,OAAO;IACpB,MAAM,QAAQ,aAAa,OAAO;IAClC,IAAI,OAAO;KACT,WAAW;KACX,QAAQ;KACR,iBAAiB,YAAY,OAAO,QAAQ,KAAK;IACnD;IAEA,IAAI,QAAQ,SAAS,UAAU;KAC7B,IAAI,QAAQ,YAAY,WACtB,MAAM,IAAI,MAAM,QAAQ,OAAO,KAAK,IAAI,KAAK,gCAAgC,QAAQ,SAAS;KAGhG,IAAI,CAAC,YAAY,QAAQ,QAAQ;MAC/B,QAAQ,QAAQ;MAChB,iBAAiB,YAAY,OAAO,QAAQ,QAAQ,MAAM;KAC5D;KACA,wBAAwB,0BAA0B,OAAO;IAC3D;GACF;GAEA,MAAM,SAAS,MAAM,OAAO;GAC5B,MAAM,mBAAmB,0BAA0B,SAAS,MAAM;GAClE,oBAAoB,YAAY;IAC9B;IACA;IACA;IACA;IACA;IACA;IACA,OAAO,MAAM,qBAAqB;IAClC;IACA,aAAa,qBAAqB,SAAS,MAAM;IACjD,QAAQ,MAAM,6BACZ,0BAA0B,KAAA,IAAY,OAAO,uBAC7C,YAAY,gBACd;GACF,CAAC;GACD,WAAW,MAAM;EACnB,SAAS,OAAO;GACd,WAAW,QAAQ;IACjB,MAAM;IACN;IACA,MAAM,UAAU;IAChB,SAAS,EAAE,MAAM;GACnB,CAAC;GACD,WAAW,MAAM;EACnB;CACF,EACF,CAAC;AACH;AAEA,SAAS,UACP,QACA,SACA,QACA,YAC2B;CAC3B,MAAM,kBAAkB,sBAAsB,MAAM;CACpD,MAAM,eAAiC;EACrC,GAAG,QAAQ;EACX,GAAG,YAAY;CACjB;CACA,MAAM,eAAe,0BAA0B,YAAY,gBAAgB;CAC3E,IAAI,cACF,aAAa,eAAe;EAC1B,MAAM;EACN,QAAQ;CACV;CAEF,IAAI,iBACF,aAAa,kBAAkB;CAGjC,OAAO,MAAM;EACX;EACA,SAAS;CACX,CAAC;AACH;AAEA,SAAS,0BAA0B,SAA8B;CAC/D,IAAI,QAAQ,SAAS,UACnB;CAGF,OAAQ,QAA4C;AACtD;AAEA,gBAAgB,sBACd,UACA,WAC2B;CAC3B,WAAW,MAAM,WAAW,UAAU;EACpC,0BAA0B,SAAS,SAAS;EAC5C,MAAM;CACR;AACF;AAEA,SAAS,0BAAkC,SAAqB,WAA4C;CAC1G,KAAK,MAAM,YAAY,mBAAmB,OAAO,GAC/C,UAAU,cAAc,QAAQ;CAGlC,KAAK,MAAM,cAAc,qBAAqB,OAAO,GACnD,UAAU,YAAY,UAAU;AAEpC;AAEA,SAAS,mBAAmB,SAAuF;CACjH,IAAI,QAAQ,SAAS,aACnB,OAAO,CAAC;CAGV,OAAO,iBAAiB,QAAQ,OAAO,CAAC,CACrC,OAAO,QAAQ,CAAC,CAChB,QAAO,UAAS,MAAM,SAAS,cAAc,OAAO,MAAM,OAAO,YAAY,OAAO,MAAM,SAAS,QAAQ,CAAC,CAC5G,KAAI,WAAU;EACb,YAAY,MAAM;EAClB,UAAU,MAAM;EAChB,OAAO,MAAM;CACf,EAAE;AACN;AAEA,SAAS,qBAAqB,SAAyF;CACrH,IAAI,QAAQ,SAAS,QACnB,OAAO,CAAC;CAGV,OAAO,iBAAiB,QAAQ,OAAO,CAAC,CACrC,OAAO,QAAQ,CAAC,CAChB,QAAO,UAAS,MAAM,SAAS,iBAAiB,OAAO,MAAM,gBAAgB,QAAQ,CAAC,CACtF,KAAI,WAAU;EACb,YAAY,MAAM;EAClB,QAAQ,MAAM;EACd,SAAS,MAAM,aAAa;CAC9B,EAAE;AACN;AAEA,SAAS,iBAAiB,SAA6B;CACrD,IAAI,CAAC,SAAS,OAAO,GACnB,OAAO,CAAC;CAGV,OAAO,MAAM,QAAQ,QAAQ,OAAO,IAAI,QAAQ,UAAU,CAAC;AAC7D;AAEA,SAAS,SAAS,OAAkD;CAClE,OAAO,UAAU,QAAQ,OAAO,UAAU;AAC5C;AAEA,SAAS,sBAAsB,QAA8D;CAC3F,IAAI,CAAC,QACH;CAGF,MAAM,aAAa,IAAI,gBAAgB;CACvC,IAAI,OAAO,SAAS;EAClB,WAAW,MAAM,OAAO,MAAM;EAC9B,OAAO;CACT;CAEA,OAAO,iBAAiB,eAAe,WAAW,MAAM,OAAO,MAAM,GAAG,EAAE,MAAM,KAAK,CAAC;CACtF,OAAO;AACT;AAEA,SAAS,WAAW,SAAqC;CACvD,OAAO,QAAQ,YAAY,SAAS;AACtC;AAEA,SAAS,6BAA6B;CACpC,MAAM,qCAAqB,IAAI,IAA+B;CAC9D,IAAI,cAAiC,CAAC;CAEtC,OAAO;EACL,OAAO,SAAqB;GAC1B,IAAI,QAAQ,SAAS,aAAa;IAChC,mBAAmB,IAAI,QAAQ,QAAQ,IAAI,uBAAuB,QAAQ,QAAQ,KAAK,CAAC;IACxF;GACF;GAEA,IAAI,QAAQ,SAAS,UACnB,cAAc;IACZ,GAAG,uBAAuB,QAAQ,KAAK;IACvC,cAAc,QAAQ;IACtB,YAAY,QAAQ;GACtB;EAEJ;EACA,SAA4B;GAC1B,MAAM,iBAAiB,wBAAwB,kBAAkB;GAEjE,IAAI,YAAY,WAAW,GACzB,OAAO;IACL,GAAG;IACH,aAAa,YAAY,eAAe,eAAe;IACvD,cAAc,YAAY,gBAAgB,eAAe;IACzD,sBAAsB,YAAY,wBAAwB,eAAe;IACzE,0BAA0B,YAAY,4BAA4B,eAAe;GACnF;GAGF,OAAO;EACT;EACA,YAAqB;GACnB,OAAO,UAAU,KAAK,OAAO,CAAC;EAChC;EACA,uBAA2C;GACzC,OAAO,qBAAqB,UAAU,KAAK,OAAO,CAAC,CAAC;EACtD;CACF;AACF;AAEA,SAAS,wBAAwB,oBAAuE;CACtG,OAAO,CAAC,GAAG,mBAAmB,OAAO,CAAC,CAAC,CAAC,QAA2B,QAAQ,SAAS;EAClF,OAAO,cAAc,YAAY,OAAO,aAAa,KAAK,WAAW;EACrE,OAAO,eAAe,YAAY,OAAO,cAAc,KAAK,YAAY;EACxE,OAAO,uBAAuB,YAAY,OAAO,sBAAsB,KAAK,oBAAoB;EAChG,OAAO,2BAA2B,YAAY,OAAO,0BAA0B,KAAK,wBAAwB;EAC5G,OAAO;CACT,GAAG,CAAC,CAAC;AACP;AAEA,SAAS,uBAAuB,OAAmC;CACjE,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B,OAAO,CAAC;CAGV,MAAM,SAAS;CACf,OAAO;EACL,aAAa,cAAc,OAAO,YAAY;EAC9C,cAAc,cAAc,OAAO,aAAa;EAChD,sBAAsB,cAAc,OAAO,uBAAuB;EAClE,0BAA0B,cAAc,OAAO,2BAA2B;CAC5E;AACF;AAEA,SAAS,YAAY,OAAmC;CACtD,OACE,MAAM,gBAAgB,KAAA,KACtB,MAAM,iBAAiB,KAAA,KACvB,MAAM,yBAAyB,KAAA,KAC/B,MAAM,6BAA6B,KAAA,KACnC,MAAM,iBAAiB,KAAA;AAE3B;AAEA,SAAS,YAAY,MAA0B,OAA+C;CAC5F,IAAI,SAAS,KAAA,GACX,OAAO;CAET,IAAI,UAAU,KAAA,GACZ,OAAO;CAGT,OAAO,OAAO;AAChB;AAEA,SAAS,UAAU,OAAmC;CACpD,MAAM,UAAU,MAAM;CACtB,MAAM,YAAY,MAAM;CACxB,MAAM,aAAa,MAAM;CACzB,MAAM,mBAAmB,WAAW,SAAS,WAAW,UAAU;CAClE,MAAM,eAAe,MAAM;CAE3B,OAAO;EACL,aAAa;GACX,OAAO;GACP;GACA;GACA;EACF;EACA,cAAc;GACZ,OAAO;GACP,MAAM;EACR;CACF;AACF;AAEA,SAAS,0BAA0B,SAA6B,OAA6C;CAC3G,MAAM,eAAe,QAAQ;CAE7B,OAAO,uBAAuB,UAAU;EACtC,cAAc,OAAO;EACrB,OAAO,WAAW,OAAO;EACzB,KAAK,cAAc;EACnB,gBAAgB,cAAc;EAC9B,UAAU,cAAc;EACxB,cAAc,cAAc;EAC5B,iBAAiB,cAAc;EAC/B;CACF,CAAC;AACH;AAEA,SAAS,qBAAqB,SAA6B,OAAoD;CAC7G,IAAI,OAAO,OAAO,iBAAiB,UACjC;CAGF,OAAO;EACL,UAAU;EACV,OAAO,WAAW,OAAO;EACzB,eAAe,MAAM;EACrB,UAAU;EACV,cAAc;GACZ,QAAQ;GACR,aAAa;GACb,cAAc;GACd,OAAO;GACP,YAAY,MAAM;EACpB;CACF;AACF;AAEA,SAAS,aAAa,SAA6B;CACjD,IAAI,QAAQ,SAAS,gBACnB,OAAO;CAGT,MAAM,QAAQ,QAAQ;CAQtB,IAAI,MAAM,SAAS,yBAAyB,MAAM,OAAO,SAAS,cAChE,OAAO,MAAM,MAAM,QAAQ;CAG7B,OAAO;AACT;AAEA,SAAS,cAAc,OAAoC;CACzD,OAAO,OAAO,UAAU,WAAW,QAAQ,KAAA;AAC7C"}
1
+ {"version":3,"file":"index.js","names":["#mastra"],"sources":["../src/utils.ts","../src/index.ts"],"sourcesContent":["import { ReadableStream, TransformStream } from 'node:stream/web';\nimport type { ReadableStreamDefaultController } from 'node:stream/web';\n\nimport type { AgentExecutionOptionsBase, MastraLanguageModel, PublicStructuredOutputOptions } from '@mastra/core/agent';\nimport { MessageList } from '@mastra/core/agent/message-list';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { EntityType, executeWithContext, getOrCreateSpan, SpanType } from '@mastra/core/observability';\nimport type {\n AIModelGenerationSpan,\n CostContext,\n IModelSpanTracker,\n Span,\n UsageStats,\n} from '@mastra/core/observability';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '@mastra/core/schema';\nimport type { ChunkType, FullOutput, JSONValue, LanguageModelUsage, ProviderMetadata } from '@mastra/core/stream';\nimport { ChunkFrom, MastraModelOutput } from '@mastra/core/stream';\ntype MastraModelOutputOptions<OUTPUT = undefined> = ConstructorParameters<\n typeof MastraModelOutput<OUTPUT>\n>[0]['options'];\n\nexport type SDKAgentRunOptions<OUTPUT = unknown> = AgentExecutionOptionsBase<OUTPUT> & {\n signal?: AbortSignal;\n structuredOutput?: OUTPUT extends {} ? PublicStructuredOutputOptions<OUTPUT> : never;\n [key: string]: unknown;\n};\n\nexport type V3Usage = {\n inputTokens: {\n total: number | undefined;\n noCache?: number;\n cacheRead?: number;\n cacheWrite?: number;\n };\n outputTokens: {\n total: number | undefined;\n text?: number;\n };\n};\n\nexport type SDKModelGenerateResult = {\n content: Array<{ type: 'text'; text: string }>;\n finishReason: { unified: 'stop'; raw: 'stop' };\n usage: V3Usage;\n response: {\n id: string;\n modelId: string;\n timestamp: Date;\n };\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n};\n\nexport function createNoopModel({ modelId, provider }: { modelId: string; provider: string }): MastraLanguageModel {\n return {\n modelId,\n provider,\n specificationVersion: 'v3',\n supportedUrls: {},\n doGenerate: async () => createNoopStreamResult(),\n doStream: async () => createNoopStreamResult(),\n } as MastraLanguageModel;\n}\n\nfunction createNoopStreamResult(): { stream: ReadableStream<never> } {\n return {\n stream: new ReadableStream<never>({\n start: controller => controller.close(),\n }),\n };\n}\n\nexport function createCompletedMastraStream({\n runId,\n prompt,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n}: {\n runId: string;\n prompt: string;\n text: string;\n responseId: string;\n modelId: string;\n usage: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n}): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start(controller) {\n const textId = globalThis.crypto.randomUUID();\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata,\n });\n if (text) {\n enqueueTextDelta(controller, runId, textId, text);\n }\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n });\n controller.close();\n },\n });\n}\n\nexport function createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId,\n provider,\n stream,\n responseText = '',\n options,\n}: {\n messages: MessageListInput;\n runId: string;\n modelId: string;\n provider: string;\n stream: ReadableStream<ChunkType>;\n responseText?: string;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): MastraModelOutput<OUTPUT> {\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n messageList.add([{ role: 'assistant', content: responseText }], 'response');\n\n return new MastraModelOutput<OUTPUT>({\n model: {\n modelId,\n provider,\n version: 'v3',\n },\n stream: stream as ReadableStream<ChunkType<OUTPUT>>,\n messageList,\n messageId: globalThis.crypto.randomUUID(),\n options: {\n ...options,\n runId,\n },\n });\n}\n\nexport function toFullOutput<OUTPUT>({\n messages,\n runId,\n provider,\n result,\n options,\n}: {\n messages: MessageListInput;\n runId: string;\n provider: string;\n result: SDKModelGenerateResult;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): Promise<FullOutput<OUTPUT>> {\n const text = result.content.map(part => part.text).join('');\n const stream = createCompletedMastraStream({\n runId,\n prompt: promptToText(messages),\n text,\n responseId: result.response.id,\n modelId: result.response.modelId,\n usage: toLanguageModelUsage(result.usage),\n providerMetadata: result.providerMetadata,\n costContext: result.costContext,\n object: result.object,\n });\n\n return createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId: result.response.modelId,\n provider,\n stream,\n responseText: text,\n options,\n }).getFullOutput();\n}\n\nexport type SDKAgentTelemetryOptions<OUTPUT = unknown> = {\n agentId: string;\n agentName: string;\n provider: string;\n modelId: string;\n messages: MessageListInput;\n prompt: string;\n runId: string;\n streaming: boolean;\n method: 'generate' | 'stream';\n requestContext: RequestContext;\n instructions?: string;\n maxSteps?: SDKAgentRunOptions<OUTPUT>['maxSteps'];\n tracingOptions?: SDKAgentRunOptions<OUTPUT>['tracingOptions'];\n tracingContext?: SDKAgentRunOptions<OUTPUT>['tracingContext'];\n onFinish?: SDKAgentRunOptions<OUTPUT>['onFinish'];\n onStepFinish?: SDKAgentRunOptions<OUTPUT>['onStepFinish'];\n mastra?: Mastra;\n};\n\nexport type SDKAgentTelemetry<OUTPUT = unknown> = {\n execute<T>(fn: () => Promise<T>): Promise<T>;\n endGenerate(result: SDKModelGenerateResult): void;\n fail(error: unknown): void;\n startToolCall(input: SDKAgentToolCallInput): void;\n endToolCall(output: SDKAgentToolCallOutput): void;\n wrapStream(stream: ReadableStream<ChunkType>): ReadableStream<ChunkType>;\n outputOptions(): Partial<MastraModelOutputOptions<OUTPUT>>;\n};\n\nexport type SDKAgentToolCallInput = {\n toolCallId: string;\n toolName: string;\n input?: unknown;\n};\n\nexport type SDKAgentToolCallOutput = {\n toolCallId: string;\n output?: unknown;\n isError?: boolean;\n};\n\nexport function createSDKAgentTelemetry<OUTPUT>({\n agentId,\n agentName,\n provider,\n modelId,\n messages,\n prompt,\n runId,\n streaming,\n method,\n requestContext,\n instructions,\n maxSteps,\n tracingOptions,\n tracingContext,\n onFinish,\n onStepFinish,\n mastra,\n}: SDKAgentTelemetryOptions<OUTPUT>): SDKAgentTelemetry<OUTPUT> {\n const agentSpan = getOrCreateSpan({\n type: SpanType.AGENT_RUN,\n name: `agent run: '${agentId}'`,\n entityType: EntityType.AGENT,\n entityId: agentId,\n entityName: agentName,\n input: messages,\n attributes: {\n prompt,\n instructions,\n maxSteps,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n },\n tracingOptions,\n tracingContext,\n requestContext,\n mastra,\n });\n\n const modelSpan = agentSpan?.createChildSpan({\n type: SpanType.MODEL_GENERATION,\n name: `llm: '${modelId}'`,\n input: {\n messages,\n },\n attributes: {\n model: modelId,\n provider,\n streaming,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n },\n requestContext,\n });\n const modelSpanTracker = getModelSpanTracker(modelSpan);\n const toolSpans = new Map<string, Span<SpanType.TOOL_CALL> | Span<SpanType.MCP_TOOL_CALL>>();\n\n let ended = false;\n\n const startToolCall = ({ toolCallId, toolName, input }: SDKAgentToolCallInput) => {\n if (toolSpans.has(toolCallId)) {\n return;\n }\n\n const parentSpan = agentSpan ?? modelSpan;\n if (!parentSpan) {\n return;\n }\n\n const mcp = parseMcpToolName(toolName);\n const span = mcp\n ? parentSpan.createChildSpan({\n type: SpanType.MCP_TOOL_CALL,\n name: `mcp_tool: '${toolName}' on '${mcp.serverName}'`,\n input,\n entityType: EntityType.TOOL,\n entityId: toolName,\n entityName: toolName,\n attributes: {\n mcpServer: mcp.serverName,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n toolCallId,\n },\n requestContext,\n })\n : parentSpan.createChildSpan({\n type: SpanType.TOOL_CALL,\n name: `tool: '${toolName}'`,\n input,\n entityType: EntityType.TOOL,\n entityId: toolName,\n entityName: toolName,\n attributes: {\n toolType: 'tool',\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n toolCallId,\n },\n requestContext,\n });\n\n toolSpans.set(toolCallId, span);\n };\n\n const endToolCall = ({ toolCallId, output, isError }: SDKAgentToolCallOutput) => {\n const span = toolSpans.get(toolCallId);\n if (!span) {\n return;\n }\n\n toolSpans.delete(toolCallId);\n if (isError) {\n span.error({\n error:\n output instanceof Error ? output : new Error(typeof output === 'string' ? output : 'SDK tool call failed'),\n attributes: { success: false },\n });\n return;\n }\n\n span.end({\n output,\n attributes: { success: true },\n });\n };\n\n const closeOpenToolSpans = (success: boolean, error?: unknown) => {\n for (const [toolCallId, span] of toolSpans) {\n toolSpans.delete(toolCallId);\n if (success) {\n span.end({ attributes: { success: true } });\n continue;\n }\n\n const normalized = error instanceof Error ? error : new Error(String(error ?? 'SDK agent run failed'));\n span.error({ error: normalized, attributes: { success: false } });\n }\n };\n\n const endModel = ({\n text,\n usage,\n providerMetadata,\n finishReason = 'stop',\n responseId,\n responseModel,\n costContext,\n }: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => {\n if (modelSpanTracker) {\n modelSpanTracker.endGeneration({\n output: {\n text,\n },\n attributes: {\n finishReason,\n responseId,\n responseModel,\n costContext,\n },\n usage,\n providerMetadata,\n });\n return;\n }\n\n modelSpan?.end({\n output: {\n text,\n },\n attributes: {\n finishReason,\n responseId,\n responseModel,\n usage: usage ? toUsageStats(usage) : undefined,\n costContext,\n },\n });\n };\n\n const end = (result: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => {\n if (ended) {\n return;\n }\n\n ended = true;\n closeOpenToolSpans(true);\n endModel(result);\n agentSpan?.end({\n output: {\n text: result.text,\n },\n });\n };\n\n const fail = (error: unknown) => {\n if (ended) {\n return;\n }\n\n ended = true;\n const normalized = error instanceof Error ? error : new Error(String(error));\n closeOpenToolSpans(false, normalized);\n if (modelSpanTracker) {\n modelSpanTracker.reportGenerationError({ error: normalized });\n } else {\n modelSpan?.error({ error: normalized });\n }\n agentSpan?.error({ error: normalized });\n };\n\n return {\n execute: fn => executeWithContext({ span: modelSpan ?? agentSpan, fn }),\n endGenerate(result) {\n end({\n text: result.content.map(part => part.text).join(''),\n usage: toLanguageModelUsage(result.usage),\n providerMetadata: result.providerMetadata,\n finishReason: result.finishReason.unified,\n responseId: result.response.id,\n responseModel: result.response.modelId,\n costContext: result.costContext,\n });\n },\n fail,\n startToolCall,\n endToolCall,\n wrapStream(stream) {\n const trackedStream = (modelSpanTracker?.wrapStream(stream) ?? stream) as ReadableStream<ChunkType>;\n return wrapStreamForAgentSpan(trackedStream, {\n end,\n fail,\n });\n },\n outputOptions() {\n return {\n onFinish,\n onStepFinish,\n requestContext,\n tracingContext: agentSpan ? { currentSpan: agentSpan } : tracingContext,\n };\n },\n };\n}\n\nfunction parseMcpToolName(toolName: string): { serverName: string; toolName: string } | undefined {\n const match = /^mcp__([^_].*?)__(.+)$/.exec(toolName);\n if (!match?.[1] || !match[2]) {\n return undefined;\n }\n\n return {\n serverName: match[1],\n toolName: match[2],\n };\n}\n\nfunction getModelSpanTracker(\n modelSpan: Span<SpanType.MODEL_GENERATION> | AIModelGenerationSpan | undefined,\n): IModelSpanTracker | undefined {\n if (!modelSpan || !('createTracker' in modelSpan)) {\n return undefined;\n }\n\n return modelSpan.createTracker();\n}\n\nfunction wrapStreamForAgentSpan(\n stream: ReadableStream<ChunkType>,\n telemetry: {\n end: (result: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => void;\n fail: (error: unknown) => void;\n },\n): ReadableStream<ChunkType> {\n let text = '';\n\n return stream.pipeThrough(\n new TransformStream<ChunkType, ChunkType>({\n transform(chunk, controller) {\n if (chunk.type === 'text-delta') {\n text += chunk.payload.text;\n }\n\n if (chunk.type === 'finish') {\n telemetry.end({\n text,\n usage: chunk.payload.output.usage,\n providerMetadata: chunk.payload.providerMetadata,\n finishReason: chunk.payload.stepResult.reason,\n responseId: chunk.payload.response?.id,\n responseModel: chunk.payload.response?.modelId,\n costContext: getCostContext(chunk.payload.metadata?.costContext),\n });\n }\n\n if (chunk.type === 'error') {\n telemetry.fail(chunk.payload.error);\n }\n\n controller.enqueue(chunk);\n },\n flush() {\n telemetry.end({ text });\n },\n }),\n );\n}\n\nfunction toUsageStats(usage: LanguageModelUsage): UsageStats {\n return {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n inputDetails: {\n cacheRead: usage.cachedInputTokens,\n cacheWrite: usage.cacheCreationInputTokens,\n },\n outputDetails: {\n text: usage.outputTokens,\n reasoning: usage.reasoningTokens,\n },\n };\n}\n\nfunction getCostContext(value: unknown): CostContext | undefined {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n\n return value as CostContext;\n}\n\nexport function enqueueStartChunks(\n controller: ReadableStreamDefaultController<ChunkType>,\n {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata,\n }: {\n runId: string;\n prompt: string;\n textId: string;\n responseId: string;\n modelId: string;\n providerMetadata?: ProviderMetadata;\n },\n): void {\n controller.enqueue({\n type: 'start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {},\n });\n controller.enqueue({\n type: 'step-start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n request: { body: prompt },\n },\n });\n controller.enqueue({\n type: 'response-metadata',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: responseId,\n modelId,\n timestamp: new Date().toISOString(),\n },\n });\n controller.enqueue({\n type: 'text-start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n providerMetadata,\n },\n });\n}\n\nexport function enqueueTextDelta(\n controller: ReadableStreamDefaultController<ChunkType>,\n runId: string,\n textId: string,\n text: string,\n): void {\n controller.enqueue({\n type: 'text-delta',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n text,\n },\n });\n}\n\nexport function enqueueFinishChunks(\n controller: ReadableStreamDefaultController<ChunkType>,\n {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n }: {\n runId: string;\n prompt: string;\n textId: string;\n text: string;\n responseId: string;\n modelId: string;\n usage: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n },\n): void {\n const timestamp = new Date();\n const response = {\n id: responseId,\n modelId,\n timestamp,\n };\n const metadata = {\n providerMetadata,\n costContext,\n request: { body: prompt },\n modelId,\n timestamp,\n };\n\n controller.enqueue({\n type: 'text-end',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n providerMetadata,\n },\n });\n if (object !== undefined) {\n controller.enqueue({\n type: 'object-result',\n runId,\n from: ChunkFrom.AGENT,\n object,\n } as unknown as ChunkType);\n }\n controller.enqueue({\n type: 'step-finish',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: responseId,\n providerMetadata,\n totalUsage: usage,\n response,\n stepResult: {\n reason: 'stop',\n warnings: [],\n },\n output: {\n text,\n usage,\n steps: [],\n },\n metadata,\n },\n });\n controller.enqueue({\n type: 'finish',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n stepResult: {\n reason: 'stop',\n warnings: [],\n },\n output: {\n usage,\n steps: [],\n },\n metadata,\n providerMetadata,\n messages: {\n all: [],\n user: [],\n nonUser: [],\n },\n response,\n },\n });\n}\n\nexport function toLanguageModelUsage(usage: V3Usage): LanguageModelUsage {\n const inputTokens = usage.inputTokens.total ?? 0;\n const outputTokens = usage.outputTokens.total ?? 0;\n\n return {\n inputTokens,\n outputTokens,\n totalTokens: inputTokens + outputTokens,\n cachedInputTokens: usage.inputTokens.cacheRead,\n cacheCreationInputTokens: usage.inputTokens.cacheWrite,\n raw: usage,\n };\n}\n\nexport function createProviderMetadata(provider: string, metadata: Record<string, unknown>): ProviderMetadata {\n return {\n [provider]: toJsonRecord(metadata),\n };\n}\n\nfunction toJsonRecord(record: Record<string, unknown>): Record<string, JSONValue> {\n return Object.fromEntries(\n Object.entries(record)\n .filter((entry): entry is [string, Exclude<unknown, undefined>] => entry[1] !== undefined)\n .map(([key, value]) => [key, toJsonValue(value)]),\n );\n}\n\nfunction toJsonValue(value: unknown): JSONValue {\n if (value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.filter(item => item !== undefined).map(toJsonValue);\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === 'object') {\n return toJsonRecord(value as Record<string, unknown>);\n }\n\n return String(value);\n}\n\nexport function promptToText(prompt: unknown): string {\n if (typeof prompt === 'string') {\n return prompt;\n }\n\n if (Array.isArray(prompt)) {\n return prompt.map(promptToText).filter(Boolean).join('\\n');\n }\n\n if (!prompt || typeof prompt !== 'object') {\n return '';\n }\n\n const record = prompt as Record<string, unknown>;\n if (typeof record.text === 'string') {\n return record.text;\n }\n if (typeof record.content === 'string') {\n return record.content;\n }\n if (record.content) {\n return promptToText(record.content);\n }\n\n return '';\n}\n\nexport function withStructuredOutputPrompt<OUTPUT>(\n prompt: string,\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): string {\n if (!structuredOutput?.schema) {\n return prompt;\n }\n\n const schema = standardSchemaToJSONSchema(toStandardSchema(structuredOutput.schema));\n const instructions =\n structuredOutput.instructions ??\n 'Return only valid JSON that matches the JSON Schema. Do not include markdown fences or explanatory text.';\n\n return `${prompt}\\n\\n${instructions}\\n\\nJSON Schema:\\n${JSON.stringify(schema)}`;\n}\n\nexport function getStructuredOutputSchema<OUTPUT>(\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Record<string, unknown> | undefined {\n if (!structuredOutput?.schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(structuredOutput.schema)) as Record<string, unknown>;\n}\n\nexport async function getStructuredOutput<OUTPUT>(\n text: string,\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Promise<OUTPUT | undefined> {\n return getStructuredOutputFromValue(text, structuredOutput);\n}\n\nexport async function getStructuredOutputFromValue<OUTPUT>(\n value: unknown,\n structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Promise<OUTPUT | undefined> {\n if (!structuredOutput?.schema) {\n return undefined;\n }\n\n let parsed: unknown;\n if (typeof value === 'string') {\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n return handleStructuredOutputError(\n new Error('Structured output must be valid JSON.', { cause: error }),\n structuredOutput,\n );\n }\n } else {\n parsed = value;\n }\n\n const schema = toStandardSchema(structuredOutput.schema);\n const result = await schema['~standard'].validate(parsed);\n if (!result.issues) {\n return result.value as OUTPUT;\n }\n\n const message = result.issues.map(issue => `- ${issue.path?.join('.') || 'root'}: ${issue.message}`).join('\\n');\n return handleStructuredOutputError(new Error(`Structured output validation failed:\\n${message}`), structuredOutput);\n}\n\nfunction handleStructuredOutputError<OUTPUT>(\n error: Error,\n structuredOutput: PublicStructuredOutputOptions<OUTPUT>,\n): OUTPUT | undefined {\n if (structuredOutput.errorStrategy === 'fallback') {\n return structuredOutput.fallbackValue;\n }\n\n if (structuredOutput.errorStrategy === 'warn') {\n structuredOutput.logger?.warn(error.message);\n return undefined;\n }\n\n throw error;\n}\n\nexport function sumDefined(...values: Array<number | undefined>): number | undefined {\n const defined = values.filter((value): value is number => typeof value === 'number');\n if (defined.length === 0) {\n return undefined;\n }\n\n return defined.reduce((sum, value) => sum + value, 0);\n}\n","import { ReadableStream } from 'node:stream/web';\n\nimport { query } from '@anthropic-ai/claude-agent-sdk';\nimport type { ModelUsage, Options as ClaudeQueryOptions, SDKMessage } from '@anthropic-ai/claude-agent-sdk';\n\nimport { Agent } from '@mastra/core/agent';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { CostContext } from '@mastra/core/observability';\nimport { RequestContext } from '@mastra/core/request-context';\nimport type {\n ChunkType,\n FullOutput,\n LanguageModelUsage,\n ProviderMetadata,\n MastraModelOutput,\n} from '@mastra/core/stream';\nimport { ChunkFrom } from '@mastra/core/stream';\nimport {\n createMastraOutput,\n createNoopModel,\n createProviderMetadata,\n createSDKAgentTelemetry,\n enqueueFinishChunks,\n enqueueStartChunks,\n enqueueTextDelta,\n getStructuredOutputFromValue,\n getStructuredOutputSchema,\n promptToText,\n sumDefined,\n toFullOutput,\n toLanguageModelUsage,\n} from './utils';\nimport type { SDKAgentRunOptions, SDKAgentTelemetry, SDKModelGenerateResult, V3Usage } from './utils';\n\nconst PROVIDER = '@anthropic-ai/claude-agent-sdk';\nconst MODEL_ID = 'claude-agent-sdk';\n\ntype ClaudeUsageTotals = {\n inputTokens?: number;\n outputTokens?: number;\n cacheReadInputTokens?: number;\n cacheCreationInputTokens?: number;\n totalCostUsd?: number;\n modelUsage?: Record<string, ModelUsage>;\n};\n\nexport type ClaudeSDKOptions = ClaudeQueryOptions;\n\nexport type ClaudeAgentOptions = {\n /**\n * Mastra agent id used when registering this wrapper with Mastra.\n */\n id: string;\n /**\n * Optional display name for the Mastra agent. Defaults to `id`.\n */\n name?: string;\n /**\n * Description surfaced by Mastra when listing or selecting agents.\n */\n description: string;\n /**\n * Claude Agent SDK options forwarded to `query()` on every run.\n */\n sdkOptions?: ClaudeSDKOptions;\n};\n\nexport type ClaudeSDKAgentRunOptions<OUTPUT = unknown> = SDKAgentRunOptions<OUTPUT> & {\n /**\n * Claude Agent SDK query options for this run. These are merged over the\n * wrapper's `sdkOptions`, which allows per-call session continuation options\n * such as `resume` or `continue`.\n */\n sdkOptions?: ClaudeSDKOptions;\n};\n\nexport type ClaudeSDKAgentResumeData =\n | {\n /**\n * Message to send while resuming the Claude SDK session.\n */\n message: MessageListInput;\n /**\n * Claude session id to resume.\n */\n sessionId: string;\n /**\n * Fork the resumed session into a new session.\n */\n forkSession?: boolean;\n /**\n * Resume the session up to a specific assistant message UUID.\n */\n resumeSessionAt?: string;\n }\n | {\n /**\n * Message to send while continuing the latest Claude SDK session.\n */\n message: MessageListInput;\n /**\n * Continue the latest Claude session in the current working directory.\n */\n continue: true;\n };\n\nexport class ClaudeSDKAgent extends Agent {\n readonly options: ClaudeAgentOptions;\n #mastra?: Mastra;\n\n constructor(options: ClaudeAgentOptions) {\n super({\n id: options.id,\n name: options.name ?? options.id,\n description: options.description,\n instructions: '',\n model: createNoopModel({\n modelId: getModelId(options),\n provider: PROVIDER,\n }),\n });\n this.options = options;\n }\n\n override __registerMastra(mastra: Mastra): void {\n super.__registerMastra(mastra);\n this.#mastra = mastra;\n }\n\n supportsMemory(): boolean {\n return false;\n }\n\n async generate<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const prompt = promptToText(messages);\n const runId = options?.runId ?? globalThis.crypto.randomUUID();\n const requestContext = options?.requestContext ?? new RequestContext();\n const instructions = options?.instructions ? promptToText(options.instructions) : undefined;\n const telemetry = createSDKAgentTelemetry({\n agentId: this.id,\n agentName: this.name,\n provider: PROVIDER,\n modelId: getModelId(this.options),\n messages,\n prompt,\n runId,\n streaming: false,\n method: 'generate',\n requestContext,\n instructions,\n maxSteps: options?.maxSteps,\n tracingOptions: options?.tracingOptions,\n tracingContext: options?.tracingContext,\n onFinish: options?.onFinish,\n onStepFinish: options?.onStepFinish,\n mastra: this.#mastra,\n });\n let result: SDKModelGenerateResult;\n try {\n result = await telemetry.execute(() => runClaudeGenerate(prompt, this.options, telemetry, options));\n telemetry.endGenerate(result);\n } catch (error) {\n telemetry.fail(error);\n throw error;\n }\n\n return toFullOutput<OUTPUT>({\n messages,\n runId,\n provider: PROVIDER,\n result,\n options: { ...telemetry.outputOptions(), structuredOutput: options?.structuredOutput as any },\n });\n }\n\n async stream<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const runId = options?.runId ?? globalThis.crypto.randomUUID();\n const prompt = promptToText(messages);\n const modelId = getModelId(this.options);\n const requestContext = options?.requestContext ?? new RequestContext();\n const instructions = options?.instructions ? promptToText(options.instructions) : undefined;\n const telemetry = createSDKAgentTelemetry({\n agentId: this.id,\n agentName: this.name,\n provider: PROVIDER,\n modelId,\n messages,\n prompt,\n runId,\n streaming: true,\n method: 'stream',\n requestContext,\n instructions,\n maxSteps: options?.maxSteps,\n tracingOptions: options?.tracingOptions,\n tracingContext: options?.tracingContext,\n onFinish: options?.onFinish,\n onStepFinish: options?.onStepFinish,\n mastra: this.#mastra,\n });\n\n return createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId,\n provider: PROVIDER,\n stream: telemetry.wrapStream(runClaudeAsMastraStream(prompt, this.options, runId, telemetry, options)),\n options: { ...telemetry.outputOptions(), structuredOutput: options?.structuredOutput as any },\n });\n }\n\n async resumeGenerate<OUTPUT = undefined>(\n resumeData: ClaudeSDKAgentResumeData,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const data = validateClaudeResumeData(resumeData);\n return this.generate(data.message, createClaudeResumeRunOptions(data, options));\n }\n\n async resumeStream<OUTPUT = undefined>(\n resumeData: ClaudeSDKAgentResumeData,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const data = validateClaudeResumeData(resumeData);\n return this.stream(data.message, createClaudeResumeRunOptions(data, options));\n }\n}\n\nfunction validateClaudeResumeData(resumeData: ClaudeSDKAgentResumeData): ClaudeSDKAgentResumeData {\n if (!isRecord(resumeData) || !('message' in resumeData)) {\n throw new Error('ClaudeSDKAgent resumeData must include a message.');\n }\n\n const hasSessionId = 'sessionId' in resumeData;\n const hasContinue = 'continue' in resumeData;\n\n if (hasSessionId && hasContinue) {\n throw new Error('ClaudeSDKAgent resumeData must include either sessionId or continue: true, not both.');\n }\n\n if (hasSessionId) {\n if (typeof resumeData.sessionId !== 'string') {\n throw new Error('ClaudeSDKAgent resumeData.sessionId must be a string.');\n }\n return resumeData;\n }\n\n if (hasContinue) {\n if (resumeData.continue !== true) {\n throw new Error('ClaudeSDKAgent resumeData.continue must be true when provided.');\n }\n return resumeData;\n }\n\n throw new Error('ClaudeSDKAgent resumeData must include sessionId or continue: true.');\n}\n\nfunction createClaudeResumeRunOptions<OUTPUT>(\n resumeData: ClaudeSDKAgentResumeData,\n options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): ClaudeSDKAgentRunOptions<OUTPUT> {\n const sdkOptions: ClaudeSDKOptions = { ...options?.sdkOptions };\n\n if ('sessionId' in resumeData && typeof resumeData.sessionId === 'string') {\n sdkOptions.resume = resumeData.sessionId;\n if (resumeData.forkSession !== undefined) {\n sdkOptions.forkSession = resumeData.forkSession;\n }\n if (resumeData.resumeSessionAt !== undefined) {\n sdkOptions.resumeSessionAt = resumeData.resumeSessionAt;\n }\n } else {\n sdkOptions.continue = true;\n }\n\n return {\n ...options,\n sdkOptions,\n };\n}\n\nasync function runClaudeGenerate<OUTPUT>(\n prompt: string,\n options: ClaudeAgentOptions,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): Promise<SDKModelGenerateResult> {\n let text = '';\n let structuredOutputValue: unknown;\n const usage = createClaudeUsageCollector();\n\n for await (const message of observeClaudeMessages(\n runClaude(prompt, options, runOptions?.abortSignal ?? runOptions?.signal, runOptions),\n telemetry,\n )) {\n usage.record(message);\n if (message.type === 'result') {\n if (message.subtype !== 'success') {\n throw new Error(message.errors.join('\\n') || `Claude Agent SDK failed with ${message.subtype}`);\n }\n\n text = message.result;\n structuredOutputValue = getClaudeStructuredOutput(message);\n }\n }\n\n const totals = usage.totals();\n const object = await getStructuredOutputFromValue(\n structuredOutputValue === undefined ? text : structuredOutputValue,\n runOptions?.structuredOutput,\n );\n\n return {\n content: [{ type: 'text', text }],\n finishReason: { unified: 'stop', raw: 'stop' },\n usage: usage.toV3Usage(),\n response: {\n id: globalThis.crypto.randomUUID(),\n modelId: getModelId(options),\n timestamp: new Date(),\n },\n providerMetadata: getClaudeProviderMetadata(options, totals),\n costContext: getClaudeCostContext(options, totals),\n object,\n };\n}\n\nfunction runClaudeAsMastraStream<OUTPUT>(\n prompt: string,\n options: ClaudeAgentOptions,\n runId: string,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start: async controller => {\n const textId = globalThis.crypto.randomUUID();\n const responseId = globalThis.crypto.randomUUID();\n const modelId = getModelId(options);\n const usage = createClaudeUsageCollector();\n let text = '';\n let structuredOutputValue: unknown;\n let sawDelta = false;\n\n try {\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata: getClaudeProviderMetadata(options, usage.totals()),\n });\n\n for await (const message of observeClaudeMessages(\n runClaude(prompt, options, runOptions?.abortSignal ?? runOptions?.signal, runOptions),\n telemetry,\n )) {\n usage.record(message);\n const delta = getTextDelta(message);\n if (delta) {\n sawDelta = true;\n text += delta;\n enqueueTextDelta(controller, runId, textId, delta);\n }\n\n if (message.type === 'result') {\n if (message.subtype !== 'success') {\n throw new Error(message.errors.join('\\n') || `Claude Agent SDK failed with ${message.subtype}`);\n }\n\n if (!sawDelta && message.result) {\n text += message.result;\n enqueueTextDelta(controller, runId, textId, message.result);\n }\n structuredOutputValue = getClaudeStructuredOutput(message);\n }\n }\n\n const totals = usage.totals();\n const providerMetadata = getClaudeProviderMetadata(options, totals);\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage: usage.toLanguageModelUsage(),\n providerMetadata,\n costContext: getClaudeCostContext(options, totals),\n object: await getStructuredOutputFromValue(\n structuredOutputValue === undefined ? text : structuredOutputValue,\n runOptions?.structuredOutput,\n ),\n });\n controller.close();\n } catch (error) {\n controller.enqueue({\n type: 'error',\n runId,\n from: ChunkFrom.AGENT,\n payload: { error },\n });\n controller.close();\n }\n },\n });\n}\n\nfunction runClaude<OUTPUT>(\n prompt: string,\n options: ClaudeAgentOptions,\n signal?: AbortSignal,\n runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): AsyncIterable<SDKMessage> {\n const abortController = createAbortController(signal);\n const queryOptions: ClaudeSDKOptions = {\n ...options.sdkOptions,\n ...runOptions?.sdkOptions,\n };\n const outputSchema = getStructuredOutputSchema(runOptions?.structuredOutput);\n if (outputSchema) {\n queryOptions.outputFormat = {\n type: 'json_schema',\n schema: outputSchema,\n };\n }\n if (abortController) {\n queryOptions.abortController = abortController;\n }\n\n return query({\n prompt,\n options: queryOptions as Parameters<typeof query>[0]['options'],\n }) as AsyncIterable<SDKMessage>;\n}\n\nfunction getClaudeStructuredOutput(message: SDKMessage): unknown {\n if (message.type !== 'result') {\n return undefined;\n }\n\n return (message as { structured_output?: unknown }).structured_output;\n}\n\nasync function* observeClaudeMessages<OUTPUT>(\n messages: AsyncIterable<SDKMessage>,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n): AsyncIterable<SDKMessage> {\n for await (const message of messages) {\n recordClaudeToolTelemetry(message, telemetry);\n yield message;\n }\n}\n\nfunction recordClaudeToolTelemetry<OUTPUT>(message: SDKMessage, telemetry: SDKAgentTelemetry<OUTPUT>): void {\n for (const toolCall of getClaudeToolCalls(message)) {\n telemetry.startToolCall(toolCall);\n }\n\n for (const toolResult of getClaudeToolResults(message)) {\n telemetry.endToolCall(toolResult);\n }\n}\n\nfunction getClaudeToolCalls(message: SDKMessage): Array<{ toolCallId: string; toolName: string; input?: unknown }> {\n if (message.type !== 'assistant') {\n return [];\n }\n\n return getContentBlocks(message.message)\n .filter(isRecord)\n .filter(block => block.type === 'tool_use' && typeof block.id === 'string' && typeof block.name === 'string')\n .map(block => ({\n toolCallId: block.id as string,\n toolName: block.name as string,\n input: block.input,\n }));\n}\n\nfunction getClaudeToolResults(message: SDKMessage): Array<{ toolCallId: string; output?: unknown; isError?: boolean }> {\n if (message.type !== 'user') {\n return [];\n }\n\n return getContentBlocks(message.message)\n .filter(isRecord)\n .filter(block => block.type === 'tool_result' && typeof block.tool_use_id === 'string')\n .map(block => ({\n toolCallId: block.tool_use_id as string,\n output: block.content,\n isError: block.is_error === true,\n }));\n}\n\nfunction getContentBlocks(message: unknown): unknown[] {\n if (!isRecord(message)) {\n return [];\n }\n\n return Array.isArray(message.content) ? message.content : [];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object';\n}\n\nfunction createAbortController(signal: AbortSignal | undefined): AbortController | undefined {\n if (!signal) {\n return undefined;\n }\n\n const controller = new AbortController();\n if (signal.aborted) {\n controller.abort(signal.reason);\n return controller;\n }\n\n signal.addEventListener('abort', () => controller.abort(signal.reason), { once: true });\n return controller;\n}\n\nfunction getModelId(options: ClaudeAgentOptions): string {\n return options.sdkOptions?.model ?? MODEL_ID;\n}\n\nfunction createClaudeUsageCollector() {\n const assistantUsageById = new Map<string, ClaudeUsageTotals>();\n let resultUsage: ClaudeUsageTotals = {};\n\n return {\n record(message: SDKMessage) {\n if (message.type === 'assistant') {\n assistantUsageById.set(message.message.id, usageFromClaudeMessage(message.message.usage));\n return;\n }\n\n if (message.type === 'result') {\n resultUsage = {\n ...usageFromClaudeMessage(message.usage),\n totalCostUsd: message.total_cost_usd,\n modelUsage: message.modelUsage,\n };\n }\n },\n totals(): ClaudeUsageTotals {\n const assistantUsage = getAssistantUsageTotals(assistantUsageById);\n\n if (hasAnyUsage(resultUsage)) {\n return {\n ...resultUsage,\n inputTokens: resultUsage.inputTokens ?? assistantUsage.inputTokens,\n outputTokens: resultUsage.outputTokens ?? assistantUsage.outputTokens,\n cacheReadInputTokens: resultUsage.cacheReadInputTokens ?? assistantUsage.cacheReadInputTokens,\n cacheCreationInputTokens: resultUsage.cacheCreationInputTokens ?? assistantUsage.cacheCreationInputTokens,\n };\n }\n\n return assistantUsage;\n },\n toV3Usage(): V3Usage {\n return toV3Usage(this.totals());\n },\n toLanguageModelUsage(): LanguageModelUsage {\n return toLanguageModelUsage(toV3Usage(this.totals()));\n },\n };\n}\n\nfunction getAssistantUsageTotals(assistantUsageById: Map<string, ClaudeUsageTotals>): ClaudeUsageTotals {\n return [...assistantUsageById.values()].reduce<ClaudeUsageTotals>((totals, item) => {\n totals.inputTokens = addOptional(totals.inputTokens, item.inputTokens);\n totals.outputTokens = addOptional(totals.outputTokens, item.outputTokens);\n totals.cacheReadInputTokens = addOptional(totals.cacheReadInputTokens, item.cacheReadInputTokens);\n totals.cacheCreationInputTokens = addOptional(totals.cacheCreationInputTokens, item.cacheCreationInputTokens);\n return totals;\n }, {});\n}\n\nfunction usageFromClaudeMessage(usage: unknown): ClaudeUsageTotals {\n if (!usage || typeof usage !== 'object') {\n return {};\n }\n\n const record = usage as Record<string, unknown>;\n return {\n inputTokens: getTokenTotal(record.input_tokens),\n outputTokens: getTokenTotal(record.output_tokens),\n cacheReadInputTokens: getTokenTotal(record.cache_read_input_tokens),\n cacheCreationInputTokens: getTokenTotal(record.cache_creation_input_tokens),\n };\n}\n\nfunction hasAnyUsage(usage: ClaudeUsageTotals): boolean {\n return (\n usage.inputTokens !== undefined ||\n usage.outputTokens !== undefined ||\n usage.cacheReadInputTokens !== undefined ||\n usage.cacheCreationInputTokens !== undefined ||\n usage.totalCostUsd !== undefined\n );\n}\n\nfunction addOptional(left: number | undefined, right: number | undefined): number | undefined {\n if (left === undefined) {\n return right;\n }\n if (right === undefined) {\n return left;\n }\n\n return left + right;\n}\n\nfunction toV3Usage(usage: ClaudeUsageTotals): V3Usage {\n const noCache = usage.inputTokens;\n const cacheRead = usage.cacheReadInputTokens;\n const cacheWrite = usage.cacheCreationInputTokens;\n const totalInputTokens = sumDefined(noCache, cacheRead, cacheWrite);\n const outputTokens = usage.outputTokens;\n\n return {\n inputTokens: {\n total: totalInputTokens,\n noCache,\n cacheRead,\n cacheWrite,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens,\n },\n };\n}\n\nfunction getClaudeProviderMetadata(options: ClaudeAgentOptions, usage?: ClaudeUsageTotals): ProviderMetadata {\n const queryOptions = options.sdkOptions;\n\n return createProviderMetadata('claude', {\n totalCostUsd: usage?.totalCostUsd,\n model: getModelId(options),\n cwd: queryOptions?.cwd,\n permissionMode: queryOptions?.permissionMode,\n maxTurns: queryOptions?.maxTurns,\n allowedTools: queryOptions?.allowedTools,\n disallowedTools: queryOptions?.disallowedTools,\n usage,\n });\n}\n\nfunction getClaudeCostContext(options: ClaudeAgentOptions, usage?: ClaudeUsageTotals): CostContext | undefined {\n if (typeof usage?.totalCostUsd !== 'number') {\n return undefined;\n }\n\n return {\n provider: 'anthropic',\n model: getModelId(options),\n estimatedCost: usage.totalCostUsd,\n costUnit: 'USD',\n costMetadata: {\n source: 'sdk_estimate',\n sdkProvider: PROVIDER,\n sdkCostField: 'total_cost_usd',\n scope: 'query_total',\n modelUsage: usage.modelUsage,\n },\n };\n}\n\nfunction getTextDelta(message: SDKMessage): string {\n if (message.type !== 'stream_event') {\n return '';\n }\n\n const event = message.event as {\n type?: string;\n delta?: {\n type?: string;\n text?: string;\n };\n };\n\n if (event.type === 'content_block_delta' && event.delta?.type === 'text_delta') {\n return event.delta.text ?? '';\n }\n\n return '';\n}\n\nfunction getTokenTotal(value: unknown): number | undefined {\n return typeof value === 'number' ? value : undefined;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAmB,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAExH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAEV,WAAW,EAIZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAa,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAClH,OAAO,EAAa,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,KAAK,wBAAwB,CAAC,MAAM,GAAG,SAAS,IAAI,qBAAqB,CACvE,OAAO,iBAAiB,CAAC,MAAM,CAAC,CACjC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAEhB,MAAM,MAAM,kBAAkB,CAAC,MAAM,GAAG,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,GAAG;IACrF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,SAAS,EAAE,GAAG,6BAA6B,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;IACrF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,YAAY,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,IAAI,CAAC;KACjB,CAAC;IACF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,mBAAmB,CASjH;AAUD,wBAAgB,2BAA2B,CAAC,EAC1C,KAAK,EACL,MAAM,EACN,IAAI,EACJ,UAAU,EACV,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,MAAM,GACP,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,cAAc,CAAC,SAAS,CAAC,CA8B5B;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,EACzC,QAAQ,EACR,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,YAAiB,EACjB,OAAO,GACR,EAAE;IACD,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;CACrD,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAmB5B;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,EACnC,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE;IACD,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;CACrD,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAuB9B;AAED,MAAM,MAAM,wBAAwB,CAAC,MAAM,GAAG,OAAO,IAAI;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IAClD,cAAc,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC9D,cAAc,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC9D,QAAQ,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IAClD,YAAY,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,MAAM,GAAG,OAAO,IAAI;IAChD,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7C,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAClD,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAClD,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAClD,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACzE,aAAa,IAAI,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,EAC9C,OAAO,EACP,SAAS,EACT,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,MAAM,EACN,KAAK,EACL,SAAS,EACT,MAAM,EACN,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,MAAM,GACP,EAAE,wBAAwB,CAAC,MAAM,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAiQ9D;AAgGD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,+BAA+B,CAAC,SAAS,CAAC,EACtD,EACE,KAAK,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,GACA,IAAI,CAkCN;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,+BAA+B,CAAC,SAAS,CAAC,EACtD,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,IAAI,CAUN;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,+BAA+B,CAAC,SAAS,CAAC,EACtD,EACE,KAAK,EACL,MAAM,EACN,MAAM,EACN,IAAI,EACJ,UAAU,EACV,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,MAAM,GACP,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,IAAI,CA4EN;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAYvE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAI5G;AA8BD,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAyBpD;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAC/C,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,6BAA6B,CAAC,MAAM,CAAC,GACvD,MAAM,CAWR;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAC9C,gBAAgB,CAAC,EAAE,6BAA6B,CAAC,MAAM,CAAC,GACvD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAMrC;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAC9C,IAAI,EAAE,MAAM,EACZ,gBAAgB,CAAC,EAAE,6BAA6B,CAAC,MAAM,CAAC,GACvD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE7B;AAED,wBAAsB,4BAA4B,CAAC,MAAM,EACvD,KAAK,EAAE,OAAO,EACd,gBAAgB,CAAC,EAAE,6BAA6B,CAAC,MAAM,CAAC,GACvD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA2B7B;AAkBD,wBAAgB,UAAU,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAOnF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/claude",
3
- "version": "0.3.1",
3
+ "version": "0.3.2-alpha.0",
4
4
  "description": "Claude SDK package for Mastra",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,16 +27,16 @@
27
27
  "devDependencies": {
28
28
  "@anthropic-ai/claude-agent-sdk": "^0.3.220",
29
29
  "@types/node": "22.20.1",
30
- "@vitest/coverage-v8": "4.1.10",
31
- "@vitest/ui": "4.1.10",
30
+ "@vitest/coverage-v8": "4.1.11",
31
+ "@vitest/ui": "4.1.11",
32
32
  "eslint": "^10.7.0",
33
33
  "tsdown": "0.22.9",
34
34
  "tsx": "^4.23.1",
35
35
  "typescript": "^7.0.2",
36
- "vitest": "4.1.10",
37
- "@internal/lint": "0.0.130",
38
- "@mastra/core": "1.64.0",
39
- "@internal/types-builder": "0.0.105"
36
+ "vitest": "4.1.11",
37
+ "@internal/types-builder": "0.0.113",
38
+ "@internal/lint": "0.0.138",
39
+ "@mastra/core": "1.73.0-alpha.0"
40
40
  },
41
41
  "homepage": "https://mastra.ai",
42
42
  "repository": {