@browserbasehq/orca 3.7.0-preview.1 → 3.7.1-preview.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.
Files changed (81) hide show
  1. package/dist/cjs/lib/modelUtils.d.ts +10 -0
  2. package/dist/cjs/lib/modelUtils.js +11 -0
  3. package/dist/cjs/lib/modelUtils.js.map +1 -1
  4. package/dist/cjs/lib/v3/agent/AgentProvider.js +3 -0
  5. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
  6. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js +3 -1
  7. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  8. package/dist/cjs/lib/v3/api.js +9 -0
  9. package/dist/cjs/lib/v3/api.js.map +1 -1
  10. package/dist/cjs/lib/v3/cache/AgentCache.js +6 -1
  11. package/dist/cjs/lib/v3/cache/AgentCache.js.map +1 -1
  12. package/dist/cjs/lib/v3/external_clients/aisdk.js +2 -0
  13. package/dist/cjs/lib/v3/external_clients/aisdk.js.map +1 -1
  14. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +5 -4
  15. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  16. package/dist/cjs/lib/v3/index.d.ts +1 -1
  17. package/dist/cjs/lib/v3/llm/LLMProvider.js +9 -2
  18. package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -1
  19. package/dist/cjs/lib/v3/llm/aisdk.js +2 -0
  20. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  21. package/dist/cjs/lib/v3/llm/providerOptions.d.ts +7 -0
  22. package/dist/cjs/lib/v3/llm/providerOptions.js +9 -0
  23. package/dist/cjs/lib/v3/llm/providerOptions.js.map +1 -0
  24. package/dist/cjs/lib/v3/types/private/agent.d.ts +1 -1
  25. package/dist/cjs/lib/v3/types/private/agent.js +1 -0
  26. package/dist/cjs/lib/v3/types/private/agent.js.map +1 -1
  27. package/dist/cjs/lib/v3/types/public/agent.d.ts +1 -1
  28. package/dist/cjs/lib/v3/types/public/agent.js +3 -0
  29. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  30. package/dist/cjs/lib/v3/types/public/model.d.ts +7 -0
  31. package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
  32. package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.js +4 -3
  33. package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.js.map +1 -1
  34. package/dist/cjs/lib/v3/v3.js +39 -3
  35. package/dist/cjs/lib/v3/v3.js.map +1 -1
  36. package/dist/cjs/lib/v3/verifier/types.d.ts +3 -2
  37. package/dist/cjs/lib/v3/verifier/types.js.map +1 -1
  38. package/dist/cjs/lib/version.d.ts +1 -1
  39. package/dist/cjs/lib/version.js +1 -1
  40. package/dist/cjs/lib/version.js.map +1 -1
  41. package/dist/esm/lib/modelUtils.d.ts +10 -0
  42. package/dist/esm/lib/modelUtils.js +9 -0
  43. package/dist/esm/lib/modelUtils.js.map +1 -1
  44. package/dist/esm/lib/v3/agent/AgentProvider.js +3 -0
  45. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  46. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +3 -1
  47. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  48. package/dist/esm/lib/v3/api.js +9 -0
  49. package/dist/esm/lib/v3/api.js.map +1 -1
  50. package/dist/esm/lib/v3/cache/AgentCache.js +6 -1
  51. package/dist/esm/lib/v3/cache/AgentCache.js.map +1 -1
  52. package/dist/esm/lib/v3/external_clients/aisdk.js +2 -0
  53. package/dist/esm/lib/v3/external_clients/aisdk.js.map +1 -1
  54. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +5 -4
  55. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  56. package/dist/esm/lib/v3/index.d.ts +1 -1
  57. package/dist/esm/lib/v3/llm/LLMProvider.js +9 -2
  58. package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
  59. package/dist/esm/lib/v3/llm/aisdk.js +2 -0
  60. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  61. package/dist/esm/lib/v3/llm/providerOptions.d.ts +7 -0
  62. package/dist/esm/lib/v3/llm/providerOptions.js +6 -0
  63. package/dist/esm/lib/v3/llm/providerOptions.js.map +1 -0
  64. package/dist/esm/lib/v3/types/private/agent.d.ts +1 -1
  65. package/dist/esm/lib/v3/types/private/agent.js +1 -0
  66. package/dist/esm/lib/v3/types/private/agent.js.map +1 -1
  67. package/dist/esm/lib/v3/types/public/agent.d.ts +1 -1
  68. package/dist/esm/lib/v3/types/public/agent.js +3 -0
  69. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  70. package/dist/esm/lib/v3/types/public/model.d.ts +7 -0
  71. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  72. package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.js +4 -3
  73. package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.js.map +1 -1
  74. package/dist/esm/lib/v3/v3.js +40 -4
  75. package/dist/esm/lib/v3/v3.js.map +1 -1
  76. package/dist/esm/lib/v3/verifier/types.d.ts +3 -2
  77. package/dist/esm/lib/v3/verifier/types.js.map +1 -1
  78. package/dist/esm/lib/version.d.ts +1 -1
  79. package/dist/esm/lib/version.js +1 -1
  80. package/dist/esm/lib/version.js.map +1 -1
  81. package/package.json +1 -1
@@ -4,6 +4,7 @@ import { wrapLanguageModel, stepCountIs, } from "ai";
4
4
  import { processMessages } from "../agent/utils/messageProcessing.js";
5
5
  import { FlowLogger } from "../flowlogger/FlowLogger.js";
6
6
  import { anthropicAdaptiveThinkingOptions, anthropicFallbacksOptions, } from "../llm/anthropicOptions.js";
7
+ import { openAIStoreProviderOptions } from "../llm/providerOptions.js";
7
8
  import { HYBRID_CAPABLE_MODEL_PATTERNS } from "../types/private/agent.js";
8
9
  import { V3FunctionName } from "../types/public/methods.js";
9
10
  import { mapToolResultToActions } from "../agent/utils/actionMapping.js";
@@ -42,14 +43,14 @@ function prependSystemMessage(systemPrompt, messages) {
42
43
  * Anthropic at all. Fable 5 additionally opts into the API's server-side
43
44
  * refusal fallback.
44
45
  */
45
- function buildAgentProviderOptions(modelId, thinkingEffort) {
46
+ function buildAgentProviderOptions(modelId, provider, thinkingEffort) {
46
47
  const anthropic = {
47
48
  ...(anthropicAdaptiveThinkingOptions(modelId, thinkingEffort) ?? {}),
48
49
  ...(anthropicFallbacksOptions(modelId) ?? {}),
49
50
  };
50
51
  return {
51
52
  google: { mediaResolution: "MEDIA_RESOLUTION_HIGH" },
52
- openai: { store: false },
53
+ ...openAIStoreProviderOptions(provider),
53
54
  ...(Object.keys(anthropic).length > 0 ? { anthropic } : {}),
54
55
  };
55
56
  }
@@ -324,7 +325,7 @@ export class V3AgentHandler {
324
325
  },
325
326
  }),
326
327
  abortSignal: preparedOptions.signal,
327
- providerOptions: buildAgentProviderOptions(wrappedModel.modelId, this.thinkingEffort),
328
+ providerOptions: buildAgentProviderOptions(wrappedModel.modelId, wrappedModel.provider, this.thinkingEffort),
328
329
  });
329
330
  const allMessages = [...messages, ...(result.response?.messages || [])];
330
331
  const doneResult = await this.ensureDone(state, wrappedModel, allMessages, preparedOptions.instruction, preparedOptions.output, this.logger);
@@ -466,7 +467,7 @@ export class V3AgentHandler {
466
467
  rejectResult(new AgentAbortError(reason));
467
468
  },
468
469
  abortSignal: options.signal,
469
- providerOptions: buildAgentProviderOptions(wrappedModel.modelId, this.thinkingEffort),
470
+ providerOptions: buildAgentProviderOptions(wrappedModel.modelId, wrappedModel.provider, this.thinkingEffort),
470
471
  });
471
472
  }
