beeai-framework 0.1.26 → 0.1.28
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/adapters/a2a/agents/agent.d.cts +2 -2
- package/dist/adapters/a2a/agents/agent.d.ts +2 -2
- package/dist/adapters/a2a/agents/events.d.cts +1 -1
- package/dist/adapters/a2a/agents/events.d.ts +1 -1
- package/dist/adapters/a2a/agents/types.d.cts +2 -2
- package/dist/adapters/a2a/agents/types.d.ts +2 -2
- package/dist/adapters/a2a/serve/agent_executor.d.cts +3 -3
- package/dist/adapters/a2a/serve/agent_executor.d.ts +3 -3
- package/dist/adapters/a2a/serve/server.d.cts +2 -2
- package/dist/adapters/a2a/serve/server.d.ts +2 -2
- package/dist/adapters/acp/agents/agent.d.cts +2 -2
- package/dist/adapters/acp/agents/agent.d.ts +2 -2
- package/dist/adapters/acp/agents/events.d.cts +1 -1
- package/dist/adapters/acp/agents/events.d.ts +1 -1
- package/dist/adapters/agentstack/agents/agent.d.cts +2 -2
- package/dist/adapters/agentstack/agents/agent.d.ts +2 -2
- package/dist/adapters/agentstack/agents/events.d.cts +1 -1
- package/dist/adapters/agentstack/agents/events.d.ts +1 -1
- package/dist/adapters/amazon-bedrock/backend/chat.d.cts +2 -2
- package/dist/adapters/amazon-bedrock/backend/chat.d.ts +2 -2
- package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +2 -2
- package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +2 -2
- package/dist/adapters/anthropic/backend/chat.d.cts +2 -2
- package/dist/adapters/anthropic/backend/chat.d.ts +2 -2
- package/dist/adapters/anthropic/backend/embedding.d.cts +2 -2
- package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
- package/dist/adapters/azure-openai/backend/chat.d.cts +2 -2
- package/dist/adapters/azure-openai/backend/chat.d.ts +2 -2
- package/dist/adapters/azure-openai/backend/embedding.d.cts +2 -2
- package/dist/adapters/azure-openai/backend/embedding.d.ts +2 -2
- package/dist/adapters/dummy/backend/chat.d.cts +2 -2
- package/dist/adapters/dummy/backend/chat.d.ts +2 -2
- package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
- package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
- package/dist/adapters/google-vertex/backend/chat.d.cts +3 -3
- package/dist/adapters/google-vertex/backend/chat.d.ts +3 -3
- package/dist/adapters/google-vertex/backend/embedding.d.cts +2 -2
- package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
- package/dist/adapters/groq/backend/chat.cjs +44 -1
- package/dist/adapters/groq/backend/chat.cjs.map +1 -1
- package/dist/adapters/groq/backend/chat.d.cts +12 -14
- package/dist/adapters/groq/backend/chat.d.ts +12 -14
- package/dist/adapters/groq/backend/chat.js +44 -1
- package/dist/adapters/groq/backend/chat.js.map +1 -1
- package/dist/adapters/groq/backend/embedding.d.cts +2 -2
- package/dist/adapters/groq/backend/embedding.d.ts +2 -2
- package/dist/adapters/langchain/backend/chat.d.cts +2 -2
- package/dist/adapters/langchain/backend/chat.d.ts +2 -2
- package/dist/adapters/langchain/backend/embedding.d.cts +2 -2
- package/dist/adapters/langchain/backend/embedding.d.ts +2 -2
- package/dist/adapters/langchain/tools.d.cts +1 -1
- package/dist/adapters/langchain/tools.d.ts +1 -1
- package/dist/adapters/ollama/backend/chat.d.cts +2 -2
- package/dist/adapters/ollama/backend/chat.d.ts +2 -2
- package/dist/adapters/ollama/backend/embedding.d.cts +2 -2
- package/dist/adapters/ollama/backend/embedding.d.ts +2 -2
- package/dist/adapters/openai/backend/chat.d.cts +2 -2
- package/dist/adapters/openai/backend/chat.d.ts +2 -2
- package/dist/adapters/openai/backend/embedding.d.cts +2 -2
- package/dist/adapters/openai/backend/embedding.d.ts +2 -2
- package/dist/adapters/vercel/backend/chat.cjs +57 -18
- package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
- package/dist/adapters/vercel/backend/chat.d.cts +4 -4
- package/dist/adapters/vercel/backend/chat.d.ts +4 -4
- package/dist/adapters/vercel/backend/chat.js +59 -20
- package/dist/adapters/vercel/backend/chat.js.map +1 -1
- package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
- package/dist/adapters/vercel/backend/embedding.d.cts +3 -3
- package/dist/adapters/vercel/backend/embedding.d.ts +3 -3
- package/dist/adapters/vercel/backend/embedding.js.map +1 -1
- package/dist/adapters/vercel/backend/utils.d.cts +2 -2
- package/dist/adapters/vercel/backend/utils.d.ts +2 -2
- package/dist/adapters/watsonx/backend/chat.cjs +3 -4
- package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
- package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
- package/dist/adapters/watsonx/backend/chat.js +4 -5
- package/dist/adapters/watsonx/backend/chat.js.map +1 -1
- package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
- package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
- package/dist/adapters/xai/backend/chat.d.cts +2 -2
- package/dist/adapters/xai/backend/chat.d.ts +2 -2
- package/dist/{agent-CZGWXO-X.d.ts → agent-BAVf6-xf.d.ts} +4 -4
- package/dist/{agent-PRlGoawI.d.cts → agent-DHO-oJQf.d.cts} +4 -4
- package/dist/agents/base.d.cts +2 -2
- package/dist/agents/base.d.ts +2 -2
- package/dist/agents/experimental/replan/agent.d.cts +3 -3
- package/dist/agents/experimental/replan/agent.d.ts +3 -3
- package/dist/agents/experimental/replan/prompts.d.cts +1 -1
- package/dist/agents/experimental/replan/prompts.d.ts +1 -1
- package/dist/agents/experimental/streamlit/agent.d.cts +3 -3
- package/dist/agents/experimental/streamlit/agent.d.ts +3 -3
- package/dist/agents/react/agent.d.cts +4 -4
- package/dist/agents/react/agent.d.ts +4 -4
- package/dist/agents/react/runners/base.d.cts +4 -4
- package/dist/agents/react/runners/base.d.ts +4 -4
- package/dist/agents/react/runners/deep-think/runner.d.cts +4 -4
- package/dist/agents/react/runners/deep-think/runner.d.ts +4 -4
- package/dist/agents/react/runners/default/runner.d.cts +4 -4
- package/dist/agents/react/runners/default/runner.d.ts +4 -4
- package/dist/agents/react/runners/granite/runner.d.cts +4 -4
- package/dist/agents/react/runners/granite/runner.d.ts +4 -4
- package/dist/agents/react/types.d.cts +2 -2
- package/dist/agents/react/types.d.ts +2 -2
- package/dist/agents/requirement/agent.d.cts +4 -4
- package/dist/agents/requirement/agent.d.ts +4 -4
- package/dist/agents/requirement/prompts.d.cts +2 -2
- package/dist/agents/requirement/prompts.d.ts +2 -2
- package/dist/agents/requirement/requirements/conditional.d.cts +4 -4
- package/dist/agents/requirement/requirements/conditional.d.ts +4 -4
- package/dist/agents/requirement/requirements/requirement.d.cts +4 -4
- package/dist/agents/requirement/requirements/requirement.d.ts +4 -4
- package/dist/agents/requirement/requirements/utils.d.cts +1 -1
- package/dist/agents/requirement/requirements/utils.d.ts +1 -1
- package/dist/agents/requirement/runner.d.cts +4 -4
- package/dist/agents/requirement/runner.d.ts +4 -4
- package/dist/agents/requirement/types.d.cts +4 -4
- package/dist/agents/requirement/types.d.ts +4 -4
- package/dist/agents/requirement/utils/llm.d.cts +4 -4
- package/dist/agents/requirement/utils/llm.d.ts +4 -4
- package/dist/agents/requirement/utils/tool.d.cts +4 -4
- package/dist/agents/requirement/utils/tool.d.ts +4 -4
- package/dist/agents/toolCalling/agent.d.cts +3 -3
- package/dist/agents/toolCalling/agent.d.ts +3 -3
- package/dist/agents/toolCalling/types.d.cts +1 -1
- package/dist/agents/toolCalling/types.d.ts +1 -1
- package/dist/agents/types.d.cts +2 -2
- package/dist/agents/types.d.ts +2 -2
- package/dist/backend/backend.d.cts +2 -2
- package/dist/backend/backend.d.ts +2 -2
- package/dist/backend/chat.cjs +8 -1
- package/dist/backend/chat.cjs.map +1 -1
- package/dist/backend/chat.d.cts +2 -2
- package/dist/backend/chat.d.ts +2 -2
- package/dist/backend/chat.js +8 -1
- package/dist/backend/chat.js.map +1 -1
- package/dist/backend/core.d.cts +3 -3
- package/dist/backend/core.d.ts +3 -3
- package/dist/backend/embedding.d.cts +2 -2
- package/dist/backend/embedding.d.ts +2 -2
- package/dist/backend/errors.cjs.map +1 -1
- package/dist/backend/errors.d.cts +10 -13
- package/dist/backend/errors.d.ts +10 -13
- package/dist/backend/errors.js.map +1 -1
- package/dist/backend/message.cjs +4 -1
- package/dist/backend/message.cjs.map +1 -1
- package/dist/backend/message.js +4 -1
- package/dist/backend/message.js.map +1 -1
- package/dist/backend/utils.d.cts +2 -2
- package/dist/backend/utils.d.ts +2 -2
- package/dist/{base-CyFx7BRL.d.ts → base-BfhNzUYf.d.ts} +1 -1
- package/dist/{base-XfWeXQ-S.d.cts → base-BqzN2QwB.d.cts} +1 -1
- package/dist/{chat-BRuyDeKR.d.ts → chat-DTxmaKP0.d.ts} +1 -1
- package/dist/{chat-BFl85cqt.d.cts → chat-DaqV3woF.d.cts} +1 -1
- package/dist/context.d.cts +1 -1
- package/dist/context.d.ts +1 -1
- package/dist/emitter/emitter.d.cts +1 -1
- package/dist/emitter/emitter.d.ts +1 -1
- package/dist/emitter/types.d.cts +1 -1
- package/dist/emitter/types.d.ts +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/internals/fetcher.d.cts +1 -1
- package/dist/internals/fetcher.d.ts +1 -1
- package/dist/memory/summarizeMemory.d.cts +2 -2
- package/dist/memory/summarizeMemory.d.ts +2 -2
- package/dist/middleware/streamToolCall.d.cts +2 -2
- package/dist/middleware/streamToolCall.d.ts +2 -2
- package/dist/middleware/trajectory.d.cts +1 -1
- package/dist/middleware/trajectory.d.ts +1 -1
- package/dist/parsers/linePrefix.d.cts +1 -1
- package/dist/parsers/linePrefix.d.ts +1 -1
- package/dist/tools/arxiv.d.cts +1 -1
- package/dist/tools/arxiv.d.ts +1 -1
- package/dist/tools/base.d.cts +1 -1
- package/dist/tools/base.d.ts +1 -1
- package/dist/tools/calculator.d.cts +1 -1
- package/dist/tools/calculator.d.ts +1 -1
- package/dist/tools/custom.d.cts +2 -2
- package/dist/tools/custom.d.ts +2 -2
- package/dist/tools/database/elasticsearch.d.cts +1 -1
- package/dist/tools/database/elasticsearch.d.ts +1 -1
- package/dist/tools/database/milvus.d.cts +1 -1
- package/dist/tools/database/milvus.d.ts +1 -1
- package/dist/tools/database/qdrant.d.cts +1 -1
- package/dist/tools/database/qdrant.d.ts +1 -1
- package/dist/tools/database/sql.d.cts +1 -1
- package/dist/tools/database/sql.d.ts +1 -1
- package/dist/tools/handoff.d.cts +2 -2
- package/dist/tools/handoff.d.ts +2 -2
- package/dist/tools/llm.d.cts +2 -2
- package/dist/tools/llm.d.ts +2 -2
- package/dist/tools/mcp.d.cts +1 -1
- package/dist/tools/mcp.d.ts +1 -1
- package/dist/tools/openapi.d.cts +1 -1
- package/dist/tools/openapi.d.ts +1 -1
- package/dist/tools/python/output.d.cts +1 -1
- package/dist/tools/python/output.d.ts +1 -1
- package/dist/tools/python/python.d.cts +2 -2
- package/dist/tools/python/python.d.ts +2 -2
- package/dist/tools/search/base.d.cts +1 -1
- package/dist/tools/search/base.d.ts +1 -1
- package/dist/tools/search/duckDuckGoSearch.d.cts +1 -1
- package/dist/tools/search/duckDuckGoSearch.d.ts +1 -1
- package/dist/tools/search/googleSearch.d.cts +1 -1
- package/dist/tools/search/googleSearch.d.ts +1 -1
- package/dist/tools/search/searXNGSearch.d.cts +1 -1
- package/dist/tools/search/searXNGSearch.d.ts +1 -1
- package/dist/tools/search/wikipedia.d.cts +1 -1
- package/dist/tools/search/wikipedia.d.ts +1 -1
- package/dist/tools/similarity.d.cts +1 -1
- package/dist/tools/similarity.d.ts +1 -1
- package/dist/tools/think.d.cts +1 -1
- package/dist/tools/think.d.ts +1 -1
- package/dist/tools/weather/openMeteo.d.cts +1 -1
- package/dist/tools/weather/openMeteo.d.ts +1 -1
- package/dist/tools/web/webCrawler.d.cts +1 -1
- package/dist/tools/web/webCrawler.d.ts +1 -1
- package/dist/{types-BQ-3LdkE.d.ts → types-YT-WdK3m.d.ts} +3 -3
- package/dist/{types-CkEtV8R9.d.cts → types-YoNQSxQH.d.cts} +3 -3
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/dist/workflows/agent.d.cts +3 -3
- package/dist/workflows/agent.d.ts +3 -3
- package/dist/workflows/workflow.d.cts +1 -1
- package/dist/workflows/workflow.d.ts +1 -1
- package/package.json +24 -26
- package/dist/{emitter-36-9MnvA.d.ts → emitter-CL56qab4.d.ts} +1 -1
- package/dist/{emitter-jN55XZZq.d.cts → emitter-UkIkNrek.d.cts} +1 -1
|
@@ -13,6 +13,10 @@ var utils_cjs = require('./utils.cjs');
|
|
|
13
13
|
|
|
14
14
|
var __defProp = Object.defineProperty;
|
|
15
15
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
16
|
+
try {
|
|
17
|
+
globalThis.AI_SDK_LOG_WARNINGS = false;
|
|
18
|
+
} catch {
|
|
19
|
+
}
|
|
16
20
|
class VercelChatModel extends chat_cjs.ChatModel {
|
|
17
21
|
static {
|
|
18
22
|
__name(this, "VercelChatModel");
|
|
@@ -50,32 +54,63 @@ class VercelChatModel extends chat_cjs.ChatModel {
|
|
|
50
54
|
}, run);
|
|
51
55
|
return output;
|
|
52
56
|
}
|
|
53
|
-
const { finishReason, usage, response: { messages } } = await ai.generateText({
|
|
57
|
+
const { finishReason, usage, response: { messages, id } } = await ai.generateText({
|
|
54
58
|
temperature: 0,
|
|
55
59
|
...await this.transformInput(input),
|
|
56
60
|
abortSignal: run.signal
|
|
57
61
|
});
|
|
58
|
-
return new chat_cjs.ChatModelOutput(this.transformMessages(messages), utils_cjs.extractTokenUsage(usage), finishReason);
|
|
62
|
+
return new chat_cjs.ChatModelOutput(this.transformMessages(messages, id), utils_cjs.extractTokenUsage(usage), finishReason);
|
|
59
63
|
}
|
|
60
64
|
async _createStructure({ schema, ...input }, run) {
|
|
61
|
-
const response = await ai.
|
|
65
|
+
const { output, response, finishReason, usage } = await ai.generateText({
|
|
62
66
|
temperature: 0,
|
|
63
67
|
...await this.transformInput(input),
|
|
64
68
|
abortSignal: run.signal,
|
|
65
|
-
|
|
66
|
-
schema
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
output: (() => {
|
|
70
|
+
if (schema instanceof zod.ZodSchema) {
|
|
71
|
+
const [name, description] = [
|
|
72
|
+
"Schema",
|
|
73
|
+
schema.description
|
|
74
|
+
];
|
|
75
|
+
const target = schema._input || schema;
|
|
76
|
+
if (target instanceof zod.ZodArray) {
|
|
77
|
+
return ai.Output.array({
|
|
78
|
+
element: schema,
|
|
79
|
+
name,
|
|
80
|
+
description
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
if (target instanceof zod.ZodEnum) {
|
|
84
|
+
return ai.Output.choice({
|
|
85
|
+
options: target.options,
|
|
86
|
+
name: "",
|
|
87
|
+
description: schema.description
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return ai.Output.object({
|
|
91
|
+
schema,
|
|
92
|
+
name,
|
|
93
|
+
description
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
if (schema.schema) {
|
|
97
|
+
return ai.Output.object({
|
|
98
|
+
schema: ai.jsonSchema(schema.schema),
|
|
99
|
+
name: schema.name,
|
|
100
|
+
description: schema.description
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return ai.Output.json({
|
|
104
|
+
name: schema.name,
|
|
105
|
+
description: schema.description
|
|
106
|
+
});
|
|
107
|
+
})()
|
|
73
108
|
});
|
|
74
109
|
return {
|
|
75
|
-
object:
|
|
110
|
+
object: output,
|
|
76
111
|
output: new chat_cjs.ChatModelOutput([
|
|
77
|
-
new message_cjs.AssistantMessage(JSON.stringify(
|
|
78
|
-
], utils_cjs.extractTokenUsage(
|
|
112
|
+
new message_cjs.AssistantMessage(JSON.stringify(output, null, 2), void 0, response.id)
|
|
113
|
+
], utils_cjs.extractTokenUsage(usage), finishReason)
|
|
79
114
|
};
|
|
80
115
|
}
|
|
81
116
|
async *_createStream(input, run) {
|
|
@@ -94,6 +129,7 @@ class VercelChatModel extends chat_cjs.ChatModel {
|
|
|
94
129
|
return;
|
|
95
130
|
}
|
|
96
131
|
const { fullStream, usage: usagePromise, finishReason: finishReasonPromise, response: responsePromise } = ai.streamText({
|
|
132
|
+
temperature: 0,
|
|
97
133
|
...await this.transformInput(input),
|
|
98
134
|
abortSignal: run.signal
|
|
99
135
|
});
|
|
@@ -181,7 +217,7 @@ class VercelChatModel extends chat_cjs.ChatModel {
|
|
|
181
217
|
break;
|
|
182
218
|
}
|
|
183
219
|
}
|
|
184
|
-
if (streamEmpty) {
|
|
220
|
+
if (streamEmpty && !run.signal.aborted) {
|
|
185
221
|
throw new errors_cjs$1.ChatModelError("No chunks have been received!");
|
|
186
222
|
}
|
|
187
223
|
try {
|
|
@@ -265,12 +301,15 @@ class VercelChatModel extends chat_cjs.ChatModel {
|
|
|
265
301
|
messages
|
|
266
302
|
};
|
|
267
303
|
}
|
|
268
|
-
transformMessages(messages) {
|
|
304
|
+
transformMessages(messages, id) {
|
|
305
|
+
if (messages.length > 1) {
|
|
306
|
+
id = void 0;
|
|
307
|
+
}
|
|
269
308
|
return messages.flatMap((msg) => {
|
|
270
309
|
if (msg.role === "tool") {
|
|
271
|
-
return new message_cjs.ToolMessage(msg.content, msg.providerOptions);
|
|
310
|
+
return new message_cjs.ToolMessage(msg.content.filter((part) => part.type === "tool-result"), msg.providerOptions, id);
|
|
272
311
|
}
|
|
273
|
-
return new message_cjs.AssistantMessage(msg.content, msg.providerOptions);
|
|
312
|
+
return new message_cjs.AssistantMessage(msg.content, msg.providerOptions, id);
|
|
274
313
|
});
|
|
275
314
|
}
|
|
276
315
|
createSnapshot() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/vercel/backend/chat.ts"],"names":["VercelChatModel","ChatModel","emitter","supportsToolStreaming","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","run","responseFormat","ZodSchema","schema","output","_createStructure","finishReason","usage","response","messages","generateText","temperature","transformInput","abortSignal","signal","ChatModelOutput","transformMessages","extractTokenUsage","generateObject","_input","ZodArray","ZodEnum","jsonSchema","z","any","schemaName","name","schemaDescription","description","object","AssistantMessage","JSON","stringify","_createStream","isEmpty","tools","fullStream","usagePromise","finishReasonPromise","responsePromise","streamText","streamEmpty","streamedToolCalls","Map","event","message","type","text","id","streamPartialToolCalls","chunk","toolName","toolCallId","set","delta","get","existingToolCall","delete","ChatModelError","error","ToolMessage","_","Promise","all","lastChunk","e","aborted","map","tool","inputSchema","getInputJsonSchema","msg","CustomMessage","encodeCustomMessage","role","content","UserMessage","SystemMessage","part","join","toolChoice","Tool","toolChoiceSupport","includes","logger","warn","parameters","mapToObj","flatMap","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":"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","file":"chat.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n CoreAssistantMessage,\n ModelMessage,\n CoreToolMessage,\n generateObject,\n generateText,\n jsonSchema,\n LanguageModel as _LanguageModel,\n streamText,\n TextPart,\n ToolCallPart,\n ToolChoice,\n} from \"ai\";\ntype LanguageModelV2 = Exclude<_LanguageModel, string>;\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n AssistantMessage,\n CustomMessage,\n Message,\n SystemMessage,\n ToolMessage,\n UserMessage,\n} from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z, ZodArray, ZodEnum, ZodSchema } from \"zod\";\nimport { Tool } from \"@/tools/base.js\";\nimport { encodeCustomMessage, extractTokenUsage } from \"@/adapters/vercel/backend/utils.js\";\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV2 = LanguageModelV2,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<this>) {\n const responseFormat = input.responseFormat;\n if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n const { output } = await this._createStructure(\n {\n ...input,\n schema: responseFormat,\n },\n run,\n );\n return output;\n }\n\n const {\n finishReason,\n usage,\n response: { messages },\n } = await generateText({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n return new ChatModelOutput(\n this.transformMessages(messages),\n extractTokenUsage(usage),\n finishReason,\n );\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const response = await generateObject({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n ...(schema instanceof ZodSchema\n ? {\n schema,\n output: ((schema._input || schema) instanceof ZodArray\n ? \"array\"\n : (schema._input || schema) instanceof ZodEnum\n ? \"enum\"\n : \"object\") as any,\n }\n : {\n schema: schema.schema ? jsonSchema<T>(schema.schema) : z.any(),\n schemaName: schema.name,\n schemaDescription: schema.description,\n }),\n });\n\n return {\n object: response.object as T,\n output: new ChatModelOutput(\n [new AssistantMessage(JSON.stringify(response.object, null, 2))],\n extractTokenUsage(response.usage),\n response.finishReason,\n ),\n };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n const responseFormat = input.responseFormat;\n if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n const { output } = await this._createStructure(\n {\n ...input,\n schema: responseFormat,\n },\n run,\n );\n yield output;\n return;\n }\n\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const {\n fullStream,\n usage: usagePromise,\n finishReason: finishReasonPromise,\n response: responsePromise,\n } = streamText({\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let streamEmpty = true;\n const streamedToolCalls = new Map<string, ToolCallPart>();\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n streamEmpty = false;\n message = new AssistantMessage(event.text, {}, event.id);\n yield new ChatModelOutput([message]);\n break;\n case \"text-end\":\n streamEmpty = false;\n break;\n case \"tool-input-start\": {\n if (!input.streamPartialToolCalls) {\n break;\n }\n\n const chunk: ToolCallPart = {\n type: \"tool-call\",\n toolName: event.toolName,\n toolCallId: event.id,\n input: \"\",\n };\n streamedToolCalls.set(event.id, chunk);\n const message = new AssistantMessage(chunk, {}, event.id);\n yield new ChatModelOutput([message]);\n break;\n }\n case \"tool-input-delta\": {\n if (!input.streamPartialToolCalls) {\n break;\n }\n\n if (event.delta) {\n const chunk = streamedToolCalls.get(event.id)!;\n const message = new AssistantMessage({ ...chunk, input: event.delta }, {}, event.id);\n yield new ChatModelOutput([message]);\n }\n break;\n }\n case \"tool-call\": {\n streamEmpty = false;\n const existingToolCall = streamedToolCalls.get(event.toolCallId);\n if (existingToolCall) {\n streamedToolCalls.delete(event.toolCallId);\n break;\n }\n message = new AssistantMessage(\n {\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n input: event.input,\n },\n {},\n event.toolCallId,\n );\n yield new ChatModelOutput([message]);\n break;\n }\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"tool-result\":\n streamEmpty = false;\n message = new ToolMessage(\n {\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n output: event.output as any,\n },\n {},\n `tool_result_${event.toolCallId}`,\n );\n yield new ChatModelOutput([message]);\n break;\n case \"abort\":\n break;\n default:\n break;\n }\n }\n\n if (streamEmpty) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n\n try {\n const [usage, finishReason, _] = await Promise.all([\n usagePromise,\n finishReasonPromise,\n responsePromise,\n ]);\n const lastChunk = new ChatModelOutput([]);\n lastChunk.usage = extractTokenUsage(usage);\n lastChunk.finishReason = finishReason;\n yield lastChunk;\n } catch (e) {\n if (!run.signal.aborted) {\n throw e;\n }\n }\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): ModelMessage => {\n if (msg instanceof CustomMessage) {\n msg = encodeCustomMessage(msg);\n }\n\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n } else if (msg instanceof UserMessage) {\n return { role: \"user\", content: msg.content };\n } else if (msg instanceof SystemMessage) {\n return { role: \"system\", content: msg.content.map((part) => part.text).join(\"\\n\") };\n }\n return { role: msg.role, content: msg.content } as ModelMessage;\n });\n\n let toolChoice: ToolChoice<Record<string, any>> | undefined;\n if (input.toolChoice && input.toolChoice instanceof Tool) {\n if (this.toolChoiceSupport.includes(\"single\")) {\n toolChoice = {\n type: \"tool\",\n toolName: input.toolChoice.name,\n };\n } else {\n this.logger.warn(`The single tool choice is not supported.`);\n }\n } else if (input.toolChoice) {\n if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolChoice = input.toolChoice;\n } else {\n this.logger.warn(`The following tool choice value '${input.toolChoice}' is not supported.`);\n }\n }\n\n return {\n ...this.parameters,\n ...input,\n toolChoice,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(messages: (CoreAssistantMessage | CoreToolMessage)[]): Message[] {\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(msg.content, msg.providerOptions);\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/vercel/backend/chat.ts"],"names":["globalThis","AI_SDK_LOG_WARNINGS","VercelChatModel","ChatModel","emitter","supportsToolStreaming","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","run","responseFormat","ZodSchema","schema","output","_createStructure","finishReason","usage","response","messages","id","generateText","temperature","transformInput","abortSignal","signal","ChatModelOutput","transformMessages","extractTokenUsage","name","description","target","_input","ZodArray","Output","array","element","ZodEnum","choice","options","object","jsonSchema","json","AssistantMessage","JSON","stringify","undefined","_createStream","isEmpty","tools","fullStream","usagePromise","finishReasonPromise","responsePromise","streamText","streamEmpty","streamedToolCalls","Map","event","message","type","text","streamPartialToolCalls","chunk","toolName","toolCallId","set","delta","get","existingToolCall","delete","ChatModelError","error","ToolMessage","aborted","_","Promise","all","lastChunk","e","map","tool","inputSchema","getInputJsonSchema","msg","CustomMessage","encodeCustomMessage","role","content","UserMessage","SystemMessage","part","join","toolChoice","Tool","toolChoiceSupport","includes","logger","warn","parameters","mapToObj","length","flatMap","filter","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":"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","file":"chat.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n AssistantModelMessage,\n ModelMessage,\n ToolModelMessage,\n generateText,\n jsonSchema,\n LanguageModel as _LanguageModel,\n streamText,\n TextPart,\n ToolCallPart,\n ToolChoice,\n Output,\n} from \"ai\";\ntype LanguageModelV2 = Exclude<_LanguageModel, string>;\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n AssistantMessage,\n CustomMessage,\n Message,\n SystemMessage,\n ToolMessage,\n UserMessage,\n} from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { ZodArray, ZodEnum, ZodSchema } from \"zod\";\nimport { Tool } from \"@/tools/base.js\";\nimport { encodeCustomMessage, extractTokenUsage } from \"@/adapters/vercel/backend/utils.js\";\n\ntry {\n globalThis.AI_SDK_LOG_WARNINGS = false;\n} catch {\n /* empty */\n}\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV2 = LanguageModelV2,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<this>) {\n const responseFormat = input.responseFormat;\n if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n const { output } = await this._createStructure(\n {\n ...input,\n schema: responseFormat,\n },\n run,\n );\n return output;\n }\n\n const {\n finishReason,\n usage,\n response: { messages, id },\n } = await generateText({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n return new ChatModelOutput(\n this.transformMessages(messages, id),\n extractTokenUsage(usage),\n finishReason,\n );\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const { output, response, finishReason, usage } = await generateText({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n output: ((): Output.Output => {\n if (schema instanceof ZodSchema) {\n const [name, description] = [\"Schema\", schema.description];\n const target = schema._input || schema;\n if (target instanceof ZodArray) {\n return Output.array({ element: schema, name, description });\n }\n if (target instanceof ZodEnum) {\n return Output.choice({\n options: target.options,\n name: \"\",\n description: schema.description,\n });\n }\n return Output.object({ schema, name, description });\n }\n if (schema.schema) {\n return Output.object({\n schema: jsonSchema<T>(schema.schema),\n name: schema.name,\n description: schema.description,\n });\n }\n return Output.json({ name: schema.name, description: schema.description });\n })(),\n });\n\n return {\n object: output as T,\n output: new ChatModelOutput(\n [new AssistantMessage(JSON.stringify(output, null, 2), undefined, response.id)],\n extractTokenUsage(usage),\n finishReason,\n ),\n };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n const responseFormat = input.responseFormat;\n if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n const { output } = await this._createStructure(\n {\n ...input,\n schema: responseFormat,\n },\n run,\n );\n yield output;\n return;\n }\n\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const {\n fullStream,\n usage: usagePromise,\n finishReason: finishReasonPromise,\n response: responsePromise,\n } = streamText({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let streamEmpty = true;\n const streamedToolCalls = new Map<string, ToolCallPart>();\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n streamEmpty = false;\n message = new AssistantMessage(event.text, {}, event.id);\n yield new ChatModelOutput([message]);\n break;\n case \"text-end\":\n streamEmpty = false;\n break;\n case \"tool-input-start\": {\n if (!input.streamPartialToolCalls) {\n break;\n }\n\n const chunk: ToolCallPart = {\n type: \"tool-call\",\n toolName: event.toolName,\n toolCallId: event.id,\n input: \"\",\n };\n streamedToolCalls.set(event.id, chunk);\n const message = new AssistantMessage(chunk, {}, event.id);\n yield new ChatModelOutput([message]);\n break;\n }\n case \"tool-input-delta\": {\n if (!input.streamPartialToolCalls) {\n break;\n }\n\n if (event.delta) {\n const chunk = streamedToolCalls.get(event.id)!;\n const message = new AssistantMessage({ ...chunk, input: event.delta }, {}, event.id);\n yield new ChatModelOutput([message]);\n }\n break;\n }\n case \"tool-call\": {\n streamEmpty = false;\n const existingToolCall = streamedToolCalls.get(event.toolCallId);\n if (existingToolCall) {\n streamedToolCalls.delete(event.toolCallId);\n break;\n }\n message = new AssistantMessage(\n {\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n input: event.input,\n },\n {},\n event.toolCallId,\n );\n yield new ChatModelOutput([message]);\n break;\n }\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"tool-result\":\n streamEmpty = false;\n message = new ToolMessage(\n {\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n output: event.output as any,\n },\n {},\n `tool_result_${event.toolCallId}`,\n );\n yield new ChatModelOutput([message]);\n break;\n case \"abort\":\n break;\n default:\n break;\n }\n }\n\n if (streamEmpty && !run.signal.aborted) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n\n try {\n const [usage, finishReason, _] = await Promise.all([\n usagePromise,\n finishReasonPromise,\n responsePromise,\n ]);\n const lastChunk = new ChatModelOutput([]);\n lastChunk.usage = extractTokenUsage(usage);\n lastChunk.finishReason = finishReason;\n yield lastChunk;\n } catch (e) {\n if (!run.signal.aborted) {\n throw e;\n }\n }\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): ModelMessage => {\n if (msg instanceof CustomMessage) {\n msg = encodeCustomMessage(msg);\n }\n\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n } else if (msg instanceof UserMessage) {\n return { role: \"user\", content: msg.content };\n } else if (msg instanceof SystemMessage) {\n return { role: \"system\", content: msg.content.map((part) => part.text).join(\"\\n\") };\n }\n return { role: msg.role, content: msg.content } as ModelMessage;\n });\n\n let toolChoice: ToolChoice<Record<string, any>> | undefined;\n if (input.toolChoice && input.toolChoice instanceof Tool) {\n if (this.toolChoiceSupport.includes(\"single\")) {\n toolChoice = {\n type: \"tool\",\n toolName: input.toolChoice.name,\n };\n } else {\n this.logger.warn(`The single tool choice is not supported.`);\n }\n } else if (input.toolChoice) {\n if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolChoice = input.toolChoice;\n } else {\n this.logger.warn(`The following tool choice value '${input.toolChoice}' is not supported.`);\n }\n }\n\n return {\n ...this.parameters,\n ...input,\n toolChoice,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(\n messages: (AssistantModelMessage | ToolModelMessage)[],\n id: string | undefined,\n ): Message[] {\n if (messages.length > 1) {\n id = undefined;\n }\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(\n msg.content.filter((part) => part.type === \"tool-result\"),\n msg.providerOptions,\n id,\n );\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n id,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Logger } from '../../../logger/logger.cjs';
|
|
2
2
|
import { GetRunContext, MiddlewareType } from '../../../context.cjs';
|
|
3
|
-
import { m as ChatModel, g as ChatModelEvents, d as ChatModelInput, n as ChatModelOutput, a as ChatModelObjectInput, b as ChatModelObjectOutput, i as ChatModelCache, C as ChatModelParameters, l as ChatModelToolChoiceSupport } from '../../../chat-
|
|
4
|
-
import { LanguageModel, generateText,
|
|
5
|
-
import { E as Emitter } from '../../../emitter-
|
|
3
|
+
import { m as ChatModel, g as ChatModelEvents, d as ChatModelInput, n as ChatModelOutput, a as ChatModelObjectInput, b as ChatModelObjectOutput, i as ChatModelCache, C as ChatModelParameters, l as ChatModelToolChoiceSupport } from '../../../chat-DaqV3woF.cjs';
|
|
4
|
+
import { LanguageModel, generateText, AssistantModelMessage, ToolModelMessage } from 'ai';
|
|
5
|
+
import { E as Emitter } from '../../../emitter-UkIkNrek.cjs';
|
|
6
6
|
import { Message } from '../../../backend/message.cjs';
|
|
7
7
|
import 'pino';
|
|
8
8
|
import '../../../errors.cjs';
|
|
@@ -33,7 +33,7 @@ declare abstract class VercelChatModel<M extends LanguageModelV2 = LanguageModel
|
|
|
33
33
|
protected _createStructure<T>({ schema, ...input }: ChatModelObjectInput<T>, run: GetRunContext<this>): Promise<ChatModelObjectOutput<T>>;
|
|
34
34
|
_createStream(input: ChatModelInput, run: GetRunContext<this>): AsyncGenerator<ChatModelOutput, void, unknown>;
|
|
35
35
|
protected transformInput(input: ChatModelInput): Promise<Parameters<typeof generateText<Record<string, any>>>[0]>;
|
|
36
|
-
protected transformMessages(messages: (
|
|
36
|
+
protected transformMessages(messages: (AssistantModelMessage | ToolModelMessage)[], id: string | undefined): Message[];
|
|
37
37
|
createSnapshot(): {
|
|
38
38
|
providerId: string;
|
|
39
39
|
modelId: string;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Logger } from '../../../logger/logger.js';
|
|
2
2
|
import { GetRunContext, MiddlewareType } from '../../../context.js';
|
|
3
|
-
import { m as ChatModel, g as ChatModelEvents, d as ChatModelInput, n as ChatModelOutput, a as ChatModelObjectInput, b as ChatModelObjectOutput, i as ChatModelCache, C as ChatModelParameters, l as ChatModelToolChoiceSupport } from '../../../chat-
|
|
4
|
-
import { LanguageModel, generateText,
|
|
5
|
-
import { E as Emitter } from '../../../emitter-
|
|
3
|
+
import { m as ChatModel, g as ChatModelEvents, d as ChatModelInput, n as ChatModelOutput, a as ChatModelObjectInput, b as ChatModelObjectOutput, i as ChatModelCache, C as ChatModelParameters, l as ChatModelToolChoiceSupport } from '../../../chat-DTxmaKP0.js';
|
|
4
|
+
import { LanguageModel, generateText, AssistantModelMessage, ToolModelMessage } from 'ai';
|
|
5
|
+
import { E as Emitter } from '../../../emitter-CL56qab4.js';
|
|
6
6
|
import { Message } from '../../../backend/message.js';
|
|
7
7
|
import 'pino';
|
|
8
8
|
import '../../../errors.js';
|
|
@@ -33,7 +33,7 @@ declare abstract class VercelChatModel<M extends LanguageModelV2 = LanguageModel
|
|
|
33
33
|
protected _createStructure<T>({ schema, ...input }: ChatModelObjectInput<T>, run: GetRunContext<this>): Promise<ChatModelObjectOutput<T>>;
|
|
34
34
|
_createStream(input: ChatModelInput, run: GetRunContext<this>): AsyncGenerator<ChatModelOutput, void, unknown>;
|
|
35
35
|
protected transformInput(input: ChatModelInput): Promise<Parameters<typeof generateText<Record<string, any>>>[0]>;
|
|
36
|
-
protected transformMessages(messages: (
|
|
36
|
+
protected transformMessages(messages: (AssistantModelMessage | ToolModelMessage)[], id: string | undefined): Message[];
|
|
37
37
|
createSnapshot(): {
|
|
38
38
|
providerId: string;
|
|
39
39
|
modelId: string;
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { ChatModel, ChatModelOutput } from '../../../backend/chat.js';
|
|
2
|
-
import { generateText,
|
|
2
|
+
import { generateText, Output, jsonSchema, streamText } from 'ai';
|
|
3
3
|
import { Emitter } from '../../../emitter/emitter.js';
|
|
4
4
|
import { AssistantMessage, ToolMessage, CustomMessage, UserMessage, SystemMessage } from '../../../backend/message.js';
|
|
5
5
|
import { ValueError } from '../../../errors.js';
|
|
6
6
|
import { toCamelCase, isEmpty, mapToObj } from 'remeda';
|
|
7
7
|
import { ChatModelError } from '../../../backend/errors.js';
|
|
8
|
-
import { ZodSchema,
|
|
8
|
+
import { ZodSchema, ZodArray, ZodEnum } from 'zod';
|
|
9
9
|
import { Tool } from '../../../tools/base.js';
|
|
10
10
|
import { extractTokenUsage, encodeCustomMessage } from './utils.js';
|
|
11
11
|
|
|
12
12
|
var __defProp = Object.defineProperty;
|
|
13
13
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
14
|
+
try {
|
|
15
|
+
globalThis.AI_SDK_LOG_WARNINGS = false;
|
|
16
|
+
} catch {
|
|
17
|
+
}
|
|
14
18
|
class VercelChatModel extends ChatModel {
|
|
15
19
|
static {
|
|
16
20
|
__name(this, "VercelChatModel");
|
|
@@ -48,32 +52,63 @@ class VercelChatModel extends ChatModel {
|
|
|
48
52
|
}, run);
|
|
49
53
|
return output;
|
|
50
54
|
}
|
|
51
|
-
const { finishReason, usage, response: { messages } } = await generateText({
|
|
55
|
+
const { finishReason, usage, response: { messages, id } } = await generateText({
|
|
52
56
|
temperature: 0,
|
|
53
57
|
...await this.transformInput(input),
|
|
54
58
|
abortSignal: run.signal
|
|
55
59
|
});
|
|
56
|
-
return new ChatModelOutput(this.transformMessages(messages), extractTokenUsage(usage), finishReason);
|
|
60
|
+
return new ChatModelOutput(this.transformMessages(messages, id), extractTokenUsage(usage), finishReason);
|
|
57
61
|
}
|
|
58
62
|
async _createStructure({ schema, ...input }, run) {
|
|
59
|
-
const response = await
|
|
63
|
+
const { output, response, finishReason, usage } = await generateText({
|
|
60
64
|
temperature: 0,
|
|
61
65
|
...await this.transformInput(input),
|
|
62
66
|
abortSignal: run.signal,
|
|
63
|
-
|
|
64
|
-
schema
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
output: (() => {
|
|
68
|
+
if (schema instanceof ZodSchema) {
|
|
69
|
+
const [name, description] = [
|
|
70
|
+
"Schema",
|
|
71
|
+
schema.description
|
|
72
|
+
];
|
|
73
|
+
const target = schema._input || schema;
|
|
74
|
+
if (target instanceof ZodArray) {
|
|
75
|
+
return Output.array({
|
|
76
|
+
element: schema,
|
|
77
|
+
name,
|
|
78
|
+
description
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
if (target instanceof ZodEnum) {
|
|
82
|
+
return Output.choice({
|
|
83
|
+
options: target.options,
|
|
84
|
+
name: "",
|
|
85
|
+
description: schema.description
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return Output.object({
|
|
89
|
+
schema,
|
|
90
|
+
name,
|
|
91
|
+
description
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
if (schema.schema) {
|
|
95
|
+
return Output.object({
|
|
96
|
+
schema: jsonSchema(schema.schema),
|
|
97
|
+
name: schema.name,
|
|
98
|
+
description: schema.description
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
return Output.json({
|
|
102
|
+
name: schema.name,
|
|
103
|
+
description: schema.description
|
|
104
|
+
});
|
|
105
|
+
})()
|
|
71
106
|
});
|
|
72
107
|
return {
|
|
73
|
-
object:
|
|
108
|
+
object: output,
|
|
74
109
|
output: new ChatModelOutput([
|
|
75
|
-
new AssistantMessage(JSON.stringify(
|
|
76
|
-
], extractTokenUsage(
|
|
110
|
+
new AssistantMessage(JSON.stringify(output, null, 2), void 0, response.id)
|
|
111
|
+
], extractTokenUsage(usage), finishReason)
|
|
77
112
|
};
|
|
78
113
|
}
|
|
79
114
|
async *_createStream(input, run) {
|
|
@@ -92,6 +127,7 @@ class VercelChatModel extends ChatModel {
|
|
|
92
127
|
return;
|
|
93
128
|
}
|
|
94
129
|
const { fullStream, usage: usagePromise, finishReason: finishReasonPromise, response: responsePromise } = streamText({
|
|
130
|
+
temperature: 0,
|
|
95
131
|
...await this.transformInput(input),
|
|
96
132
|
abortSignal: run.signal
|
|
97
133
|
});
|
|
@@ -179,7 +215,7 @@ class VercelChatModel extends ChatModel {
|
|
|
179
215
|
break;
|
|
180
216
|
}
|
|
181
217
|
}
|
|
182
|
-
if (streamEmpty) {
|
|
218
|
+
if (streamEmpty && !run.signal.aborted) {
|
|
183
219
|
throw new ChatModelError("No chunks have been received!");
|
|
184
220
|
}
|
|
185
221
|
try {
|
|
@@ -263,12 +299,15 @@ class VercelChatModel extends ChatModel {
|
|
|
263
299
|
messages
|
|
264
300
|
};
|
|
265
301
|
}
|
|
266
|
-
transformMessages(messages) {
|
|
302
|
+
transformMessages(messages, id) {
|
|
303
|
+
if (messages.length > 1) {
|
|
304
|
+
id = void 0;
|
|
305
|
+
}
|
|
267
306
|
return messages.flatMap((msg) => {
|
|
268
307
|
if (msg.role === "tool") {
|
|
269
|
-
return new ToolMessage(msg.content, msg.providerOptions);
|
|
308
|
+
return new ToolMessage(msg.content.filter((part) => part.type === "tool-result"), msg.providerOptions, id);
|
|
270
309
|
}
|
|
271
|
-
return new AssistantMessage(msg.content, msg.providerOptions);
|
|
310
|
+
return new AssistantMessage(msg.content, msg.providerOptions, id);
|
|
272
311
|
});
|
|
273
312
|
}
|
|
274
313
|
createSnapshot() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/vercel/backend/chat.ts"],"names":["VercelChatModel","ChatModel","emitter","supportsToolStreaming","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","run","responseFormat","ZodSchema","schema","output","_createStructure","finishReason","usage","response","messages","generateText","temperature","transformInput","abortSignal","signal","ChatModelOutput","transformMessages","extractTokenUsage","generateObject","_input","ZodArray","ZodEnum","jsonSchema","z","any","schemaName","name","schemaDescription","description","object","AssistantMessage","JSON","stringify","_createStream","isEmpty","tools","fullStream","usagePromise","finishReasonPromise","responsePromise","streamText","streamEmpty","streamedToolCalls","Map","event","message","type","text","id","streamPartialToolCalls","chunk","toolName","toolCallId","set","delta","get","existingToolCall","delete","ChatModelError","error","ToolMessage","_","Promise","all","lastChunk","e","aborted","map","tool","inputSchema","getInputJsonSchema","msg","CustomMessage","encodeCustomMessage","role","content","UserMessage","SystemMessage","part","join","toolChoice","Tool","toolChoiceSupport","includes","logger","warn","parameters","mapToObj","flatMap","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n CoreAssistantMessage,\n ModelMessage,\n CoreToolMessage,\n generateObject,\n generateText,\n jsonSchema,\n LanguageModel as _LanguageModel,\n streamText,\n TextPart,\n ToolCallPart,\n ToolChoice,\n} from \"ai\";\ntype LanguageModelV2 = Exclude<_LanguageModel, string>;\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n AssistantMessage,\n CustomMessage,\n Message,\n SystemMessage,\n ToolMessage,\n UserMessage,\n} from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z, ZodArray, ZodEnum, ZodSchema } from \"zod\";\nimport { Tool } from \"@/tools/base.js\";\nimport { encodeCustomMessage, extractTokenUsage } from \"@/adapters/vercel/backend/utils.js\";\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV2 = LanguageModelV2,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<this>) {\n const responseFormat = input.responseFormat;\n if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n const { output } = await this._createStructure(\n {\n ...input,\n schema: responseFormat,\n },\n run,\n );\n return output;\n }\n\n const {\n finishReason,\n usage,\n response: { messages },\n } = await generateText({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n return new ChatModelOutput(\n this.transformMessages(messages),\n extractTokenUsage(usage),\n finishReason,\n );\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const response = await generateObject({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n ...(schema instanceof ZodSchema\n ? {\n schema,\n output: ((schema._input || schema) instanceof ZodArray\n ? \"array\"\n : (schema._input || schema) instanceof ZodEnum\n ? \"enum\"\n : \"object\") as any,\n }\n : {\n schema: schema.schema ? jsonSchema<T>(schema.schema) : z.any(),\n schemaName: schema.name,\n schemaDescription: schema.description,\n }),\n });\n\n return {\n object: response.object as T,\n output: new ChatModelOutput(\n [new AssistantMessage(JSON.stringify(response.object, null, 2))],\n extractTokenUsage(response.usage),\n response.finishReason,\n ),\n };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n const responseFormat = input.responseFormat;\n if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n const { output } = await this._createStructure(\n {\n ...input,\n schema: responseFormat,\n },\n run,\n );\n yield output;\n return;\n }\n\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const {\n fullStream,\n usage: usagePromise,\n finishReason: finishReasonPromise,\n response: responsePromise,\n } = streamText({\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let streamEmpty = true;\n const streamedToolCalls = new Map<string, ToolCallPart>();\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n streamEmpty = false;\n message = new AssistantMessage(event.text, {}, event.id);\n yield new ChatModelOutput([message]);\n break;\n case \"text-end\":\n streamEmpty = false;\n break;\n case \"tool-input-start\": {\n if (!input.streamPartialToolCalls) {\n break;\n }\n\n const chunk: ToolCallPart = {\n type: \"tool-call\",\n toolName: event.toolName,\n toolCallId: event.id,\n input: \"\",\n };\n streamedToolCalls.set(event.id, chunk);\n const message = new AssistantMessage(chunk, {}, event.id);\n yield new ChatModelOutput([message]);\n break;\n }\n case \"tool-input-delta\": {\n if (!input.streamPartialToolCalls) {\n break;\n }\n\n if (event.delta) {\n const chunk = streamedToolCalls.get(event.id)!;\n const message = new AssistantMessage({ ...chunk, input: event.delta }, {}, event.id);\n yield new ChatModelOutput([message]);\n }\n break;\n }\n case \"tool-call\": {\n streamEmpty = false;\n const existingToolCall = streamedToolCalls.get(event.toolCallId);\n if (existingToolCall) {\n streamedToolCalls.delete(event.toolCallId);\n break;\n }\n message = new AssistantMessage(\n {\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n input: event.input,\n },\n {},\n event.toolCallId,\n );\n yield new ChatModelOutput([message]);\n break;\n }\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"tool-result\":\n streamEmpty = false;\n message = new ToolMessage(\n {\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n output: event.output as any,\n },\n {},\n `tool_result_${event.toolCallId}`,\n );\n yield new ChatModelOutput([message]);\n break;\n case \"abort\":\n break;\n default:\n break;\n }\n }\n\n if (streamEmpty) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n\n try {\n const [usage, finishReason, _] = await Promise.all([\n usagePromise,\n finishReasonPromise,\n responsePromise,\n ]);\n const lastChunk = new ChatModelOutput([]);\n lastChunk.usage = extractTokenUsage(usage);\n lastChunk.finishReason = finishReason;\n yield lastChunk;\n } catch (e) {\n if (!run.signal.aborted) {\n throw e;\n }\n }\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): ModelMessage => {\n if (msg instanceof CustomMessage) {\n msg = encodeCustomMessage(msg);\n }\n\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n } else if (msg instanceof UserMessage) {\n return { role: \"user\", content: msg.content };\n } else if (msg instanceof SystemMessage) {\n return { role: \"system\", content: msg.content.map((part) => part.text).join(\"\\n\") };\n }\n return { role: msg.role, content: msg.content } as ModelMessage;\n });\n\n let toolChoice: ToolChoice<Record<string, any>> | undefined;\n if (input.toolChoice && input.toolChoice instanceof Tool) {\n if (this.toolChoiceSupport.includes(\"single\")) {\n toolChoice = {\n type: \"tool\",\n toolName: input.toolChoice.name,\n };\n } else {\n this.logger.warn(`The single tool choice is not supported.`);\n }\n } else if (input.toolChoice) {\n if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolChoice = input.toolChoice;\n } else {\n this.logger.warn(`The following tool choice value '${input.toolChoice}' is not supported.`);\n }\n }\n\n return {\n ...this.parameters,\n ...input,\n toolChoice,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(messages: (CoreAssistantMessage | CoreToolMessage)[]): Message[] {\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(msg.content, msg.providerOptions);\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/vercel/backend/chat.ts"],"names":["globalThis","AI_SDK_LOG_WARNINGS","VercelChatModel","ChatModel","emitter","supportsToolStreaming","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","run","responseFormat","ZodSchema","schema","output","_createStructure","finishReason","usage","response","messages","id","generateText","temperature","transformInput","abortSignal","signal","ChatModelOutput","transformMessages","extractTokenUsage","name","description","target","_input","ZodArray","Output","array","element","ZodEnum","choice","options","object","jsonSchema","json","AssistantMessage","JSON","stringify","undefined","_createStream","isEmpty","tools","fullStream","usagePromise","finishReasonPromise","responsePromise","streamText","streamEmpty","streamedToolCalls","Map","event","message","type","text","streamPartialToolCalls","chunk","toolName","toolCallId","set","delta","get","existingToolCall","delete","ChatModelError","error","ToolMessage","aborted","_","Promise","all","lastChunk","e","map","tool","inputSchema","getInputJsonSchema","msg","CustomMessage","encodeCustomMessage","role","content","UserMessage","SystemMessage","part","join","toolChoice","Tool","toolChoiceSupport","includes","logger","warn","parameters","mapToObj","length","flatMap","filter","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":";;;;;;;;;;;;;AA6CA,IAAI;AACFA,EAAAA,UAAAA,CAAWC,mBAAAA,GAAsB,KAAA;AACnC,CAAA,CAAA,MAAQ;AAER;AAEO,MAAeC,wBAEZC,SAAAA,CAAAA;EArDV;;;;AAsDkBC,EAAAA,OAAAA;EACAC,qBAAAA,GAAiC,IAAA;AAEjD,EAAA,WAAA,CAA6BC,KAAAA,EAAU;AACrC,IAAA,KAAA,EAAK,EAAA,KADsBA,KAAAA,GAAAA,KAAAA;AAE3B,IAAA,IAAI,CAAC,KAAKC,OAAAA,EAAS;AACjB,MAAA,MAAM,IAAIC,WAAW,+BAAA,CAAA;AACvB;AACA,IAAA,IAAA,CAAKJ,OAAAA,GAAUK,OAAAA,CAAQC,IAAAA,CAAKC,KAAAA,CAAM;MAChCC,SAAAA,EAAW;AAAC,QAAA,SAAA;QAAW,IAAA,CAAKC,UAAAA;AAAY,QAAA;;MACxCC,OAAAA,EAAS;KACX,CAAA;AACF;AAEA,EAAA,IAAIP,OAAAA,GAAkB;AACpB,IAAA,OAAO,KAAKD,KAAAA,CAAMC,OAAAA;AACpB;AAEA,EAAA,IAAIM,UAAAA,GAAqB;AACvB,IAAA,MAAME,QAAAA,GAAW,IAAA,CAAKT,KAAAA,CAAMS,QAAAA,CAASC,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA,CAAGA,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA;AAC9D,IAAA,OAAOC,YAAYF,QAAAA,CAAAA;AACrB;EAEA,MAAgBG,OAAAA,CAAQC,OAAuBC,GAAAA,EAA0B;AACvE,IAAA,MAAMC,iBAAiBF,KAAAA,CAAME,cAAAA;AAC7B,IAAA,IAAIA,cAAAA,KAAmBA,cAAAA,YAA0BC,SAAAA,IAAaD,cAAAA,CAAeE,MAAAA,CAAAA,EAAS;AACpF,MAAA,MAAM,EAAEC,MAAAA,EAAM,GAAK,MAAM,KAAKC,gBAAAA,CAC5B;QACE,GAAGN,KAAAA;QACHI,MAAAA,EAAQF;AACV,OAAA,EACAD,GAAAA,CAAAA;AAEF,MAAA,OAAOI,MAAAA;AACT;AAEA,IAAA,MAAM,EACJE,YAAAA,EACAC,KAAAA,EACAC,QAAAA,EAAU,EAAEC,UAAUC,EAAAA,EAAE,EAAE,GACxB,MAAMC,YAAAA,CAAa;MACrBC,WAAAA,EAAa,CAAA;MACb,GAAI,MAAM,IAAA,CAAKC,cAAAA,CAAed,KAAAA,CAAAA;AAC9Be,MAAAA,WAAAA,EAAad,GAAAA,CAAIe;KACnB,CAAA;AAEA,IAAA,OAAO,IAAIC,eAAAA,CACT,IAAA,CAAKC,iBAAAA,CAAkBR,QAAAA,EAAUC,EAAAA,CAAAA,EACjCQ,iBAAAA,CAAkBX,KAAAA,CAAAA,EAClBD,YAAAA,CAAAA;AAEJ;AAEA,EAAA,MAAgBD,iBACd,EAAEF,MAAAA,EAAQ,GAAGJ,KAAAA,IACbC,GAAAA,EACmC;AACnC,IAAA,MAAM,EAAEI,MAAAA,EAAQI,QAAAA,EAAUF,cAAcC,KAAAA,EAAK,GAAK,MAAMI,YAAAA,CAAa;MACnEC,WAAAA,EAAa,CAAA;MACb,GAAI,MAAM,IAAA,CAAKC,cAAAA,CAAed,KAAAA,CAAAA;AAC9Be,MAAAA,WAAAA,EAAad,GAAAA,CAAIe,MAAAA;AACjBX,MAAAA,MAAAA,EAAAA,CAAS,MAAA;AACP,QAAA,IAAID,kBAAkBD,SAAAA,EAAW;AAC/B,UAAA,MAAM,CAACiB,IAAAA,EAAMC,WAAAA,CAAAA,GAAe;AAAC,YAAA,QAAA;YAAUjB,MAAAA,CAAOiB;;AAC9C,UAAA,MAAMC,MAAAA,GAASlB,OAAOmB,MAAAA,IAAUnB,MAAAA;AAChC,UAAA,IAAIkB,kBAAkBE,QAAAA,EAAU;AAC9B,YAAA,OAAOC,OAAOC,KAAAA,CAAM;cAAEC,OAAAA,EAASvB,MAAAA;AAAQgB,cAAAA,IAAAA;AAAMC,cAAAA;aAAY,CAAA;AAC3D;AACA,UAAA,IAAIC,kBAAkBM,OAAAA,EAAS;AAC7B,YAAA,OAAOH,OAAOI,MAAAA,CAAO;AACnBC,cAAAA,OAAAA,EAASR,MAAAA,CAAOQ,OAAAA;cAChBV,IAAAA,EAAM,EAAA;AACNC,cAAAA,WAAAA,EAAajB,MAAAA,CAAOiB;aACtB,CAAA;AACF;AACA,UAAA,OAAOI,OAAOM,MAAAA,CAAO;AAAE3B,YAAAA,MAAAA;AAAQgB,YAAAA,IAAAA;AAAMC,YAAAA;WAAY,CAAA;AACnD;AACA,QAAA,IAAIjB,OAAOA,MAAAA,EAAQ;AACjB,UAAA,OAAOqB,OAAOM,MAAAA,CAAO;YACnB3B,MAAAA,EAAQ4B,UAAAA,CAAc5B,OAAOA,MAAM,CAAA;AACnCgB,YAAAA,IAAAA,EAAMhB,MAAAA,CAAOgB,IAAAA;AACbC,YAAAA,WAAAA,EAAajB,MAAAA,CAAOiB;WACtB,CAAA;AACF;AACA,QAAA,OAAOI,OAAOQ,IAAAA,CAAK;AAAEb,UAAAA,IAAAA,EAAMhB,MAAAA,CAAOgB,IAAAA;AAAMC,UAAAA,WAAAA,EAAajB,MAAAA,CAAOiB;SAAY,CAAA;OAC1E;KACF,CAAA;AAEA,IAAA,OAAO;MACLU,MAAAA,EAAQ1B,MAAAA;AACRA,MAAAA,MAAAA,EAAQ,IAAIY,eAAAA,CACV;QAAC,IAAIiB,gBAAAA,CAAiBC,KAAKC,SAAAA,CAAU/B,MAAAA,EAAQ,MAAM,CAAA,CAAA,EAAIgC,MAAAA,EAAW5B,QAAAA,CAASE,EAAE;SAC7EQ,iBAAAA,CAAkBX,KAAAA,GAClBD,YAAAA;AAEJ,KAAA;AACF;EAEA,OAAO+B,aAAAA,CAActC,OAAuBC,GAAAA,EAA0B;AACpE,IAAA,MAAMC,iBAAiBF,KAAAA,CAAME,cAAAA;AAC7B,IAAA,IAAIA,cAAAA,KAAmBA,cAAAA,YAA0BC,SAAAA,IAAaD,cAAAA,CAAeE,MAAAA,CAAAA,EAAS;AACpF,MAAA,MAAM,EAAEC,MAAAA,EAAM,GAAK,MAAM,KAAKC,gBAAAA,CAC5B;QACE,GAAGN,KAAAA;QACHI,MAAAA,EAAQF;AACV,OAAA,EACAD,GAAAA,CAAAA;AAEF,MAAA,MAAMI,MAAAA;AACN,MAAA;AACF;AAEA,IAAA,IAAI,CAAC,KAAKnB,qBAAAA,IAAyB,CAACqD,QAAQvC,KAAAA,CAAMwC,KAAAA,IAAS,EAAE,CAAA,EAAG;AAC9D,MAAA,MAAM/B,QAAAA,GAAW,MAAM,IAAA,CAAKV,OAAAA,CAAQC,OAAOC,GAAAA,CAAAA;AAC3C,MAAA,MAAMQ,QAAAA;AACN,MAAA;AACF;AAEA,IAAA,MAAM,EACJgC,YACAjC,KAAAA,EAAOkC,YAAAA,EACPnC,cAAcoC,mBAAAA,EACdlC,QAAAA,EAAUmC,eAAAA,EAAe,GACvBC,UAAAA,CAAW;MACbhC,WAAAA,EAAa,CAAA;MACb,GAAI,MAAM,IAAA,CAAKC,cAAAA,CAAed,KAAAA,CAAAA;AAC9Be,MAAAA,WAAAA,EAAad,GAAAA,CAAIe;KACnB,CAAA;AAEA,IAAA,IAAI8B,WAAAA,GAAc,IAAA;AAClB,IAAA,MAAMC,iBAAAA,uBAAwBC,GAAAA,EAAAA;AAC9B,IAAA,WAAA,MAAiBC,SAASR,UAAAA,EAAY;AACpC,MAAA,IAAIS,OAAAA;AACJ,MAAA,QAAQD,MAAME,IAAAA;QACZ,KAAK,YAAA;AACHL,UAAAA,WAAAA,GAAc,KAAA;AACdI,UAAAA,OAAAA,GAAU,IAAIhB,gBAAAA,CAAiBe,KAAAA,CAAMG,MAAM,EAAC,EAAGH,MAAMtC,EAAE,CAAA;AACvD,UAAA,MAAM,IAAIM,eAAAA,CAAgB;AAACiC,YAAAA;AAAQ,WAAA,CAAA;AACnC,UAAA;QACF,KAAK,UAAA;AACHJ,UAAAA,WAAAA,GAAc,KAAA;AACd,UAAA;AACF,QAAA,KAAK,kBAAA,EAAoB;AACvB,UAAA,IAAI,CAAC9C,MAAMqD,sBAAAA,EAAwB;AACjC,YAAA;AACF;AAEA,UAAA,MAAMC,KAAAA,GAAsB;YAC1BH,IAAAA,EAAM,WAAA;AACNI,YAAAA,QAAAA,EAAUN,KAAAA,CAAMM,QAAAA;AAChBC,YAAAA,UAAAA,EAAYP,KAAAA,CAAMtC,EAAAA;YAClBX,KAAAA,EAAO;AACT,WAAA;AACA+C,UAAAA,iBAAAA,CAAkBU,GAAAA,CAAIR,KAAAA,CAAMtC,EAAAA,EAAI2C,KAAAA,CAAAA;AAChC,UAAA,MAAMJ,WAAU,IAAIhB,gBAAAA,CAAiBoB,OAAO,EAAC,EAAGL,MAAMtC,EAAE,CAAA;AACxD,UAAA,MAAM,IAAIM,eAAAA,CAAgB;AAACiC,YAAAA;AAAQ,WAAA,CAAA;AACnC,UAAA;AACF;AACA,QAAA,KAAK,kBAAA,EAAoB;AACvB,UAAA,IAAI,CAAClD,MAAMqD,sBAAAA,EAAwB;AACjC,YAAA;AACF;AAEA,UAAA,IAAIJ,MAAMS,KAAAA,EAAO;AACf,YAAA,MAAMJ,KAAAA,GAAQP,iBAAAA,CAAkBY,GAAAA,CAAIV,KAAAA,CAAMtC,EAAE,CAAA;AAC5C,YAAA,MAAMuC,QAAAA,GAAU,IAAIhB,gBAAAA,CAAiB;cAAE,GAAGoB,KAAAA;AAAOtD,cAAAA,KAAAA,EAAOiD,KAAAA,CAAMS;aAAM,EAAG,EAAC,EAAGT,KAAAA,CAAMtC,EAAE,CAAA;AACnF,YAAA,MAAM,IAAIM,eAAAA,CAAgB;AAACiC,cAAAA;AAAQ,aAAA,CAAA;AACrC;AACA,UAAA;AACF;AACA,QAAA,KAAK,WAAA,EAAa;AAChBJ,UAAAA,WAAAA,GAAc,KAAA;AACd,UAAA,MAAMc,gBAAAA,GAAmBb,iBAAAA,CAAkBY,GAAAA,CAAIV,KAAAA,CAAMO,UAAU,CAAA;AAC/D,UAAA,IAAII,gBAAAA,EAAkB;AACpBb,YAAAA,iBAAAA,CAAkBc,MAAAA,CAAOZ,MAAMO,UAAU,CAAA;AACzC,YAAA;AACF;AACAN,UAAAA,OAAAA,GAAU,IAAIhB,gBAAAA,CACZ;AACEiB,YAAAA,IAAAA,EAAMF,KAAAA,CAAME,IAAAA;AACZK,YAAAA,UAAAA,EAAYP,KAAAA,CAAMO,UAAAA;AAClBD,YAAAA,QAAAA,EAAUN,KAAAA,CAAMM,QAAAA;AAChBvD,YAAAA,KAAAA,EAAOiD,KAAAA,CAAMjD;WACf,EACA,EAAC,EACDiD,KAAAA,CAAMO,UAAU,CAAA;AAElB,UAAA,MAAM,IAAIvC,eAAAA,CAAgB;AAACiC,YAAAA;AAAQ,WAAA,CAAA;AACnC,UAAA;AACF;QACA,KAAK,OAAA;AACH,UAAA,MAAM,IAAIY,eAAe,iBAAA,EAAmB;YAACb,KAAAA,CAAMc;AAAe,WAAA,CAAA;QACpE,KAAK,aAAA;AACHjB,UAAAA,WAAAA,GAAc,KAAA;AACdI,UAAAA,OAAAA,GAAU,IAAIc,WAAAA,CACZ;AACEb,YAAAA,IAAAA,EAAMF,KAAAA,CAAME,IAAAA;AACZK,YAAAA,UAAAA,EAAYP,KAAAA,CAAMO,UAAAA;AAClBD,YAAAA,QAAAA,EAAUN,KAAAA,CAAMM,QAAAA;AAChBlD,YAAAA,MAAAA,EAAQ4C,KAAAA,CAAM5C;AAChB,WAAA,EACA,EAAC,EACD,CAAA,YAAA,EAAe4C,KAAAA,CAAMO,UAAU,CAAA,CAAE,CAAA;AAEnC,UAAA,MAAM,IAAIvC,eAAAA,CAAgB;AAACiC,YAAAA;AAAQ,WAAA,CAAA;AACnC,UAAA;AAKJ;AACF;AAEA,IAAA,IAAIJ,WAAAA,IAAe,CAAC7C,GAAAA,CAAIe,MAAAA,CAAOiD,OAAAA,EAAS;AACtC,MAAA,MAAM,IAAIH,eAAe,+BAAA,CAAA;AAC3B;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,CAACtD,KAAAA,EAAOD,YAAAA,EAAc2D,CAAAA,CAAAA,GAAK,MAAMC,QAAQC,GAAAA,CAAI;AACjD1B,QAAAA,YAAAA;AACAC,QAAAA,mBAAAA;AACAC,QAAAA;AACD,OAAA,CAAA;AACD,MAAA,MAAMyB,SAAAA,GAAY,IAAIpD,eAAAA,CAAgB,EAAE,CAAA;AACxCoD,MAAAA,SAAAA,CAAU7D,KAAAA,GAAQW,kBAAkBX,KAAAA,CAAAA;AACpC6D,MAAAA,SAAAA,CAAU9D,YAAAA,GAAeA,YAAAA;AACzB,MAAA,MAAM8D,SAAAA;AACR,KAAA,CAAA,OAASC,CAAAA,EAAG;AACV,MAAA,IAAI,CAACrE,GAAAA,CAAIe,MAAAA,CAAOiD,OAAAA,EAAS;AACvB,QAAA,MAAMK,CAAAA;AACR;AACF;AACF;AAEA,EAAA,MAAgBxD,eACdd,KAAAA,EACkE;AAClE,IAAA,MAAMwC,KAAAA,GAAQ,MAAM2B,OAAAA,CAAQC,GAAAA,CAAAA,CACzBpE,KAAAA,CAAMwC,SAAS,EAAA,EAAI+B,GAAAA,CAAI,OAAOC,IAAAA,MAAU;AACvCpD,MAAAA,IAAAA,EAAMoD,IAAAA,CAAKpD,IAAAA;AACXC,MAAAA,WAAAA,EAAamD,IAAAA,CAAKnD,WAAAA;AAClBoD,MAAAA,WAAAA,EAAazC,UAAAA,CAAW,MAAMwC,IAAAA,CAAKE,kBAAAA,EAAkB;AACvD,KAAA,CAAA,CAAA,CAAA;AAGF,IAAA,MAAMhE,QAAAA,GAAWV,KAAAA,CAAMU,QAAAA,CAAS6D,GAAAA,CAAI,CAACI,GAAAA,KAAAA;AACnC,MAAA,IAAIA,eAAeC,aAAAA,EAAe;AAChCD,QAAAA,GAAAA,GAAME,oBAAoBF,GAAAA,CAAAA;AAC5B;AAEA,MAAA,IAAIA,eAAezC,gBAAAA,EAAkB;AACnC,QAAA,OAAO;UAAE4C,IAAAA,EAAM,WAAA;AAAaC,UAAAA,OAAAA,EAASJ,GAAAA,CAAII;AAAQ,SAAA;AACnD,OAAA,MAAA,IAAWJ,eAAeX,WAAAA,EAAa;AACrC,QAAA,OAAO;UAAEc,IAAAA,EAAM,MAAA;AAAQC,UAAAA,OAAAA,EAASJ,GAAAA,CAAII;AAAQ,SAAA;AAC9C,OAAA,MAAA,IAAWJ,eAAeK,WAAAA,EAAa;AACrC,QAAA,OAAO;UAAEF,IAAAA,EAAM,MAAA;AAAQC,UAAAA,OAAAA,EAASJ,GAAAA,CAAII;AAAQ,SAAA;AAC9C,OAAA,MAAA,IAAWJ,eAAeM,aAAAA,EAAe;AACvC,QAAA,OAAO;UAAEH,IAAAA,EAAM,QAAA;UAAUC,OAAAA,EAASJ,GAAAA,CAAII,QAAQR,GAAAA,CAAI,CAACW,SAASA,IAAAA,CAAK9B,IAAI,CAAA,CAAE+B,IAAAA,CAAK,IAAA;AAAM,SAAA;AACpF;AACA,MAAA,OAAO;AAAEL,QAAAA,IAAAA,EAAMH,GAAAA,CAAIG,IAAAA;AAAMC,QAAAA,OAAAA,EAASJ,GAAAA,CAAII;AAAQ,OAAA;KAChD,CAAA;AAEA,IAAA,IAAIK,UAAAA;AACJ,IAAA,IAAIpF,KAAAA,CAAMoF,UAAAA,IAAcpF,KAAAA,CAAMoF,UAAAA,YAAsBC,IAAAA,EAAM;AACxD,MAAA,IAAI,IAAA,CAAKC,iBAAAA,CAAkBC,QAAAA,CAAS,QAAA,CAAA,EAAW;AAC7CH,QAAAA,UAAAA,GAAa;UACXjC,IAAAA,EAAM,MAAA;AACNI,UAAAA,QAAAA,EAAUvD,MAAMoF,UAAAA,CAAWhE;AAC7B,SAAA;OACF,MAAO;AACL,QAAA,IAAA,CAAKoE,MAAAA,CAAOC,KAAK,CAAA,wCAAA,CAA0C,CAAA;AAC7D;AACF,KAAA,MAAA,IAAWzF,MAAMoF,UAAAA,EAAY;AAC3B,MAAA,IAAI,IAAA,CAAKE,iBAAAA,CAAkBC,QAAAA,CAASvF,KAAAA,CAAMoF,UAAU,CAAA,EAAG;AACrDA,QAAAA,UAAAA,GAAapF,KAAAA,CAAMoF,UAAAA;OACrB,MAAO;AACL,QAAA,IAAA,CAAKI,MAAAA,CAAOC,IAAAA,CAAK,CAAA,iCAAA,EAAoCzF,KAAAA,CAAMoF,UAAU,CAAA,mBAAA,CAAqB,CAAA;AAC5F;AACF;AAEA,IAAA,OAAO;AACL,MAAA,GAAG,IAAA,CAAKM,UAAAA;MACR,GAAG1F,KAAAA;AACHoF,MAAAA,UAAAA;AACAjG,MAAAA,KAAAA,EAAO,IAAA,CAAKA,KAAAA;AACZqD,MAAAA,KAAAA,EAAOmD,SAASnD,KAAAA,EAAO,CAAC,EAAEpB,IAAAA,EAAM,GAAGoD,MAAAA,KAAW;AAACpD,QAAAA,IAAAA;AAAMoD,QAAAA;AAAK,OAAA,CAAA;AAC1D9D,MAAAA;AACF,KAAA;AACF;AAEUQ,EAAAA,iBAAAA,CACRR,UACAC,EAAAA,EACW;AACX,IAAA,IAAID,QAAAA,CAASkF,SAAS,CAAA,EAAG;AACvBjF,MAAAA,EAAAA,GAAK0B,MAAAA;AACP;AACA,IAAA,OAAO3B,QAAAA,CAASmF,OAAAA,CAAQ,CAAClB,GAAAA,KAAAA;AACvB,MAAA,IAAIA,GAAAA,CAAIG,SAAS,MAAA,EAAQ;AACvB,QAAA,OAAO,IAAId,WAAAA,CACTW,GAAAA,CAAII,OAAAA,CAAQe,MAAAA,CAAO,CAACZ,IAAAA,KAASA,IAAAA,CAAK/B,IAAAA,KAAS,aAAA,CAAA,EAC3CwB,GAAAA,CAAIoB,iBACJpF,EAAAA,CAAAA;AAEJ;AACA,MAAA,OAAO,IAAIuB,gBAAAA,CACTyC,GAAAA,CAAII,OAAAA,EACJJ,GAAAA,CAAIoB,iBACJpF,EAAAA,CAAAA;KAEJ,CAAA;AACF;EAEAqF,cAAAA,GAAiB;AACf,IAAA,OAAO;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACTtG,MAAAA,UAAAA,EAAY,IAAA,CAAKA,UAAAA;AACjBN,MAAAA,OAAAA,EAAS,IAAA,CAAKA,OAAAA;AACdF,MAAAA,qBAAAA,EAAuB,IAAA,CAAKA;AAC9B,KAAA;AACF;AAEA,EAAA,MAAM+G,aAAa,EAAEvG,UAAAA,EAAYN,OAAAA,EAAS,GAAG8G,UAAAA,EAAoD;AAC/F,IAAA,MAAMC,QAAAA,GAAW,MAAMnH,SAAAA,CAAUoH,QAAAA,CAAS,GAAG1G,UAAAA,CAAAA,CAAAA,EAAcN,OAAAA,CAAAA,CAAS,CAAA;AACpE,IAAA,IAAI,EAAE+G,oBAAoBpH,eAAAA,CAAAA,EAAkB;AAC1C,MAAA,MAAM,IAAIsH,MAAM,4BAAA,CAAA;AAClB;AACAF,IAAAA,QAAAA,CAASG,OAAAA,EAAO;AAChBC,IAAAA,MAAAA,CAAOC,OAAO,IAAA,EAAM;MAClB,GAAGN,QAAAA;AACH/G,MAAAA,KAAAA,EAAOgH,QAAAA,CAAShH;KAClB,CAAA;AACF;AACF","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n AssistantModelMessage,\n ModelMessage,\n ToolModelMessage,\n generateText,\n jsonSchema,\n LanguageModel as _LanguageModel,\n streamText,\n TextPart,\n ToolCallPart,\n ToolChoice,\n Output,\n} from \"ai\";\ntype LanguageModelV2 = Exclude<_LanguageModel, string>;\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n AssistantMessage,\n CustomMessage,\n Message,\n SystemMessage,\n ToolMessage,\n UserMessage,\n} from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { ZodArray, ZodEnum, ZodSchema } from \"zod\";\nimport { Tool } from \"@/tools/base.js\";\nimport { encodeCustomMessage, extractTokenUsage } from \"@/adapters/vercel/backend/utils.js\";\n\ntry {\n globalThis.AI_SDK_LOG_WARNINGS = false;\n} catch {\n /* empty */\n}\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV2 = LanguageModelV2,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<this>) {\n const responseFormat = input.responseFormat;\n if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n const { output } = await this._createStructure(\n {\n ...input,\n schema: responseFormat,\n },\n run,\n );\n return output;\n }\n\n const {\n finishReason,\n usage,\n response: { messages, id },\n } = await generateText({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n return new ChatModelOutput(\n this.transformMessages(messages, id),\n extractTokenUsage(usage),\n finishReason,\n );\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const { output, response, finishReason, usage } = await generateText({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n output: ((): Output.Output => {\n if (schema instanceof ZodSchema) {\n const [name, description] = [\"Schema\", schema.description];\n const target = schema._input || schema;\n if (target instanceof ZodArray) {\n return Output.array({ element: schema, name, description });\n }\n if (target instanceof ZodEnum) {\n return Output.choice({\n options: target.options,\n name: \"\",\n description: schema.description,\n });\n }\n return Output.object({ schema, name, description });\n }\n if (schema.schema) {\n return Output.object({\n schema: jsonSchema<T>(schema.schema),\n name: schema.name,\n description: schema.description,\n });\n }\n return Output.json({ name: schema.name, description: schema.description });\n })(),\n });\n\n return {\n object: output as T,\n output: new ChatModelOutput(\n [new AssistantMessage(JSON.stringify(output, null, 2), undefined, response.id)],\n extractTokenUsage(usage),\n finishReason,\n ),\n };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n const responseFormat = input.responseFormat;\n if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n const { output } = await this._createStructure(\n {\n ...input,\n schema: responseFormat,\n },\n run,\n );\n yield output;\n return;\n }\n\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const {\n fullStream,\n usage: usagePromise,\n finishReason: finishReasonPromise,\n response: responsePromise,\n } = streamText({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let streamEmpty = true;\n const streamedToolCalls = new Map<string, ToolCallPart>();\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n streamEmpty = false;\n message = new AssistantMessage(event.text, {}, event.id);\n yield new ChatModelOutput([message]);\n break;\n case \"text-end\":\n streamEmpty = false;\n break;\n case \"tool-input-start\": {\n if (!input.streamPartialToolCalls) {\n break;\n }\n\n const chunk: ToolCallPart = {\n type: \"tool-call\",\n toolName: event.toolName,\n toolCallId: event.id,\n input: \"\",\n };\n streamedToolCalls.set(event.id, chunk);\n const message = new AssistantMessage(chunk, {}, event.id);\n yield new ChatModelOutput([message]);\n break;\n }\n case \"tool-input-delta\": {\n if (!input.streamPartialToolCalls) {\n break;\n }\n\n if (event.delta) {\n const chunk = streamedToolCalls.get(event.id)!;\n const message = new AssistantMessage({ ...chunk, input: event.delta }, {}, event.id);\n yield new ChatModelOutput([message]);\n }\n break;\n }\n case \"tool-call\": {\n streamEmpty = false;\n const existingToolCall = streamedToolCalls.get(event.toolCallId);\n if (existingToolCall) {\n streamedToolCalls.delete(event.toolCallId);\n break;\n }\n message = new AssistantMessage(\n {\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n input: event.input,\n },\n {},\n event.toolCallId,\n );\n yield new ChatModelOutput([message]);\n break;\n }\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"tool-result\":\n streamEmpty = false;\n message = new ToolMessage(\n {\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n output: event.output as any,\n },\n {},\n `tool_result_${event.toolCallId}`,\n );\n yield new ChatModelOutput([message]);\n break;\n case \"abort\":\n break;\n default:\n break;\n }\n }\n\n if (streamEmpty && !run.signal.aborted) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n\n try {\n const [usage, finishReason, _] = await Promise.all([\n usagePromise,\n finishReasonPromise,\n responsePromise,\n ]);\n const lastChunk = new ChatModelOutput([]);\n lastChunk.usage = extractTokenUsage(usage);\n lastChunk.finishReason = finishReason;\n yield lastChunk;\n } catch (e) {\n if (!run.signal.aborted) {\n throw e;\n }\n }\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): ModelMessage => {\n if (msg instanceof CustomMessage) {\n msg = encodeCustomMessage(msg);\n }\n\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n } else if (msg instanceof UserMessage) {\n return { role: \"user\", content: msg.content };\n } else if (msg instanceof SystemMessage) {\n return { role: \"system\", content: msg.content.map((part) => part.text).join(\"\\n\") };\n }\n return { role: msg.role, content: msg.content } as ModelMessage;\n });\n\n let toolChoice: ToolChoice<Record<string, any>> | undefined;\n if (input.toolChoice && input.toolChoice instanceof Tool) {\n if (this.toolChoiceSupport.includes(\"single\")) {\n toolChoice = {\n type: \"tool\",\n toolName: input.toolChoice.name,\n };\n } else {\n this.logger.warn(`The single tool choice is not supported.`);\n }\n } else if (input.toolChoice) {\n if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolChoice = input.toolChoice;\n } else {\n this.logger.warn(`The following tool choice value '${input.toolChoice}' is not supported.`);\n }\n }\n\n return {\n ...this.parameters,\n ...input,\n toolChoice,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(\n messages: (AssistantModelMessage | ToolModelMessage)[],\n id: string | undefined,\n ): Message[] {\n if (messages.length > 1) {\n id = undefined;\n }\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(\n msg.content.filter((part) => part.type === \"tool-result\"),\n msg.providerOptions,\n id,\n );\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n id,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/vercel/backend/embedding.ts"],"names":["VercelEmbeddingModel","EmbeddingModel","emitter","model","Emitter","root","child","namespace","providerId","creator","modelId","provider","split","toCamelCase","_create","input","run","embedMany","values","abortSignal","signal","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":";;;;;;;;;AAmBO,MAAMA,6BAEHC,4BAAAA,CAAAA;EArBV;;;;AAsBkBC,EAAAA,OAAAA;AAEhB,EAAA,WAAA,CAA4BC,KAAAA,EAAU;AACpC,IAAA,KAAA,EAAK,EAAA,KADqBA,KAAAA,GAAAA,KAAAA;AAE1B,IAAA,IAAA,CAAKD,OAAAA,GAAUE,mBAAAA,CAAQC,IAAAA,CAAKC,KAAAA,CAAM;MAChCC,SAAAA,EAAW;AAAC,QAAA,SAAA;QAAW,IAAA,CAAKC,UAAAA;AAAY,QAAA;;MACxCC,OAAAA,EAAS;KACX,CAAA;AACF;AAEA,EAAA,IAAIC,OAAAA,GAAkB;AACpB,IAAA,OAAO,KAAKP,KAAAA,CAAMO,OAAAA;AACpB;AAEA,EAAA,IAAIF,UAAAA,GAAqB;AACvB,IAAA,MAAMG,QAAAA,GAAW,IAAA,CAAKR,KAAAA,CAAMQ,QAAAA,CAASC,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA,CAAGA,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA;AAC9D,IAAA,OAAOC,mBAAYF,QAAAA,CAAAA;AACrB;EAEA,MAAgBG,OAAAA,CACdC,OACAC,GAAAA,EAC+B;AAC/B,IAAA,OAAOC,YAAAA,
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/vercel/backend/embedding.ts"],"names":["VercelEmbeddingModel","EmbeddingModel","emitter","model","Emitter","root","child","namespace","providerId","creator","modelId","provider","split","toCamelCase","_create","input","run","embedMany","values","abortSignal","signal","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":";;;;;;;;;AAmBO,MAAMA,6BAEHC,4BAAAA,CAAAA;EArBV;;;;AAsBkBC,EAAAA,OAAAA;AAEhB,EAAA,WAAA,CAA4BC,KAAAA,EAAU;AACpC,IAAA,KAAA,EAAK,EAAA,KADqBA,KAAAA,GAAAA,KAAAA;AAE1B,IAAA,IAAA,CAAKD,OAAAA,GAAUE,mBAAAA,CAAQC,IAAAA,CAAKC,KAAAA,CAAM;MAChCC,SAAAA,EAAW;AAAC,QAAA,SAAA;QAAW,IAAA,CAAKC,UAAAA;AAAY,QAAA;;MACxCC,OAAAA,EAAS;KACX,CAAA;AACF;AAEA,EAAA,IAAIC,OAAAA,GAAkB;AACpB,IAAA,OAAO,KAAKP,KAAAA,CAAMO,OAAAA;AACpB;AAEA,EAAA,IAAIF,UAAAA,GAAqB;AACvB,IAAA,MAAMG,QAAAA,GAAW,IAAA,CAAKR,KAAAA,CAAMQ,QAAAA,CAASC,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA,CAAGA,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA;AAC9D,IAAA,OAAOC,mBAAYF,QAAAA,CAAAA;AACrB;EAEA,MAAgBG,OAAAA,CACdC,OACAC,GAAAA,EAC+B;AAC/B,IAAA,OAAOC,YAAAA,CAAU;AACfd,MAAAA,KAAAA,EAAO,IAAA,CAAKA,KAAAA;AACZe,MAAAA,MAAAA,EAAQH,KAAAA,CAAMG,MAAAA;AACdC,MAAAA,WAAAA,EAAaH,GAAAA,CAAII;KACnB,CAAA;AACF;EAEAC,cAAAA,GAAiB;AACf,IAAA,OAAO;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACTb,MAAAA,UAAAA,EAAY,IAAA,CAAKA,UAAAA;AACjBE,MAAAA,OAAAA,EAAS,IAAA,CAAKP;AAChB,KAAA;AACF;AAEA,EAAA,MAAMmB,aAAa,EAAEd,UAAAA,EAAYE,OAAAA,EAAS,GAAGa,UAAAA,EAAoD;AAC/F,IAAA,MAAMC,QAAAA,GAAW,MAAMxB,oBAAAA,CAAqByB,QAAAA,CAC1C,GAAGjB,UAAAA,CAAAA,CAAAA,EAAcE,OAAAA,CAAAA,CAAS,CAAA;AAE5B,IAAA,IAAI,EAAEc,oBAAoBxB,oBAAAA,CAAAA,EAAuB;AAC/C,MAAA,MAAM,IAAI0B,MAAM,4BAAA,CAAA;AAClB;AACAF,IAAAA,QAAAA,CAASG,OAAAA,EAAO;AAChBC,IAAAA,MAAAA,CAAOC,OAAO,IAAA,EAAM;MAClB,GAAGN,QAAAA;AACHpB,MAAAA,KAAAA,EAAOqB,QAAAA,CAASrB;KAClB,CAAA;AACF;AACF","file":"embedding.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n EmbeddingModel,\n EmbeddingModelInput,\n EmbeddingModelOutput,\n EmbeddingModelEvents,\n} from \"@/backend/embedding.js\";\nimport { embedMany, EmbeddingModel as Model } from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\n\ntype InternalEmbeddingModel = Exclude<Model, string>;\n\nexport class VercelEmbeddingModel<\n R extends InternalEmbeddingModel = InternalEmbeddingModel,\n> extends EmbeddingModel {\n public readonly emitter: Emitter<EmbeddingModelEvents>;\n\n constructor(public readonly model: R) {\n super();\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"embedding\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(\n input: EmbeddingModelInput,\n run: GetRunContext<this>,\n ): Promise<EmbeddingModelOutput> {\n return embedMany({\n model: this.model,\n values: input.values,\n abortSignal: run.signal,\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.model,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await VercelEmbeddingModel.fromName(\n `${providerId}:${modelId}` as FullModelName,\n );\n if (!(instance instanceof VercelEmbeddingModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { EmbeddingModel as EmbeddingModel$1, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from '../../../backend/embedding.cjs';
|
|
2
2
|
import { EmbeddingModel } from 'ai';
|
|
3
|
-
import { E as Emitter } from '../../../emitter-
|
|
3
|
+
import { E as Emitter } from '../../../emitter-UkIkNrek.cjs';
|
|
4
4
|
import { GetRunContext } from '../../../context.cjs';
|
|
5
5
|
import '../../../internals/serializable.cjs';
|
|
6
6
|
import '../../../internals/types.cjs';
|
|
7
7
|
import '../../../internals/helpers/guards.cjs';
|
|
8
8
|
import '../../../errors.cjs';
|
|
9
|
-
import '../../../chat-
|
|
9
|
+
import '../../../chat-DaqV3woF.cjs';
|
|
10
10
|
import '../../../backend/message.cjs';
|
|
11
11
|
import 'promise-based-task';
|
|
12
12
|
import '../../../cache/base.cjs';
|
|
@@ -26,7 +26,7 @@ import 'pino';
|
|
|
26
26
|
* SPDX-License-Identifier: Apache-2.0
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
type InternalEmbeddingModel = Exclude<EmbeddingModel
|
|
29
|
+
type InternalEmbeddingModel = Exclude<EmbeddingModel, string>;
|
|
30
30
|
declare class VercelEmbeddingModel<R extends InternalEmbeddingModel = InternalEmbeddingModel> extends EmbeddingModel$1 {
|
|
31
31
|
readonly model: R;
|
|
32
32
|
readonly emitter: Emitter<EmbeddingModelEvents>;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { EmbeddingModel as EmbeddingModel$1, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from '../../../backend/embedding.js';
|
|
2
2
|
import { EmbeddingModel } from 'ai';
|
|
3
|
-
import { E as Emitter } from '../../../emitter-
|
|
3
|
+
import { E as Emitter } from '../../../emitter-CL56qab4.js';
|
|
4
4
|
import { GetRunContext } from '../../../context.js';
|
|
5
5
|
import '../../../internals/serializable.js';
|
|
6
6
|
import '../../../internals/types.js';
|
|
7
7
|
import '../../../internals/helpers/guards.js';
|
|
8
8
|
import '../../../errors.js';
|
|
9
|
-
import '../../../chat-
|
|
9
|
+
import '../../../chat-DTxmaKP0.js';
|
|
10
10
|
import '../../../backend/message.js';
|
|
11
11
|
import 'promise-based-task';
|
|
12
12
|
import '../../../cache/base.js';
|
|
@@ -26,7 +26,7 @@ import 'pino';
|
|
|
26
26
|
* SPDX-License-Identifier: Apache-2.0
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
type InternalEmbeddingModel = Exclude<EmbeddingModel
|
|
29
|
+
type InternalEmbeddingModel = Exclude<EmbeddingModel, string>;
|
|
30
30
|
declare class VercelEmbeddingModel<R extends InternalEmbeddingModel = InternalEmbeddingModel> extends EmbeddingModel$1 {
|
|
31
31
|
readonly model: R;
|
|
32
32
|
readonly emitter: Emitter<EmbeddingModelEvents>;
|