@mastra/claude 0.3.3 → 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"
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",
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
 
@@ -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
  })
@@ -108,7 +108,7 @@ export const claudeSDKAgent = new ClaudeSDKAgent({
108
108
  name: 'Claude SDK Agent',
109
109
  description: 'Use Claude Agent SDK through Mastra.',
110
110
  sdkOptions: {
111
- model: 'claude-sonnet-4-6',
111
+ model: 'claude-sonnet-5-5',
112
112
  cwd: process.cwd(),
113
113
  mcpServers: {
114
114
  weather: weatherServer,
@@ -172,7 +172,7 @@ export const cursorSDKAgent = new CursorSDKAgent({
172
172
  sdkOptions: {
173
173
  apiKey: process.env.CURSOR_API_KEY,
174
174
  model: {
175
- id: 'gpt-5',
175
+ id: 'gpt-5.6',
176
176
  },
177
177
  local: {
178
178
  cwd: process.cwd(),
@@ -194,7 +194,7 @@ import { CursorSDKAgent } from '@mastra/cursor'
194
194
  const cursorAgent = CursorAgent.create({
195
195
  apiKey: process.env.CURSOR_API_KEY,
196
196
  model: {
197
- id: 'gpt-5',
197
+ id: 'gpt-5.6',
198
198
  },
199
199
  local: {
200
200
  cwd: process.cwd(),
@@ -224,7 +224,7 @@ export const cursorSDKAgent = new CursorSDKAgent({
224
224
  sdkOptions: {
225
225
  apiKey: process.env.CURSOR_API_KEY,
226
226
  model: {
227
- id: 'gpt-5',
227
+ id: 'gpt-5.6',
228
228
  },
229
229
  local: {
230
230
  cwd: process.cwd(),
@@ -286,7 +286,7 @@ export const openaiSDKAgent = new OpenAISDKAgent({
286
286
  sdkOptions: {
287
287
  name: 'Repository assistant',
288
288
  instructions: 'Answer clearly and cite the relevant files.',
289
- model: 'gpt-5',
289
+ model: 'gpt-5.6',
290
290
  },
291
291
  })
292
292
  ```
@@ -302,7 +302,7 @@ import { OpenAISDKAgent } from '@mastra/openai'
302
302
  const sdkAgent = new OpenAIAgent({
303
303
  name: 'Repository assistant',
304
304
  instructions: 'Answer clearly and cite the relevant files.',
305
- model: 'gpt-5',
305
+ model: 'gpt-5.6',
306
306
  })
307
307
 
308
308
  export const openaiSDKAgent = new OpenAISDKAgent({
@@ -339,7 +339,7 @@ export const openaiSDKAgent = new OpenAISDKAgent({
339
339
  description: 'Use OpenAI Agents SDK through Mastra.',
340
340
  sdkOptions: {
341
341
  name: 'Weather assistant',
342
- model: 'gpt-5',
342
+ model: 'gpt-5.6',
343
343
  tools: [getTemperature],
344
344
  },
345
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","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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"}
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":[],"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.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",
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,17 +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
- "tsdown": "0.22.9",
33
- "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",
34
34
  "typescript": "^7.0.2",
35
- "vitest": "4.1.11",
35
+ "vitest": "4.1.12",
36
36
  "@internal/lint": "0.0.145",
37
- "@mastra/core": "1.79.0",
38
- "@internal/types-builder": "0.0.120"
37
+ "@internal/types-builder": "0.0.120",
38
+ "@mastra/core": "1.80.0-alpha.4"
39
39
  },
40
40
  "homepage": "https://mastra.ai",
41
41
  "repository": {