472
473
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"v3AgentHandler.js","sourceRoot":"","sources":["../../../../../lib/v3/handlers/v3AgentHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { createAgentTools } from \"../agent/tools/index.js\";\nimport { buildAgentSystemPrompt } from \"../agent/prompts/agentSystemPrompt.js\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport { V3 } from \"../v3.js\";\nimport {\n ModelMessage,\n ToolSet,\n wrapLanguageModel,\n stepCountIs,\n LanguageModel,\n type LanguageModelUsage,\n type StepResult,\n type GenerateTextOnStepFinishCallback,\n type StreamTextOnStepFinishCallback,\n type PrepareStepFunction,\n} from \"ai\";\nimport { StagehandZodObject } from \"../zodCompat.js\";\nimport { processMessages } from \"../agent/utils/messageProcessing.js\";\nimport { LLMClient } from \"../llm/LLMClient.js\";\nimport { FlowLogger } from \"../flowlogger/FlowLogger.js\";\nimport {\n anthropicAdaptiveThinkingOptions,\n anthropicFallbacksOptions,\n} from \"../llm/anthropicOptions.js\";\nimport {\n AgentExecuteOptions,\n AgentStreamExecuteOptions,\n AgentExecuteOptionsBase,\n AgentResult,\n AgentContext,\n AgentState,\n AgentStreamResult,\n AgentStreamCallbacks,\n AgentToolMode,\n AgentModelConfig,\n Variables,\n} from \"../types/public/agent.js\";\nimport type { AgentEvidenceCallback } from \"../types/public/agentEvidenceEvents.js\";\nimport { HYBRID_CAPABLE_MODEL_PATTERNS } from \"../types/private/agent.js\";\nimport { V3FunctionName } from \"../types/public/methods.js\";\nimport { mapToolResultToActions } from \"../agent/utils/actionMapping.js\";\nimport {\n MissingLLMConfigurationError,\n MissingEnvironmentVariableError,\n StreamingCallbacksInNonStreamingModeError,\n AgentAbortError,\n} from \"../types/public/sdkErrors.js\";\nimport { handleDoneToolCall } from \"../agent/utils/handleDoneToolCall.js\";\nimport {\n captureProbeEvidence,\n emitPostStepProbeEvidence,\n} from \"../agent/utils/postStepProbeEvidence.js\";\nimport { wrapEvidenceCallback } from \"../agent/utils/wrapEvidenceCallback.js\";\nimport { inferToolOutput } from \"../agent/utils/toolOutputEvidence.js\";\nimport {\n CaptchaSolver,\n CAPTCHA_SOLVED_MSG,\n CAPTCHA_ERRORED_MSG,\n} from \"../agent/utils/captchaSolver.js\";\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\ntype FinalAnswerDraft = {\n message: string;\n output?: Record<string, unknown>;\n};\n\ninterface StepHandlerOptions {\n userCallback?:\n | GenerateTextOnStepFinishCallback<ToolSet>\n | StreamTextOnStepFinishCallback<ToolSet>;\n evidenceCallback?: AgentEvidenceCallback;\n onFinalAnswer?: (answer: FinalAnswerDraft) => void;\n}\n\n/**\n * Prepends a system message with cache control to the messages array.\n * The cache control providerOptions are used by Anthropic and ignored by other providers.\n */\nfunction prependSystemMessage(\n systemPrompt: string,\n messages: ModelMessage[],\n): ModelMessage[] {\n return [\n {\n role: \"system\",\n content: systemPrompt,\n providerOptions: {\n anthropic: {\n cacheControl: { type: \"ephemeral\" },\n },\n },\n },\n ...messages,\n ];\n}\n\n/**\n * Request-level providerOptions for the hybrid/DOM agent loop.\n *\n * Anthropic models that support adaptive thinking (Claude 4.6+) get it\n * enabled here — previously the hybrid path sent no thinking config for\n * Anthropic at all. Fable 5 additionally opts into the API's server-side\n * refusal fallback.\n */\nfunction buildAgentProviderOptions(modelId: string, thinkingEffort?: string) {\n const anthropic = {\n ...(anthropicAdaptiveThinkingOptions(modelId, thinkingEffort) ?? {}),\n ...(anthropicFallbacksOptions(modelId) ?? {}),\n };\n return {\n google: { mediaResolution: \"MEDIA_RESOLUTION_HIGH\" },\n openai: { store: false },\n ...(Object.keys(anthropic).length > 0 ? { anthropic } : {}),\n };\n}\n\nexport class V3AgentHandler {\n private v3: V3;\n private logger: (message: LogLine) => void;\n private llmClient: LLMClient;\n private executionModel?: string | AgentModelConfig;\n private systemInstructions?: string;\n private mcpTools?: ToolSet;\n private mode: AgentToolMode;\n private captchaAutoSolveEnabled: boolean;\n private thinkingEffort?: string;\n\n constructor(\n v3: V3,\n logger: (message: LogLine) => void,\n llmClient: LLMClient,\n executionModel?: string | AgentModelConfig,\n systemInstructions?: string,\n mcpTools?: ToolSet,\n mode?: AgentToolMode,\n captchaAutoSolveEnabled?: boolean,\n thinkingEffort?: string,\n ) {\n this.v3 = v3;\n this.logger = logger;\n this.llmClient = llmClient;\n this.executionModel = executionModel;\n this.systemInstructions = systemInstructions;\n this.mcpTools = mcpTools;\n this.mode = mode ?? \"dom\";\n this.captchaAutoSolveEnabled = captchaAutoSolveEnabled ?? false;\n this.thinkingEffort = thinkingEffort;\n }\n\n private async prepareAgent(\n instructionOrOptions: string | AgentExecuteOptionsBase,\n ): Promise<AgentContext> {\n try {\n const options =\n typeof instructionOrOptions === \"string\"\n ? { instruction: instructionOrOptions }\n : instructionOrOptions;\n\n const maxSteps = options.maxSteps || 20;\n\n // Get the initial page URL first (needed for the system prompt)\n const initialPageUrl = (await this.v3.context.awaitActivePage()).url();\n\n // Build the system prompt with mode-aware tool guidance\n const systemPrompt = buildAgentSystemPrompt({\n url: initialPageUrl,\n executionInstruction: options.instruction,\n mode: this.mode,\n systemInstructions: this.systemInstructions,\n captchasAutoSolve: this.v3.isCaptchaAutoSolveEnabled,\n excludeTools: options.excludeTools,\n variables: options.variables,\n useSearch: options.useSearch,\n });\n\n if (options.useSearch) {\n const bbApiKey = this.v3.browserbaseApiKey;\n if (!bbApiKey) {\n throw new MissingEnvironmentVariableError(\n \"BROWSERBASE_API_KEY\",\n \"agent search (useSearch: true)\",\n );\n }\n }\n\n const tools = this.createTools(\n options.excludeTools,\n options.variables,\n options.toolTimeout,\n options.useSearch,\n );\n const allTools: ToolSet = { ...tools, ...this.mcpTools };\n\n // Use provided messages for continuation, or start fresh with the instruction\n const messages: ModelMessage[] = options.messages?.length\n ? [...options.messages, { role: \"user\", content: options.instruction }]\n : [{ role: \"user\", content: options.instruction }];\n\n if (!this.llmClient?.getLanguageModel) {\n throw new MissingLLMConfigurationError();\n }\n const baseModel = this.llmClient.getLanguageModel();\n //to do - we likely do not need middleware anymore\n const wrappedModel = wrapLanguageModel({\n model: baseModel,\n middleware: {\n ...FlowLogger.createLlmLoggingMiddleware(baseModel.modelId),\n },\n });\n\n const isHybridCapable = HYBRID_CAPABLE_MODEL_PATTERNS.some((pattern) =>\n baseModel.modelId.includes(pattern),\n );\n if (this.mode === \"hybrid\" && !isHybridCapable) {\n this.logger({\n category: \"agent\",\n message: `Warning: \"${baseModel.modelId}\" may not perform well in hybrid mode. See recommended models: https://docs.stagehand.dev/v3/basics/agent#hybrid-mode`,\n level: 0,\n });\n }\n\n return {\n options,\n maxSteps,\n systemPrompt,\n allTools,\n messages,\n wrappedModel,\n initialPageUrl,\n };\n } catch (error) {\n this.logger({\n category: \"agent\",\n message: `failed to prepare agent: ${error}`,\n level: 0,\n });\n throw error;\n }\n }\n private createPrepareStep(\n userCallback?: PrepareStepFunction<ToolSet>,\n captchaSolver?: CaptchaSolver,\n ): PrepareStepFunction<ToolSet> {\n return async (options) => {\n processMessages(options.messages);\n if (captchaSolver) {\n if (captchaSolver.isSolving()) {\n this.logger({\n category: \"agent\",\n message:\n \"Captcha detected — waiting for Browserbase to solve it before continuing\",\n level: 1,\n });\n }\n await captchaSolver.waitIfSolving();\n const { solved, errored } = captchaSolver.consumeSolveResult();\n if (solved) {\n options.messages.push({\n role: \"user\",\n content: CAPTCHA_SOLVED_MSG,\n });\n this.logger({\n category: \"agent\",\n message:\n \"Captcha solved — injected notification into agent message stream\",\n level: 1,\n });\n }\n if (errored) {\n options.messages.push({\n role: \"user\",\n content: CAPTCHA_ERRORED_MSG,\n });\n this.logger({\n category: \"agent\",\n message:\n \"Captcha solver failed — injected error notification into agent message stream\",\n level: 1,\n });\n }\n }\n if (userCallback) {\n return userCallback(options);\n }\n return options;\n };\n }\n\n private createStepHandler(\n state: AgentState,\n { userCallback, evidenceCallback, onFinalAnswer }: StepHandlerOptions,\n ) {\n return async (event: StepResult<ToolSet>) => {\n this.logger({\n category: \"agent\",\n message: `Step finished: ${event.finishReason}`,\n level: 2,\n });\n\n let lastFinalAnswer: FinalAnswerDraft | undefined;\n\n if (event.toolCalls && event.toolCalls.length > 0) {\n for (let i = 0; i < event.toolCalls.length; i++) {\n const toolCall = event.toolCalls[i];\n const args = toolCall.input;\n const toolResult = event.toolResults?.[i];\n\n if (event.text && event.text.length > 0) {\n state.collectedReasoning.push(event.text);\n this.logger({\n category: \"agent\",\n message: `reasoning: ${event.text}`,\n level: 1,\n });\n }\n\n if (toolCall.toolName === \"done\") {\n state.completed = true;\n if (args?.taskComplete) {\n const doneReasoning = args.reasoning;\n const allReasoning = state.collectedReasoning.join(\" \");\n state.finalMessage = doneReasoning\n ? `${allReasoning} ${doneReasoning}`.trim()\n : allReasoning || \"Task completed successfully\";\n }\n lastFinalAnswer = {\n message: state.finalMessage,\n output:\n typeof args?.output === \"object\" && args?.output !== null\n ? (args.output as Record<string, unknown>)\n : undefined,\n };\n }\n const mappedActions = mapToolResultToActions({\n toolCallName: toolCall.toolName,\n toolResult,\n args,\n reasoning: event.text || undefined,\n });\n\n for (const action of mappedActions) {\n action.pageUrl = state.currentPageUrl;\n action.timestamp = Date.now();\n state.actions.push(action);\n }\n\n await evidenceCallback?.({\n type: \"step_finished\",\n actionName: toolCall.toolName,\n actionArgs:\n typeof args === \"object\" && args !== null\n ? (args as Record<string, unknown>)\n : {},\n reasoning: event.text ?? \"\",\n toolOutput: inferToolOutput(toolResult),\n });\n }\n state.currentPageUrl = (await this.v3.context.awaitActivePage()).url();\n\n // Harness probe — one screenshot / a11y snapshot per AI SDK step.\n // The recorder applies the probe to every step_finished received\n // since the previous probe, so a multi-tool turn shares the same\n // post-turn observation.\n await emitPostStepProbeEvidence({\n v3: this.v3,\n url: state.currentPageUrl,\n evidenceCallback,\n logger: this.logger,\n warningMessage: \"Warning: harness probe failed\",\n });\n }\n\n if (lastFinalAnswer) {\n onFinalAnswer?.(lastFinalAnswer);\n }\n\n if (userCallback) {\n await userCallback(event);\n }\n };\n }\n\n public async execute(\n instructionOrOptions: string | AgentExecuteOptions,\n ): Promise<AgentResult> {\n const startTime = Date.now();\n const options =\n typeof instructionOrOptions === \"object\" ? instructionOrOptions : null;\n const signal = options?.signal;\n\n // Highlight cursor defaults to true for hybrid mode, can be overridden\n const shouldHighlightCursor =\n options?.highlightCursor ?? this.mode === \"hybrid\";\n\n const state: AgentState = {\n collectedReasoning: [],\n actions: [],\n finalMessage: \"\",\n completed: false,\n currentPageUrl: \"\",\n };\n let finalAnswerFromDoneTool: FinalAnswerDraft | undefined;\n\n let messages: ModelMessage[] = [];\n let captchaSolver: CaptchaSolver | undefined;\n\n try {\n const {\n options: preparedOptions,\n maxSteps,\n systemPrompt,\n allTools,\n messages: preparedMessages,\n wrappedModel,\n initialPageUrl,\n } = await this.prepareAgent(instructionOrOptions);\n\n // Enable cursor overlay for hybrid mode (coordinate-based interactions)\n if (shouldHighlightCursor && this.mode === \"hybrid\") {\n const page = await this.v3.context.awaitActivePage();\n await page.enableCursorOverlay().catch(() => {});\n }\n\n // Set up captcha solver for Browserbase environments\n if (this.captchaAutoSolveEnabled) {\n captchaSolver = new CaptchaSolver();\n captchaSolver.init(() => this.v3.context.awaitActivePage());\n }\n\n messages = preparedMessages;\n state.currentPageUrl = initialPageUrl;\n\n const callbacks = (instructionOrOptions as AgentExecuteOptions).callbacks;\n\n if (callbacks) {\n const streamingOnlyCallbacks = [\n \"onChunk\",\n \"onFinish\",\n \"onError\",\n \"onAbort\",\n ];\n const invalidCallbacks = streamingOnlyCallbacks.filter(\n (name) => callbacks[name as keyof typeof callbacks] != null,\n );\n if (invalidCallbacks.length > 0) {\n throw new StreamingCallbacksInNonStreamingModeError(invalidCallbacks);\n }\n }\n\n const evidenceCallback = wrapEvidenceCallback(\n callbacks?.onEvidence,\n this.logger,\n );\n\n const result = await this.llmClient.generateText({\n model: wrappedModel,\n messages: prependSystemMessage(systemPrompt, messages),\n allowSystemInMessages: true,\n tools: allTools,\n stopWhen: (result) => this.handleStop(result, maxSteps),\n toolChoice: \"auto\",\n\n prepareStep: this.createPrepareStep(\n callbacks?.prepareStep,\n captchaSolver,\n ),\n onStepFinish: this.createStepHandler(state, {\n userCallback: callbacks?.onStepFinish,\n evidenceCallback,\n onFinalAnswer: (answer) => {\n finalAnswerFromDoneTool = answer;\n },\n }),\n abortSignal: preparedOptions.signal,\n providerOptions: buildAgentProviderOptions(\n wrappedModel.modelId,\n this.thinkingEffort,\n ),\n });\n\n const allMessages = [...messages, ...(result.response?.messages || [])];\n const doneResult = await this.ensureDone(\n state,\n wrappedModel,\n allMessages,\n preparedOptions.instruction,\n preparedOptions.output,\n this.logger,\n );\n const output = doneResult.output ?? finalAnswerFromDoneTool?.output;\n await this.emitFinalEvidence(\n state,\n {\n message: state.finalMessage,\n output,\n },\n evidenceCallback,\n );\n\n return this.consolidateMetricsAndResult(\n startTime,\n state,\n doneResult.messages,\n result,\n maxSteps,\n output,\n );\n } catch (error) {\n // Re-throw validation errors that should propagate to the caller\n if (\n error instanceof StreamingCallbacksInNonStreamingModeError ||\n error instanceof MissingEnvironmentVariableError\n ) {\n throw error;\n }\n\n // Re-throw abort errors wrapped in AgentAbortError for consistent error typing\n if (signal?.aborted) {\n const reason = signal.reason ? String(signal.reason) : \"aborted\";\n throw new AgentAbortError(reason);\n }\n\n const errorMessage = getErrorMessage(error);\n this.logger({\n category: \"agent\",\n message: `Error executing agent task: ${errorMessage}`,\n level: 0,\n });\n\n // For non-abort errors, return a failure result instead of throwing\n return {\n success: false,\n actions: state.actions,\n message: `Failed to execute task: ${errorMessage}`,\n completed: false,\n messages,\n };\n } finally {\n captchaSolver?.dispose();\n }\n }\n\n public async stream(\n instructionOrOptions: string | AgentStreamExecuteOptions,\n ): Promise<AgentStreamResult> {\n const streamOptions =\n typeof instructionOrOptions === \"object\" ? instructionOrOptions : null;\n\n // Highlight cursor defaults to true for hybrid mode, can be overridden\n const shouldHighlightCursor =\n streamOptions?.highlightCursor ?? this.mode === \"hybrid\";\n let finalAnswerFromDoneTool: FinalAnswerDraft | undefined;\n\n const {\n options,\n maxSteps,\n systemPrompt,\n allTools,\n messages,\n wrappedModel,\n initialPageUrl,\n } = await this.prepareAgent(instructionOrOptions);\n\n // Enable cursor overlay for hybrid mode (coordinate-based interactions)\n if (shouldHighlightCursor && this.mode === \"hybrid\") {\n const page = await this.v3.context.awaitActivePage();\n await page.enableCursorOverlay().catch(() => {});\n }\n\n // Set up captcha solver for Browserbase environments\n let captchaSolver: CaptchaSolver | undefined;\n if (this.captchaAutoSolveEnabled) {\n captchaSolver = new CaptchaSolver();\n captchaSolver.init(() => this.v3.context.awaitActivePage());\n }\n\n const callbacks = (instructionOrOptions as AgentStreamExecuteOptions)\n .callbacks as AgentStreamCallbacks | undefined;\n\n const state: AgentState = {\n collectedReasoning: [],\n actions: [],\n finalMessage: \"\",\n completed: false,\n currentPageUrl: initialPageUrl,\n };\n const startTime = Date.now();\n\n let resolveResult: (value: AgentResult | PromiseLike<AgentResult>) => void;\n let rejectResult: (reason: unknown) => void;\n const resultPromise = new Promise<AgentResult>((resolve, reject) => {\n resolveResult = resolve;\n rejectResult = reject;\n });\n\n const handleError = (error: unknown) => {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger({\n category: \"agent\",\n message: `Error during streaming: ${errorMessage}`,\n level: 0,\n });\n rejectResult(error);\n };\n\n const evidenceCallback = wrapEvidenceCallback(\n callbacks?.onEvidence,\n this.logger,\n );\n\n let streamResult: ReturnType<typeof this.llmClient.streamText>;\n try {\n streamResult = this.llmClient.streamText({\n model: wrappedModel,\n messages: prependSystemMessage(systemPrompt, messages),\n allowSystemInMessages: true,\n tools: allTools,\n stopWhen: (result) => this.handleStop(result, maxSteps),\n toolChoice: \"auto\",\n prepareStep: this.createPrepareStep(\n callbacks?.prepareStep,\n captchaSolver,\n ),\n onStepFinish: this.createStepHandler(state, {\n userCallback: callbacks?.onStepFinish,\n evidenceCallback,\n onFinalAnswer: (answer) => {\n finalAnswerFromDoneTool = answer;\n },\n }),\n onError: (event) => {\n captchaSolver?.dispose();\n if (callbacks?.onError) {\n callbacks.onError(event);\n }\n handleError(event.error);\n },\n onChunk: callbacks?.onChunk,\n onFinish: (event) => {\n captchaSolver?.dispose();\n if (callbacks?.onFinish) {\n callbacks.onFinish(event);\n }\n\n const allMessages = [\n ...messages,\n ...(event.response?.messages || []),\n ];\n this.ensureDone(\n state,\n wrappedModel,\n allMessages,\n options.instruction,\n options.output,\n this.logger,\n )\n .then(async (doneResult) => {\n const output =\n doneResult.output ?? finalAnswerFromDoneTool?.output;\n await this.emitFinalEvidence(\n state,\n {\n message: state.finalMessage,\n output,\n },\n evidenceCallback,\n );\n const result = this.consolidateMetricsAndResult(\n startTime,\n state,\n doneResult.messages,\n event,\n maxSteps,\n output,\n );\n resolveResult(result);\n })\n .catch(handleError);\n },\n onAbort: (event) => {\n captchaSolver?.dispose();\n if (callbacks?.onAbort) {\n callbacks.onAbort(event);\n }\n // Reject the result promise with AgentAbortError when stream is aborted\n const reason = options.signal?.reason\n ? String(options.signal.reason)\n : \"Stream was aborted\";\n rejectResult(new AgentAbortError(reason));\n },\n abortSignal: options.signal,\n providerOptions: buildAgentProviderOptions(\n wrappedModel.modelId,\n this.thinkingEffort,\n ),\n });\n } catch (error) {\n captchaSolver?.dispose();\n throw error;\n }\n\n const agentStreamResult = streamResult as AgentStreamResult;\n agentStreamResult.result = resultPromise;\n return agentStreamResult;\n }\n\n private async emitFinalEvidence(\n state: AgentState,\n finalAnswer: { message: string; output?: Record<string, unknown> },\n evidenceCallback?: AgentEvidenceCallback,\n ): Promise<void> {\n if (!evidenceCallback) return;\n\n const observation = await captureProbeEvidence({\n v3: this.v3,\n url: state.currentPageUrl,\n logger: this.logger,\n warningMessage: \"Warning: final harness probe failed\",\n });\n await evidenceCallback({\n type: \"final_answer\",\n ...finalAnswer,\n observation,\n });\n }\n\n private consolidateMetricsAndResult(\n startTime: number,\n state: AgentState,\n inputMessages: ModelMessage[],\n result: {\n text?: string;\n totalUsage?: LanguageModelUsage;\n response?: { messages?: ModelMessage[] };\n steps?: StepResult<ToolSet>[];\n },\n maxSteps?: number,\n output?: Record<string, unknown>,\n ): AgentResult {\n if (!state.finalMessage) {\n const allReasoning = state.collectedReasoning.join(\" \").trim();\n\n if (!state.completed && maxSteps && result.steps?.length >= maxSteps) {\n this.logger({\n category: \"agent\",\n message: `Agent stopped: reached maximum steps (${maxSteps})`,\n level: 1,\n });\n state.finalMessage = `Agent stopped: reached maximum steps (${maxSteps})`;\n } else {\n state.finalMessage = allReasoning || result.text || \"\";\n }\n }\n\n const endTime = Date.now();\n const inferenceTimeMs = endTime - startTime;\n if (result.totalUsage) {\n this.v3.updateMetrics(\n V3FunctionName.AGENT,\n result.totalUsage.inputTokens || 0,\n result.totalUsage.outputTokens || 0,\n result.totalUsage.reasoningTokens || 0,\n result.totalUsage.cachedInputTokens || 0,\n inferenceTimeMs,\n );\n }\n\n return {\n success: state.completed,\n message: state.finalMessage || \"Task execution completed\",\n actions: state.actions,\n completed: state.completed,\n output,\n usage: result.totalUsage\n ? {\n input_tokens: result.totalUsage.inputTokens || 0,\n output_tokens: result.totalUsage.outputTokens || 0,\n reasoning_tokens: result.totalUsage.reasoningTokens || 0,\n cached_input_tokens: result.totalUsage.cachedInputTokens || 0,\n inference_time_ms: inferenceTimeMs,\n }\n : undefined,\n messages: inputMessages,\n };\n }\n\n private createTools(\n excludeTools?: string[],\n variables?: Variables,\n toolTimeout?: number,\n useSearch?: boolean,\n ) {\n const provider = this.llmClient?.getLanguageModel?.()?.provider;\n return createAgentTools(this.v3, {\n executionModel: this.executionModel,\n logger: this.logger,\n mode: this.mode,\n provider,\n excludeTools,\n variables,\n toolTimeout,\n useSearch,\n browserbaseApiKey: useSearch ? this.v3.browserbaseApiKey : undefined,\n });\n }\n\n private handleStop(\n result: Parameters<ReturnType<typeof stepCountIs>>[0],\n maxSteps: number,\n ): boolean | PromiseLike<boolean> {\n const lastStep = result.steps[result.steps.length - 1];\n if (lastStep?.toolCalls?.some((tc) => tc.toolName === \"done\")) {\n return true;\n }\n return stepCountIs(maxSteps)(result);\n }\n\n /**\n * Ensures the done tool is called at the end of agent execution.\n * Returns the messages and any extracted output from the done call.\n */\n private async ensureDone(\n state: AgentState,\n model: LanguageModel,\n messages: ModelMessage[],\n instruction: string,\n outputSchema?: StagehandZodObject,\n logger?: (message: LogLine) => void,\n ): Promise<{ messages: ModelMessage[]; output?: Record<string, unknown> }> {\n if (state.completed) return { messages };\n\n let doneResult: Awaited<ReturnType<typeof handleDoneToolCall>>;\n try {\n doneResult = await handleDoneToolCall({\n model,\n inputMessages: messages,\n instruction,\n outputSchema,\n logger,\n });\n } catch (error) {\n // The forced \"done\" call only summarizes the run, so its failure must not\n // fail a run whose work already completed (e.g. a provider rejecting the\n // re-submitted history). Warn and synthesize a completion. We log only the\n // message, not the cause — the cause embeds the full history (base64\n // images included) and would bloat the log.\n logger?.({\n category: \"agent\",\n level: 1,\n message: `Agent \"done\" finalization call failed; using run summary instead: ${getErrorMessage(error)}`,\n });\n state.completed = true;\n state.finalMessage =\n state.finalMessage ||\n state.collectedReasoning.join(\" \").trim() ||\n \"Task execution completed\";\n return { messages };\n }\n\n state.completed = doneResult.taskComplete;\n state.finalMessage = doneResult.reasoning;\n\n const doneAction = mapToolResultToActions({\n toolCallName: \"done\",\n toolResult: {\n success: true,\n reasoning: doneResult.reasoning,\n taskComplete: doneResult.taskComplete,\n },\n args: {\n reasoning: doneResult.reasoning,\n taskComplete: doneResult.taskComplete,\n },\n reasoning: doneResult.reasoning,\n });\n\n for (const action of doneAction) {\n action.pageUrl = state.currentPageUrl;\n action.timestamp = Date.now();\n state.actions.push(action);\n }\n\n return {\n messages: [...messages, ...doneResult.messages],\n output: doneResult.output,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"v3AgentHandler.js","sourceRoot":"","sources":["../../../../../lib/v3/handlers/v3AgentHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { createAgentTools } from \"../agent/tools/index.js\";\nimport { buildAgentSystemPrompt } from \"../agent/prompts/agentSystemPrompt.js\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport { V3 } from \"../v3.js\";\nimport {\n ModelMessage,\n ToolSet,\n wrapLanguageModel,\n stepCountIs,\n LanguageModel,\n type LanguageModelUsage,\n type StepResult,\n type GenerateTextOnStepFinishCallback,\n type StreamTextOnStepFinishCallback,\n type PrepareStepFunction,\n} from \"ai\";\nimport { StagehandZodObject } from \"../zodCompat.js\";\nimport { processMessages } from \"../agent/utils/messageProcessing.js\";\nimport { LLMClient } from \"../llm/LLMClient.js\";\nimport { FlowLogger } from \"../flowlogger/FlowLogger.js\";\nimport {\n anthropicAdaptiveThinkingOptions,\n anthropicFallbacksOptions,\n} from \"../llm/anthropicOptions.js\";\nimport { openAIStoreProviderOptions } from \"../llm/providerOptions.js\";\nimport {\n AgentExecuteOptions,\n AgentStreamExecuteOptions,\n AgentExecuteOptionsBase,\n AgentResult,\n AgentContext,\n AgentState,\n AgentStreamResult,\n AgentStreamCallbacks,\n AgentToolMode,\n AgentModelConfig,\n Variables,\n} from \"../types/public/agent.js\";\nimport type { AgentEvidenceCallback } from \"../types/public/agentEvidenceEvents.js\";\nimport { HYBRID_CAPABLE_MODEL_PATTERNS } from \"../types/private/agent.js\";\nimport { V3FunctionName } from \"../types/public/methods.js\";\nimport { mapToolResultToActions } from \"../agent/utils/actionMapping.js\";\nimport {\n MissingLLMConfigurationError,\n MissingEnvironmentVariableError,\n StreamingCallbacksInNonStreamingModeError,\n AgentAbortError,\n} from \"../types/public/sdkErrors.js\";\nimport { handleDoneToolCall } from \"../agent/utils/handleDoneToolCall.js\";\nimport {\n captureProbeEvidence,\n emitPostStepProbeEvidence,\n} from \"../agent/utils/postStepProbeEvidence.js\";\nimport { wrapEvidenceCallback } from \"../agent/utils/wrapEvidenceCallback.js\";\nimport { inferToolOutput } from \"../agent/utils/toolOutputEvidence.js\";\nimport {\n CaptchaSolver,\n CAPTCHA_SOLVED_MSG,\n CAPTCHA_ERRORED_MSG,\n} from \"../agent/utils/captchaSolver.js\";\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\ntype FinalAnswerDraft = {\n message: string;\n output?: Record<string, unknown>;\n};\n\ninterface StepHandlerOptions {\n userCallback?:\n | GenerateTextOnStepFinishCallback<ToolSet>\n | StreamTextOnStepFinishCallback<ToolSet>;\n evidenceCallback?: AgentEvidenceCallback;\n onFinalAnswer?: (answer: FinalAnswerDraft) => void;\n}\n\n/**\n * Prepends a system message with cache control to the messages array.\n * The cache control providerOptions are used by Anthropic and ignored by other providers.\n */\nfunction prependSystemMessage(\n systemPrompt: string,\n messages: ModelMessage[],\n): ModelMessage[] {\n return [\n {\n role: \"system\",\n content: systemPrompt,\n providerOptions: {\n anthropic: {\n cacheControl: { type: \"ephemeral\" },\n },\n },\n },\n ...messages,\n ];\n}\n\n/**\n * Request-level providerOptions for the hybrid/DOM agent loop.\n *\n * Anthropic models that support adaptive thinking (Claude 4.6+) get it\n * enabled here — previously the hybrid path sent no thinking config for\n * Anthropic at all. Fable 5 additionally opts into the API's server-side\n * refusal fallback.\n */\nfunction buildAgentProviderOptions(\n modelId: string,\n provider: string | undefined,\n thinkingEffort?: string,\n) {\n const anthropic = {\n ...(anthropicAdaptiveThinkingOptions(modelId, thinkingEffort) ?? {}),\n ...(anthropicFallbacksOptions(modelId) ?? {}),\n };\n return {\n google: { mediaResolution: \"MEDIA_RESOLUTION_HIGH\" },\n ...openAIStoreProviderOptions(provider),\n ...(Object.keys(anthropic).length > 0 ? { anthropic } : {}),\n };\n}\n\nexport class V3AgentHandler {\n private v3: V3;\n private logger: (message: LogLine) => void;\n private llmClient: LLMClient;\n private executionModel?: string | AgentModelConfig;\n private systemInstructions?: string;\n private mcpTools?: ToolSet;\n private mode: AgentToolMode;\n private captchaAutoSolveEnabled: boolean;\n private thinkingEffort?: string;\n\n constructor(\n v3: V3,\n logger: (message: LogLine) => void,\n llmClient: LLMClient,\n executionModel?: string | AgentModelConfig,\n systemInstructions?: string,\n mcpTools?: ToolSet,\n mode?: AgentToolMode,\n captchaAutoSolveEnabled?: boolean,\n thinkingEffort?: string,\n ) {\n this.v3 = v3;\n this.logger = logger;\n this.llmClient = llmClient;\n this.executionModel = executionModel;\n this.systemInstructions = systemInstructions;\n this.mcpTools = mcpTools;\n this.mode = mode ?? \"dom\";\n this.captchaAutoSolveEnabled = captchaAutoSolveEnabled ?? false;\n this.thinkingEffort = thinkingEffort;\n }\n\n private async prepareAgent(\n instructionOrOptions: string | AgentExecuteOptionsBase,\n ): Promise<AgentContext> {\n try {\n const options =\n typeof instructionOrOptions === \"string\"\n ? { instruction: instructionOrOptions }\n : instructionOrOptions;\n\n const maxSteps = options.maxSteps || 20;\n\n // Get the initial page URL first (needed for the system prompt)\n const initialPageUrl = (await this.v3.context.awaitActivePage()).url();\n\n // Build the system prompt with mode-aware tool guidance\n const systemPrompt = buildAgentSystemPrompt({\n url: initialPageUrl,\n executionInstruction: options.instruction,\n mode: this.mode,\n systemInstructions: this.systemInstructions,\n captchasAutoSolve: this.v3.isCaptchaAutoSolveEnabled,\n excludeTools: options.excludeTools,\n variables: options.variables,\n useSearch: options.useSearch,\n });\n\n if (options.useSearch) {\n const bbApiKey = this.v3.browserbaseApiKey;\n if (!bbApiKey) {\n throw new MissingEnvironmentVariableError(\n \"BROWSERBASE_API_KEY\",\n \"agent search (useSearch: true)\",\n );\n }\n }\n\n const tools = this.createTools(\n options.excludeTools,\n options.variables,\n options.toolTimeout,\n options.useSearch,\n );\n const allTools: ToolSet = { ...tools, ...this.mcpTools };\n\n // Use provided messages for continuation, or start fresh with the instruction\n const messages: ModelMessage[] = options.messages?.length\n ? [...options.messages, { role: \"user\", content: options.instruction }]\n : [{ role: \"user\", content: options.instruction }];\n\n if (!this.llmClient?.getLanguageModel) {\n throw new MissingLLMConfigurationError();\n }\n const baseModel = this.llmClient.getLanguageModel();\n //to do - we likely do not need middleware anymore\n const wrappedModel = wrapLanguageModel({\n model: baseModel,\n middleware: {\n ...FlowLogger.createLlmLoggingMiddleware(baseModel.modelId),\n },\n });\n\n const isHybridCapable = HYBRID_CAPABLE_MODEL_PATTERNS.some((pattern) =>\n baseModel.modelId.includes(pattern),\n );\n if (this.mode === \"hybrid\" && !isHybridCapable) {\n this.logger({\n category: \"agent\",\n message: `Warning: \"${baseModel.modelId}\" may not perform well in hybrid mode. See recommended models: https://docs.stagehand.dev/v3/basics/agent#hybrid-mode`,\n level: 0,\n });\n }\n\n return {\n options,\n maxSteps,\n systemPrompt,\n allTools,\n messages,\n wrappedModel,\n initialPageUrl,\n };\n } catch (error) {\n this.logger({\n category: \"agent\",\n message: `failed to prepare agent: ${error}`,\n level: 0,\n });\n throw error;\n }\n }\n private createPrepareStep(\n userCallback?: PrepareStepFunction<ToolSet>,\n captchaSolver?: CaptchaSolver,\n ): PrepareStepFunction<ToolSet> {\n return async (options) => {\n processMessages(options.messages);\n if (captchaSolver) {\n if (captchaSolver.isSolving()) {\n this.logger({\n category: \"agent\",\n message:\n \"Captcha detected — waiting for Browserbase to solve it before continuing\",\n level: 1,\n });\n }\n await captchaSolver.waitIfSolving();\n const { solved, errored } = captchaSolver.consumeSolveResult();\n if (solved) {\n options.messages.push({\n role: \"user\",\n content: CAPTCHA_SOLVED_MSG,\n });\n this.logger({\n category: \"agent\",\n message:\n \"Captcha solved — injected notification into agent message stream\",\n level: 1,\n });\n }\n if (errored) {\n options.messages.push({\n role: \"user\",\n content: CAPTCHA_ERRORED_MSG,\n });\n this.logger({\n category: \"agent\",\n message:\n \"Captcha solver failed — injected error notification into agent message stream\",\n level: 1,\n });\n }\n }\n if (userCallback) {\n return userCallback(options);\n }\n return options;\n };\n }\n\n private createStepHandler(\n state: AgentState,\n { userCallback, evidenceCallback, onFinalAnswer }: StepHandlerOptions,\n ) {\n return async (event: StepResult<ToolSet>) => {\n this.logger({\n category: \"agent\",\n message: `Step finished: ${event.finishReason}`,\n level: 2,\n });\n\n let lastFinalAnswer: FinalAnswerDraft | undefined;\n\n if (event.toolCalls && event.toolCalls.length > 0) {\n for (let i = 0; i < event.toolCalls.length; i++) {\n const toolCall = event.toolCalls[i];\n const args = toolCall.input;\n const toolResult = event.toolResults?.[i];\n\n if (event.text && event.text.length > 0) {\n state.collectedReasoning.push(event.text);\n this.logger({\n category: \"agent\",\n message: `reasoning: ${event.text}`,\n level: 1,\n });\n }\n\n if (toolCall.toolName === \"done\") {\n state.completed = true;\n if (args?.taskComplete) {\n const doneReasoning = args.reasoning;\n const allReasoning = state.collectedReasoning.join(\" \");\n state.finalMessage = doneReasoning\n ? `${allReasoning} ${doneReasoning}`.trim()\n : allReasoning || \"Task completed successfully\";\n }\n lastFinalAnswer = {\n message: state.finalMessage,\n output:\n typeof args?.output === \"object\" && args?.output !== null\n ? (args.output as Record<string, unknown>)\n : undefined,\n };\n }\n const mappedActions = mapToolResultToActions({\n toolCallName: toolCall.toolName,\n toolResult,\n args,\n reasoning: event.text || undefined,\n });\n\n for (const action of mappedActions) {\n action.pageUrl = state.currentPageUrl;\n action.timestamp = Date.now();\n state.actions.push(action);\n }\n\n await evidenceCallback?.({\n type: \"step_finished\",\n actionName: toolCall.toolName,\n actionArgs:\n typeof args === \"object\" && args !== null\n ? (args as Record<string, unknown>)\n : {},\n reasoning: event.text ?? \"\",\n toolOutput: inferToolOutput(toolResult),\n });\n }\n state.currentPageUrl = (await this.v3.context.awaitActivePage()).url();\n\n // Harness probe — one screenshot / a11y snapshot per AI SDK step.\n // The recorder applies the probe to every step_finished received\n // since the previous probe, so a multi-tool turn shares the same\n // post-turn observation.\n await emitPostStepProbeEvidence({\n v3: this.v3,\n url: state.currentPageUrl,\n evidenceCallback,\n logger: this.logger,\n warningMessage: \"Warning: harness probe failed\",\n });\n }\n\n if (lastFinalAnswer) {\n onFinalAnswer?.(lastFinalAnswer);\n }\n\n if (userCallback) {\n await userCallback(event);\n }\n };\n }\n\n public async execute(\n instructionOrOptions: string | AgentExecuteOptions,\n ): Promise<AgentResult> {\n const startTime = Date.now();\n const options =\n typeof instructionOrOptions === \"object\" ? instructionOrOptions : null;\n const signal = options?.signal;\n\n // Highlight cursor defaults to true for hybrid mode, can be overridden\n const shouldHighlightCursor =\n options?.highlightCursor ?? this.mode === \"hybrid\";\n\n const state: AgentState = {\n collectedReasoning: [],\n actions: [],\n finalMessage: \"\",\n completed: false,\n currentPageUrl: \"\",\n };\n let finalAnswerFromDoneTool: FinalAnswerDraft | undefined;\n\n let messages: ModelMessage[] = [];\n let captchaSolver: CaptchaSolver | undefined;\n\n try {\n const {\n options: preparedOptions,\n maxSteps,\n systemPrompt,\n allTools,\n messages: preparedMessages,\n wrappedModel,\n initialPageUrl,\n } = await this.prepareAgent(instructionOrOptions);\n\n // Enable cursor overlay for hybrid mode (coordinate-based interactions)\n if (shouldHighlightCursor && this.mode === \"hybrid\") {\n const page = await this.v3.context.awaitActivePage();\n await page.enableCursorOverlay().catch(() => {});\n }\n\n // Set up captcha solver for Browserbase environments\n if (this.captchaAutoSolveEnabled) {\n captchaSolver = new CaptchaSolver();\n captchaSolver.init(() => this.v3.context.awaitActivePage());\n }\n\n messages = preparedMessages;\n state.currentPageUrl = initialPageUrl;\n\n const callbacks = (instructionOrOptions as AgentExecuteOptions).callbacks;\n\n if (callbacks) {\n const streamingOnlyCallbacks = [\n \"onChunk\",\n \"onFinish\",\n \"onError\",\n \"onAbort\",\n ];\n const invalidCallbacks = streamingOnlyCallbacks.filter(\n (name) => callbacks[name as keyof typeof callbacks] != null,\n );\n if (invalidCallbacks.length > 0) {\n throw new StreamingCallbacksInNonStreamingModeError(invalidCallbacks);\n }\n }\n\n const evidenceCallback = wrapEvidenceCallback(\n callbacks?.onEvidence,\n this.logger,\n );\n\n const result = await this.llmClient.generateText({\n model: wrappedModel,\n messages: prependSystemMessage(systemPrompt, messages),\n allowSystemInMessages: true,\n tools: allTools,\n stopWhen: (result) => this.handleStop(result, maxSteps),\n toolChoice: \"auto\",\n\n prepareStep: this.createPrepareStep(\n callbacks?.prepareStep,\n captchaSolver,\n ),\n onStepFinish: this.createStepHandler(state, {\n userCallback: callbacks?.onStepFinish,\n evidenceCallback,\n onFinalAnswer: (answer) => {\n finalAnswerFromDoneTool = answer;\n },\n }),\n abortSignal: preparedOptions.signal,\n providerOptions: buildAgentProviderOptions(\n wrappedModel.modelId,\n wrappedModel.provider,\n this.thinkingEffort,\n ),\n });\n\n const allMessages = [...messages, ...(result.response?.messages || [])];\n const doneResult = await this.ensureDone(\n state,\n wrappedModel,\n allMessages,\n preparedOptions.instruction,\n preparedOptions.output,\n this.logger,\n );\n const output = doneResult.output ?? finalAnswerFromDoneTool?.output;\n await this.emitFinalEvidence(\n state,\n {\n message: state.finalMessage,\n output,\n },\n evidenceCallback,\n );\n\n return this.consolidateMetricsAndResult(\n startTime,\n state,\n doneResult.messages,\n result,\n maxSteps,\n output,\n );\n } catch (error) {\n // Re-throw validation errors that should propagate to the caller\n if (\n error instanceof StreamingCallbacksInNonStreamingModeError ||\n error instanceof MissingEnvironmentVariableError\n ) {\n throw error;\n }\n\n // Re-throw abort errors wrapped in AgentAbortError for consistent error typing\n if (signal?.aborted) {\n const reason = signal.reason ? String(signal.reason) : \"aborted\";\n throw new AgentAbortError(reason);\n }\n\n const errorMessage = getErrorMessage(error);\n this.logger({\n category: \"agent\",\n message: `Error executing agent task: ${errorMessage}`,\n level: 0,\n });\n\n // For non-abort errors, return a failure result instead of throwing\n return {\n success: false,\n actions: state.actions,\n message: `Failed to execute task: ${errorMessage}`,\n completed: false,\n messages,\n };\n } finally {\n captchaSolver?.dispose();\n }\n }\n\n public async stream(\n instructionOrOptions: string | AgentStreamExecuteOptions,\n ): Promise<AgentStreamResult> {\n const streamOptions =\n typeof instructionOrOptions === \"object\" ? instructionOrOptions : null;\n\n // Highlight cursor defaults to true for hybrid mode, can be overridden\n const shouldHighlightCursor =\n streamOptions?.highlightCursor ?? this.mode === \"hybrid\";\n let finalAnswerFromDoneTool: FinalAnswerDraft | undefined;\n\n const {\n options,\n maxSteps,\n systemPrompt,\n allTools,\n messages,\n wrappedModel,\n initialPageUrl,\n } = await this.prepareAgent(instructionOrOptions);\n\n // Enable cursor overlay for hybrid mode (coordinate-based interactions)\n if (shouldHighlightCursor && this.mode === \"hybrid\") {\n const page = await this.v3.context.awaitActivePage();\n await page.enableCursorOverlay().catch(() => {});\n }\n\n // Set up captcha solver for Browserbase environments\n let captchaSolver: CaptchaSolver | undefined;\n if (this.captchaAutoSolveEnabled) {\n captchaSolver = new CaptchaSolver();\n captchaSolver.init(() => this.v3.context.awaitActivePage());\n }\n\n const callbacks = (instructionOrOptions as AgentStreamExecuteOptions)\n .callbacks as AgentStreamCallbacks | undefined;\n\n const state: AgentState = {\n collectedReasoning: [],\n actions: [],\n finalMessage: \"\",\n completed: false,\n currentPageUrl: initialPageUrl,\n };\n const startTime = Date.now();\n\n let resolveResult: (value: AgentResult | PromiseLike<AgentResult>) => void;\n let rejectResult: (reason: unknown) => void;\n const resultPromise = new Promise<AgentResult>((resolve, reject) => {\n resolveResult = resolve;\n rejectResult = reject;\n });\n\n const handleError = (error: unknown) => {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger({\n category: \"agent\",\n message: `Error during streaming: ${errorMessage}`,\n level: 0,\n });\n rejectResult(error);\n };\n\n const evidenceCallback = wrapEvidenceCallback(\n callbacks?.onEvidence,\n this.logger,\n );\n\n let streamResult: ReturnType<typeof this.llmClient.streamText>;\n try {\n streamResult = this.llmClient.streamText({\n model: wrappedModel,\n messages: prependSystemMessage(systemPrompt, messages),\n allowSystemInMessages: true,\n tools: allTools,\n stopWhen: (result) => this.handleStop(result, maxSteps),\n toolChoice: \"auto\",\n prepareStep: this.createPrepareStep(\n callbacks?.prepareStep,\n captchaSolver,\n ),\n onStepFinish: this.createStepHandler(state, {\n userCallback: callbacks?.onStepFinish,\n evidenceCallback,\n onFinalAnswer: (answer) => {\n finalAnswerFromDoneTool = answer;\n },\n }),\n onError: (event) => {\n captchaSolver?.dispose();\n if (callbacks?.onError) {\n callbacks.onError(event);\n }\n handleError(event.error);\n },\n onChunk: callbacks?.onChunk,\n onFinish: (event) => {\n captchaSolver?.dispose();\n if (callbacks?.onFinish) {\n callbacks.onFinish(event);\n }\n\n const allMessages = [\n ...messages,\n ...(event.response?.messages || []),\n ];\n this.ensureDone(\n state,\n wrappedModel,\n allMessages,\n options.instruction,\n options.output,\n this.logger,\n )\n .then(async (doneResult) => {\n const output =\n doneResult.output ?? finalAnswerFromDoneTool?.output;\n await this.emitFinalEvidence(\n state,\n {\n message: state.finalMessage,\n output,\n },\n evidenceCallback,\n );\n const result = this.consolidateMetricsAndResult(\n startTime,\n state,\n doneResult.messages,\n event,\n maxSteps,\n output,\n );\n resolveResult(result);\n })\n .catch(handleError);\n },\n onAbort: (event) => {\n captchaSolver?.dispose();\n if (callbacks?.onAbort) {\n callbacks.onAbort(event);\n }\n // Reject the result promise with AgentAbortError when stream is aborted\n const reason = options.signal?.reason\n ? String(options.signal.reason)\n : \"Stream was aborted\";\n rejectResult(new AgentAbortError(reason));\n },\n abortSignal: options.signal,\n providerOptions: buildAgentProviderOptions(\n wrappedModel.modelId,\n wrappedModel.provider,\n this.thinkingEffort,\n ),\n });\n } catch (error) {\n captchaSolver?.dispose();\n throw error;\n }\n\n const agentStreamResult = streamResult as AgentStreamResult;\n agentStreamResult.result = resultPromise;\n return agentStreamResult;\n }\n\n private async emitFinalEvidence(\n state: AgentState,\n finalAnswer: { message: string; output?: Record<string, unknown> },\n evidenceCallback?: AgentEvidenceCallback,\n ): Promise<void> {\n if (!evidenceCallback) return;\n\n const observation = await captureProbeEvidence({\n v3: this.v3,\n url: state.currentPageUrl,\n logger: this.logger,\n warningMessage: \"Warning: final harness probe failed\",\n });\n await evidenceCallback({\n type: \"final_answer\",\n ...finalAnswer,\n observation,\n });\n }\n\n private consolidateMetricsAndResult(\n startTime: number,\n state: AgentState,\n inputMessages: ModelMessage[],\n result: {\n text?: string;\n totalUsage?: LanguageModelUsage;\n response?: { messages?: ModelMessage[] };\n steps?: StepResult<ToolSet>[];\n },\n maxSteps?: number,\n output?: Record<string, unknown>,\n ): AgentResult {\n if (!state.finalMessage) {\n const allReasoning = state.collectedReasoning.join(\" \").trim();\n\n if (!state.completed && maxSteps && result.steps?.length >= maxSteps) {\n this.logger({\n category: \"agent\",\n message: `Agent stopped: reached maximum steps (${maxSteps})`,\n level: 1,\n });\n state.finalMessage = `Agent stopped: reached maximum steps (${maxSteps})`;\n } else {\n state.finalMessage = allReasoning || result.text || \"\";\n }\n }\n\n const endTime = Date.now();\n const inferenceTimeMs = endTime - startTime;\n if (result.totalUsage) {\n this.v3.updateMetrics(\n V3FunctionName.AGENT,\n result.totalUsage.inputTokens || 0,\n result.totalUsage.outputTokens || 0,\n result.totalUsage.reasoningTokens || 0,\n result.totalUsage.cachedInputTokens || 0,\n inferenceTimeMs,\n );\n }\n\n return {\n success: state.completed,\n message: state.finalMessage || \"Task execution completed\",\n actions: state.actions,\n completed: state.completed,\n output,\n usage: result.totalUsage\n ? {\n input_tokens: result.totalUsage.inputTokens || 0,\n output_tokens: result.totalUsage.outputTokens || 0,\n reasoning_tokens: result.totalUsage.reasoningTokens || 0,\n cached_input_tokens: result.totalUsage.cachedInputTokens || 0,\n inference_time_ms: inferenceTimeMs,\n }\n : undefined,\n messages: inputMessages,\n };\n }\n\n private createTools(\n excludeTools?: string[],\n variables?: Variables,\n toolTimeout?: number,\n useSearch?: boolean,\n ) {\n const provider = this.llmClient?.getLanguageModel?.()?.provider;\n return createAgentTools(this.v3, {\n executionModel: this.executionModel,\n logger: this.logger,\n mode: this.mode,\n provider,\n excludeTools,\n variables,\n toolTimeout,\n useSearch,\n browserbaseApiKey: useSearch ? this.v3.browserbaseApiKey : undefined,\n });\n }\n\n private handleStop(\n result: Parameters<ReturnType<typeof stepCountIs>>[0],\n maxSteps: number,\n ): boolean | PromiseLike<boolean> {\n const lastStep = result.steps[result.steps.length - 1];\n if (lastStep?.toolCalls?.some((tc) => tc.toolName === \"done\")) {\n return true;\n }\n return stepCountIs(maxSteps)(result);\n }\n\n /**\n * Ensures the done tool is called at the end of agent execution.\n * Returns the messages and any extracted output from the done call.\n */\n private async ensureDone(\n state: AgentState,\n model: LanguageModel,\n messages: ModelMessage[],\n instruction: string,\n outputSchema?: StagehandZodObject,\n logger?: (message: LogLine) => void,\n ): Promise<{ messages: ModelMessage[]; output?: Record<string, unknown> }> {\n if (state.completed) return { messages };\n\n let doneResult: Awaited<ReturnType<typeof handleDoneToolCall>>;\n try {\n doneResult = await handleDoneToolCall({\n model,\n inputMessages: messages,\n instruction,\n outputSchema,\n logger,\n });\n } catch (error) {\n // The forced \"done\" call only summarizes the run, so its failure must not\n // fail a run whose work already completed (e.g. a provider rejecting the\n // re-submitted history). Warn and synthesize a completion. We log only the\n // message, not the cause — the cause embeds the full history (base64\n // images included) and would bloat the log.\n logger?.({\n category: \"agent\",\n level: 1,\n message: `Agent \"done\" finalization call failed; using run summary instead: ${getErrorMessage(error)}`,\n });\n state.completed = true;\n state.finalMessage =\n state.finalMessage ||\n state.collectedReasoning.join(\" \").trim() ||\n \"Task execution completed\";\n return { messages };\n }\n\n state.completed = doneResult.taskComplete;\n state.finalMessage = doneResult.reasoning;\n\n const doneAction = mapToolResultToActions({\n toolCallName: \"done\",\n toolResult: {\n success: true,\n reasoning: doneResult.reasoning,\n taskComplete: doneResult.taskComplete,\n },\n args: {\n reasoning: doneResult.reasoning,\n taskComplete: doneResult.taskComplete,\n },\n reasoning: doneResult.reasoning,\n });\n\n for (const action of doneAction) {\n action.pageUrl = state.currentPageUrl;\n action.timestamp = Date.now();\n state.actions.push(action);\n }\n\n return {\n messages: [...messages, ...doneResult.messages],\n output: doneResult.output,\n };\n }\n}\n"]}
@@ -69,7 +69,7 @@ declare const StagehandDefault: {
69
69
  Api: typeof PublicApi.Api;
70
70
  AISdkClient: typeof PublicApi.AISdkClient;
71
71
  CustomOpenAIClient: typeof PublicApi.CustomOpenAIClient;
72
- AVAILABLE_CUA_MODELS: readonly ["openai/gpt-5.4", "openai/gpt-5.4-mini", "openai/gpt-5.5", "openai/computer-use-preview", "openai/computer-use-preview-2025-03-11", "anthropic/claude-opus-4-5-20251101", "anthropic/claude-opus-4-6", "anthropic/claude-opus-4-8", "anthropic/claude-sonnet-4-6", "anthropic/claude-haiku-4-5", "anthropic/claude-haiku-4-5-20251001", "anthropic/claude-sonnet-4-20250514", "anthropic/claude-sonnet-4-5-20250929", "anthropic/claude-fable-5", "google/gemini-2.5-computer-use-preview-10-2025", "google/gemini-3-flash-preview", "google/gemini-3.5-flash", "google/gemini-3-pro-preview", "microsoft/fara-7b"];
72
+ AVAILABLE_CUA_MODELS: readonly ["openai/gpt-5.4", "openai/gpt-5.4-mini", "openai/gpt-5.5", "openai/gpt-5.6-terra", "openai/gpt-5.6-luna", "openai/gpt-5.6-sol", "openai/computer-use-preview", "openai/computer-use-preview-2025-03-11", "anthropic/claude-opus-4-5-20251101", "anthropic/claude-opus-4-6", "anthropic/claude-opus-4-8", "anthropic/claude-sonnet-4-6", "anthropic/claude-haiku-4-5", "anthropic/claude-haiku-4-5-20251001", "anthropic/claude-sonnet-4-20250514", "anthropic/claude-sonnet-4-5-20250929", "anthropic/claude-fable-5", "google/gemini-2.5-computer-use-preview-10-2025", "google/gemini-3-flash-preview", "google/gemini-3.5-flash", "google/gemini-3-pro-preview", "microsoft/fara-7b"];
73
73
  StagehandAPIError: typeof PublicApi.StagehandAPIError;
74
74
  StagehandAPIUnauthorizedError: typeof PublicApi.StagehandAPIUnauthorizedError;
75
75
  StagehandHttpError: typeof PublicApi.StagehandHttpError;
@@ -124,11 +124,18 @@ const modelToProviderMap = {
124
124
  "gemini-3.5-flash": "google",
125
125
  };
126
126
  export function getAISDKLanguageModel(subProvider, subModelName, clientOptions, middleware) {
127
- const aiSdkClientOptions = toAISDKClientOptions(subProvider, clientOptions);
127
+ const { openaiEndpointFormat, ...providerClientOptions } = clientOptions ?? {};
128
+ const aiSdkClientOptions = toAISDKClientOptions(subProvider, providerClientOptions);
128
129
  const hasValidOptions = aiSdkClientOptions &&
129
130
  Object.values(aiSdkClientOptions).some((v) => v !== undefined && v !== null);
130
131
  let model;
131
- if (hasValidOptions) {
132
+ if (subProvider === "openai" && openaiEndpointFormat === "chat") {
133
+ const provider = hasValidOptions
134
+ ? createOpenAI(aiSdkClientOptions)
135
+ : openai;
136
+ model = provider.chat(subModelName);
137
+ }
138
+ else if (hasValidOptions) {
132
139
  const creator = AISDKProvidersWithAPIKey[subProvider];
133
140
  if (!creator) {
134
141
  throw new UnsupportedAISDKModelProviderError(subProvider, Object.keys(AISDKProvidersWithAPIKey));
@@ -1 +1 @@
1
- {"version":3,"file":"LLMProvider.js","sourceRoot":"","sources":["../../../../../lib/v3/llm/LLMProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n LanguageModelV2,\n LanguageModelV2Middleware,\n} from \"@ai-sdk/provider\";\nimport {\n UnsupportedAISDKModelProviderError,\n UnsupportedModelError,\n UnsupportedModelProviderError,\n} from \"../types/public/sdkErrors.js\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport {\n AvailableModel,\n ClientOptions,\n ModelProvider,\n} from \"../types/public/model.js\";\nimport { AISdkClient } from \"./aisdk.js\";\nimport { AnthropicClient } from \"./AnthropicClient.js\";\nimport { CerebrasClient } from \"./CerebrasClient.js\";\nimport { GoogleClient } from \"./GoogleClient.js\";\nimport { GroqClient } from \"./GroqClient.js\";\nimport { LLMClient } from \"./LLMClient.js\";\nimport { OpenAIClient } from \"./OpenAIClient.js\";\nimport { openai, createOpenAI } from \"@ai-sdk/openai\";\nimport { bedrock, createAmazonBedrock } from \"@ai-sdk/amazon-bedrock\";\nimport { vertex, createVertex } from \"@ai-sdk/google-vertex\";\nimport { anthropic, createAnthropic } from \"@ai-sdk/anthropic\";\nimport { google, createGoogleGenerativeAI } from \"@ai-sdk/google\";\nimport { xai, createXai } from \"@ai-sdk/xai\";\nimport { azure, createAzure } from \"@ai-sdk/azure\";\nimport { groq, createGroq } from \"@ai-sdk/groq\";\nimport { cerebras, createCerebras } from \"@ai-sdk/cerebras\";\nimport { togetherai, createTogetherAI } from \"@ai-sdk/togetherai\";\nimport { mistral, createMistral } from \"@ai-sdk/mistral\";\nimport { deepseek, createDeepSeek } from \"@ai-sdk/deepseek\";\nimport { perplexity, createPerplexity } from \"@ai-sdk/perplexity\";\nimport { ollama, createOllama } from \"ollama-ai-provider-v2\";\nimport { gateway, createGateway, wrapLanguageModel } from \"ai\";\nimport { AISDKProvider, AISDKCustomProvider } from \"../types/public/model.js\";\n\nconst AISDKProviders: Record<string, AISDKProvider> = {\n openai,\n bedrock,\n anthropic,\n google,\n xai,\n azure,\n groq,\n cerebras,\n togetherai,\n mistral,\n deepseek,\n perplexity,\n ollama,\n vertex,\n gateway,\n};\nconst AISDKProvidersWithAPIKey: Record<string, AISDKCustomProvider> = {\n openai: createOpenAI,\n bedrock: createAmazonBedrock,\n anthropic: createAnthropic,\n google: createGoogleGenerativeAI,\n vertex: createVertex,\n xai: createXai,\n azure: createAzure,\n groq: createGroq,\n cerebras: createCerebras,\n togetherai: createTogetherAI,\n mistral: createMistral,\n deepseek: createDeepSeek,\n perplexity: createPerplexity,\n ollama: createOllama,\n gateway: createGateway,\n};\n\ntype AISDKProviderClientOptions = ClientOptions & Record<string, unknown>;\n\nexport function toAISDKClientOptions(\n subProvider: string,\n clientOptions?: ClientOptions,\n): AISDKProviderClientOptions | undefined {\n if (!clientOptions) {\n return clientOptions as AISDKProviderClientOptions | undefined;\n }\n\n const { auth, providerOptions, apiKey, ...rest } = clientOptions;\n const apiKeyOption = !auth && apiKey ? { apiKey } : {};\n\n if (subProvider === \"azure\") {\n const azureOptions = providerOptions?.azure;\n\n return {\n ...rest,\n ...apiKeyOption,\n ...(azureOptions ?? {}),\n ...(auth?.type === \"azureEntraId\"\n ? { tokenProvider: async () => auth.token }\n : {}),\n };\n }\n\n if (subProvider !== \"vertex\") {\n return clientOptions as AISDKProviderClientOptions | undefined;\n }\n\n const vertexOptions = providerOptions?.vertex;\n\n return {\n ...rest,\n ...apiKeyOption,\n ...(vertexOptions ?? {}),\n ...(auth?.type === \"googleServiceAccount\"\n ? {\n googleAuthOptions: {\n credentials: auth.credentials,\n ...(auth.scopes ? { scopes: auth.scopes } : {}),\n ...(auth.projectId ? { projectId: auth.projectId } : {}),\n ...(auth.universeDomain\n ? { universeDomain: auth.universeDomain }\n : {}),\n },\n }\n : {}),\n };\n}\n\nconst modelToProviderMap: { [key in AvailableModel]: ModelProvider } = {\n \"gpt-4.1\": \"openai\",\n \"gpt-4.1-mini\": \"openai\",\n \"gpt-4.1-nano\": \"openai\",\n \"o4-mini\": \"openai\",\n //prettier-ignore\n \"o3\": \"openai\",\n \"o3-mini\": \"openai\",\n //prettier-ignore\n \"o1\": \"openai\",\n \"o1-mini\": \"openai\",\n \"gpt-4o\": \"openai\",\n \"gpt-4o-mini\": \"openai\",\n \"gpt-4o-2024-08-06\": \"openai\",\n \"gpt-4.5-preview\": \"openai\",\n \"o1-preview\": \"openai\",\n \"cerebras-llama-3.3-70b\": \"cerebras\",\n \"cerebras-llama-3.1-8b\": \"cerebras\",\n \"groq-llama-3.3-70b-versatile\": \"groq\",\n \"groq-llama-3.3-70b-specdec\": \"groq\",\n \"moonshotai/kimi-k2-instruct\": \"groq\",\n \"gemini-1.5-flash\": \"google\",\n \"gemini-1.5-pro\": \"google\",\n \"gemini-1.5-flash-8b\": \"google\",\n \"gemini-2.0-flash-lite\": \"google\",\n \"gemini-2.0-flash\": \"google\",\n \"gemini-2.5-flash-preview-04-17\": \"google\",\n \"gemini-2.5-pro-preview-03-25\": \"google\",\n \"gemini-3.5-flash\": \"google\",\n};\n\nexport function getAISDKLanguageModel(\n subProvider: string,\n subModelName: string,\n clientOptions?: ClientOptions,\n middleware?: LanguageModelV2Middleware,\n): LanguageModelV2 {\n const aiSdkClientOptions = toAISDKClientOptions(subProvider, clientOptions);\n const hasValidOptions =\n aiSdkClientOptions &&\n Object.values(aiSdkClientOptions).some(\n (v) => v !== undefined && v !== null,\n );\n\n let model;\n if (hasValidOptions) {\n const creator = AISDKProvidersWithAPIKey[subProvider];\n if (!creator) {\n throw new UnsupportedAISDKModelProviderError(\n subProvider,\n Object.keys(AISDKProvidersWithAPIKey),\n );\n }\n const provider = creator(aiSdkClientOptions as ClientOptions);\n model = provider(subModelName);\n } else {\n const provider = AISDKProviders[subProvider];\n if (!provider) {\n throw new UnsupportedAISDKModelProviderError(\n subProvider,\n Object.keys(AISDKProviders),\n );\n }\n model = provider(subModelName);\n }\n\n if (middleware) {\n return wrapLanguageModel({ model, middleware });\n }\n return model;\n}\n\nexport class LLMProvider {\n private logger: (message: LogLine) => void;\n private middleware?: LanguageModelV2Middleware;\n\n constructor(\n logger: (message: LogLine) => void,\n middleware?: LanguageModelV2Middleware,\n ) {\n this.logger = logger;\n this.middleware = middleware;\n }\n\n getClient(\n modelName: AvailableModel,\n clientOptions?: ClientOptions,\n options?: {\n experimental?: boolean;\n disableAPI?: boolean;\n middleware?: LanguageModelV2Middleware;\n },\n ): LLMClient {\n if (modelName.includes(\"/\")) {\n const firstSlashIndex = modelName.indexOf(\"/\");\n const subProvider = modelName.substring(0, firstSlashIndex);\n const subModelName = modelName.substring(firstSlashIndex + 1);\n\n const effectiveMiddleware = options?.middleware ?? this.middleware;\n const languageModel = getAISDKLanguageModel(\n subProvider,\n subModelName,\n clientOptions,\n effectiveMiddleware,\n );\n\n return new AISdkClient({\n model: languageModel,\n logger: this.logger,\n clientOptions,\n });\n }\n\n // Model name doesn't include \"/\" - this format is deprecated\n const provider = modelToProviderMap[modelName];\n if (!provider) {\n throw new UnsupportedModelError(Object.keys(modelToProviderMap));\n }\n\n this.logger({\n category: \"llm\",\n message: `Deprecation warning: Model format \"${modelName}\" is deprecated. Please use the provider/model format (e.g., \"openai/gpt-5\" or \"anthropic/claude-sonnet-4\").`,\n level: 0,\n });\n\n const availableModel = modelName as AvailableModel;\n switch (provider) {\n case \"openai\":\n return new OpenAIClient({\n logger: this.logger,\n modelName: availableModel,\n clientOptions,\n });\n case \"anthropic\":\n return new AnthropicClient({\n logger: this.logger,\n modelName: availableModel,\n clientOptions,\n });\n case \"cerebras\":\n return new CerebrasClient({\n logger: this.logger,\n modelName: availableModel,\n clientOptions,\n });\n case \"groq\":\n return new GroqClient({\n logger: this.logger,\n modelName: availableModel,\n clientOptions,\n });\n case \"google\":\n return new GoogleClient({\n logger: this.logger,\n modelName: availableModel,\n clientOptions,\n });\n default:\n // This default case handles unknown providers that exist in modelToProviderMap\n // but aren't implemented in the switch. This is an internal consistency issue.\n throw new UnsupportedModelProviderError([\n ...new Set(Object.values(modelToProviderMap)),\n ]);\n }\n }\n\n static getModelProvider(modelName: AvailableModel): ModelProvider {\n if (modelName.includes(\"/\")) {\n const firstSlashIndex = modelName.indexOf(\"/\");\n const subProvider = modelName.substring(0, firstSlashIndex);\n if (AISDKProviders[subProvider]) {\n return \"aisdk\";\n }\n }\n const provider = modelToProviderMap[modelName];\n return provider;\n }\n}\n"]}
1
+ {"version":3,"file":"LLMProvider.js","sourceRoot":"","sources":["../../../../../lib/v3/llm/LLMProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n LanguageModelV2,\n LanguageModelV2Middleware,\n} from \"@ai-sdk/provider\";\nimport {\n UnsupportedAISDKModelProviderError,\n UnsupportedModelError,\n UnsupportedModelProviderError,\n} from \"../types/public/sdkErrors.js\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport {\n AvailableModel,\n ClientOptions,\n ModelProvider,\n} from \"../types/public/model.js\";\nimport { AISdkClient } from \"./aisdk.js\";\nimport { AnthropicClient } from \"./AnthropicClient.js\";\nimport { CerebrasClient } from \"./CerebrasClient.js\";\nimport { GoogleClient } from \"./GoogleClient.js\";\nimport { GroqClient } from \"./GroqClient.js\";\nimport { LLMClient } from \"./LLMClient.js\";\nimport { OpenAIClient } from \"./OpenAIClient.js\";\nimport { openai, createOpenAI } from \"@ai-sdk/openai\";\nimport { bedrock, createAmazonBedrock } from \"@ai-sdk/amazon-bedrock\";\nimport { vertex, createVertex } from \"@ai-sdk/google-vertex\";\nimport { anthropic, createAnthropic } from \"@ai-sdk/anthropic\";\nimport { google, createGoogleGenerativeAI } from \"@ai-sdk/google\";\nimport { xai, createXai } from \"@ai-sdk/xai\";\nimport { azure, createAzure } from \"@ai-sdk/azure\";\nimport { groq, createGroq } from \"@ai-sdk/groq\";\nimport { cerebras, createCerebras } from \"@ai-sdk/cerebras\";\nimport { togetherai, createTogetherAI } from \"@ai-sdk/togetherai\";\nimport { mistral, createMistral } from \"@ai-sdk/mistral\";\nimport { deepseek, createDeepSeek } from \"@ai-sdk/deepseek\";\nimport { perplexity, createPerplexity } from \"@ai-sdk/perplexity\";\nimport { ollama, createOllama } from \"ollama-ai-provider-v2\";\nimport { gateway, createGateway, wrapLanguageModel } from \"ai\";\nimport { AISDKProvider, AISDKCustomProvider } from \"../types/public/model.js\";\n\nconst AISDKProviders: Record<string, AISDKProvider> = {\n openai,\n bedrock,\n anthropic,\n google,\n xai,\n azure,\n groq,\n cerebras,\n togetherai,\n mistral,\n deepseek,\n perplexity,\n ollama,\n vertex,\n gateway,\n};\nconst AISDKProvidersWithAPIKey: Record<string, AISDKCustomProvider> = {\n openai: createOpenAI,\n bedrock: createAmazonBedrock,\n anthropic: createAnthropic,\n google: createGoogleGenerativeAI,\n vertex: createVertex,\n xai: createXai,\n azure: createAzure,\n groq: createGroq,\n cerebras: createCerebras,\n togetherai: createTogetherAI,\n mistral: createMistral,\n deepseek: createDeepSeek,\n perplexity: createPerplexity,\n ollama: createOllama,\n gateway: createGateway,\n};\n\ntype AISDKProviderClientOptions = ClientOptions & Record<string, unknown>;\n\nexport function toAISDKClientOptions(\n subProvider: string,\n clientOptions?: ClientOptions,\n): AISDKProviderClientOptions | undefined {\n if (!clientOptions) {\n return clientOptions as AISDKProviderClientOptions | undefined;\n }\n\n const { auth, providerOptions, apiKey, ...rest } = clientOptions;\n const apiKeyOption = !auth && apiKey ? { apiKey } : {};\n\n if (subProvider === \"azure\") {\n const azureOptions = providerOptions?.azure;\n\n return {\n ...rest,\n ...apiKeyOption,\n ...(azureOptions ?? {}),\n ...(auth?.type === \"azureEntraId\"\n ? { tokenProvider: async () => auth.token }\n : {}),\n };\n }\n\n if (subProvider !== \"vertex\") {\n return clientOptions as AISDKProviderClientOptions | undefined;\n }\n\n const vertexOptions = providerOptions?.vertex;\n\n return {\n ...rest,\n ...apiKeyOption,\n ...(vertexOptions ?? {}),\n ...(auth?.type === \"googleServiceAccount\"\n ? {\n googleAuthOptions: {\n credentials: auth.credentials,\n ...(auth.scopes ? { scopes: auth.scopes } : {}),\n ...(auth.projectId ? { projectId: auth.projectId } : {}),\n ...(auth.universeDomain\n ? { universeDomain: auth.universeDomain }\n : {}),\n },\n }\n : {}),\n };\n}\n\nconst modelToProviderMap: { [key in AvailableModel]: ModelProvider } = {\n \"gpt-4.1\": \"openai\",\n \"gpt-4.1-mini\": \"openai\",\n \"gpt-4.1-nano\": \"openai\",\n \"o4-mini\": \"openai\",\n //prettier-ignore\n \"o3\": \"openai\",\n \"o3-mini\": \"openai\",\n //prettier-ignore\n \"o1\": \"openai\",\n \"o1-mini\": \"openai\",\n \"gpt-4o\": \"openai\",\n \"gpt-4o-mini\": \"openai\",\n \"gpt-4o-2024-08-06\": \"openai\",\n \"gpt-4.5-preview\": \"openai\",\n \"o1-preview\": \"openai\",\n \"cerebras-llama-3.3-70b\": \"cerebras\",\n \"cerebras-llama-3.1-8b\": \"cerebras\",\n \"groq-llama-3.3-70b-versatile\": \"groq\",\n \"groq-llama-3.3-70b-specdec\": \"groq\",\n \"moonshotai/kimi-k2-instruct\": \"groq\",\n \"gemini-1.5-flash\": \"google\",\n \"gemini-1.5-pro\": \"google\",\n \"gemini-1.5-flash-8b\": \"google\",\n \"gemini-2.0-flash-lite\": \"google\",\n \"gemini-2.0-flash\": \"google\",\n \"gemini-2.5-flash-preview-04-17\": \"google\",\n \"gemini-2.5-pro-preview-03-25\": \"google\",\n \"gemini-3.5-flash\": \"google\",\n};\n\nexport function getAISDKLanguageModel(\n subProvider: string,\n subModelName: string,\n clientOptions?: ClientOptions,\n middleware?: LanguageModelV2Middleware,\n): LanguageModelV2 {\n const { openaiEndpointFormat, ...providerClientOptions } =\n clientOptions ?? {};\n const aiSdkClientOptions = toAISDKClientOptions(\n subProvider,\n providerClientOptions,\n );\n const hasValidOptions =\n aiSdkClientOptions &&\n Object.values(aiSdkClientOptions).some(\n (v) => v !== undefined && v !== null,\n );\n\n let model: LanguageModelV2;\n if (subProvider === \"openai\" && openaiEndpointFormat === \"chat\") {\n const provider = hasValidOptions\n ? createOpenAI(aiSdkClientOptions)\n : openai;\n model = provider.chat(subModelName);\n } else if (hasValidOptions) {\n const creator = AISDKProvidersWithAPIKey[subProvider];\n if (!creator) {\n throw new UnsupportedAISDKModelProviderError(\n subProvider,\n Object.keys(AISDKProvidersWithAPIKey),\n );\n }\n const provider = creator(aiSdkClientOptions as ClientOptions);\n model = provider(subModelName);\n } else {\n const provider = AISDKProviders[subProvider];\n if (!provider) {\n throw new UnsupportedAISDKModelProviderError(\n subProvider,\n Object.keys(AISDKProviders),\n );\n }\n model = provider(subModelName);\n }\n\n if (middleware) {\n return wrapLanguageModel({ model, middleware });\n }\n return model;\n}\n\nexport class LLMProvider {\n private logger: (message: LogLine) => void;\n private middleware?: LanguageModelV2Middleware;\n\n constructor(\n logger: (message: LogLine) => void,\n middleware?: LanguageModelV2Middleware,\n ) {\n this.logger = logger;\n this.middleware = middleware;\n }\n\n getClient(\n modelName: AvailableModel,\n clientOptions?: ClientOptions,\n options?: {\n experimental?: boolean;\n disableAPI?: boolean;\n middleware?: LanguageModelV2Middleware;\n },\n ): LLMClient {\n if (modelName.includes(\"/\")) {\n const firstSlashIndex = modelName.indexOf(\"/\");\n const subProvider = modelName.substring(0, firstSlashIndex);\n const subModelName = modelName.substring(firstSlashIndex + 1);\n\n const effectiveMiddleware = options?.middleware ?? this.middleware;\n const languageModel = getAISDKLanguageModel(\n subProvider,\n subModelName,\n clientOptions,\n effectiveMiddleware,\n );\n\n return new AISdkClient({\n model: languageModel,\n logger: this.logger,\n clientOptions,\n });\n }\n\n // Model name doesn't include \"/\" - this format is deprecated\n const provider = modelToProviderMap[modelName];\n if (!provider) {\n throw new UnsupportedModelError(Object.keys(modelToProviderMap));\n }\n\n this.logger({\n category: \"llm\",\n message: `Deprecation warning: Model format \"${modelName}\" is deprecated. Please use the provider/model format (e.g., \"openai/gpt-5\" or \"anthropic/claude-sonnet-4\").`,\n level: 0,\n });\n\n const availableModel = modelName as AvailableModel;\n switch (provider) {\n case \"openai\":\n return new OpenAIClient({\n logger: this.logger,\n modelName: availableModel,\n clientOptions,\n });\n case \"anthropic\":\n return new AnthropicClient({\n logger: this.logger,\n modelName: availableModel,\n clientOptions,\n });\n case \"cerebras\":\n return new CerebrasClient({\n logger: this.logger,\n modelName: availableModel,\n clientOptions,\n });\n case \"groq\":\n return new GroqClient({\n logger: this.logger,\n modelName: availableModel,\n clientOptions,\n });\n case \"google\":\n return new GoogleClient({\n logger: this.logger,\n modelName: availableModel,\n clientOptions,\n });\n default:\n // This default case handles unknown providers that exist in modelToProviderMap\n // but aren't implemented in the switch. This is an internal consistency issue.\n throw new UnsupportedModelProviderError([\n ...new Set(Object.values(modelToProviderMap)),\n ]);\n }\n }\n\n static getModelProvider(modelName: AvailableModel): ModelProvider {\n if (modelName.includes(\"/\")) {\n const firstSlashIndex = modelName.indexOf(\"/\");\n const subProvider = modelName.substring(0, firstSlashIndex);\n if (AISDKProviders[subProvider]) {\n return \"aisdk\";\n }\n }\n const provider = modelToProviderMap[modelName];\n return provider;\n }\n}\n"]}
@@ -195,6 +195,7 @@ You must respond in JSON format. respond WITH JSON. Do not include any other tex
195
195
  messages: formattedMessages,
196
196
  schema: options.response_model.schema,
197
197
  temperature,
198
+ allowSystemInMessages: true,
198
199
  ...(Object.keys(providerOptions).length > 0
199
200
  ? { providerOptions }
200
201
  : {}),
@@ -317,6 +318,7 @@ You must respond in JSON format. respond WITH JSON. Do not include any other tex
317
318
  : "auto"
318
319
  : undefined,
319
320
  temperature,
321
+ allowSystemInMessages: true,
320
322
  });
321
323
  }
322
324
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"aisdk.js","sourceRoot":"","sources":["../../../../../lib/v3/llm/aisdk.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CoreAssistantMessage,\n ModelMessage,\n CoreSystemMessage,\n CoreUserMessage,\n generateObject,\n generateText,\n ImagePart,\n NoObjectGeneratedError,\n TextPart,\n ToolSet,\n Tool,\n} from \"ai\";\nimport type { JSONValue, LanguageModelV2 } from \"@ai-sdk/provider\";\nimport { ChatCompletion } from \"openai/resources\";\nimport { v7 as uuidv7 } from \"uuid\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport { AvailableModel, ClientOptions } from \"../types/public/model.js\";\nimport { CreateChatCompletionOptions, LLMClient } from \"./LLMClient.js\";\nimport { anthropicFallbacksOptions } from \"./anthropicOptions.js\";\nimport {\n FlowLogger,\n extractLlmPromptSummary,\n} from \"../flowlogger/FlowLogger.js\";\nimport { toJsonSchema } from \"../zodCompat.js\";\n\ntype ProviderOptionValue = JSONValue;\ntype ProviderOptionMap = Record<string, ProviderOptionValue>;\n\nfunction inferProviderName(modelId: string): string | undefined {\n const [providerName] = modelId.split(\"/\");\n return providerName || undefined;\n}\n\nexport class AISdkClient extends LLMClient {\n public type = \"aisdk\" as const;\n private model: LanguageModelV2;\n private logger?: (message: LogLine) => void;\n\n constructor({\n model,\n logger,\n clientOptions,\n }: {\n model: LanguageModelV2;\n logger?: (message: LogLine) => void;\n clientOptions?: ClientOptions;\n }) {\n super(model.modelId as AvailableModel);\n this.model = model;\n this.logger = logger;\n if (clientOptions) {\n this.clientOptions = clientOptions;\n }\n }\n\n public getLanguageModel(): LanguageModelV2 {\n return this.model;\n }\n\n async createChatCompletion<T = ChatCompletion>({\n options,\n }: CreateChatCompletionOptions): Promise<T> {\n this.logger?.({\n category: \"aisdk\",\n message: \"creating chat completion\",\n level: 2,\n auxiliary: {\n options: {\n value: JSON.stringify({\n ...options,\n image: undefined,\n messages: options.messages.map((msg) => ({\n ...msg,\n content: Array.isArray(msg.content)\n ? msg.content.map((c) =>\n \"image_url\" in c\n ? { ...c, image_url: { url: \"[IMAGE_REDACTED]\" } }\n : c,\n )\n : msg.content,\n })),\n }),\n type: \"object\",\n },\n modelName: {\n value: this.model.modelId,\n type: \"string\",\n },\n },\n });\n\n const formattedMessages: ModelMessage[] = options.messages.map(\n (message) => {\n if (Array.isArray(message.content)) {\n if (message.role === \"system\") {\n const systemMessage: CoreSystemMessage = {\n role: \"system\",\n content: message.content\n .map((c) => (\"text\" in c ? c.text : \"\"))\n .join(\"\\n\"),\n };\n return systemMessage;\n }\n\n const contentParts = message.content.map((content) => {\n if (\"image_url\" in content) {\n const imageContent: ImagePart = {\n type: \"image\",\n image: content.image_url.url,\n };\n return imageContent;\n } else {\n const textContent: TextPart = {\n type: \"text\",\n text: content.text,\n };\n return textContent;\n }\n });\n\n if (message.role === \"user\") {\n const userMessage: CoreUserMessage = {\n role: \"user\",\n content: contentParts,\n };\n return userMessage;\n } else {\n const textOnlyParts = contentParts.map((part) => ({\n type: \"text\" as const,\n text: part.type === \"image\" ? \"[Image]\" : part.text,\n }));\n const assistantMessage: CoreAssistantMessage = {\n role: \"assistant\",\n content: textOnlyParts,\n };\n return assistantMessage;\n }\n }\n\n return {\n role: message.role,\n content: message.content,\n };\n },\n );\n\n let objectResponse: Awaited<ReturnType<typeof generateObject>>;\n const isGPT5 = this.model.modelId.includes(\"gpt-5\");\n const isCodex = this.model.modelId.includes(\"codex\");\n const isOpus47 =\n this.model.modelId === \"anthropic/claude-opus-4-7\" ||\n this.model.modelId === \"claude-opus-4-7\";\n // Kimi models only support temperature=1\n const isKimi = this.model.modelId.includes(\"kimi\");\n const temperature = isKimi ? 1 : isOpus47 ? undefined : options.temperature;\n\n // Resolve reasoning effort: user-configured > default \"none\" for GPT-5.x sub-models\n const isGPT5SubModel = this.model.modelId.includes(\"gpt-5.\") && !isCodex;\n const userReasoningEffort = this.clientOptions?.reasoningEffort;\n const resolvedReasoningEffort =\n userReasoningEffort ?? (isGPT5SubModel ? \"none\" : undefined);\n const providerName = inferProviderName(this.model.modelId);\n\n // Models that lack native structured-output support need a prompt-based\n // JSON fallback instead of response_format: { type: \"json_schema\" }.\n const PROMPT_JSON_FALLBACK_PATTERNS = [\"deepseek\", \"kimi\", \"glm\"];\n const needsPromptJsonFallback = PROMPT_JSON_FALLBACK_PATTERNS.some((p) =>\n this.model.modelId.includes(p),\n );\n\n const providerOptions: Record<string, ProviderOptionMap> = {};\n switch (providerName) {\n case \"openai\":\n providerOptions.openai = {\n strictJsonSchema: true,\n ...(isGPT5 ? { textVerbosity: isCodex ? \"medium\" : \"low\" } : {}),\n ...(resolvedReasoningEffort\n ? { reasoningEffort: resolvedReasoningEffort }\n : {}),\n };\n break;\n case \"anthropic\":\n providerOptions.anthropic = {\n structuredOutputMode: \"auto\",\n // Fable 5 opts into the API's server-side refusal fallback; the\n // provider adds the required beta header automatically.\n ...(anthropicFallbacksOptions(this.model.modelId) ?? {}),\n };\n break;\n case \"azure\":\n providerOptions.azure = {\n strictJsonSchema: true,\n };\n break;\n case \"google\":\n providerOptions.google = {\n structuredOutputs: true,\n };\n break;\n case \"vertex\":\n providerOptions.vertex = {\n structuredOutputs: true,\n };\n break;\n case \"groq\":\n providerOptions.groq = {\n structuredOutputs: true,\n };\n break;\n case \"cerebras\":\n providerOptions.cerebras = {\n strictJsonSchema: true,\n };\n break;\n case \"mistral\":\n providerOptions.mistral = {\n structuredOutputs: true,\n strictJsonSchema: true,\n };\n break;\n }\n\n if (options.response_model) {\n // Log LLM request for generateObject (extract)\n const llmRequestId = uuidv7();\n const promptSummary = extractLlmPromptSummary(options.messages, {\n hasSchema: true,\n });\n FlowLogger.logLlmRequest({\n requestId: llmRequestId,\n model: this.model.modelId,\n prompt: promptSummary,\n });\n\n // For models that don't support native structured outputs, add a prompt instruction\n if (needsPromptJsonFallback) {\n const parsedSchema = JSON.stringify(\n toJsonSchema(options.response_model.schema),\n );\n\n formattedMessages.push({\n role: \"user\",\n content: `Respond in this zod schema format:\\n${parsedSchema}\\n\nYou must respond in JSON format. respond WITH JSON. Do not include any other text, formatting or markdown in your output. Do not include \\`\\`\\` or \\`\\`\\`json in your response. Only the JSON object itself.`,\n });\n }\n\n try {\n objectResponse = await generateObject({\n model: this.model,\n messages: formattedMessages,\n schema: options.response_model.schema,\n temperature,\n ...(Object.keys(providerOptions).length > 0\n ? { providerOptions }\n : {}),\n });\n } catch (err) {\n // Log error response to maintain request/response pairing\n FlowLogger.logLlmResponse({\n requestId: llmRequestId,\n model: this.model.modelId,\n output: `[error: ${err instanceof Error ? err.message : \"unknown\"}]`,\n });\n\n if (NoObjectGeneratedError.isInstance(err)) {\n this.logger?.({\n category: \"AISDK error\",\n message: err.message,\n level: 0,\n auxiliary: {\n cause: {\n value: JSON.stringify(err.cause ?? {}),\n type: \"object\",\n },\n text: {\n value: err.text ?? \"\",\n type: \"string\",\n },\n response: {\n value: JSON.stringify(err.response ?? {}),\n type: \"object\",\n },\n usage: {\n value: JSON.stringify(err.usage ?? {}),\n type: \"object\",\n },\n finishReason: {\n value: err.finishReason ?? \"unknown\",\n type: \"string\",\n },\n requestId: {\n value: options.requestId,\n type: \"string\",\n },\n },\n });\n\n throw err;\n }\n throw err;\n }\n\n const result = {\n data: objectResponse.object,\n usage: {\n prompt_tokens: objectResponse.usage.inputTokens ?? 0,\n completion_tokens: objectResponse.usage.outputTokens ?? 0,\n reasoning_tokens: objectResponse.usage.reasoningTokens ?? 0,\n cached_input_tokens: objectResponse.usage.cachedInputTokens ?? 0,\n total_tokens: objectResponse.usage.totalTokens ?? 0,\n },\n } as T;\n\n // Log LLM response for generateObject\n FlowLogger.logLlmResponse({\n requestId: llmRequestId,\n model: this.model.modelId,\n output: JSON.stringify(objectResponse.object),\n inputTokens: objectResponse.usage.inputTokens,\n outputTokens: objectResponse.usage.outputTokens,\n });\n\n this.logger?.({\n category: \"aisdk\",\n message: \"response\",\n level: 1,\n auxiliary: {\n response: {\n value: JSON.stringify({\n object: objectResponse.object,\n usage: objectResponse.usage,\n finishReason: objectResponse.finishReason,\n // Omit request and response properties that might contain images\n }),\n type: \"object\",\n },\n requestId: {\n value: options.requestId,\n type: \"string\",\n },\n },\n });\n\n return result;\n }\n\n const tools: ToolSet = {};\n if (options.tools && options.tools.length > 0) {\n for (const tool of options.tools) {\n tools[tool.name] = {\n description: tool.description,\n inputSchema: tool.parameters,\n } as Tool;\n }\n }\n\n // Log LLM request for generateText (act/observe)\n const llmRequestId = uuidv7();\n const toolCount = Object.keys(tools).length;\n const promptSummary = extractLlmPromptSummary(options.messages, {\n toolCount,\n });\n FlowLogger.logLlmRequest({\n requestId: llmRequestId,\n model: this.model.modelId,\n prompt: promptSummary,\n });\n\n let textResponse: Awaited<ReturnType<typeof generateText>>;\n try {\n textResponse = await generateText({\n model: this.model,\n messages: formattedMessages,\n tools: Object.keys(tools).length > 0 ? tools : undefined,\n toolChoice:\n Object.keys(tools).length > 0\n ? options.tool_choice === \"required\"\n ? \"required\"\n : options.tool_choice === \"none\"\n ? \"none\"\n : \"auto\"\n : undefined,\n temperature,\n });\n } catch (err) {\n // Log error response to maintain request/response pairing\n FlowLogger.logLlmResponse({\n requestId: llmRequestId,\n model: this.model.modelId,\n output: `[error: ${err instanceof Error ? err.message : \"unknown\"}]`,\n });\n throw err;\n }\n\n // Transform AI SDK response to match LLMResponse format expected by operator handler\n const transformedToolCalls = (textResponse.toolCalls || []).map(\n (toolCall) => ({\n id:\n toolCall.toolCallId ||\n `call_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,\n type: \"function\",\n function: {\n name: toolCall.toolName,\n arguments: JSON.stringify(toolCall.input),\n },\n }),\n );\n\n const result = {\n id: `chatcmpl_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,\n object: \"chat.completion\",\n created: Math.floor(Date.now() / 1000),\n model: this.model.modelId,\n choices: [\n {\n index: 0,\n message: {\n role: \"assistant\",\n content: textResponse.text || null,\n tool_calls: transformedToolCalls,\n },\n finish_reason: textResponse.finishReason || \"stop\",\n },\n ],\n usage: {\n prompt_tokens: textResponse.usage.inputTokens ?? 0,\n completion_tokens: textResponse.usage.outputTokens ?? 0,\n reasoning_tokens: textResponse.usage.reasoningTokens ?? 0,\n cached_input_tokens: textResponse.usage.cachedInputTokens ?? 0,\n total_tokens: textResponse.usage.totalTokens ?? 0,\n },\n } as T;\n\n // Log LLM response for generateText\n FlowLogger.logLlmResponse({\n requestId: llmRequestId,\n model: this.model.modelId,\n output:\n textResponse.text ||\n (transformedToolCalls.length > 0\n ? `[${transformedToolCalls.length} tool calls]`\n : \"\"),\n inputTokens: textResponse.usage.inputTokens,\n outputTokens: textResponse.usage.outputTokens,\n });\n\n this.logger?.({\n category: \"aisdk\",\n message: \"response\",\n level: 2,\n auxiliary: {\n response: {\n value: JSON.stringify({\n text: textResponse.text,\n usage: textResponse.usage,\n finishReason: textResponse.finishReason,\n // Omit request and response properties that might contain images\n }),\n type: \"object\",\n },\n requestId: {\n value: options.requestId,\n type: \"string\",\n },\n },\n });\n\n return result;\n }\n}\n"]}
1
+ {"version":3,"file":"aisdk.js","sourceRoot":"","sources":["../../../../../lib/v3/llm/aisdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,cAAc,EACd,YAAY,EAEZ,sBAAsB,GAIvB,MAAM,IAAI,CAAC;AAGZ,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,EAA+B,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EACL,UAAU,EACV,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C,SAAS,iBAAiB,CAAC,OAAe;IACxC,MAAM,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,YAAY,IAAI,SAAS,CAAC;AACnC,CAAC;AAED,MAAM,OAAO,WAAY,SAAQ,SAAS;IACjC,IAAI,GAAG,OAAgB,CAAC;IACvB,KAAK,CAAkB;IACvB,MAAM,CAA8B;IAE5C,YAAY,EACV,KAAK,EACL,MAAM,EACN,aAAa,GAKd;QACC,KAAK,CAAC,KAAK,CAAC,OAAyB,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACrC,CAAC;IACH,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAqB,EAC7C,OAAO,GACqB;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,0BAA0B;YACnC,KAAK,EAAE,CAAC;YACR,SAAS,EAAE;gBACT,OAAO,EAAE;oBACP,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;wBACpB,GAAG,OAAO;wBACV,KAAK,EAAE,SAAS;wBAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACvC,GAAG,GAAG;4BACN,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gCACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACpB,WAAW,IAAI,CAAC;oCACd,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,EAAE;oCAClD,CAAC,CAAC,CAAC,CACN;gCACH,CAAC,CAAC,GAAG,CAAC,OAAO;yBAChB,CAAC,CAAC;qBACJ,CAAC;oBACF,IAAI,EAAE,QAAQ;iBACf;gBACD,SAAS,EAAE;oBACT,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;oBACzB,IAAI,EAAE,QAAQ;iBACf;aACF;SACF,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAmB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAC5D,CAAC,OAAO,EAAE,EAAE;YACV,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC9B,MAAM,aAAa,GAAsB;wBACvC,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,OAAO,CAAC,OAAO;6BACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;6BACvC,IAAI,CAAC,IAAI,CAAC;qBACd,CAAC;oBACF,OAAO,aAAa,CAAC;gBACvB,CAAC;gBAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;oBACnD,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;wBAC3B,MAAM,YAAY,GAAc;4BAC9B,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG;yBAC7B,CAAC;wBACF,OAAO,YAAY,CAAC;oBACtB,CAAC;yBAAM,CAAC;wBACN,MAAM,WAAW,GAAa;4BAC5B,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,OAAO,CAAC,IAAI;yBACnB,CAAC;wBACF,OAAO,WAAW,CAAC;oBACrB,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC5B,MAAM,WAAW,GAAoB;wBACnC,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,YAAY;qBACtB,CAAC;oBACF,OAAO,WAAW,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBAChD,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;qBACpD,CAAC,CAAC,CAAC;oBACJ,MAAM,gBAAgB,GAAyB;wBAC7C,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,aAAa;qBACvB,CAAC;oBACF,OAAO,gBAAgB,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,IAAI,cAA0D,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,QAAQ,GACZ,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,2BAA2B;YAClD,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,iBAAiB,CAAC;QAC3C,yCAAyC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QAE5E,oFAAoF;QACpF,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QACzE,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC;QAChE,MAAM,uBAAuB,GAC3B,mBAAmB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE3D,wEAAwE;QACxE,qEAAqE;QACrE,MAAM,6BAA6B,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAClE,MAAM,uBAAuB,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC/B,CAAC;QAEF,MAAM,eAAe,GAAsC,EAAE,CAAC;QAC9D,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,QAAQ;gBACX,eAAe,CAAC,MAAM,GAAG;oBACvB,gBAAgB,EAAE,IAAI;oBACtB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChE,GAAG,CAAC,uBAAuB;wBACzB,CAAC,CAAC,EAAE,eAAe,EAAE,uBAAuB,EAAE;wBAC9C,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC;gBACF,MAAM;YACR,KAAK,WAAW;gBACd,eAAe,CAAC,SAAS,GAAG;oBAC1B,oBAAoB,EAAE,MAAM;oBAC5B,gEAAgE;oBAChE,wDAAwD;oBACxD,GAAG,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;iBACzD,CAAC;gBACF,MAAM;YACR,KAAK,OAAO;gBACV,eAAe,CAAC,KAAK,GAAG;oBACtB,gBAAgB,EAAE,IAAI;iBACvB,CAAC;gBACF,MAAM;YACR,KAAK,QAAQ;gBACX,eAAe,CAAC,MAAM,GAAG;oBACvB,iBAAiB,EAAE,IAAI;iBACxB,CAAC;gBACF,MAAM;YACR,KAAK,QAAQ;gBACX,eAAe,CAAC,MAAM,GAAG;oBACvB,iBAAiB,EAAE,IAAI;iBACxB,CAAC;gBACF,MAAM;YACR,KAAK,MAAM;gBACT,eAAe,CAAC,IAAI,GAAG;oBACrB,iBAAiB,EAAE,IAAI;iBACxB,CAAC;gBACF,MAAM;YACR,KAAK,UAAU;gBACb,eAAe,CAAC,QAAQ,GAAG;oBACzB,gBAAgB,EAAE,IAAI;iBACvB,CAAC;gBACF,MAAM;YACR,KAAK,SAAS;gBACZ,eAAe,CAAC,OAAO,GAAG;oBACxB,iBAAiB,EAAE,IAAI;oBACvB,gBAAgB,EAAE,IAAI;iBACvB,CAAC;gBACF,MAAM;QACV,CAAC;QAED,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,+CAA+C;YAC/C,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC;YAC9B,MAAM,aAAa,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAC9D,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,UAAU,CAAC,aAAa,CAAC;gBACvB,SAAS,EAAE,YAAY;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBACzB,MAAM,EAAE,aAAa;aACtB,CAAC,CAAC;YAEH,oFAAoF;YACpF,IAAI,uBAAuB,EAAE,CAAC;gBAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CACjC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAC5C,CAAC;gBAEF,iBAAiB,CAAC,IAAI,CAAC;oBACrB,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,uCAAuC,YAAY;6MACuI;iBACpM,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC;gBACH,cAAc,GAAG,MAAM,cAAc,CAAC;oBACpC,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,iBAAiB;oBAC3B,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM;oBACrC,WAAW;oBACX,qBAAqB,EAAE,IAAI;oBAC3B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC;wBACzC,CAAC,CAAC,EAAE,eAAe,EAAE;wBACrB,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,0DAA0D;gBAC1D,UAAU,CAAC,cAAc,CAAC;oBACxB,SAAS,EAAE,YAAY;oBACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;oBACzB,MAAM,EAAE,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG;iBACrE,CAAC,CAAC;gBAEH,IAAI,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,QAAQ,EAAE,aAAa;wBACvB,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,KAAK,EAAE,CAAC;wBACR,SAAS,EAAE;4BACT,KAAK,EAAE;gCACL,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gCACtC,IAAI,EAAE,QAAQ;6BACf;4BACD,IAAI,EAAE;gCACJ,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;gCACrB,IAAI,EAAE,QAAQ;6BACf;4BACD,QAAQ,EAAE;gCACR,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;gCACzC,IAAI,EAAE,QAAQ;6BACf;4BACD,KAAK,EAAE;gCACL,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gCACtC,IAAI,EAAE,QAAQ;6BACf;4BACD,YAAY,EAAE;gCACZ,KAAK,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;gCACpC,IAAI,EAAE,QAAQ;6BACf;4BACD,SAAS,EAAE;gCACT,KAAK,EAAE,OAAO,CAAC,SAAS;gCACxB,IAAI,EAAE,QAAQ;6BACf;yBACF;qBACF,CAAC,CAAC;oBAEH,MAAM,GAAG,CAAC;gBACZ,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,cAAc,CAAC,MAAM;gBAC3B,KAAK,EAAE;oBACL,aAAa,EAAE,cAAc,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC;oBACpD,iBAAiB,EAAE,cAAc,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC;oBACzD,gBAAgB,EAAE,cAAc,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC;oBAC3D,mBAAmB,EAAE,cAAc,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC;oBAChE,YAAY,EAAE,cAAc,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC;iBACpD;aACG,CAAC;YAEP,sCAAsC;YACtC,UAAU,CAAC,cAAc,CAAC;gBACxB,SAAS,EAAE,YAAY;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBACzB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC;gBAC7C,WAAW,EAAE,cAAc,CAAC,KAAK,CAAC,WAAW;gBAC7C,YAAY,EAAE,cAAc,CAAC,KAAK,CAAC,YAAY;aAChD,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,UAAU;gBACnB,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE;oBACT,QAAQ,EAAE;wBACR,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;4BACpB,MAAM,EAAE,cAAc,CAAC,MAAM;4BAC7B,KAAK,EAAE,cAAc,CAAC,KAAK;4BAC3B,YAAY,EAAE,cAAc,CAAC,YAAY;4BACzC,iEAAiE;yBAClE,CAAC;wBACF,IAAI,EAAE,QAAQ;qBACf;oBACD,SAAS,EAAE;wBACT,KAAK,EAAE,OAAO,CAAC,SAAS;wBACxB,IAAI,EAAE,QAAQ;qBACf;iBACF;aACF,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,KAAK,GAAY,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,WAAW,EAAE,IAAI,CAAC,UAAU;iBACrB,CAAC;YACZ,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAC5C,MAAM,aAAa,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC9D,SAAS;SACV,CAAC,CAAC;QACH,UAAU,CAAC,aAAa,CAAC;YACvB,SAAS,EAAE,YAAY;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YACzB,MAAM,EAAE,aAAa;SACtB,CAAC,CAAC;QAEH,IAAI,YAAsD,CAAC;QAC3D,IAAI,CAAC;YACH,YAAY,GAAG,MAAM,YAAY,CAAC;gBAChC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,iBAAiB;gBAC3B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBACxD,UAAU,EACR,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;oBAC3B,CAAC,CAAC,OAAO,CAAC,WAAW,KAAK,UAAU;wBAClC,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAC,OAAO,CAAC,WAAW,KAAK,MAAM;4BAC9B,CAAC,CAAC,MAAM;4BACR,CAAC,CAAC,MAAM;oBACZ,CAAC,CAAC,SAAS;gBACf,WAAW;gBACX,qBAAqB,EAAE,IAAI;aAC5B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,0DAA0D;YAC1D,UAAU,CAAC,cAAc,CAAC;gBACxB,SAAS,EAAE,YAAY;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBACzB,MAAM,EAAE,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG;aACrE,CAAC,CAAC;YACH,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,qFAAqF;QACrF,MAAM,oBAAoB,GAAG,CAAC,YAAY,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAC7D,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACb,EAAE,EACA,QAAQ,CAAC,UAAU;gBACnB,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACjE,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;aAC1C;SACF,CAAC,CACH,CAAC;QAEF,MAAM,MAAM,GAAG;YACb,EAAE,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACvE,MAAM,EAAE,iBAAiB;YACzB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YACtC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YACzB,OAAO,EAAE;gBACP;oBACE,KAAK,EAAE,CAAC;oBACR,OAAO,EAAE;wBACP,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,YAAY,CAAC,IAAI,IAAI,IAAI;wBAClC,UAAU,EAAE,oBAAoB;qBACjC;oBACD,aAAa,EAAE,YAAY,CAAC,YAAY,IAAI,MAAM;iBACnD;aACF;YACD,KAAK,EAAE;gBACL,aAAa,EAAE,YAAY,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC;gBAClD,iBAAiB,EAAE,YAAY,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC;gBACvD,gBAAgB,EAAE,YAAY,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC;gBACzD,mBAAmB,EAAE,YAAY,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC;gBAC9D,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC;aAClD;SACG,CAAC;QAEP,oCAAoC;QACpC,UAAU,CAAC,cAAc,CAAC;YACxB,SAAS,EAAE,YAAY;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YACzB,MAAM,EACJ,YAAY,CAAC,IAAI;gBACjB,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;oBAC9B,CAAC,CAAC,IAAI,oBAAoB,CAAC,MAAM,cAAc;oBAC/C,CAAC,CAAC,EAAE,CAAC;YACT,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,WAAW;YAC3C,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,YAAY;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,CAAC;YACR,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;wBACpB,IAAI,EAAE,YAAY,CAAC,IAAI;wBACvB,KAAK,EAAE,YAAY,CAAC,KAAK;wBACzB,YAAY,EAAE,YAAY,CAAC,YAAY;wBACvC,iEAAiE;qBAClE,CAAC;oBACF,IAAI,EAAE,QAAQ;iBACf;gBACD,SAAS,EAAE;oBACT,KAAK,EAAE,OAAO,CAAC,SAAS;oBACxB,IAAI,EAAE,QAAQ;iBACf;aACF;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["import {\n CoreAssistantMessage,\n ModelMessage,\n CoreSystemMessage,\n CoreUserMessage,\n generateObject,\n generateText,\n ImagePart,\n NoObjectGeneratedError,\n TextPart,\n ToolSet,\n Tool,\n} from \"ai\";\nimport type { JSONValue, LanguageModelV2 } from \"@ai-sdk/provider\";\nimport { ChatCompletion } from \"openai/resources\";\nimport { v7 as uuidv7 } from \"uuid\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport { AvailableModel, ClientOptions } from \"../types/public/model.js\";\nimport { CreateChatCompletionOptions, LLMClient } from \"./LLMClient.js\";\nimport { anthropicFallbacksOptions } from \"./anthropicOptions.js\";\nimport {\n FlowLogger,\n extractLlmPromptSummary,\n} from \"../flowlogger/FlowLogger.js\";\nimport { toJsonSchema } from \"../zodCompat.js\";\n\ntype ProviderOptionValue = JSONValue;\ntype ProviderOptionMap = Record<string, ProviderOptionValue>;\n\nfunction inferProviderName(modelId: string): string | undefined {\n const [providerName] = modelId.split(\"/\");\n return providerName || undefined;\n}\n\nexport class AISdkClient extends LLMClient {\n public type = \"aisdk\" as const;\n private model: LanguageModelV2;\n private logger?: (message: LogLine) => void;\n\n constructor({\n model,\n logger,\n clientOptions,\n }: {\n model: LanguageModelV2;\n logger?: (message: LogLine) => void;\n clientOptions?: ClientOptions;\n }) {\n super(model.modelId as AvailableModel);\n this.model = model;\n this.logger = logger;\n if (clientOptions) {\n this.clientOptions = clientOptions;\n }\n }\n\n public getLanguageModel(): LanguageModelV2 {\n return this.model;\n }\n\n async createChatCompletion<T = ChatCompletion>({\n options,\n }: CreateChatCompletionOptions): Promise<T> {\n this.logger?.({\n category: \"aisdk\",\n message: \"creating chat completion\",\n level: 2,\n auxiliary: {\n options: {\n value: JSON.stringify({\n ...options,\n image: undefined,\n messages: options.messages.map((msg) => ({\n ...msg,\n content: Array.isArray(msg.content)\n ? msg.content.map((c) =>\n \"image_url\" in c\n ? { ...c, image_url: { url: \"[IMAGE_REDACTED]\" } }\n : c,\n )\n : msg.content,\n })),\n }),\n type: \"object\",\n },\n modelName: {\n value: this.model.modelId,\n type: \"string\",\n },\n },\n });\n\n const formattedMessages: ModelMessage[] = options.messages.map(\n (message) => {\n if (Array.isArray(message.content)) {\n if (message.role === \"system\") {\n const systemMessage: CoreSystemMessage = {\n role: \"system\",\n content: message.content\n .map((c) => (\"text\" in c ? c.text : \"\"))\n .join(\"\\n\"),\n };\n return systemMessage;\n }\n\n const contentParts = message.content.map((content) => {\n if (\"image_url\" in content) {\n const imageContent: ImagePart = {\n type: \"image\",\n image: content.image_url.url,\n };\n return imageContent;\n } else {\n const textContent: TextPart = {\n type: \"text\",\n text: content.text,\n };\n return textContent;\n }\n });\n\n if (message.role === \"user\") {\n const userMessage: CoreUserMessage = {\n role: \"user\",\n content: contentParts,\n };\n return userMessage;\n } else {\n const textOnlyParts = contentParts.map((part) => ({\n type: \"text\" as const,\n text: part.type === \"image\" ? \"[Image]\" : part.text,\n }));\n const assistantMessage: CoreAssistantMessage = {\n role: \"assistant\",\n content: textOnlyParts,\n };\n return assistantMessage;\n }\n }\n\n return {\n role: message.role,\n content: message.content,\n };\n },\n );\n\n let objectResponse: Awaited<ReturnType<typeof generateObject>>;\n const isGPT5 = this.model.modelId.includes(\"gpt-5\");\n const isCodex = this.model.modelId.includes(\"codex\");\n const isOpus47 =\n this.model.modelId === \"anthropic/claude-opus-4-7\" ||\n this.model.modelId === \"claude-opus-4-7\";\n // Kimi models only support temperature=1\n const isKimi = this.model.modelId.includes(\"kimi\");\n const temperature = isKimi ? 1 : isOpus47 ? undefined : options.temperature;\n\n // Resolve reasoning effort: user-configured > default \"none\" for GPT-5.x sub-models\n const isGPT5SubModel = this.model.modelId.includes(\"gpt-5.\") && !isCodex;\n const userReasoningEffort = this.clientOptions?.reasoningEffort;\n const resolvedReasoningEffort =\n userReasoningEffort ?? (isGPT5SubModel ? \"none\" : undefined);\n const providerName = inferProviderName(this.model.modelId);\n\n // Models that lack native structured-output support need a prompt-based\n // JSON fallback instead of response_format: { type: \"json_schema\" }.\n const PROMPT_JSON_FALLBACK_PATTERNS = [\"deepseek\", \"kimi\", \"glm\"];\n const needsPromptJsonFallback = PROMPT_JSON_FALLBACK_PATTERNS.some((p) =>\n this.model.modelId.includes(p),\n );\n\n const providerOptions: Record<string, ProviderOptionMap> = {};\n switch (providerName) {\n case \"openai\":\n providerOptions.openai = {\n strictJsonSchema: true,\n ...(isGPT5 ? { textVerbosity: isCodex ? \"medium\" : \"low\" } : {}),\n ...(resolvedReasoningEffort\n ? { reasoningEffort: resolvedReasoningEffort }\n : {}),\n };\n break;\n case \"anthropic\":\n providerOptions.anthropic = {\n structuredOutputMode: \"auto\",\n // Fable 5 opts into the API's server-side refusal fallback; the\n // provider adds the required beta header automatically.\n ...(anthropicFallbacksOptions(this.model.modelId) ?? {}),\n };\n break;\n case \"azure\":\n providerOptions.azure = {\n strictJsonSchema: true,\n };\n break;\n case \"google\":\n providerOptions.google = {\n structuredOutputs: true,\n };\n break;\n case \"vertex\":\n providerOptions.vertex = {\n structuredOutputs: true,\n };\n break;\n case \"groq\":\n providerOptions.groq = {\n structuredOutputs: true,\n };\n break;\n case \"cerebras\":\n providerOptions.cerebras = {\n strictJsonSchema: true,\n };\n break;\n case \"mistral\":\n providerOptions.mistral = {\n structuredOutputs: true,\n strictJsonSchema: true,\n };\n break;\n }\n\n if (options.response_model) {\n // Log LLM request for generateObject (extract)\n const llmRequestId = uuidv7();\n const promptSummary = extractLlmPromptSummary(options.messages, {\n hasSchema: true,\n });\n FlowLogger.logLlmRequest({\n requestId: llmRequestId,\n model: this.model.modelId,\n prompt: promptSummary,\n });\n\n // For models that don't support native structured outputs, add a prompt instruction\n if (needsPromptJsonFallback) {\n const parsedSchema = JSON.stringify(\n toJsonSchema(options.response_model.schema),\n );\n\n formattedMessages.push({\n role: \"user\",\n content: `Respond in this zod schema format:\\n${parsedSchema}\\n\nYou must respond in JSON format. respond WITH JSON. Do not include any other text, formatting or markdown in your output. Do not include \\`\\`\\` or \\`\\`\\`json in your response. Only the JSON object itself.`,\n });\n }\n\n try {\n objectResponse = await generateObject({\n model: this.model,\n messages: formattedMessages,\n schema: options.response_model.schema,\n temperature,\n allowSystemInMessages: true,\n ...(Object.keys(providerOptions).length > 0\n ? { providerOptions }\n : {}),\n });\n } catch (err) {\n // Log error response to maintain request/response pairing\n FlowLogger.logLlmResponse({\n requestId: llmRequestId,\n model: this.model.modelId,\n output: `[error: ${err instanceof Error ? err.message : \"unknown\"}]`,\n });\n\n if (NoObjectGeneratedError.isInstance(err)) {\n this.logger?.({\n category: \"AISDK error\",\n message: err.message,\n level: 0,\n auxiliary: {\n cause: {\n value: JSON.stringify(err.cause ?? {}),\n type: \"object\",\n },\n text: {\n value: err.text ?? \"\",\n type: \"string\",\n },\n response: {\n value: JSON.stringify(err.response ?? {}),\n type: \"object\",\n },\n usage: {\n value: JSON.stringify(err.usage ?? {}),\n type: \"object\",\n },\n finishReason: {\n value: err.finishReason ?? \"unknown\",\n type: \"string\",\n },\n requestId: {\n value: options.requestId,\n type: \"string\",\n },\n },\n });\n\n throw err;\n }\n throw err;\n }\n\n const result = {\n data: objectResponse.object,\n usage: {\n prompt_tokens: objectResponse.usage.inputTokens ?? 0,\n completion_tokens: objectResponse.usage.outputTokens ?? 0,\n reasoning_tokens: objectResponse.usage.reasoningTokens ?? 0,\n cached_input_tokens: objectResponse.usage.cachedInputTokens ?? 0,\n total_tokens: objectResponse.usage.totalTokens ?? 0,\n },\n } as T;\n\n // Log LLM response for generateObject\n FlowLogger.logLlmResponse({\n requestId: llmRequestId,\n model: this.model.modelId,\n output: JSON.stringify(objectResponse.object),\n inputTokens: objectResponse.usage.inputTokens,\n outputTokens: objectResponse.usage.outputTokens,\n });\n\n this.logger?.({\n category: \"aisdk\",\n message: \"response\",\n level: 1,\n auxiliary: {\n response: {\n value: JSON.stringify({\n object: objectResponse.object,\n usage: objectResponse.usage,\n finishReason: objectResponse.finishReason,\n // Omit request and response properties that might contain images\n }),\n type: \"object\",\n },\n requestId: {\n value: options.requestId,\n type: \"string\",\n },\n },\n });\n\n return result;\n }\n\n const tools: ToolSet = {};\n if (options.tools && options.tools.length > 0) {\n for (const tool of options.tools) {\n tools[tool.name] = {\n description: tool.description,\n inputSchema: tool.parameters,\n } as Tool;\n }\n }\n\n // Log LLM request for generateText (act/observe)\n const llmRequestId = uuidv7();\n const toolCount = Object.keys(tools).length;\n const promptSummary = extractLlmPromptSummary(options.messages, {\n toolCount,\n });\n FlowLogger.logLlmRequest({\n requestId: llmRequestId,\n model: this.model.modelId,\n prompt: promptSummary,\n });\n\n let textResponse: Awaited<ReturnType<typeof generateText>>;\n try {\n textResponse = await generateText({\n model: this.model,\n messages: formattedMessages,\n tools: Object.keys(tools).length > 0 ? tools : undefined,\n toolChoice:\n Object.keys(tools).length > 0\n ? options.tool_choice === \"required\"\n ? \"required\"\n : options.tool_choice === \"none\"\n ? \"none\"\n : \"auto\"\n : undefined,\n temperature,\n allowSystemInMessages: true,\n });\n } catch (err) {\n // Log error response to maintain request/response pairing\n FlowLogger.logLlmResponse({\n requestId: llmRequestId,\n model: this.model.modelId,\n output: `[error: ${err instanceof Error ? err.message : \"unknown\"}]`,\n });\n throw err;\n }\n\n // Transform AI SDK response to match LLMResponse format expected by operator handler\n const transformedToolCalls = (textResponse.toolCalls || []).map(\n (toolCall) => ({\n id:\n toolCall.toolCallId ||\n `call_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,\n type: \"function\",\n function: {\n name: toolCall.toolName,\n arguments: JSON.stringify(toolCall.input),\n },\n }),\n );\n\n const result = {\n id: `chatcmpl_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,\n object: \"chat.completion\",\n created: Math.floor(Date.now() / 1000),\n model: this.model.modelId,\n choices: [\n {\n index: 0,\n message: {\n role: \"assistant\",\n content: textResponse.text || null,\n tool_calls: transformedToolCalls,\n },\n finish_reason: textResponse.finishReason || \"stop\",\n },\n ],\n usage: {\n prompt_tokens: textResponse.usage.inputTokens ?? 0,\n completion_tokens: textResponse.usage.outputTokens ?? 0,\n reasoning_tokens: textResponse.usage.reasoningTokens ?? 0,\n cached_input_tokens: textResponse.usage.cachedInputTokens ?? 0,\n total_tokens: textResponse.usage.totalTokens ?? 0,\n },\n } as T;\n\n // Log LLM response for generateText\n FlowLogger.logLlmResponse({\n requestId: llmRequestId,\n model: this.model.modelId,\n output:\n textResponse.text ||\n (transformedToolCalls.length > 0\n ? `[${transformedToolCalls.length} tool calls]`\n : \"\"),\n inputTokens: textResponse.usage.inputTokens,\n outputTokens: textResponse.usage.outputTokens,\n });\n\n this.logger?.({\n category: \"aisdk\",\n message: \"response\",\n level: 2,\n auxiliary: {\n response: {\n value: JSON.stringify({\n text: textResponse.text,\n usage: textResponse.usage,\n finishReason: textResponse.finishReason,\n // Omit request and response properties that might contain images\n }),\n type: \"object\",\n },\n requestId: {\n value: options.requestId,\n type: \"string\",\n },\n },\n });\n\n return result;\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export declare function openAIStoreProviderOptions(provider: string | undefined): {
2
+ openai: {
3
+ store: false;
4
+ };
5
+ } | {
6
+ openai?: undefined;
7
+ };
@@ -0,0 +1,6 @@
1
+ export function openAIStoreProviderOptions(provider) {
2
+ return provider === "openai.responses"
3
+ ? { openai: { store: false } }
4
+ : {};
5
+ }
6
+ //# sourceMappingURL=providerOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerOptions.js","sourceRoot":"","sources":["../../../../../lib/v3/llm/providerOptions.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,0BAA0B,CAAC,QAA4B;IACrE,OAAO,QAAQ,KAAK,kBAAkB;QACpC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;QACvC,CAAC,CAAC,EAAE,CAAC;AACT,CAAC","sourcesContent":["export function openAIStoreProviderOptions(provider: string | undefined) {\n return provider === \"openai.responses\"\n ? { openai: { store: false as const } }\n : {};\n}\n"]}
@@ -8,4 +8,4 @@ export interface ActionMappingOptions {
8
8
  * Model name substrings that indicate hybrid mode compatibility.
9
9
  * Used for auto-routing when the user doesn't specify a mode.
10
10
  */
11
- export declare const HYBRID_CAPABLE_MODEL_PATTERNS: readonly ["gemini-3", "claude", "gpt-5.4", "gpt-5.5"];
11
+ export declare const HYBRID_CAPABLE_MODEL_PATTERNS: readonly ["gemini-3", "claude", "gpt-5.4", "gpt-5.5", "gpt-5.6"];
@@ -7,5 +7,6 @@ export const HYBRID_CAPABLE_MODEL_PATTERNS = [
7
7
  "claude",
8
8
  "gpt-5.4",
9
9
  "gpt-5.5",
10
+ "gpt-5.6",
10
11
  ];
11
12
  //# sourceMappingURL=agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../../../lib/v3/types/private/agent.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,UAAU;IACV,QAAQ;IACR,SAAS;IACT,SAAS;CACD,CAAC","sourcesContent":["export interface ActionMappingOptions {\n toolCallName: string;\n toolResult: unknown;\n args: Record<string, unknown>;\n reasoning?: string;\n}\n\n/**\n * Model name substrings that indicate hybrid mode compatibility.\n * Used for auto-routing when the user doesn't specify a mode.\n */\nexport const HYBRID_CAPABLE_MODEL_PATTERNS = [\n \"gemini-3\",\n \"claude\",\n \"gpt-5.4\",\n \"gpt-5.5\",\n] as const;\n"]}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../../../lib/v3/types/private/agent.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,UAAU;IACV,QAAQ;IACR,SAAS;IACT,SAAS;IACT,SAAS;CACD,CAAC","sourcesContent":["export interface ActionMappingOptions {\n toolCallName: string;\n toolResult: unknown;\n args: Record<string, unknown>;\n reasoning?: string;\n}\n\n/**\n * Model name substrings that indicate hybrid mode compatibility.\n * Used for auto-routing when the user doesn't specify a mode.\n */\nexport const HYBRID_CAPABLE_MODEL_PATTERNS = [\n \"gemini-3\",\n \"claude\",\n \"gpt-5.4\",\n \"gpt-5.5\",\n \"gpt-5.6\",\n] as const;\n"]}