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