@browserbasehq/stagehand 3.7.0 → 3.7.1-alpha-2cd1edf49e5b726d817805e3258f2fa9b7fa17b0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/lib/v3/external_clients/aisdk.js +2 -0
- package/dist/cjs/lib/v3/external_clients/aisdk.js.map +1 -1
- package/dist/cjs/lib/v3/llm/aisdk.js +2 -0
- package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
- package/dist/cjs/lib/version.d.ts +1 -1
- package/dist/cjs/lib/version.js +1 -1
- package/dist/cjs/lib/version.js.map +1 -1
- package/dist/esm/lib/v3/external_clients/aisdk.js +2 -0
- package/dist/esm/lib/v3/external_clients/aisdk.js.map +1 -1
- package/dist/esm/lib/v3/llm/aisdk.js +2 -0
- package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
- package/dist/esm/lib/version.d.ts +1 -1
- package/dist/esm/lib/version.js +1 -1
- package/dist/esm/lib/version.js.map +1 -1
- package/package.json +1 -1
|
@@ -67,6 +67,7 @@ class AISdkClient extends LLMClient_js_1.LLMClient {
|
|
|
67
67
|
model: this.model,
|
|
68
68
|
messages: formattedMessages,
|
|
69
69
|
schema: options.response_model.schema,
|
|
70
|
+
allowSystemInMessages: true,
|
|
70
71
|
});
|
|
71
72
|
return {
|
|
72
73
|
data: response.object,
|
|
@@ -90,6 +91,7 @@ class AISdkClient extends LLMClient_js_1.LLMClient {
|
|
|
90
91
|
model: this.model,
|
|
91
92
|
messages: formattedMessages,
|
|
92
93
|
tools,
|
|
94
|
+
allowSystemInMessages: true,
|
|
93
95
|
});
|
|
94
96
|
return {
|
|
95
97
|
data: response.text,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aisdk.js","sourceRoot":"","sources":["../../../../../lib/v3/external_clients/aisdk.ts"],"names":[],"mappings":";;;AAAA,2BAUY;AAEZ,sDAA6E;AAI7E,MAAa,WAAY,SAAQ,wBAAS;IACjC,IAAI,GAAG,OAAgB,CAAC;IACvB,KAAK,CAAkB;IAE/B,YAAY,EAAE,KAAK,EAA8B;QAC/C,KAAK,CAAC,KAAK,CAAC,OAAyB,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAqB,EAC7C,OAAO,GACqB;QAC5B,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,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,IAAA,mBAAc,EAAC;gBACpC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,iBAAiB;gBAC3B,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"aisdk.js","sourceRoot":"","sources":["../../../../../lib/v3/external_clients/aisdk.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CoreAssistantMessage,\n ModelMessage,\n CoreSystemMessage,\n Tool,\n CoreUserMessage,\n generateObject,\n generateText,\n ImagePart,\n TextPart,\n} from \"ai\";\nimport type { LanguageModelV2 } from \"@ai-sdk/provider\";\nimport { CreateChatCompletionOptions, LLMClient } from \"../llm/LLMClient.js\";\nimport { AvailableModel } from \"../types/public/index.js\";\nimport { ChatCompletion } from \"openai/resources\";\n\nexport class AISdkClient extends LLMClient {\n public type = \"aisdk\" as const;\n private model: LanguageModelV2;\n\n constructor({ model }: { model: LanguageModelV2 }) {\n super(model.modelId as AvailableModel);\n this.model = model;\n }\n\n async createChatCompletion<T = ChatCompletion>({\n options,\n }: CreateChatCompletionOptions): Promise<T> {\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 if (options.response_model) {\n const response = await generateObject({\n model: this.model,\n messages: formattedMessages,\n schema: options.response_model.schema,\n allowSystemInMessages: true,\n });\n\n return {\n data: response.object,\n usage: {\n prompt_tokens: response.usage.inputTokens ?? 0,\n completion_tokens: response.usage.outputTokens ?? 0,\n reasoning_tokens: response.usage.reasoningTokens ?? 0,\n cached_input_tokens: response.usage.cachedInputTokens ?? 0,\n total_tokens: response.usage.totalTokens ?? 0,\n },\n } as T;\n }\n\n const tools: Record<string, Tool> = {};\n\n for (const rawTool of options.tools) {\n tools[rawTool.name] = {\n description: rawTool.description,\n inputSchema: rawTool.parameters,\n } as Tool;\n }\n\n const response = await generateText({\n model: this.model,\n messages: formattedMessages,\n tools,\n allowSystemInMessages: true,\n });\n\n return {\n data: response.text,\n usage: {\n prompt_tokens: response.usage.inputTokens ?? 0,\n completion_tokens: response.usage.outputTokens ?? 0,\n reasoning_tokens: response.usage.reasoningTokens ?? 0,\n cached_input_tokens: response.usage.cachedInputTokens ?? 0,\n total_tokens: response.usage.totalTokens ?? 0,\n },\n } as T;\n }\n}\n"]}
|
|
@@ -198,6 +198,7 @@ You must respond in JSON format. respond WITH JSON. Do not include any other tex
|
|
|
198
198
|
messages: formattedMessages,
|
|
199
199
|
schema: options.response_model.schema,
|
|
200
200
|
temperature,
|
|
201
|
+
allowSystemInMessages: true,
|
|
201
202
|
...(Object.keys(providerOptions).length > 0
|
|
202
203
|
? { providerOptions }
|
|
203
204
|
: {}),
|
|
@@ -320,6 +321,7 @@ You must respond in JSON format. respond WITH JSON. Do not include any other tex
|
|
|
320
321
|
: "auto"
|
|
321
322
|
: undefined,
|
|
322
323
|
temperature,
|
|
324
|
+
allowSystemInMessages: true,
|
|
323
325
|
});
|
|
324
326
|
}
|
|
325
327
|
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":"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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 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"]}
|
package/dist/cjs/lib/version.js
CHANGED
|
@@ -5,5 +5,5 @@ exports.STAGEHAND_VERSION = void 0;
|
|
|
5
5
|
* AUTO-GENERATED — DO NOT EDIT BY HAND
|
|
6
6
|
* Run `pnpm run gen-version` to refresh.
|
|
7
7
|
*/
|
|
8
|
-
exports.STAGEHAND_VERSION = "3.7.
|
|
8
|
+
exports.STAGEHAND_VERSION = "3.7.1-alpha-2cd1edf49e5b726d817805e3258f2fa9b7fa17b0";
|
|
9
9
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../lib/version.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,iBAAiB,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../lib/version.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,iBAAiB,GAAG,sDAA+D,CAAC","sourcesContent":["/**\n * AUTO-GENERATED — DO NOT EDIT BY HAND\n * Run `pnpm run gen-version` to refresh.\n */\nexport const STAGEHAND_VERSION = \"3.7.1-alpha-2cd1edf49e5b726d817805e3258f2fa9b7fa17b0\" as const;\n"]}
|
|
@@ -64,6 +64,7 @@ export class AISdkClient extends LLMClient {
|
|
|
64
64
|
model: this.model,
|
|
65
65
|
messages: formattedMessages,
|
|
66
66
|
schema: options.response_model.schema,
|
|
67
|
+
allowSystemInMessages: true,
|
|
67
68
|
});
|
|
68
69
|
return {
|
|
69
70
|
data: response.object,
|
|
@@ -87,6 +88,7 @@ export class AISdkClient extends LLMClient {
|
|
|
87
88
|
model: this.model,
|
|
88
89
|
messages: formattedMessages,
|
|
89
90
|
tools,
|
|
91
|
+
allowSystemInMessages: true,
|
|
90
92
|
});
|
|
91
93
|
return {
|
|
92
94
|
data: response.text,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aisdk.js","sourceRoot":"","sources":["../../../../../lib/v3/external_clients/aisdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,cAAc,EACd,YAAY,GAGb,MAAM,IAAI,CAAC;AAEZ,OAAO,EAA+B,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAI7E,MAAM,OAAO,WAAY,SAAQ,SAAS;IACjC,IAAI,GAAG,OAAgB,CAAC;IACvB,KAAK,CAAkB;IAE/B,YAAY,EAAE,KAAK,EAA8B;QAC/C,KAAK,CAAC,KAAK,CAAC,OAAyB,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAqB,EAC7C,OAAO,GACqB;QAC5B,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,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;gBACpC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,iBAAiB;gBAC3B,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"aisdk.js","sourceRoot":"","sources":["../../../../../lib/v3/external_clients/aisdk.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CoreAssistantMessage,\n ModelMessage,\n CoreSystemMessage,\n Tool,\n CoreUserMessage,\n generateObject,\n generateText,\n ImagePart,\n TextPart,\n} from \"ai\";\nimport type { LanguageModelV2 } from \"@ai-sdk/provider\";\nimport { CreateChatCompletionOptions, LLMClient } from \"../llm/LLMClient.js\";\nimport { AvailableModel } from \"../types/public/index.js\";\nimport { ChatCompletion } from \"openai/resources\";\n\nexport class AISdkClient extends LLMClient {\n public type = \"aisdk\" as const;\n private model: LanguageModelV2;\n\n constructor({ model }: { model: LanguageModelV2 }) {\n super(model.modelId as AvailableModel);\n this.model = model;\n }\n\n async createChatCompletion<T = ChatCompletion>({\n options,\n }: CreateChatCompletionOptions): Promise<T> {\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 if (options.response_model) {\n const response = await generateObject({\n model: this.model,\n messages: formattedMessages,\n schema: options.response_model.schema,\n allowSystemInMessages: true,\n });\n\n return {\n data: response.object,\n usage: {\n prompt_tokens: response.usage.inputTokens ?? 0,\n completion_tokens: response.usage.outputTokens ?? 0,\n reasoning_tokens: response.usage.reasoningTokens ?? 0,\n cached_input_tokens: response.usage.cachedInputTokens ?? 0,\n total_tokens: response.usage.totalTokens ?? 0,\n },\n } as T;\n }\n\n const tools: Record<string, Tool> = {};\n\n for (const rawTool of options.tools) {\n tools[rawTool.name] = {\n description: rawTool.description,\n inputSchema: rawTool.parameters,\n } as Tool;\n }\n\n const response = await generateText({\n model: this.model,\n messages: formattedMessages,\n tools,\n allowSystemInMessages: true,\n });\n\n return {\n data: response.text,\n usage: {\n prompt_tokens: response.usage.inputTokens ?? 0,\n completion_tokens: response.usage.outputTokens ?? 0,\n reasoning_tokens: response.usage.reasoningTokens ?? 0,\n cached_input_tokens: response.usage.cachedInputTokens ?? 0,\n total_tokens: response.usage.totalTokens ?? 0,\n },\n } as T;\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":"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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 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"]}
|
package/dist/esm/lib/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../lib/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../lib/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,sDAA+D,CAAC","sourcesContent":["/**\n * AUTO-GENERATED — DO NOT EDIT BY HAND\n * Run `pnpm run gen-version` to refresh.\n */\nexport const STAGEHAND_VERSION = \"3.7.1-alpha-2cd1edf49e5b726d817805e3258f2fa9b7fa17b0\" as const;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@browserbasehq/stagehand",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.1-alpha-2cd1edf49e5b726d817805e3258f2fa9b7fa17b0",
|
|
4
4
|
"description": "An AI web browsing framework focused on simplicity and extensibility.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|