@mastra/openai 1.1.1-alpha.1 → 1.1.2-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@ name: mastra-openai
3
3
  description: Documentation for @mastra/openai. Use when working with @mastra/openai APIs, configuration, or implementation.
4
4
  metadata:
5
5
  package: "@mastra/openai"
6
- version: "1.1.1-alpha.1"
6
+ version: "1.1.2-alpha.0"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.1-alpha.1",
2
+ "version": "1.1.2-alpha.0",
3
3
  "package": "@mastra/openai",
4
4
  "exports": {},
5
5
  "modules": {}
@@ -14,6 +14,12 @@ Memory processors are [processors](https://mastra.ai/docs/agents/processors) tha
14
14
 
15
15
  Mastra automatically adds these processors when memory is enabled:
16
16
 
17
+ ### `MemoryInputFilter`
18
+
19
+ Trims client-echoed history before memory loaders run. For an existing thread, it keeps only the current user turn or new tool results. For an empty thread, it keeps the full initial input and removes provider item metadata from assistant parts that could refer to items that don't exist in storage.
20
+
21
+ This processor runs first so `MessageHistory`, `SemanticRecall`, and Observational Memory receive only the new input they need.
22
+
17
23
  ### `MessageHistory`
18
24
 
19
25
  Retrieves message history and persists new messages.
@@ -206,7 +212,7 @@ Understanding the execution order is important when combining guardrails with me
206
212
  [Memory Processors] → [Your inputProcessors]
207
213
  ```
208
214
 
209
- 1. **Memory processors run FIRST**: `WorkingMemory`, `MessageHistory`, `SemanticRecall`
215
+ 1. **Memory processors run FIRST**: `MemoryInputFilter`, then `WorkingMemory`, `MessageHistory`, and `SemanticRecall`
210
216
  2. **Your input processors run AFTER**: guardrails, filters, validators
211
217
 
212
218
  As a result, memory loads message history before your processors can validate or filter the input.
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 _mastra_core_agent = require("@mastra/core/agent");
5
4
  let _mastra_core_request_context = require("@mastra/core/request-context");
@@ -24,7 +23,7 @@ function createNoopStreamResult() {
24
23
  }
25
24
  function createCompletedMastraStream({ runId, prompt, text, responseId, modelId, usage, providerMetadata, costContext, object }) {
26
25
  return new stream_web.ReadableStream({ start(controller) {
27
- const textId = (0, crypto.randomUUID)();
26
+ const textId = globalThis.crypto.randomUUID();
28
27
  enqueueStartChunks(controller, {
29
28
  runId,
30
29
  prompt,
@@ -64,7 +63,7 @@ function createMastraOutput({ messages, runId, modelId, provider, stream, option
64
63
  },
65
64
  stream,
66
65
  messageList,
67
- messageId: (0, crypto.randomUUID)(),
66
+ messageId: globalThis.crypto.randomUUID(),
68
67
  options: {
69
68
  ...options,
70
69
  runId
@@ -556,7 +555,7 @@ var OpenAISDKAgent = class extends _mastra_core_agent.Agent {
556
555
  }
557
556
  async generate(messages, options) {
558
557
  const prompt = promptToText(messages);
559
- const runId = options?.runId ?? (0, crypto.randomUUID)();
558
+ const runId = options?.runId ?? globalThis.crypto.randomUUID();
560
559
  const sdkAgent = getRunOpenAIAgent(this.resolveOpenAIAgent(), options);
561
560
  const modelId = getModelId(this.options, sdkAgent);
562
561
  const requestContext = options?.requestContext ?? new _mastra_core_request_context.RequestContext();
@@ -601,7 +600,7 @@ var OpenAISDKAgent = class extends _mastra_core_agent.Agent {
601
600
  }
602
601
  async stream(messages, options) {
603
602
  const prompt = promptToText(messages);
604
- const runId = options?.runId ?? (0, crypto.randomUUID)();
603
+ const runId = options?.runId ?? globalThis.crypto.randomUUID();
605
604
  const sdkAgent = getRunOpenAIAgent(this.resolveOpenAIAgent(), options);
606
605
  const modelId = getModelId(this.options, sdkAgent);
607
606
  const requestContext = options?.requestContext ?? new _mastra_core_request_context.RequestContext();
@@ -703,7 +702,7 @@ async function runOpenAIGenerate(prompt, agent, runId, telemetry, options) {
703
702
  }
704
703
  function runOpenAIAsMastraStream(prompt, agent, runId, requestedModelId, telemetry, options) {
705
704
  return new stream_web.ReadableStream({ start: async (controller) => {
706
- const textId = (0, crypto.randomUUID)();
705
+ const textId = globalThis.crypto.randomUUID();
707
706
  let text = "";
708
707
  let responseId;
709
708
  let modelId = requestedModelId;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["ReadableStream","MessageList","MastraModelOutput","SpanType","EntityType","TransformStream","ChunkFrom","Agent","#mastra","RequestContext","#createdAgent","OpenAIAgent","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';\n\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 reasoning?: 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 options,\n}: {\n messages: MessageListInput;\n runId: string;\n modelId: string;\n provider: string;\n stream: ReadableStream<ChunkType>;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): MastraModelOutput<OUTPUT> {\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n messageList.add([{ role: 'assistant', content: '' }], '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 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 ...(responseId ? { 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 ...(responseId ? { 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 ...(responseId ? { 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 reasoningTokens: usage.outputTokens.reasoning,\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 {\n type: 'json_schema',\n name: 'mastra_output',\n strict: false,\n schema: standardSchemaToJSONSchema(toStandardSchema(structuredOutput.schema)) as Record<string, unknown>,\n };\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 { Agent } from '@mastra/core/agent';\nimport type { StructuredOutputOptions } from '@mastra/core/agent';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { RequestContext } from '@mastra/core/request-context';\nimport type { ChunkType, FullOutput, ProviderMetadata, MastraModelOutput } from '@mastra/core/stream';\nimport { ChunkFrom } from '@mastra/core/stream';\nimport { Agent as OpenAIAgent, run } from '@openai/agents';\nimport type { AgentOptions as OpenAIAgentOptions, RunItem, RunStreamEvent } from '@openai/agents';\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 = '@openai/agents';\nconst MODEL_ID = 'openai-agents-sdk';\n\ntype OpenAIUsageTotals = {\n inputTokens?: number;\n outputTokens?: number;\n cacheReadInputTokens?: number;\n cacheCreationInputTokens?: number;\n reasoningTokens?: number;\n requests?: number;\n requestUsageEntries?: unknown[];\n};\n\ntype OpenAIToolTelemetry = Pick<SDKAgentTelemetry, 'startToolCall' | 'endToolCall'>;\ntype OpenAIStructuredOutputOption<OUTPUT> = OUTPUT extends {} ? StructuredOutputOptions<OUTPUT> : never;\n\nexport type OpenAISDKAgentResumeData = {\n /**\n * Message to send while continuing the OpenAI Agents SDK run.\n */\n message: MessageListInput;\n /**\n * Previous OpenAI response id to continue from.\n */\n previousResponseId?: string;\n /**\n * OpenAI conversation id for server-managed conversation state.\n */\n conversationId?: string;\n /**\n * OpenAI Agents SDK session object for client-managed conversation state.\n */\n session?: unknown;\n};\n\ntype OpenAISDKAgentBaseOptions = {\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\nexport type OpenAISDKAgentOptions = OpenAISDKAgentBaseOptions &\n (\n | {\n /**\n * Pre-created OpenAI Agents SDK agent. Pass this when you manage the\n * SDK agent lifecycle yourself.\n */\n agent: OpenAIAgent;\n sdkOptions?: never;\n }\n | {\n agent?: never;\n /**\n * OpenAI Agents SDK options used to create an SDK agent.\n */\n sdkOptions: OpenAIAgentOptions;\n }\n );\n\nexport class OpenAISDKAgent extends Agent {\n readonly options: OpenAISDKAgentOptions;\n #mastra?: Mastra;\n #createdAgent?: OpenAIAgent;\n\n constructor(options: OpenAISDKAgentOptions) {\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?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const prompt = promptToText(messages);\n const runId = options?.runId ?? randomUUID();\n const sdkAgent = getRunOpenAIAgent(this.resolveOpenAIAgent(), options);\n const modelId = getModelId(this.options, sdkAgent);\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: 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\n try {\n result = await telemetry.execute(() => runOpenAIGenerate(prompt, sdkAgent, runId, 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: getStructuredOutputOption(options) },\n });\n }\n\n async stream<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const prompt = promptToText(messages);\n const runId = options?.runId ?? randomUUID();\n const sdkAgent = getRunOpenAIAgent(this.resolveOpenAIAgent(), options);\n const modelId = getModelId(this.options, sdkAgent);\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(runOpenAIAsMastraStream(prompt, sdkAgent, runId, modelId, telemetry, options)),\n options: { ...telemetry.outputOptions(), structuredOutput: getStructuredOutputOption(options) },\n });\n }\n\n async resumeGenerate<OUTPUT = undefined>(\n resumeData: OpenAISDKAgentResumeData,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const data = validateOpenAIResumeData(resumeData);\n return this.generate(data.message, createOpenAIResumeRunOptions(data, options));\n }\n\n async resumeStream<OUTPUT = undefined>(\n resumeData: OpenAISDKAgentResumeData,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const data = validateOpenAIResumeData(resumeData);\n return this.stream(data.message, createOpenAIResumeRunOptions(data, options));\n }\n\n private resolveOpenAIAgent(): OpenAIAgent {\n this.#createdAgent ??= this.options.agent ?? new OpenAIAgent(toOpenAIAgentOptions(this.options));\n return this.#createdAgent;\n }\n}\n\nfunction getStructuredOutputOption<OUTPUT>(\n options?: SDKAgentRunOptions<OUTPUT>,\n): OpenAIStructuredOutputOption<OUTPUT> | undefined {\n return options?.structuredOutput as OpenAIStructuredOutputOption<OUTPUT> | undefined;\n}\n\nfunction validateOpenAIResumeData(resumeData: OpenAISDKAgentResumeData): OpenAISDKAgentResumeData {\n const record = toRecord(resumeData);\n if (!record || !('message' in record)) {\n throw new Error('OpenAISDKAgent resumeData must include a message.');\n }\n\n if (\n typeof resumeData.previousResponseId === 'string' ||\n typeof resumeData.conversationId === 'string' ||\n resumeData.session !== undefined\n ) {\n return resumeData;\n }\n\n throw new Error('OpenAISDKAgent resumeData must include previousResponseId, conversationId, or session.');\n}\n\nfunction createOpenAIResumeRunOptions<OUTPUT>(\n resumeData: OpenAISDKAgentResumeData,\n options?: SDKAgentRunOptions<OUTPUT>,\n): SDKAgentRunOptions<OUTPUT> {\n return {\n ...options,\n previousResponseId: resumeData.previousResponseId ?? options?.previousResponseId,\n conversationId: resumeData.conversationId ?? options?.conversationId,\n session: resumeData.session ?? options?.session,\n };\n}\n\nasync function runOpenAIGenerate<OUTPUT>(\n prompt: string,\n agent: OpenAIAgent,\n runId: string,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n options?: SDKAgentRunOptions<OUTPUT>,\n): Promise<SDKModelGenerateResult> {\n const result = await run(agent, prompt, createOpenAIRunOptions(options, false));\n\n recordOpenAIToolTelemetry(result.newItems, telemetry);\n const text = getTextFromFinalOutput(result.finalOutput);\n const responseId = result.lastResponseId;\n const modelId = getModelId(undefined, result.lastAgent ?? agent, result.rawResponses.at(-1));\n const usage = createOpenAIUsageTotals(result.state.usage);\n const providerMetadata = getOpenAIProviderMetadata({\n modelId,\n responseId,\n lastResponseId: result.lastResponseId,\n rawResponseCount: result.rawResponses.length,\n itemCount: result.newItems.length,\n usage,\n });\n\n return {\n content: [{ type: 'text', text }],\n finishReason: { unified: 'stop', raw: 'stop' },\n usage: toV3Usage(usage),\n response: {\n id: responseId,\n modelId,\n timestamp: new Date(),\n },\n providerMetadata,\n object: await getStructuredOutputFromValue(result.finalOutput, options?.structuredOutput),\n };\n}\n\nfunction runOpenAIAsMastraStream<OUTPUT>(\n prompt: string,\n agent: OpenAIAgent,\n runId: string,\n requestedModelId: string,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n options?: SDKAgentRunOptions<OUTPUT>,\n): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start: async controller => {\n const textId = randomUUID();\n let text = '';\n let responseId: string | undefined;\n let modelId = requestedModelId;\n\n try {\n const result = await run(agent, prompt, createOpenAIRunOptions(options, true));\n\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n });\n\n for await (const event of result) {\n const delta = getTextDelta(event);\n if (delta) {\n text += delta;\n enqueueTextDelta(controller, runId, textId, delta);\n }\n\n recordOpenAIStreamToolTelemetry(event, telemetry);\n }\n\n await result.completed;\n\n responseId = result.lastResponseId ?? responseId;\n modelId = getModelId(undefined, result.lastAgent ?? agent, result.rawResponses.at(-1));\n if (!text) {\n text = getTextFromFinalOutput(result.finalOutput);\n if (text) {\n enqueueTextDelta(controller, runId, textId, text);\n }\n }\n\n const usage = createOpenAIUsageTotals(result.state.usage);\n const providerMetadata = getOpenAIProviderMetadata({\n modelId,\n responseId,\n lastResponseId: result.lastResponseId,\n rawResponseCount: result.rawResponses.length,\n itemCount: result.newItems.length,\n usage,\n });\n\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage: toLanguageModelUsage(toV3Usage(usage)),\n providerMetadata,\n object: await getStructuredOutputFromValue(result.finalOutput, options?.structuredOutput),\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 toOpenAIAgentOptions(options: OpenAISDKAgentOptions): OpenAIAgentOptions {\n return {\n name: options.name ?? options.id,\n ...options.sdkOptions,\n };\n}\n\nfunction getRunOpenAIAgent<OUTPUT>(agent: OpenAIAgent, options?: SDKAgentRunOptions<OUTPUT>): OpenAIAgent {\n const outputType = getStructuredOutputSchema(options?.structuredOutput);\n if (!outputType) {\n return agent;\n }\n\n return (agent as { clone(config: Record<string, unknown>): OpenAIAgent }).clone({ outputType });\n}\n\nfunction createOpenAIRunOptions<OUTPUT>(\n options: SDKAgentRunOptions<OUTPUT> | undefined,\n stream: false,\n): Record<string, unknown> & { stream: false };\nfunction createOpenAIRunOptions<OUTPUT>(\n options: SDKAgentRunOptions<OUTPUT> | undefined,\n stream: true,\n): Record<string, unknown> & { stream: true };\nfunction createOpenAIRunOptions<OUTPUT>(\n options: SDKAgentRunOptions<OUTPUT> | undefined,\n stream: boolean,\n): Record<string, unknown> & { stream: boolean } {\n const runOptions: Record<string, unknown> & { stream: boolean } = { stream };\n addDefined(runOptions, 'maxTurns', options?.maxSteps);\n addDefined(runOptions, 'signal', options?.abortSignal ?? options?.signal);\n addDefined(runOptions, 'conversationId', options?.conversationId);\n addDefined(runOptions, 'previousResponseId', options?.previousResponseId);\n addDefined(runOptions, 'session', options?.session);\n\n return runOptions;\n}\n\nfunction addDefined(target: Record<string, unknown>, key: string, value: unknown): void {\n if (value !== undefined) {\n target[key] = value;\n }\n}\n\nfunction getModelId(options?: OpenAISDKAgentOptions, agent?: OpenAIAgent, rawResponse?: unknown): string {\n return (\n getModelNameFromUnknown(rawResponse) ??\n getModelNameFromUnknown(agent?.model) ??\n getModelNameFromUnknown(options?.sdkOptions?.model) ??\n MODEL_ID\n );\n}\n\nfunction getModelNameFromUnknown(value: unknown): string | undefined {\n if (typeof value === 'string') {\n return value;\n }\n\n const record = toRecord(value);\n return (\n getString(record, 'model') ??\n getString(record, 'modelId') ??\n getString(record, 'modelName') ??\n getString(toRecord(record?.providerData), 'model')\n );\n}\n\nfunction getTextFromFinalOutput(output: unknown): string {\n if (typeof output === 'string') {\n return output;\n }\n if (output === undefined || output === null) {\n return '';\n }\n\n return JSON.stringify(output);\n}\n\nfunction createOpenAIUsageTotals(usage: unknown): OpenAIUsageTotals {\n const record = toRecord(usage);\n if (!record) {\n return {};\n }\n\n const inputDetails = getDetailRecords(record.inputTokensDetails);\n const outputDetails = getDetailRecords(record.outputTokensDetails);\n const requestUsageEntries = Array.isArray(record.requestUsageEntries) ? record.requestUsageEntries : undefined;\n\n return {\n inputTokens: getNumber(record.inputTokens),\n outputTokens: getNumber(record.outputTokens),\n cacheReadInputTokens: sumDetails(inputDetails, 'cachedTokens', 'cached_tokens', 'cacheReadInputTokens'),\n cacheCreationInputTokens: sumDetails(inputDetails, 'cacheCreationInputTokens', 'cache_creation_input_tokens'),\n reasoningTokens: sumDetails(outputDetails, 'reasoningTokens', 'reasoning_tokens'),\n requests: getNumber(record.requests),\n requestUsageEntries,\n };\n}\n\nfunction getDetailRecords(value: unknown): Array<Record<string, unknown>> {\n if (Array.isArray(value)) {\n return value.filter(isRecord);\n }\n\n const record = toRecord(value);\n return record ? [record] : [];\n}\n\nfunction sumDetails(records: Array<Record<string, unknown>>, ...keys: string[]): number | undefined {\n let total = 0;\n let found = false;\n\n for (const record of records) {\n for (const key of keys) {\n const value = getNumber(record[key]);\n if (value !== undefined) {\n total += value;\n found = true;\n }\n }\n }\n\n return found ? total : undefined;\n}\n\nfunction toV3Usage(usage: OpenAIUsageTotals): V3Usage {\n const totalInputTokens = usage.inputTokens;\n const cacheRead = usage.cacheReadInputTokens;\n const cacheWrite = usage.cacheCreationInputTokens;\n const noCache =\n totalInputTokens === undefined\n ? undefined\n : Math.max(totalInputTokens - (sumDefined(cacheRead, cacheWrite) ?? 0), 0);\n const outputTokens = usage.outputTokens;\n const reasoningTokens = usage.reasoningTokens;\n\n return {\n inputTokens: {\n total: totalInputTokens,\n noCache,\n cacheRead,\n cacheWrite,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens,\n reasoning: reasoningTokens,\n },\n };\n}\n\nfunction getOpenAIProviderMetadata({\n modelId,\n responseId,\n lastResponseId,\n rawResponseCount,\n itemCount,\n usage,\n}: {\n modelId: string;\n responseId?: string;\n lastResponseId?: string;\n rawResponseCount: number;\n itemCount: number;\n usage: OpenAIUsageTotals;\n}): ProviderMetadata {\n return createProviderMetadata('openai', {\n model: modelId,\n responseId,\n lastResponseId,\n rawResponseCount,\n itemCount,\n usage,\n });\n}\n\nfunction recordOpenAIToolTelemetry(items: RunItem[], telemetry: OpenAIToolTelemetry): void {\n for (const item of items) {\n if (item.type === 'tool_call_item') {\n const toolCall = getOpenAIToolCall(item.rawItem);\n if (toolCall) {\n telemetry.startToolCall(toolCall);\n }\n continue;\n }\n\n if (item.type === 'tool_call_output_item') {\n const toolOutput = getOpenAIToolOutput(item.rawItem, item.output);\n if (toolOutput) {\n telemetry.endToolCall(toolOutput);\n }\n }\n }\n}\n\nfunction recordOpenAIStreamToolTelemetry(event: RunStreamEvent, telemetry: OpenAIToolTelemetry): void {\n if (event.type !== 'run_item_stream_event') {\n return;\n }\n\n if (event.name === 'tool_called') {\n const toolCall = getOpenAIToolCall(event.item.rawItem);\n if (toolCall) {\n telemetry.startToolCall(toolCall);\n }\n return;\n }\n\n if (event.name === 'tool_output') {\n const toolOutput = getOpenAIToolOutput(event.item.rawItem, getObjectValue(event.item, 'output'));\n if (toolOutput) {\n telemetry.endToolCall(toolOutput);\n }\n }\n}\n\nfunction getOpenAIToolCall(rawItem: unknown): { toolCallId: string; toolName: string; input?: unknown } | undefined {\n const record = toRecord(rawItem);\n if (!record) {\n return undefined;\n }\n\n if (record.type === 'function_call') {\n const toolCallId = getString(record, 'callId') ?? getString(record, 'id');\n const toolName = getNamespacedToolName(record);\n if (!toolCallId || !toolName) {\n return undefined;\n }\n\n return {\n toolCallId,\n toolName,\n input: parseJsonString(record.arguments),\n };\n }\n\n if (record.type === 'hosted_tool_call') {\n const toolCallId = getString(record, 'id') ?? getString(record, 'name');\n const toolName = getString(record, 'name');\n if (!toolCallId || !toolName) {\n return undefined;\n }\n\n return {\n toolCallId,\n toolName,\n input: parseJsonString(record.arguments),\n };\n }\n\n if (record.type === 'shell_call' || record.type === 'apply_patch_call') {\n const toolCallId = getString(record, 'callId');\n if (!toolCallId) {\n return undefined;\n }\n\n return {\n toolCallId,\n toolName: String(record.type),\n input: record.action ?? record.operation,\n };\n }\n\n return undefined;\n}\n\nfunction getOpenAIToolOutput(\n rawItem: unknown,\n fallbackOutput: unknown,\n): { toolCallId: string; output?: unknown; isError?: boolean } | undefined {\n const record = toRecord(rawItem);\n if (!record) {\n return undefined;\n }\n\n const toolCallId = getString(record, 'callId') ?? getString(record, 'id');\n if (!toolCallId) {\n return undefined;\n }\n\n return {\n toolCallId,\n output: record.output ?? fallbackOutput,\n isError: record.status === 'failed' || record.status === 'incomplete',\n };\n}\n\nfunction getNamespacedToolName(record: Record<string, unknown>): string | undefined {\n const name = getString(record, 'name');\n const namespace = getString(record, 'namespace');\n if (!name) {\n return undefined;\n }\n\n return namespace ? `${namespace}.${name}` : name;\n}\n\nfunction getTextDelta(event: RunStreamEvent): string {\n if (event.type !== 'raw_model_stream_event') {\n return '';\n }\n\n const data = toRecord(event.data);\n return data?.type === 'output_text_delta' && typeof data.delta === 'string' ? data.delta : '';\n}\n\nfunction parseJsonString(value: unknown): unknown {\n if (typeof value !== 'string') {\n return value;\n }\n\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nfunction getNumber(value: unknown): number | undefined {\n return typeof value === 'number' ? value : undefined;\n}\n\nfunction getString(record: Record<string, unknown> | undefined, key: string): string | undefined {\n const value = record?.[key];\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction getObjectValue(value: unknown, key: string): unknown {\n return toRecord(value)?.[key];\n}\n\nfunction toRecord(value: unknown): Record<string, unknown> | undefined {\n return isRecord(value) ? value : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object';\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["ReadableStream","MessageList","MastraModelOutput","SpanType","EntityType","TransformStream","ChunkFrom","Agent","#mastra","RequestContext","#createdAgent","OpenAIAgent","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';\n\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 reasoning?: 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 options,\n}: {\n messages: MessageListInput;\n runId: string;\n modelId: string;\n provider: string;\n stream: ReadableStream<ChunkType>;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): MastraModelOutput<OUTPUT> {\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n messageList.add([{ role: 'assistant', content: '' }], '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 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 ...(responseId ? { 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 ...(responseId ? { 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 ...(responseId ? { 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 reasoningTokens: usage.outputTokens.reasoning,\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 {\n type: 'json_schema',\n name: 'mastra_output',\n strict: false,\n schema: standardSchemaToJSONSchema(toStandardSchema(structuredOutput.schema)) as Record<string, unknown>,\n };\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 { Agent } from '@mastra/core/agent';\nimport type { StructuredOutputOptions } from '@mastra/core/agent';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { RequestContext } from '@mastra/core/request-context';\nimport type { ChunkType, FullOutput, ProviderMetadata, MastraModelOutput } from '@mastra/core/stream';\nimport { ChunkFrom } from '@mastra/core/stream';\nimport { Agent as OpenAIAgent, run } from '@openai/agents';\nimport type { AgentOptions as OpenAIAgentOptions, RunItem, RunStreamEvent } from '@openai/agents';\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 = '@openai/agents';\nconst MODEL_ID = 'openai-agents-sdk';\n\ntype OpenAIUsageTotals = {\n inputTokens?: number;\n outputTokens?: number;\n cacheReadInputTokens?: number;\n cacheCreationInputTokens?: number;\n reasoningTokens?: number;\n requests?: number;\n requestUsageEntries?: unknown[];\n};\n\ntype OpenAIToolTelemetry = Pick<SDKAgentTelemetry, 'startToolCall' | 'endToolCall'>;\ntype OpenAIStructuredOutputOption<OUTPUT> = OUTPUT extends {} ? StructuredOutputOptions<OUTPUT> : never;\n\nexport type OpenAISDKAgentResumeData = {\n /**\n * Message to send while continuing the OpenAI Agents SDK run.\n */\n message: MessageListInput;\n /**\n * Previous OpenAI response id to continue from.\n */\n previousResponseId?: string;\n /**\n * OpenAI conversation id for server-managed conversation state.\n */\n conversationId?: string;\n /**\n * OpenAI Agents SDK session object for client-managed conversation state.\n */\n session?: unknown;\n};\n\ntype OpenAISDKAgentBaseOptions = {\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\nexport type OpenAISDKAgentOptions = OpenAISDKAgentBaseOptions &\n (\n | {\n /**\n * Pre-created OpenAI Agents SDK agent. Pass this when you manage the\n * SDK agent lifecycle yourself.\n */\n agent: OpenAIAgent;\n sdkOptions?: never;\n }\n | {\n agent?: never;\n /**\n * OpenAI Agents SDK options used to create an SDK agent.\n */\n sdkOptions: OpenAIAgentOptions;\n }\n );\n\nexport class OpenAISDKAgent extends Agent {\n readonly options: OpenAISDKAgentOptions;\n #mastra?: Mastra;\n #createdAgent?: OpenAIAgent;\n\n constructor(options: OpenAISDKAgentOptions) {\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?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const prompt = promptToText(messages);\n const runId = options?.runId ?? globalThis.crypto.randomUUID();\n const sdkAgent = getRunOpenAIAgent(this.resolveOpenAIAgent(), options);\n const modelId = getModelId(this.options, sdkAgent);\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: 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\n try {\n result = await telemetry.execute(() => runOpenAIGenerate(prompt, sdkAgent, runId, 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: getStructuredOutputOption(options) },\n });\n }\n\n async stream<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const prompt = promptToText(messages);\n const runId = options?.runId ?? globalThis.crypto.randomUUID();\n const sdkAgent = getRunOpenAIAgent(this.resolveOpenAIAgent(), options);\n const modelId = getModelId(this.options, sdkAgent);\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(runOpenAIAsMastraStream(prompt, sdkAgent, runId, modelId, telemetry, options)),\n options: { ...telemetry.outputOptions(), structuredOutput: getStructuredOutputOption(options) },\n });\n }\n\n async resumeGenerate<OUTPUT = undefined>(\n resumeData: OpenAISDKAgentResumeData,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const data = validateOpenAIResumeData(resumeData);\n return this.generate(data.message, createOpenAIResumeRunOptions(data, options));\n }\n\n async resumeStream<OUTPUT = undefined>(\n resumeData: OpenAISDKAgentResumeData,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const data = validateOpenAIResumeData(resumeData);\n return this.stream(data.message, createOpenAIResumeRunOptions(data, options));\n }\n\n private resolveOpenAIAgent(): OpenAIAgent {\n this.#createdAgent ??= this.options.agent ?? new OpenAIAgent(toOpenAIAgentOptions(this.options));\n return this.#createdAgent;\n }\n}\n\nfunction getStructuredOutputOption<OUTPUT>(\n options?: SDKAgentRunOptions<OUTPUT>,\n): OpenAIStructuredOutputOption<OUTPUT> | undefined {\n return options?.structuredOutput as OpenAIStructuredOutputOption<OUTPUT> | undefined;\n}\n\nfunction validateOpenAIResumeData(resumeData: OpenAISDKAgentResumeData): OpenAISDKAgentResumeData {\n const record = toRecord(resumeData);\n if (!record || !('message' in record)) {\n throw new Error('OpenAISDKAgent resumeData must include a message.');\n }\n\n if (\n typeof resumeData.previousResponseId === 'string' ||\n typeof resumeData.conversationId === 'string' ||\n resumeData.session !== undefined\n ) {\n return resumeData;\n }\n\n throw new Error('OpenAISDKAgent resumeData must include previousResponseId, conversationId, or session.');\n}\n\nfunction createOpenAIResumeRunOptions<OUTPUT>(\n resumeData: OpenAISDKAgentResumeData,\n options?: SDKAgentRunOptions<OUTPUT>,\n): SDKAgentRunOptions<OUTPUT> {\n return {\n ...options,\n previousResponseId: resumeData.previousResponseId ?? options?.previousResponseId,\n conversationId: resumeData.conversationId ?? options?.conversationId,\n session: resumeData.session ?? options?.session,\n };\n}\n\nasync function runOpenAIGenerate<OUTPUT>(\n prompt: string,\n agent: OpenAIAgent,\n runId: string,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n options?: SDKAgentRunOptions<OUTPUT>,\n): Promise<SDKModelGenerateResult> {\n const result = await run(agent, prompt, createOpenAIRunOptions(options, false));\n\n recordOpenAIToolTelemetry(result.newItems, telemetry);\n const text = getTextFromFinalOutput(result.finalOutput);\n const responseId = result.lastResponseId;\n const modelId = getModelId(undefined, result.lastAgent ?? agent, result.rawResponses.at(-1));\n const usage = createOpenAIUsageTotals(result.state.usage);\n const providerMetadata = getOpenAIProviderMetadata({\n modelId,\n responseId,\n lastResponseId: result.lastResponseId,\n rawResponseCount: result.rawResponses.length,\n itemCount: result.newItems.length,\n usage,\n });\n\n return {\n content: [{ type: 'text', text }],\n finishReason: { unified: 'stop', raw: 'stop' },\n usage: toV3Usage(usage),\n response: {\n id: responseId,\n modelId,\n timestamp: new Date(),\n },\n providerMetadata,\n object: await getStructuredOutputFromValue(result.finalOutput, options?.structuredOutput),\n };\n}\n\nfunction runOpenAIAsMastraStream<OUTPUT>(\n prompt: string,\n agent: OpenAIAgent,\n runId: string,\n requestedModelId: string,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n options?: SDKAgentRunOptions<OUTPUT>,\n): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start: async controller => {\n const textId = globalThis.crypto.randomUUID();\n let text = '';\n let responseId: string | undefined;\n let modelId = requestedModelId;\n\n try {\n const result = await run(agent, prompt, createOpenAIRunOptions(options, true));\n\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n });\n\n for await (const event of result) {\n const delta = getTextDelta(event);\n if (delta) {\n text += delta;\n enqueueTextDelta(controller, runId, textId, delta);\n }\n\n recordOpenAIStreamToolTelemetry(event, telemetry);\n }\n\n await result.completed;\n\n responseId = result.lastResponseId ?? responseId;\n modelId = getModelId(undefined, result.lastAgent ?? agent, result.rawResponses.at(-1));\n if (!text) {\n text = getTextFromFinalOutput(result.finalOutput);\n if (text) {\n enqueueTextDelta(controller, runId, textId, text);\n }\n }\n\n const usage = createOpenAIUsageTotals(result.state.usage);\n const providerMetadata = getOpenAIProviderMetadata({\n modelId,\n responseId,\n lastResponseId: result.lastResponseId,\n rawResponseCount: result.rawResponses.length,\n itemCount: result.newItems.length,\n usage,\n });\n\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage: toLanguageModelUsage(toV3Usage(usage)),\n providerMetadata,\n object: await getStructuredOutputFromValue(result.finalOutput, options?.structuredOutput),\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 toOpenAIAgentOptions(options: OpenAISDKAgentOptions): OpenAIAgentOptions {\n return {\n name: options.name ?? options.id,\n ...options.sdkOptions,\n };\n}\n\nfunction getRunOpenAIAgent<OUTPUT>(agent: OpenAIAgent, options?: SDKAgentRunOptions<OUTPUT>): OpenAIAgent {\n const outputType = getStructuredOutputSchema(options?.structuredOutput);\n if (!outputType) {\n return agent;\n }\n\n return (agent as { clone(config: Record<string, unknown>): OpenAIAgent }).clone({ outputType });\n}\n\nfunction createOpenAIRunOptions<OUTPUT>(\n options: SDKAgentRunOptions<OUTPUT> | undefined,\n stream: false,\n): Record<string, unknown> & { stream: false };\nfunction createOpenAIRunOptions<OUTPUT>(\n options: SDKAgentRunOptions<OUTPUT> | undefined,\n stream: true,\n): Record<string, unknown> & { stream: true };\nfunction createOpenAIRunOptions<OUTPUT>(\n options: SDKAgentRunOptions<OUTPUT> | undefined,\n stream: boolean,\n): Record<string, unknown> & { stream: boolean } {\n const runOptions: Record<string, unknown> & { stream: boolean } = { stream };\n addDefined(runOptions, 'maxTurns', options?.maxSteps);\n addDefined(runOptions, 'signal', options?.abortSignal ?? options?.signal);\n addDefined(runOptions, 'conversationId', options?.conversationId);\n addDefined(runOptions, 'previousResponseId', options?.previousResponseId);\n addDefined(runOptions, 'session', options?.session);\n\n return runOptions;\n}\n\nfunction addDefined(target: Record<string, unknown>, key: string, value: unknown): void {\n if (value !== undefined) {\n target[key] = value;\n }\n}\n\nfunction getModelId(options?: OpenAISDKAgentOptions, agent?: OpenAIAgent, rawResponse?: unknown): string {\n return (\n getModelNameFromUnknown(rawResponse) ??\n getModelNameFromUnknown(agent?.model) ??\n getModelNameFromUnknown(options?.sdkOptions?.model) ??\n MODEL_ID\n );\n}\n\nfunction getModelNameFromUnknown(value: unknown): string | undefined {\n if (typeof value === 'string') {\n return value;\n }\n\n const record = toRecord(value);\n return (\n getString(record, 'model') ??\n getString(record, 'modelId') ??\n getString(record, 'modelName') ??\n getString(toRecord(record?.providerData), 'model')\n );\n}\n\nfunction getTextFromFinalOutput(output: unknown): string {\n if (typeof output === 'string') {\n return output;\n }\n if (output === undefined || output === null) {\n return '';\n }\n\n return JSON.stringify(output);\n}\n\nfunction createOpenAIUsageTotals(usage: unknown): OpenAIUsageTotals {\n const record = toRecord(usage);\n if (!record) {\n return {};\n }\n\n const inputDetails = getDetailRecords(record.inputTokensDetails);\n const outputDetails = getDetailRecords(record.outputTokensDetails);\n const requestUsageEntries = Array.isArray(record.requestUsageEntries) ? record.requestUsageEntries : undefined;\n\n return {\n inputTokens: getNumber(record.inputTokens),\n outputTokens: getNumber(record.outputTokens),\n cacheReadInputTokens: sumDetails(inputDetails, 'cachedTokens', 'cached_tokens', 'cacheReadInputTokens'),\n cacheCreationInputTokens: sumDetails(inputDetails, 'cacheCreationInputTokens', 'cache_creation_input_tokens'),\n reasoningTokens: sumDetails(outputDetails, 'reasoningTokens', 'reasoning_tokens'),\n requests: getNumber(record.requests),\n requestUsageEntries,\n };\n}\n\nfunction getDetailRecords(value: unknown): Array<Record<string, unknown>> {\n if (Array.isArray(value)) {\n return value.filter(isRecord);\n }\n\n const record = toRecord(value);\n return record ? [record] : [];\n}\n\nfunction sumDetails(records: Array<Record<string, unknown>>, ...keys: string[]): number | undefined {\n let total = 0;\n let found = false;\n\n for (const record of records) {\n for (const key of keys) {\n const value = getNumber(record[key]);\n if (value !== undefined) {\n total += value;\n found = true;\n }\n }\n }\n\n return found ? total : undefined;\n}\n\nfunction toV3Usage(usage: OpenAIUsageTotals): V3Usage {\n const totalInputTokens = usage.inputTokens;\n const cacheRead = usage.cacheReadInputTokens;\n const cacheWrite = usage.cacheCreationInputTokens;\n const noCache =\n totalInputTokens === undefined\n ? undefined\n : Math.max(totalInputTokens - (sumDefined(cacheRead, cacheWrite) ?? 0), 0);\n const outputTokens = usage.outputTokens;\n const reasoningTokens = usage.reasoningTokens;\n\n return {\n inputTokens: {\n total: totalInputTokens,\n noCache,\n cacheRead,\n cacheWrite,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens,\n reasoning: reasoningTokens,\n },\n };\n}\n\nfunction getOpenAIProviderMetadata({\n modelId,\n responseId,\n lastResponseId,\n rawResponseCount,\n itemCount,\n usage,\n}: {\n modelId: string;\n responseId?: string;\n lastResponseId?: string;\n rawResponseCount: number;\n itemCount: number;\n usage: OpenAIUsageTotals;\n}): ProviderMetadata {\n return createProviderMetadata('openai', {\n model: modelId,\n responseId,\n lastResponseId,\n rawResponseCount,\n itemCount,\n usage,\n });\n}\n\nfunction recordOpenAIToolTelemetry(items: RunItem[], telemetry: OpenAIToolTelemetry): void {\n for (const item of items) {\n if (item.type === 'tool_call_item') {\n const toolCall = getOpenAIToolCall(item.rawItem);\n if (toolCall) {\n telemetry.startToolCall(toolCall);\n }\n continue;\n }\n\n if (item.type === 'tool_call_output_item') {\n const toolOutput = getOpenAIToolOutput(item.rawItem, item.output);\n if (toolOutput) {\n telemetry.endToolCall(toolOutput);\n }\n }\n }\n}\n\nfunction recordOpenAIStreamToolTelemetry(event: RunStreamEvent, telemetry: OpenAIToolTelemetry): void {\n if (event.type !== 'run_item_stream_event') {\n return;\n }\n\n if (event.name === 'tool_called') {\n const toolCall = getOpenAIToolCall(event.item.rawItem);\n if (toolCall) {\n telemetry.startToolCall(toolCall);\n }\n return;\n }\n\n if (event.name === 'tool_output') {\n const toolOutput = getOpenAIToolOutput(event.item.rawItem, getObjectValue(event.item, 'output'));\n if (toolOutput) {\n telemetry.endToolCall(toolOutput);\n }\n }\n}\n\nfunction getOpenAIToolCall(rawItem: unknown): { toolCallId: string; toolName: string; input?: unknown } | undefined {\n const record = toRecord(rawItem);\n if (!record) {\n return undefined;\n }\n\n if (record.type === 'function_call') {\n const toolCallId = getString(record, 'callId') ?? getString(record, 'id');\n const toolName = getNamespacedToolName(record);\n if (!toolCallId || !toolName) {\n return undefined;\n }\n\n return {\n toolCallId,\n toolName,\n input: parseJsonString(record.arguments),\n };\n }\n\n if (record.type === 'hosted_tool_call') {\n const toolCallId = getString(record, 'id') ?? getString(record, 'name');\n const toolName = getString(record, 'name');\n if (!toolCallId || !toolName) {\n return undefined;\n }\n\n return {\n toolCallId,\n toolName,\n input: parseJsonString(record.arguments),\n };\n }\n\n if (record.type === 'shell_call' || record.type === 'apply_patch_call') {\n const toolCallId = getString(record, 'callId');\n if (!toolCallId) {\n return undefined;\n }\n\n return {\n toolCallId,\n toolName: String(record.type),\n input: record.action ?? record.operation,\n };\n }\n\n return undefined;\n}\n\nfunction getOpenAIToolOutput(\n rawItem: unknown,\n fallbackOutput: unknown,\n): { toolCallId: string; output?: unknown; isError?: boolean } | undefined {\n const record = toRecord(rawItem);\n if (!record) {\n return undefined;\n }\n\n const toolCallId = getString(record, 'callId') ?? getString(record, 'id');\n if (!toolCallId) {\n return undefined;\n }\n\n return {\n toolCallId,\n output: record.output ?? fallbackOutput,\n isError: record.status === 'failed' || record.status === 'incomplete',\n };\n}\n\nfunction getNamespacedToolName(record: Record<string, unknown>): string | undefined {\n const name = getString(record, 'name');\n const namespace = getString(record, 'namespace');\n if (!name) {\n return undefined;\n }\n\n return namespace ? `${namespace}.${name}` : name;\n}\n\nfunction getTextDelta(event: RunStreamEvent): string {\n if (event.type !== 'raw_model_stream_event') {\n return '';\n }\n\n const data = toRecord(event.data);\n return data?.type === 'output_text_delta' && typeof data.delta === 'string' ? data.delta : '';\n}\n\nfunction parseJsonString(value: unknown): unknown {\n if (typeof value !== 'string') {\n return value;\n }\n\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nfunction getNumber(value: unknown): number | undefined {\n return typeof value === 'number' ? value : undefined;\n}\n\nfunction getString(record: Record<string, unknown> | undefined, key: string): string | undefined {\n const value = record?.[key];\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction getObjectValue(value: unknown, key: string): unknown {\n return toRecord(value)?.[key];\n}\n\nfunction toRecord(value: unknown): Record<string, unknown> | undefined {\n return isRecord(value) ? value : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object';\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAa,UAAU,EAAoB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEtG,OAAO,EAAE,KAAK,IAAI,WAAW,EAAO,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,IAAI,kBAAkB,EAA2B,MAAM,gBAAgB,CAAC;AAgBlG,OAAO,KAAK,EAAE,kBAAkB,EAAsD,MAAM,SAAS,CAAC;AAkBtG,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,OAAO,EAAE,gBAAgB,CAAC;IAC1B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,yBAAyB,GAC3D,CACI;IACE;;;OAGG;IACH,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB,GACD;IACE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;OAEG;IACH,UAAU,EAAE,kBAAkB,CAAC;CAChC,CACJ,CAAC;AAEJ,qBAAa,cAAe,SAAQ,KAAK;;IACvC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IAIxC,YAAY,OAAO,EAAE,qBAAqB,EAYzC;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,kBAAkB,CAAC,MAAM,CAAC,GACnC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CA2C7B;IAEK,MAAM,CAAC,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACnC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAmCpC;IAEK,cAAc,CAAC,MAAM,GAAG,SAAS,EACrC,UAAU,EAAE,wBAAwB,EACpC,OAAO,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACnC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAG7B;IAEK,YAAY,CAAC,MAAM,GAAG,SAAS,EACnC,UAAU,EAAE,wBAAwB,EACpC,OAAO,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACnC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAGpC;IAED,OAAO,CAAC,kBAAkB;CAI3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAa,UAAU,EAAoB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEtG,OAAO,EAAE,KAAK,IAAI,WAAW,EAAO,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,IAAI,kBAAkB,EAA2B,MAAM,gBAAgB,CAAC;AAgBlG,OAAO,KAAK,EAAE,kBAAkB,EAAsD,MAAM,SAAS,CAAC;AAkBtG,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,OAAO,EAAE,gBAAgB,CAAC;IAC1B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,yBAAyB,GAC3D,CACI;IACE;;;OAGG;IACH,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB,GACD;IACE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;OAEG;IACH,UAAU,EAAE,kBAAkB,CAAC;CAChC,CACJ,CAAC;AAEJ,qBAAa,cAAe,SAAQ,KAAK;;IACvC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IAIxC,YAAY,OAAO,EAAE,qBAAqB,EAYzC;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,kBAAkB,CAAC,MAAM,CAAC,GACnC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CA2C7B;IAEK,MAAM,CAAC,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACnC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAmCpC;IAEK,cAAc,CAAC,MAAM,GAAG,SAAS,EACrC,UAAU,EAAE,wBAAwB,EACpC,OAAO,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACnC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAG7B;IAEK,YAAY,CAAC,MAAM,GAAG,SAAS,EACnC,UAAU,EAAE,wBAAwB,EACpC,OAAO,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACnC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAGpC;IAED,OAAO,CAAC,kBAAkB;CAI3B"}
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 { Agent } from "@mastra/core/agent";
4
3
  import { RequestContext } from "@mastra/core/request-context";
@@ -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, option
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
@@ -555,7 +554,7 @@ var OpenAISDKAgent = class extends Agent {
555
554
  }
556
555
  async generate(messages, options) {
557
556
  const prompt = promptToText(messages);
558
- const runId = options?.runId ?? randomUUID();
557
+ const runId = options?.runId ?? globalThis.crypto.randomUUID();
559
558
  const sdkAgent = getRunOpenAIAgent(this.resolveOpenAIAgent(), options);
560
559
  const modelId = getModelId(this.options, sdkAgent);
561
560
  const requestContext = options?.requestContext ?? new RequestContext();
@@ -600,7 +599,7 @@ var OpenAISDKAgent = class extends Agent {
600
599
  }
601
600
  async stream(messages, options) {
602
601
  const prompt = promptToText(messages);
603
- const runId = options?.runId ?? randomUUID();
602
+ const runId = options?.runId ?? globalThis.crypto.randomUUID();
604
603
  const sdkAgent = getRunOpenAIAgent(this.resolveOpenAIAgent(), options);
605
604
  const modelId = getModelId(this.options, sdkAgent);
606
605
  const requestContext = options?.requestContext ?? new RequestContext();
@@ -702,7 +701,7 @@ async function runOpenAIGenerate(prompt, agent, runId, telemetry, options) {
702
701
  }
703
702
  function runOpenAIAsMastraStream(prompt, agent, runId, requestedModelId, telemetry, options) {
704
703
  return new ReadableStream({ start: async (controller) => {
705
- const textId = randomUUID();
704
+ const textId = globalThis.crypto.randomUUID();
706
705
  let text = "";
707
706
  let responseId;
708
707
  let modelId = requestedModelId;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["#mastra","#createdAgent","OpenAIAgent"],"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';\n\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 reasoning?: 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 options,\n}: {\n messages: MessageListInput;\n runId: string;\n modelId: string;\n provider: string;\n stream: ReadableStream<ChunkType>;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): MastraModelOutput<OUTPUT> {\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n messageList.add([{ role: 'assistant', content: '' }], '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 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 ...(responseId ? { 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 ...(responseId ? { 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 ...(responseId ? { 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 reasoningTokens: usage.outputTokens.reasoning,\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 {\n type: 'json_schema',\n name: 'mastra_output',\n strict: false,\n schema: standardSchemaToJSONSchema(toStandardSchema(structuredOutput.schema)) as Record<string, unknown>,\n };\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 { Agent } from '@mastra/core/agent';\nimport type { StructuredOutputOptions } from '@mastra/core/agent';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { RequestContext } from '@mastra/core/request-context';\nimport type { ChunkType, FullOutput, ProviderMetadata, MastraModelOutput } from '@mastra/core/stream';\nimport { ChunkFrom } from '@mastra/core/stream';\nimport { Agent as OpenAIAgent, run } from '@openai/agents';\nimport type { AgentOptions as OpenAIAgentOptions, RunItem, RunStreamEvent } from '@openai/agents';\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 = '@openai/agents';\nconst MODEL_ID = 'openai-agents-sdk';\n\ntype OpenAIUsageTotals = {\n inputTokens?: number;\n outputTokens?: number;\n cacheReadInputTokens?: number;\n cacheCreationInputTokens?: number;\n reasoningTokens?: number;\n requests?: number;\n requestUsageEntries?: unknown[];\n};\n\ntype OpenAIToolTelemetry = Pick<SDKAgentTelemetry, 'startToolCall' | 'endToolCall'>;\ntype OpenAIStructuredOutputOption<OUTPUT> = OUTPUT extends {} ? StructuredOutputOptions<OUTPUT> : never;\n\nexport type OpenAISDKAgentResumeData = {\n /**\n * Message to send while continuing the OpenAI Agents SDK run.\n */\n message: MessageListInput;\n /**\n * Previous OpenAI response id to continue from.\n */\n previousResponseId?: string;\n /**\n * OpenAI conversation id for server-managed conversation state.\n */\n conversationId?: string;\n /**\n * OpenAI Agents SDK session object for client-managed conversation state.\n */\n session?: unknown;\n};\n\ntype OpenAISDKAgentBaseOptions = {\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\nexport type OpenAISDKAgentOptions = OpenAISDKAgentBaseOptions &\n (\n | {\n /**\n * Pre-created OpenAI Agents SDK agent. Pass this when you manage the\n * SDK agent lifecycle yourself.\n */\n agent: OpenAIAgent;\n sdkOptions?: never;\n }\n | {\n agent?: never;\n /**\n * OpenAI Agents SDK options used to create an SDK agent.\n */\n sdkOptions: OpenAIAgentOptions;\n }\n );\n\nexport class OpenAISDKAgent extends Agent {\n readonly options: OpenAISDKAgentOptions;\n #mastra?: Mastra;\n #createdAgent?: OpenAIAgent;\n\n constructor(options: OpenAISDKAgentOptions) {\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?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const prompt = promptToText(messages);\n const runId = options?.runId ?? randomUUID();\n const sdkAgent = getRunOpenAIAgent(this.resolveOpenAIAgent(), options);\n const modelId = getModelId(this.options, sdkAgent);\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: 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\n try {\n result = await telemetry.execute(() => runOpenAIGenerate(prompt, sdkAgent, runId, 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: getStructuredOutputOption(options) },\n });\n }\n\n async stream<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const prompt = promptToText(messages);\n const runId = options?.runId ?? randomUUID();\n const sdkAgent = getRunOpenAIAgent(this.resolveOpenAIAgent(), options);\n const modelId = getModelId(this.options, sdkAgent);\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(runOpenAIAsMastraStream(prompt, sdkAgent, runId, modelId, telemetry, options)),\n options: { ...telemetry.outputOptions(), structuredOutput: getStructuredOutputOption(options) },\n });\n }\n\n async resumeGenerate<OUTPUT = undefined>(\n resumeData: OpenAISDKAgentResumeData,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const data = validateOpenAIResumeData(resumeData);\n return this.generate(data.message, createOpenAIResumeRunOptions(data, options));\n }\n\n async resumeStream<OUTPUT = undefined>(\n resumeData: OpenAISDKAgentResumeData,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const data = validateOpenAIResumeData(resumeData);\n return this.stream(data.message, createOpenAIResumeRunOptions(data, options));\n }\n\n private resolveOpenAIAgent(): OpenAIAgent {\n this.#createdAgent ??= this.options.agent ?? new OpenAIAgent(toOpenAIAgentOptions(this.options));\n return this.#createdAgent;\n }\n}\n\nfunction getStructuredOutputOption<OUTPUT>(\n options?: SDKAgentRunOptions<OUTPUT>,\n): OpenAIStructuredOutputOption<OUTPUT> | undefined {\n return options?.structuredOutput as OpenAIStructuredOutputOption<OUTPUT> | undefined;\n}\n\nfunction validateOpenAIResumeData(resumeData: OpenAISDKAgentResumeData): OpenAISDKAgentResumeData {\n const record = toRecord(resumeData);\n if (!record || !('message' in record)) {\n throw new Error('OpenAISDKAgent resumeData must include a message.');\n }\n\n if (\n typeof resumeData.previousResponseId === 'string' ||\n typeof resumeData.conversationId === 'string' ||\n resumeData.session !== undefined\n ) {\n return resumeData;\n }\n\n throw new Error('OpenAISDKAgent resumeData must include previousResponseId, conversationId, or session.');\n}\n\nfunction createOpenAIResumeRunOptions<OUTPUT>(\n resumeData: OpenAISDKAgentResumeData,\n options?: SDKAgentRunOptions<OUTPUT>,\n): SDKAgentRunOptions<OUTPUT> {\n return {\n ...options,\n previousResponseId: resumeData.previousResponseId ?? options?.previousResponseId,\n conversationId: resumeData.conversationId ?? options?.conversationId,\n session: resumeData.session ?? options?.session,\n };\n}\n\nasync function runOpenAIGenerate<OUTPUT>(\n prompt: string,\n agent: OpenAIAgent,\n runId: string,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n options?: SDKAgentRunOptions<OUTPUT>,\n): Promise<SDKModelGenerateResult> {\n const result = await run(agent, prompt, createOpenAIRunOptions(options, false));\n\n recordOpenAIToolTelemetry(result.newItems, telemetry);\n const text = getTextFromFinalOutput(result.finalOutput);\n const responseId = result.lastResponseId;\n const modelId = getModelId(undefined, result.lastAgent ?? agent, result.rawResponses.at(-1));\n const usage = createOpenAIUsageTotals(result.state.usage);\n const providerMetadata = getOpenAIProviderMetadata({\n modelId,\n responseId,\n lastResponseId: result.lastResponseId,\n rawResponseCount: result.rawResponses.length,\n itemCount: result.newItems.length,\n usage,\n });\n\n return {\n content: [{ type: 'text', text }],\n finishReason: { unified: 'stop', raw: 'stop' },\n usage: toV3Usage(usage),\n response: {\n id: responseId,\n modelId,\n timestamp: new Date(),\n },\n providerMetadata,\n object: await getStructuredOutputFromValue(result.finalOutput, options?.structuredOutput),\n };\n}\n\nfunction runOpenAIAsMastraStream<OUTPUT>(\n prompt: string,\n agent: OpenAIAgent,\n runId: string,\n requestedModelId: string,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n options?: SDKAgentRunOptions<OUTPUT>,\n): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start: async controller => {\n const textId = randomUUID();\n let text = '';\n let responseId: string | undefined;\n let modelId = requestedModelId;\n\n try {\n const result = await run(agent, prompt, createOpenAIRunOptions(options, true));\n\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n });\n\n for await (const event of result) {\n const delta = getTextDelta(event);\n if (delta) {\n text += delta;\n enqueueTextDelta(controller, runId, textId, delta);\n }\n\n recordOpenAIStreamToolTelemetry(event, telemetry);\n }\n\n await result.completed;\n\n responseId = result.lastResponseId ?? responseId;\n modelId = getModelId(undefined, result.lastAgent ?? agent, result.rawResponses.at(-1));\n if (!text) {\n text = getTextFromFinalOutput(result.finalOutput);\n if (text) {\n enqueueTextDelta(controller, runId, textId, text);\n }\n }\n\n const usage = createOpenAIUsageTotals(result.state.usage);\n const providerMetadata = getOpenAIProviderMetadata({\n modelId,\n responseId,\n lastResponseId: result.lastResponseId,\n rawResponseCount: result.rawResponses.length,\n itemCount: result.newItems.length,\n usage,\n });\n\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage: toLanguageModelUsage(toV3Usage(usage)),\n providerMetadata,\n object: await getStructuredOutputFromValue(result.finalOutput, options?.structuredOutput),\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 toOpenAIAgentOptions(options: OpenAISDKAgentOptions): OpenAIAgentOptions {\n return {\n name: options.name ?? options.id,\n ...options.sdkOptions,\n };\n}\n\nfunction getRunOpenAIAgent<OUTPUT>(agent: OpenAIAgent, options?: SDKAgentRunOptions<OUTPUT>): OpenAIAgent {\n const outputType = getStructuredOutputSchema(options?.structuredOutput);\n if (!outputType) {\n return agent;\n }\n\n return (agent as { clone(config: Record<string, unknown>): OpenAIAgent }).clone({ outputType });\n}\n\nfunction createOpenAIRunOptions<OUTPUT>(\n options: SDKAgentRunOptions<OUTPUT> | undefined,\n stream: false,\n): Record<string, unknown> & { stream: false };\nfunction createOpenAIRunOptions<OUTPUT>(\n options: SDKAgentRunOptions<OUTPUT> | undefined,\n stream: true,\n): Record<string, unknown> & { stream: true };\nfunction createOpenAIRunOptions<OUTPUT>(\n options: SDKAgentRunOptions<OUTPUT> | undefined,\n stream: boolean,\n): Record<string, unknown> & { stream: boolean } {\n const runOptions: Record<string, unknown> & { stream: boolean } = { stream };\n addDefined(runOptions, 'maxTurns', options?.maxSteps);\n addDefined(runOptions, 'signal', options?.abortSignal ?? options?.signal);\n addDefined(runOptions, 'conversationId', options?.conversationId);\n addDefined(runOptions, 'previousResponseId', options?.previousResponseId);\n addDefined(runOptions, 'session', options?.session);\n\n return runOptions;\n}\n\nfunction addDefined(target: Record<string, unknown>, key: string, value: unknown): void {\n if (value !== undefined) {\n target[key] = value;\n }\n}\n\nfunction getModelId(options?: OpenAISDKAgentOptions, agent?: OpenAIAgent, rawResponse?: unknown): string {\n return (\n getModelNameFromUnknown(rawResponse) ??\n getModelNameFromUnknown(agent?.model) ??\n getModelNameFromUnknown(options?.sdkOptions?.model) ??\n MODEL_ID\n );\n}\n\nfunction getModelNameFromUnknown(value: unknown): string | undefined {\n if (typeof value === 'string') {\n return value;\n }\n\n const record = toRecord(value);\n return (\n getString(record, 'model') ??\n getString(record, 'modelId') ??\n getString(record, 'modelName') ??\n getString(toRecord(record?.providerData), 'model')\n );\n}\n\nfunction getTextFromFinalOutput(output: unknown): string {\n if (typeof output === 'string') {\n return output;\n }\n if (output === undefined || output === null) {\n return '';\n }\n\n return JSON.stringify(output);\n}\n\nfunction createOpenAIUsageTotals(usage: unknown): OpenAIUsageTotals {\n const record = toRecord(usage);\n if (!record) {\n return {};\n }\n\n const inputDetails = getDetailRecords(record.inputTokensDetails);\n const outputDetails = getDetailRecords(record.outputTokensDetails);\n const requestUsageEntries = Array.isArray(record.requestUsageEntries) ? record.requestUsageEntries : undefined;\n\n return {\n inputTokens: getNumber(record.inputTokens),\n outputTokens: getNumber(record.outputTokens),\n cacheReadInputTokens: sumDetails(inputDetails, 'cachedTokens', 'cached_tokens', 'cacheReadInputTokens'),\n cacheCreationInputTokens: sumDetails(inputDetails, 'cacheCreationInputTokens', 'cache_creation_input_tokens'),\n reasoningTokens: sumDetails(outputDetails, 'reasoningTokens', 'reasoning_tokens'),\n requests: getNumber(record.requests),\n requestUsageEntries,\n };\n}\n\nfunction getDetailRecords(value: unknown): Array<Record<string, unknown>> {\n if (Array.isArray(value)) {\n return value.filter(isRecord);\n }\n\n const record = toRecord(value);\n return record ? [record] : [];\n}\n\nfunction sumDetails(records: Array<Record<string, unknown>>, ...keys: string[]): number | undefined {\n let total = 0;\n let found = false;\n\n for (const record of records) {\n for (const key of keys) {\n const value = getNumber(record[key]);\n if (value !== undefined) {\n total += value;\n found = true;\n }\n }\n }\n\n return found ? total : undefined;\n}\n\nfunction toV3Usage(usage: OpenAIUsageTotals): V3Usage {\n const totalInputTokens = usage.inputTokens;\n const cacheRead = usage.cacheReadInputTokens;\n const cacheWrite = usage.cacheCreationInputTokens;\n const noCache =\n totalInputTokens === undefined\n ? undefined\n : Math.max(totalInputTokens - (sumDefined(cacheRead, cacheWrite) ?? 0), 0);\n const outputTokens = usage.outputTokens;\n const reasoningTokens = usage.reasoningTokens;\n\n return {\n inputTokens: {\n total: totalInputTokens,\n noCache,\n cacheRead,\n cacheWrite,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens,\n reasoning: reasoningTokens,\n },\n };\n}\n\nfunction getOpenAIProviderMetadata({\n modelId,\n responseId,\n lastResponseId,\n rawResponseCount,\n itemCount,\n usage,\n}: {\n modelId: string;\n responseId?: string;\n lastResponseId?: string;\n rawResponseCount: number;\n itemCount: number;\n usage: OpenAIUsageTotals;\n}): ProviderMetadata {\n return createProviderMetadata('openai', {\n model: modelId,\n responseId,\n lastResponseId,\n rawResponseCount,\n itemCount,\n usage,\n });\n}\n\nfunction recordOpenAIToolTelemetry(items: RunItem[], telemetry: OpenAIToolTelemetry): void {\n for (const item of items) {\n if (item.type === 'tool_call_item') {\n const toolCall = getOpenAIToolCall(item.rawItem);\n if (toolCall) {\n telemetry.startToolCall(toolCall);\n }\n continue;\n }\n\n if (item.type === 'tool_call_output_item') {\n const toolOutput = getOpenAIToolOutput(item.rawItem, item.output);\n if (toolOutput) {\n telemetry.endToolCall(toolOutput);\n }\n }\n }\n}\n\nfunction recordOpenAIStreamToolTelemetry(event: RunStreamEvent, telemetry: OpenAIToolTelemetry): void {\n if (event.type !== 'run_item_stream_event') {\n return;\n }\n\n if (event.name === 'tool_called') {\n const toolCall = getOpenAIToolCall(event.item.rawItem);\n if (toolCall) {\n telemetry.startToolCall(toolCall);\n }\n return;\n }\n\n if (event.name === 'tool_output') {\n const toolOutput = getOpenAIToolOutput(event.item.rawItem, getObjectValue(event.item, 'output'));\n if (toolOutput) {\n telemetry.endToolCall(toolOutput);\n }\n }\n}\n\nfunction getOpenAIToolCall(rawItem: unknown): { toolCallId: string; toolName: string; input?: unknown } | undefined {\n const record = toRecord(rawItem);\n if (!record) {\n return undefined;\n }\n\n if (record.type === 'function_call') {\n const toolCallId = getString(record, 'callId') ?? getString(record, 'id');\n const toolName = getNamespacedToolName(record);\n if (!toolCallId || !toolName) {\n return undefined;\n }\n\n return {\n toolCallId,\n toolName,\n input: parseJsonString(record.arguments),\n };\n }\n\n if (record.type === 'hosted_tool_call') {\n const toolCallId = getString(record, 'id') ?? getString(record, 'name');\n const toolName = getString(record, 'name');\n if (!toolCallId || !toolName) {\n return undefined;\n }\n\n return {\n toolCallId,\n toolName,\n input: parseJsonString(record.arguments),\n };\n }\n\n if (record.type === 'shell_call' || record.type === 'apply_patch_call') {\n const toolCallId = getString(record, 'callId');\n if (!toolCallId) {\n return undefined;\n }\n\n return {\n toolCallId,\n toolName: String(record.type),\n input: record.action ?? record.operation,\n };\n }\n\n return undefined;\n}\n\nfunction getOpenAIToolOutput(\n rawItem: unknown,\n fallbackOutput: unknown,\n): { toolCallId: string; output?: unknown; isError?: boolean } | undefined {\n const record = toRecord(rawItem);\n if (!record) {\n return undefined;\n }\n\n const toolCallId = getString(record, 'callId') ?? getString(record, 'id');\n if (!toolCallId) {\n return undefined;\n }\n\n return {\n toolCallId,\n output: record.output ?? fallbackOutput,\n isError: record.status === 'failed' || record.status === 'incomplete',\n };\n}\n\nfunction getNamespacedToolName(record: Record<string, unknown>): string | undefined {\n const name = getString(record, 'name');\n const namespace = getString(record, 'namespace');\n if (!name) {\n return undefined;\n }\n\n return namespace ? `${namespace}.${name}` : name;\n}\n\nfunction getTextDelta(event: RunStreamEvent): string {\n if (event.type !== 'raw_model_stream_event') {\n return '';\n }\n\n const data = toRecord(event.data);\n return data?.type === 'output_text_delta' && typeof data.delta === 'string' ? data.delta : '';\n}\n\nfunction parseJsonString(value: unknown): unknown {\n if (typeof value !== 'string') {\n return value;\n }\n\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nfunction getNumber(value: unknown): number | undefined {\n return typeof value === 'number' ? value : undefined;\n}\n\nfunction getString(record: Record<string, unknown> | undefined, key: string): string | undefined {\n const value = record?.[key];\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction getObjectValue(value: unknown, key: string): unknown {\n return toRecord(value)?.[key];\n}\n\nfunction toRecord(value: unknown): Record<string, unknown> | undefined {\n return isRecord(value) ? value : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object';\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["#mastra","#createdAgent","OpenAIAgent"],"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';\n\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 reasoning?: 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 options,\n}: {\n messages: MessageListInput;\n runId: string;\n modelId: string;\n provider: string;\n stream: ReadableStream<ChunkType>;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): MastraModelOutput<OUTPUT> {\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n messageList.add([{ role: 'assistant', content: '' }], '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 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 ...(responseId ? { 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 ...(responseId ? { 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 ...(responseId ? { 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 reasoningTokens: usage.outputTokens.reasoning,\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 {\n type: 'json_schema',\n name: 'mastra_output',\n strict: false,\n schema: standardSchemaToJSONSchema(toStandardSchema(structuredOutput.schema)) as Record<string, unknown>,\n };\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 { Agent } from '@mastra/core/agent';\nimport type { StructuredOutputOptions } from '@mastra/core/agent';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { RequestContext } from '@mastra/core/request-context';\nimport type { ChunkType, FullOutput, ProviderMetadata, MastraModelOutput } from '@mastra/core/stream';\nimport { ChunkFrom } from '@mastra/core/stream';\nimport { Agent as OpenAIAgent, run } from '@openai/agents';\nimport type { AgentOptions as OpenAIAgentOptions, RunItem, RunStreamEvent } from '@openai/agents';\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 = '@openai/agents';\nconst MODEL_ID = 'openai-agents-sdk';\n\ntype OpenAIUsageTotals = {\n inputTokens?: number;\n outputTokens?: number;\n cacheReadInputTokens?: number;\n cacheCreationInputTokens?: number;\n reasoningTokens?: number;\n requests?: number;\n requestUsageEntries?: unknown[];\n};\n\ntype OpenAIToolTelemetry = Pick<SDKAgentTelemetry, 'startToolCall' | 'endToolCall'>;\ntype OpenAIStructuredOutputOption<OUTPUT> = OUTPUT extends {} ? StructuredOutputOptions<OUTPUT> : never;\n\nexport type OpenAISDKAgentResumeData = {\n /**\n * Message to send while continuing the OpenAI Agents SDK run.\n */\n message: MessageListInput;\n /**\n * Previous OpenAI response id to continue from.\n */\n previousResponseId?: string;\n /**\n * OpenAI conversation id for server-managed conversation state.\n */\n conversationId?: string;\n /**\n * OpenAI Agents SDK session object for client-managed conversation state.\n */\n session?: unknown;\n};\n\ntype OpenAISDKAgentBaseOptions = {\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\nexport type OpenAISDKAgentOptions = OpenAISDKAgentBaseOptions &\n (\n | {\n /**\n * Pre-created OpenAI Agents SDK agent. Pass this when you manage the\n * SDK agent lifecycle yourself.\n */\n agent: OpenAIAgent;\n sdkOptions?: never;\n }\n | {\n agent?: never;\n /**\n * OpenAI Agents SDK options used to create an SDK agent.\n */\n sdkOptions: OpenAIAgentOptions;\n }\n );\n\nexport class OpenAISDKAgent extends Agent {\n readonly options: OpenAISDKAgentOptions;\n #mastra?: Mastra;\n #createdAgent?: OpenAIAgent;\n\n constructor(options: OpenAISDKAgentOptions) {\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?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const prompt = promptToText(messages);\n const runId = options?.runId ?? globalThis.crypto.randomUUID();\n const sdkAgent = getRunOpenAIAgent(this.resolveOpenAIAgent(), options);\n const modelId = getModelId(this.options, sdkAgent);\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: 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\n try {\n result = await telemetry.execute(() => runOpenAIGenerate(prompt, sdkAgent, runId, 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: getStructuredOutputOption(options) },\n });\n }\n\n async stream<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const prompt = promptToText(messages);\n const runId = options?.runId ?? globalThis.crypto.randomUUID();\n const sdkAgent = getRunOpenAIAgent(this.resolveOpenAIAgent(), options);\n const modelId = getModelId(this.options, sdkAgent);\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(runOpenAIAsMastraStream(prompt, sdkAgent, runId, modelId, telemetry, options)),\n options: { ...telemetry.outputOptions(), structuredOutput: getStructuredOutputOption(options) },\n });\n }\n\n async resumeGenerate<OUTPUT = undefined>(\n resumeData: OpenAISDKAgentResumeData,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const data = validateOpenAIResumeData(resumeData);\n return this.generate(data.message, createOpenAIResumeRunOptions(data, options));\n }\n\n async resumeStream<OUTPUT = undefined>(\n resumeData: OpenAISDKAgentResumeData,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const data = validateOpenAIResumeData(resumeData);\n return this.stream(data.message, createOpenAIResumeRunOptions(data, options));\n }\n\n private resolveOpenAIAgent(): OpenAIAgent {\n this.#createdAgent ??= this.options.agent ?? new OpenAIAgent(toOpenAIAgentOptions(this.options));\n return this.#createdAgent;\n }\n}\n\nfunction getStructuredOutputOption<OUTPUT>(\n options?: SDKAgentRunOptions<OUTPUT>,\n): OpenAIStructuredOutputOption<OUTPUT> | undefined {\n return options?.structuredOutput as OpenAIStructuredOutputOption<OUTPUT> | undefined;\n}\n\nfunction validateOpenAIResumeData(resumeData: OpenAISDKAgentResumeData): OpenAISDKAgentResumeData {\n const record = toRecord(resumeData);\n if (!record || !('message' in record)) {\n throw new Error('OpenAISDKAgent resumeData must include a message.');\n }\n\n if (\n typeof resumeData.previousResponseId === 'string' ||\n typeof resumeData.conversationId === 'string' ||\n resumeData.session !== undefined\n ) {\n return resumeData;\n }\n\n throw new Error('OpenAISDKAgent resumeData must include previousResponseId, conversationId, or session.');\n}\n\nfunction createOpenAIResumeRunOptions<OUTPUT>(\n resumeData: OpenAISDKAgentResumeData,\n options?: SDKAgentRunOptions<OUTPUT>,\n): SDKAgentRunOptions<OUTPUT> {\n return {\n ...options,\n previousResponseId: resumeData.previousResponseId ?? options?.previousResponseId,\n conversationId: resumeData.conversationId ?? options?.conversationId,\n session: resumeData.session ?? options?.session,\n };\n}\n\nasync function runOpenAIGenerate<OUTPUT>(\n prompt: string,\n agent: OpenAIAgent,\n runId: string,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n options?: SDKAgentRunOptions<OUTPUT>,\n): Promise<SDKModelGenerateResult> {\n const result = await run(agent, prompt, createOpenAIRunOptions(options, false));\n\n recordOpenAIToolTelemetry(result.newItems, telemetry);\n const text = getTextFromFinalOutput(result.finalOutput);\n const responseId = result.lastResponseId;\n const modelId = getModelId(undefined, result.lastAgent ?? agent, result.rawResponses.at(-1));\n const usage = createOpenAIUsageTotals(result.state.usage);\n const providerMetadata = getOpenAIProviderMetadata({\n modelId,\n responseId,\n lastResponseId: result.lastResponseId,\n rawResponseCount: result.rawResponses.length,\n itemCount: result.newItems.length,\n usage,\n });\n\n return {\n content: [{ type: 'text', text }],\n finishReason: { unified: 'stop', raw: 'stop' },\n usage: toV3Usage(usage),\n response: {\n id: responseId,\n modelId,\n timestamp: new Date(),\n },\n providerMetadata,\n object: await getStructuredOutputFromValue(result.finalOutput, options?.structuredOutput),\n };\n}\n\nfunction runOpenAIAsMastraStream<OUTPUT>(\n prompt: string,\n agent: OpenAIAgent,\n runId: string,\n requestedModelId: string,\n telemetry: SDKAgentTelemetry<OUTPUT>,\n options?: SDKAgentRunOptions<OUTPUT>,\n): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start: async controller => {\n const textId = globalThis.crypto.randomUUID();\n let text = '';\n let responseId: string | undefined;\n let modelId = requestedModelId;\n\n try {\n const result = await run(agent, prompt, createOpenAIRunOptions(options, true));\n\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n });\n\n for await (const event of result) {\n const delta = getTextDelta(event);\n if (delta) {\n text += delta;\n enqueueTextDelta(controller, runId, textId, delta);\n }\n\n recordOpenAIStreamToolTelemetry(event, telemetry);\n }\n\n await result.completed;\n\n responseId = result.lastResponseId ?? responseId;\n modelId = getModelId(undefined, result.lastAgent ?? agent, result.rawResponses.at(-1));\n if (!text) {\n text = getTextFromFinalOutput(result.finalOutput);\n if (text) {\n enqueueTextDelta(controller, runId, textId, text);\n }\n }\n\n const usage = createOpenAIUsageTotals(result.state.usage);\n const providerMetadata = getOpenAIProviderMetadata({\n modelId,\n responseId,\n lastResponseId: result.lastResponseId,\n rawResponseCount: result.rawResponses.length,\n itemCount: result.newItems.length,\n usage,\n });\n\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage: toLanguageModelUsage(toV3Usage(usage)),\n providerMetadata,\n object: await getStructuredOutputFromValue(result.finalOutput, options?.structuredOutput),\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 toOpenAIAgentOptions(options: OpenAISDKAgentOptions): OpenAIAgentOptions {\n return {\n name: options.name ?? options.id,\n ...options.sdkOptions,\n };\n}\n\nfunction getRunOpenAIAgent<OUTPUT>(agent: OpenAIAgent, options?: SDKAgentRunOptions<OUTPUT>): OpenAIAgent {\n const outputType = getStructuredOutputSchema(options?.structuredOutput);\n if (!outputType) {\n return agent;\n }\n\n return (agent as { clone(config: Record<string, unknown>): OpenAIAgent }).clone({ outputType });\n}\n\nfunction createOpenAIRunOptions<OUTPUT>(\n options: SDKAgentRunOptions<OUTPUT> | undefined,\n stream: false,\n): Record<string, unknown> & { stream: false };\nfunction createOpenAIRunOptions<OUTPUT>(\n options: SDKAgentRunOptions<OUTPUT> | undefined,\n stream: true,\n): Record<string, unknown> & { stream: true };\nfunction createOpenAIRunOptions<OUTPUT>(\n options: SDKAgentRunOptions<OUTPUT> | undefined,\n stream: boolean,\n): Record<string, unknown> & { stream: boolean } {\n const runOptions: Record<string, unknown> & { stream: boolean } = { stream };\n addDefined(runOptions, 'maxTurns', options?.maxSteps);\n addDefined(runOptions, 'signal', options?.abortSignal ?? options?.signal);\n addDefined(runOptions, 'conversationId', options?.conversationId);\n addDefined(runOptions, 'previousResponseId', options?.previousResponseId);\n addDefined(runOptions, 'session', options?.session);\n\n return runOptions;\n}\n\nfunction addDefined(target: Record<string, unknown>, key: string, value: unknown): void {\n if (value !== undefined) {\n target[key] = value;\n }\n}\n\nfunction getModelId(options?: OpenAISDKAgentOptions, agent?: OpenAIAgent, rawResponse?: unknown): string {\n return (\n getModelNameFromUnknown(rawResponse) ??\n getModelNameFromUnknown(agent?.model) ??\n getModelNameFromUnknown(options?.sdkOptions?.model) ??\n MODEL_ID\n );\n}\n\nfunction getModelNameFromUnknown(value: unknown): string | undefined {\n if (typeof value === 'string') {\n return value;\n }\n\n const record = toRecord(value);\n return (\n getString(record, 'model') ??\n getString(record, 'modelId') ??\n getString(record, 'modelName') ??\n getString(toRecord(record?.providerData), 'model')\n );\n}\n\nfunction getTextFromFinalOutput(output: unknown): string {\n if (typeof output === 'string') {\n return output;\n }\n if (output === undefined || output === null) {\n return '';\n }\n\n return JSON.stringify(output);\n}\n\nfunction createOpenAIUsageTotals(usage: unknown): OpenAIUsageTotals {\n const record = toRecord(usage);\n if (!record) {\n return {};\n }\n\n const inputDetails = getDetailRecords(record.inputTokensDetails);\n const outputDetails = getDetailRecords(record.outputTokensDetails);\n const requestUsageEntries = Array.isArray(record.requestUsageEntries) ? record.requestUsageEntries : undefined;\n\n return {\n inputTokens: getNumber(record.inputTokens),\n outputTokens: getNumber(record.outputTokens),\n cacheReadInputTokens: sumDetails(inputDetails, 'cachedTokens', 'cached_tokens', 'cacheReadInputTokens'),\n cacheCreationInputTokens: sumDetails(inputDetails, 'cacheCreationInputTokens', 'cache_creation_input_tokens'),\n reasoningTokens: sumDetails(outputDetails, 'reasoningTokens', 'reasoning_tokens'),\n requests: getNumber(record.requests),\n requestUsageEntries,\n };\n}\n\nfunction getDetailRecords(value: unknown): Array<Record<string, unknown>> {\n if (Array.isArray(value)) {\n return value.filter(isRecord);\n }\n\n const record = toRecord(value);\n return record ? [record] : [];\n}\n\nfunction sumDetails(records: Array<Record<string, unknown>>, ...keys: string[]): number | undefined {\n let total = 0;\n let found = false;\n\n for (const record of records) {\n for (const key of keys) {\n const value = getNumber(record[key]);\n if (value !== undefined) {\n total += value;\n found = true;\n }\n }\n }\n\n return found ? total : undefined;\n}\n\nfunction toV3Usage(usage: OpenAIUsageTotals): V3Usage {\n const totalInputTokens = usage.inputTokens;\n const cacheRead = usage.cacheReadInputTokens;\n const cacheWrite = usage.cacheCreationInputTokens;\n const noCache =\n totalInputTokens === undefined\n ? undefined\n : Math.max(totalInputTokens - (sumDefined(cacheRead, cacheWrite) ?? 0), 0);\n const outputTokens = usage.outputTokens;\n const reasoningTokens = usage.reasoningTokens;\n\n return {\n inputTokens: {\n total: totalInputTokens,\n noCache,\n cacheRead,\n cacheWrite,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens,\n reasoning: reasoningTokens,\n },\n };\n}\n\nfunction getOpenAIProviderMetadata({\n modelId,\n responseId,\n lastResponseId,\n rawResponseCount,\n itemCount,\n usage,\n}: {\n modelId: string;\n responseId?: string;\n lastResponseId?: string;\n rawResponseCount: number;\n itemCount: number;\n usage: OpenAIUsageTotals;\n}): ProviderMetadata {\n return createProviderMetadata('openai', {\n model: modelId,\n responseId,\n lastResponseId,\n rawResponseCount,\n itemCount,\n usage,\n });\n}\n\nfunction recordOpenAIToolTelemetry(items: RunItem[], telemetry: OpenAIToolTelemetry): void {\n for (const item of items) {\n if (item.type === 'tool_call_item') {\n const toolCall = getOpenAIToolCall(item.rawItem);\n if (toolCall) {\n telemetry.startToolCall(toolCall);\n }\n continue;\n }\n\n if (item.type === 'tool_call_output_item') {\n const toolOutput = getOpenAIToolOutput(item.rawItem, item.output);\n if (toolOutput) {\n telemetry.endToolCall(toolOutput);\n }\n }\n }\n}\n\nfunction recordOpenAIStreamToolTelemetry(event: RunStreamEvent, telemetry: OpenAIToolTelemetry): void {\n if (event.type !== 'run_item_stream_event') {\n return;\n }\n\n if (event.name === 'tool_called') {\n const toolCall = getOpenAIToolCall(event.item.rawItem);\n if (toolCall) {\n telemetry.startToolCall(toolCall);\n }\n return;\n }\n\n if (event.name === 'tool_output') {\n const toolOutput = getOpenAIToolOutput(event.item.rawItem, getObjectValue(event.item, 'output'));\n if (toolOutput) {\n telemetry.endToolCall(toolOutput);\n }\n }\n}\n\nfunction getOpenAIToolCall(rawItem: unknown): { toolCallId: string; toolName: string; input?: unknown } | undefined {\n const record = toRecord(rawItem);\n if (!record) {\n return undefined;\n }\n\n if (record.type === 'function_call') {\n const toolCallId = getString(record, 'callId') ?? getString(record, 'id');\n const toolName = getNamespacedToolName(record);\n if (!toolCallId || !toolName) {\n return undefined;\n }\n\n return {\n toolCallId,\n toolName,\n input: parseJsonString(record.arguments),\n };\n }\n\n if (record.type === 'hosted_tool_call') {\n const toolCallId = getString(record, 'id') ?? getString(record, 'name');\n const toolName = getString(record, 'name');\n if (!toolCallId || !toolName) {\n return undefined;\n }\n\n return {\n toolCallId,\n toolName,\n input: parseJsonString(record.arguments),\n };\n }\n\n if (record.type === 'shell_call' || record.type === 'apply_patch_call') {\n const toolCallId = getString(record, 'callId');\n if (!toolCallId) {\n return undefined;\n }\n\n return {\n toolCallId,\n toolName: String(record.type),\n input: record.action ?? record.operation,\n };\n }\n\n return undefined;\n}\n\nfunction getOpenAIToolOutput(\n rawItem: unknown,\n fallbackOutput: unknown,\n): { toolCallId: string; output?: unknown; isError?: boolean } | undefined {\n const record = toRecord(rawItem);\n if (!record) {\n return undefined;\n }\n\n const toolCallId = getString(record, 'callId') ?? getString(record, 'id');\n if (!toolCallId) {\n return undefined;\n }\n\n return {\n toolCallId,\n output: record.output ?? fallbackOutput,\n isError: record.status === 'failed' || record.status === 'incomplete',\n };\n}\n\nfunction getNamespacedToolName(record: Record<string, unknown>): string | undefined {\n const name = getString(record, 'name');\n const namespace = getString(record, 'namespace');\n if (!name) {\n return undefined;\n }\n\n return namespace ? `${namespace}.${name}` : name;\n}\n\nfunction getTextDelta(event: RunStreamEvent): string {\n if (event.type !== 'raw_model_stream_event') {\n return '';\n }\n\n const data = toRecord(event.data);\n return data?.type === 'output_text_delta' && typeof data.delta === 'string' ? data.delta : '';\n}\n\nfunction parseJsonString(value: unknown): unknown {\n if (typeof value !== 'string') {\n return value;\n }\n\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nfunction getNumber(value: unknown): number | undefined {\n return typeof value === 'number' ? value : undefined;\n}\n\nfunction getString(record: Record<string, unknown> | undefined, key: string): string | undefined {\n const value = record?.[key];\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction getObjectValue(value: unknown, key: string): unknown {\n return toRecord(value)?.[key];\n}\n\nfunction toRecord(value: unknown): Record<string, unknown> | undefined {\n return isRecord(value) ? value : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object';\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/openai",
3
- "version": "1.1.1-alpha.1",
3
+ "version": "1.1.2-alpha.0",
4
4
  "description": "OpenAI Agents SDK package for Mastra",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,17 +27,17 @@
27
27
  "devDependencies": {
28
28
  "@openai/agents": "^0.11.6",
29
29
  "@types/node": "22.20.1",
30
- "@vitest/coverage-v8": "4.1.10",
31
- "@vitest/ui": "4.1.10",
30
+ "@vitest/coverage-v8": "4.1.11",
31
+ "@vitest/ui": "4.1.11",
32
32
  "eslint": "^10.7.0",
33
33
  "tsdown": "0.22.9",
34
34
  "tsx": "^4.23.1",
35
35
  "typescript": "^7.0.2",
36
- "vitest": "4.1.10",
37
- "zod": "^4.4.3",
38
- "@internal/types-builder": "0.0.104",
39
- "@internal/lint": "0.0.129",
40
- "@mastra/core": "1.64.0-alpha.7"
36
+ "vitest": "4.1.11",
37
+ "zod": "^4.6.4",
38
+ "@internal/lint": "0.0.138",
39
+ "@internal/types-builder": "0.0.113",
40
+ "@mastra/core": "1.73.0-alpha.0"
41
41
  },
42
42
  "homepage": "https://mastra.ai",
43
43
  "repository": {