@mastra/claude 0.3.3-alpha.0 → 0.3.4-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.3-alpha.0"
6
+ version: "0.3.4-alpha.0"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.3.3-alpha.0",
2
+ "version": "0.3.4-alpha.0",
3
3
  "package": "@mastra/claude",
4
4
  "exports": {},
5
5
  "modules": {}
@@ -64,7 +64,7 @@ const agent = new OpenAISDKAgent({
64
64
  description: 'Answers project questions',
65
65
  sdkOptions: {
66
66
  name: 'Project assistant',
67
- model: 'gpt-5',
67
+ model: 'gpt-5.6',
68
68
  },
69
69
  })
70
70
 
@@ -32,25 +32,25 @@ Install the Mastra package and the Claude Agent SDK peer dependency:
32
32
  **npm**:
33
33
 
34
34
  ```bash
35
- npm install @mastra/claude @anthropic-ai/claude-agent-sdk
35
+ npm install @mastra/claude @anthropic-ai/claude-agent-sdk zod
36
36
  ```
37
37
 
38
38
  **pnpm**:
39
39
 
40
40
  ```bash
41
- pnpm add @mastra/claude @anthropic-ai/claude-agent-sdk
41
+ pnpm add @mastra/claude @anthropic-ai/claude-agent-sdk zod
42
42
  ```
43
43
 
44
44
  **Yarn**:
45
45
 
46
46
  ```bash
47
- yarn add @mastra/claude @anthropic-ai/claude-agent-sdk
47
+ yarn add @mastra/claude @anthropic-ai/claude-agent-sdk zod
48
48
  ```
49
49
 
50
50
  **Bun**:
51
51
 
52
52
  ```bash
53
- bun add @mastra/claude @anthropic-ai/claude-agent-sdk
53
+ bun add @mastra/claude @anthropic-ai/claude-agent-sdk zod
54
54
  ```
55
55
 
56
56
  Set the Claude SDK credential:
@@ -71,7 +71,7 @@ export const claudeSDKAgent = new ClaudeSDKAgent({
71
71
  name: 'Claude SDK Agent',
72
72
  description: 'Use Claude Agent SDK through Mastra.',
73
73
  sdkOptions: {
74
- model: 'claude-sonnet-4-6',
74
+ model: 'claude-sonnet-5-5',
75
75
  cwd: process.cwd(),
76
76
  },
77
77
  })
@@ -79,12 +79,23 @@ export const claudeSDKAgent = new ClaudeSDKAgent({
79
79
 
80
80
  ### Add Claude SDK tools
81
81
 
82
- Claude Agent SDK tools are provided through Claude SDK Model Context Protocol (MCP) servers. Create the server with the Claude SDK, then pass it through `sdkOptions.mcpServers`.
82
+ Claude Agent SDK custom tools are provided through Claude SDK Model Context Protocol (MCP) servers. `ClaudeSDKAgent` doesn't accept Mastra's `tools` option, and tools created with Mastra's `createTool()` aren't automatically available to it because the Claude SDK owns the agent loop. A Mastra tool can't be passed directly to `createSdkMcpServer()`.
83
+
84
+ Create a tool with the Claude Agent SDK's `tool()` helper, add it to a server, then pass the server through `sdkOptions.mcpServers`. The helper takes a raw Zod shape, not a `z.object()`, and a handler that returns MCP content. This example returns sample temperature data:
83
85
 
84
86
  ```typescript
85
- import { createSdkMcpServer } from '@anthropic-ai/claude-agent-sdk'
87
+ import { createSdkMcpServer, tool } from '@anthropic-ai/claude-agent-sdk'
86
88
  import { ClaudeSDKAgent } from '@mastra/claude'
87
- import { getTemperature } from '../tools/get-temperature'
89
+ import { z } from 'zod'
90
+
91
+ const getTemperature = tool(
92
+ 'get_temperature',
93
+ 'Get the temperature for a city using sample data.',
94
+ { city: z.string() },
95
+ async ({ city }) => ({
96
+ content: [{ type: 'text', text: `${city}: 27 C` }],
97
+ }),
98
+ )
88
99
 
89
100
  const weatherServer = createSdkMcpServer({
90
101
  name: 'weather',
@@ -97,7 +108,7 @@ export const claudeSDKAgent = new ClaudeSDKAgent({
97
108
  name: 'Claude SDK Agent',
98
109
  description: 'Use Claude Agent SDK through Mastra.',
99
110
  sdkOptions: {
100
- model: 'claude-sonnet-4-6',
111
+ model: 'claude-sonnet-5-5',
101
112
  cwd: process.cwd(),
102
113
  mcpServers: {
103
114
  weather: weatherServer,
@@ -161,7 +172,7 @@ export const cursorSDKAgent = new CursorSDKAgent({
161
172
  sdkOptions: {
162
173
  apiKey: process.env.CURSOR_API_KEY,
163
174
  model: {
164
- id: 'gpt-5',
175
+ id: 'gpt-5.6',
165
176
  },
166
177
  local: {
167
178
  cwd: process.cwd(),
@@ -183,7 +194,7 @@ import { CursorSDKAgent } from '@mastra/cursor'
183
194
  const cursorAgent = CursorAgent.create({
184
195
  apiKey: process.env.CURSOR_API_KEY,
185
196
  model: {
186
- id: 'gpt-5',
197
+ id: 'gpt-5.6',
187
198
  },
188
199
  local: {
189
200
  cwd: process.cwd(),
@@ -213,7 +224,7 @@ export const cursorSDKAgent = new CursorSDKAgent({
213
224
  sdkOptions: {
214
225
  apiKey: process.env.CURSOR_API_KEY,
215
226
  model: {
216
- id: 'gpt-5',
227
+ id: 'gpt-5.6',
217
228
  },
218
229
  local: {
219
230
  cwd: process.cwd(),
@@ -275,7 +286,7 @@ export const openaiSDKAgent = new OpenAISDKAgent({
275
286
  sdkOptions: {
276
287
  name: 'Repository assistant',
277
288
  instructions: 'Answer clearly and cite the relevant files.',
278
- model: 'gpt-5',
289
+ model: 'gpt-5.6',
279
290
  },
280
291
  })
281
292
  ```
@@ -291,7 +302,7 @@ import { OpenAISDKAgent } from '@mastra/openai'
291
302
  const sdkAgent = new OpenAIAgent({
292
303
  name: 'Repository assistant',
293
304
  instructions: 'Answer clearly and cite the relevant files.',
294
- model: 'gpt-5',
305
+ model: 'gpt-5.6',
295
306
  })
296
307
 
297
308
  export const openaiSDKAgent = new OpenAISDKAgent({
@@ -328,7 +339,7 @@ export const openaiSDKAgent = new OpenAISDKAgent({
328
339
  description: 'Use OpenAI Agents SDK through Mastra.',
329
340
  sdkOptions: {
330
341
  name: 'Weather assistant',
331
- model: 'gpt-5',
342
+ model: 'gpt-5.6',
332
343
  tools: [getTemperature],
333
344
  },
334
345
  })
package/dist/index.cjs CHANGED
@@ -7,7 +7,7 @@ let _mastra_core_stream = require("@mastra/core/stream");
7
7
  let _mastra_core_agent_message_list = require("@mastra/core/agent/message-list");
8
8
  let _mastra_core_observability = require("@mastra/core/observability");
9
9
  let _mastra_core_schema = require("@mastra/core/schema");
10
- //#region src/utils.ts
10
+ // src/utils.ts
11
11
  function createNoopModel({ modelId, provider }) {
12
12
  return {
13
13
  modelId,
@@ -520,8 +520,7 @@ function sumDefined(...values) {
520
520
  if (defined.length === 0) return;
521
521
  return defined.reduce((sum, value) => sum + value, 0);
522
522
  }
523
- //#endregion
524
- //#region src/index.ts
523
+ // src/index.ts
525
524
  const PROVIDER = "@anthropic-ai/claude-agent-sdk";
526
525
  const MODEL_ID = "claude-agent-sdk";
527
526
  var ClaudeSDKAgent = class extends _mastra_core_agent.Agent {
@@ -943,7 +942,6 @@ function getTextDelta(message) {
943
942
  function getTokenTotal(value) {
944
943
  return typeof value === "number" ? value : void 0;
945
944
  }
946
- //#endregion
947
945
  exports.ClaudeSDKAgent = ClaudeSDKAgent;
948
946
 
949
947
  //# sourceMappingURL=index.cjs.map
@@ -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 { 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
+ {"version":3,"file":"index.cjs","names":["ReadableStream","MessageList","MastraModelOutput","getOrCreateSpan","SpanType","EntityType","executeWithContext","TransformStream","ChunkFrom","standardSchemaToJSONSchema","toStandardSchema","Agent","RequestContext","ReadableStream","ChunkFrom","query"],"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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"}
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import { ChunkFrom, MastraModelOutput } from "@mastra/core/stream";
6
6
  import { MessageList } from "@mastra/core/agent/message-list";
7
7
  import { EntityType, SpanType, executeWithContext, getOrCreateSpan } from "@mastra/core/observability";
8
8
  import { standardSchemaToJSONSchema, toStandardSchema } from "@mastra/core/schema";
9
- //#region src/utils.ts
9
+ // src/utils.ts
10
10
  function createNoopModel({ modelId, provider }) {
11
11
  return {
12
12
  modelId,
@@ -519,8 +519,7 @@ function sumDefined(...values) {
519
519
  if (defined.length === 0) return;
520
520
  return defined.reduce((sum, value) => sum + value, 0);
521
521
  }
522
- //#endregion
523
- //#region src/index.ts
522
+ // src/index.ts
524
523
  const PROVIDER = "@anthropic-ai/claude-agent-sdk";
525
524
  const MODEL_ID = "claude-agent-sdk";
526
525
  var ClaudeSDKAgent = class extends Agent {
@@ -942,7 +941,6 @@ function getTextDelta(message) {
942
941
  function getTokenTotal(value) {
943
942
  return typeof value === "number" ? value : void 0;
944
943
  }
945
- //#endregion
946
944
  export { ClaudeSDKAgent };
947
945
 
948
946
  //# sourceMappingURL=index.js.map
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 { 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":";;;;;;;;;AAwDA,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,OAAO,WAAW;EAC5C,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,OAAO,WAAW;EACxC,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,OAAO,WAAW;EAC7D,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,OAAO,WAAW;EAC7D,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,OAAO,WAAW;GACjC,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,OAAO,WAAW;EAC5C,MAAM,aAAa,WAAW,OAAO,WAAW;EAChD,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":[],"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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/claude",
3
- "version": "0.3.3-alpha.0",
3
+ "version": "0.3.4-alpha.0",
4
4
  "description": "Claude SDK package for Mastra",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -25,18 +25,17 @@
25
25
  "author": "",
26
26
  "license": "Apache-2.0",
27
27
  "devDependencies": {
28
- "@anthropic-ai/claude-agent-sdk": "^0.3.220",
29
- "@types/node": "22.20.1",
30
- "@vitest/coverage-v8": "4.1.11",
31
- "@vitest/ui": "4.1.11",
32
- "eslint": "^10.7.0",
33
- "tsdown": "0.22.9",
34
- "tsx": "^4.23.1",
28
+ "@anthropic-ai/claude-agent-sdk": "^0.3.310",
29
+ "@types/node": "22.19.15",
30
+ "@vitest/coverage-v8": "4.1.12",
31
+ "@vitest/ui": "4.1.12",
32
+ "tsdown": "0.23.1",
33
+ "tsx": "^4.23.15",
35
34
  "typescript": "^7.0.2",
36
- "vitest": "4.1.11",
37
- "@internal/lint": "0.0.144",
38
- "@internal/types-builder": "0.0.119",
39
- "@mastra/core": "1.78.1-alpha.0"
35
+ "vitest": "4.1.12",
36
+ "@internal/lint": "0.0.145",
37
+ "@internal/types-builder": "0.0.120",
38
+ "@mastra/core": "1.80.0-alpha.4"
40
39
  },
41
40
  "homepage": "https://mastra.ai",
42
41
  "repository": {
@@ -59,7 +58,7 @@
59
58
  "build:lib": "tsdown --silent --config tsdown.config.ts",
60
59
  "build:watch": "pnpm build:lib --watch",
61
60
  "test": "vitest run --passWithNoTests",
62
- "lint": "oxlint . && eslint .",
63
- "lint:fix": "oxlint --fix . && eslint --fix ."
61
+ "lint": "oxlint --type-aware .",
62
+ "lint:fix": "oxlint --type-aware --fix ."
64
63
  }
65
64
  }