beeai-framework 0.1.21 → 0.1.23
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 +6 -10
- package/dist/adapters/a2a/agents/agent.d.ts +6 -10
- 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 +6 -10
- package/dist/adapters/acp/agents/agent.d.ts +6 -10
- 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 +8 -6
- package/dist/adapters/agentstack/agents/agent.d.ts +8 -6
- 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 +2 -2
- package/dist/adapters/google-vertex/backend/chat.d.ts +2 -2
- 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.d.cts +2 -2
- package/dist/adapters/groq/backend/chat.d.ts +2 -2
- 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.cjs +1 -2
- package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
- package/dist/adapters/ollama/backend/chat.d.cts +2 -3
- package/dist/adapters/ollama/backend/chat.d.ts +2 -3
- package/dist/adapters/ollama/backend/chat.js +1 -2
- package/dist/adapters/ollama/backend/chat.js.map +1 -1
- 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 +77 -17
- package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
- package/dist/adapters/vercel/backend/chat.d.cts +2 -2
- package/dist/adapters/vercel/backend/chat.d.ts +2 -2
- package/dist/adapters/vercel/backend/chat.js +77 -17
- package/dist/adapters/vercel/backend/chat.js.map +1 -1
- package/dist/adapters/vercel/backend/embedding.d.cts +2 -2
- package/dist/adapters/vercel/backend/embedding.d.ts +2 -2
- package/dist/adapters/vercel/backend/utils.cjs +32 -0
- package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
- package/dist/adapters/vercel/backend/utils.d.cts +6 -4
- package/dist/adapters/vercel/backend/utils.d.ts +6 -4
- package/dist/adapters/vercel/backend/utils.js +31 -1
- package/dist/adapters/vercel/backend/utils.js.map +1 -1
- package/dist/adapters/watsonx/backend/chat.cjs +7 -8
- package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/chat.d.cts +4 -4
- package/dist/adapters/watsonx/backend/chat.d.ts +4 -4
- package/dist/adapters/watsonx/backend/chat.js +7 -8
- 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-DvvVGvLr.d.cts → agent-BVuc9Nfn.d.cts} +5 -4
- package/dist/{agent-CHebzsQB.d.ts → agent-Cuy8Q4gw.d.ts} +5 -4
- package/dist/agents/base.cjs +5 -2
- package/dist/agents/base.cjs.map +1 -1
- package/dist/agents/base.d.cts +2 -2
- package/dist/agents/base.d.ts +2 -2
- package/dist/agents/base.js +5 -2
- package/dist/agents/base.js.map +1 -1
- 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 +8 -12
- package/dist/agents/experimental/streamlit/agent.d.ts +8 -12
- 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 +5 -5
- package/dist/agents/react/runners/default/runner.d.ts +5 -5
- 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.cjs +162 -0
- package/dist/agents/requirement/agent.cjs.map +1 -0
- package/dist/agents/requirement/agent.d.cts +29 -0
- package/dist/agents/requirement/agent.d.ts +29 -0
- package/dist/agents/requirement/agent.js +160 -0
- package/dist/agents/requirement/agent.js.map +1 -0
- package/dist/agents/requirement/prompts.cjs +95 -0
- package/dist/agents/requirement/prompts.cjs.map +1 -0
- package/dist/agents/requirement/prompts.d.cts +107 -0
- package/dist/agents/requirement/prompts.d.ts +107 -0
- package/dist/agents/requirement/prompts.js +90 -0
- package/dist/agents/requirement/prompts.js.map +1 -0
- package/dist/agents/requirement/requirements/conditional.cjs +190 -0
- package/dist/agents/requirement/requirements/conditional.cjs.map +1 -0
- package/dist/agents/requirement/requirements/conditional.d.cts +71 -0
- package/dist/agents/requirement/requirements/conditional.d.ts +71 -0
- package/dist/agents/requirement/requirements/conditional.js +188 -0
- package/dist/agents/requirement/requirements/conditional.js.map +1 -0
- package/dist/agents/requirement/requirements/requirement.cjs +107 -0
- package/dist/agents/requirement/requirements/requirement.cjs.map +1 -0
- package/dist/agents/requirement/requirements/requirement.d.cts +59 -0
- package/dist/agents/requirement/requirements/requirement.d.ts +59 -0
- package/dist/agents/requirement/requirements/requirement.js +104 -0
- package/dist/agents/requirement/requirements/requirement.js.map +1 -0
- package/dist/agents/requirement/requirements/utils.cjs +74 -0
- package/dist/agents/requirement/requirements/utils.cjs.map +1 -0
- package/dist/agents/requirement/requirements/utils.d.cts +40 -0
- package/dist/agents/requirement/requirements/utils.d.ts +40 -0
- package/dist/agents/requirement/requirements/utils.js +69 -0
- package/dist/agents/requirement/requirements/utils.js.map +1 -0
- package/dist/agents/requirement/runner.cjs +268 -0
- package/dist/agents/requirement/runner.cjs.map +1 -0
- package/dist/agents/requirement/runner.d.cts +115 -0
- package/dist/agents/requirement/runner.d.ts +115 -0
- package/dist/agents/requirement/runner.js +266 -0
- package/dist/agents/requirement/runner.js.map +1 -0
- package/dist/agents/requirement/types.cjs +40 -0
- package/dist/agents/requirement/types.cjs.map +1 -0
- package/dist/agents/requirement/types.d.cts +24 -0
- package/dist/agents/requirement/types.d.ts +24 -0
- package/dist/agents/requirement/types.js +35 -0
- package/dist/agents/requirement/types.js.map +1 -0
- package/dist/agents/requirement/utils/llm.cjs +202 -0
- package/dist/agents/requirement/utils/llm.cjs.map +1 -0
- package/dist/agents/requirement/utils/llm.d.cts +50 -0
- package/dist/agents/requirement/utils/llm.d.ts +50 -0
- package/dist/agents/requirement/utils/llm.js +199 -0
- package/dist/agents/requirement/utils/llm.js.map +1 -0
- package/dist/agents/requirement/utils/tool.cjs +95 -0
- package/dist/agents/requirement/utils/tool.cjs.map +1 -0
- package/dist/agents/requirement/utils/tool.d.cts +24 -0
- package/dist/agents/requirement/utils/tool.d.ts +24 -0
- package/dist/agents/requirement/utils/tool.js +92 -0
- package/dist/agents/requirement/utils/tool.js.map +1 -0
- package/dist/agents/requirement/utils/toolCallChecker.cjs +61 -0
- package/dist/agents/requirement/utils/toolCallChecker.cjs.map +1 -0
- package/dist/agents/requirement/utils/toolCallChecker.d.cts +28 -0
- package/dist/agents/requirement/utils/toolCallChecker.d.ts +28 -0
- package/dist/agents/requirement/utils/toolCallChecker.js +59 -0
- package/dist/agents/requirement/utils/toolCallChecker.js.map +1 -0
- package/dist/agents/toolCalling/agent.cjs +4 -1
- package/dist/agents/toolCalling/agent.cjs.map +1 -1
- package/dist/agents/toolCalling/agent.d.cts +11 -12
- package/dist/agents/toolCalling/agent.d.ts +11 -12
- package/dist/agents/toolCalling/agent.js +5 -2
- package/dist/agents/toolCalling/agent.js.map +1 -1
- 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 +122 -4
- package/dist/backend/chat.cjs.map +1 -1
- package/dist/backend/chat.d.cts +3 -3
- package/dist/backend/chat.d.ts +3 -3
- package/dist/backend/chat.js +123 -5
- 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/message.cjs +20 -13
- package/dist/backend/message.cjs.map +1 -1
- package/dist/backend/message.d.cts +7 -3
- package/dist/backend/message.d.ts +7 -3
- package/dist/backend/message.js +20 -13
- 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-BQgDlcGa.d.ts → base-CyFx7BRL.d.ts} +5 -3
- package/dist/{base-CwcxwybB.d.cts → base-XfWeXQ-S.d.cts} +5 -3
- package/dist/{chat-CRb3vUVg.d.cts → chat-BOb9n7AJ.d.cts} +7 -8
- package/dist/{chat-C0s-o6ll.d.ts → chat-DrqwUgD8.d.ts} +7 -8
- package/dist/context.cjs +22 -5
- package/dist/context.cjs.map +1 -1
- package/dist/context.d.cts +19 -6
- package/dist/context.d.ts +19 -6
- package/dist/context.js +23 -7
- package/dist/context.js.map +1 -1
- package/dist/emitter/emitter.cjs +21 -14
- package/dist/emitter/emitter.cjs.map +1 -1
- package/dist/emitter/emitter.d.cts +1 -1
- package/dist/emitter/emitter.d.ts +1 -1
- package/dist/emitter/emitter.js +21 -14
- package/dist/emitter/emitter.js.map +1 -1
- package/dist/emitter/types.d.cts +1 -1
- package/dist/emitter/types.d.ts +1 -1
- package/dist/{emitter-CZFbzlUi.d.ts → emitter-36-9MnvA.d.ts} +4 -3
- package/dist/{emitter-DpqUYjXH.d.cts → emitter-jN55XZZq.d.cts} +4 -3
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/internals/fetcher.d.cts +1 -1
- package/dist/internals/fetcher.d.ts +1 -1
- package/dist/internals/helpers/prototype.cjs +5 -0
- package/dist/internals/helpers/prototype.cjs.map +1 -1
- package/dist/internals/helpers/prototype.d.cts +2 -1
- package/dist/internals/helpers/prototype.d.ts +2 -1
- package/dist/internals/helpers/prototype.js +5 -1
- package/dist/internals/helpers/prototype.js.map +1 -1
- package/dist/internals/types.cjs.map +1 -1
- package/dist/internals/types.d.cts +1 -1
- package/dist/internals/types.d.ts +1 -1
- package/dist/internals/types.js.map +1 -1
- package/dist/memory/summarizeMemory.d.cts +2 -2
- package/dist/memory/summarizeMemory.d.ts +2 -2
- package/dist/middleware/streamToolCall.cjs +132 -0
- package/dist/middleware/streamToolCall.cjs.map +1 -0
- package/dist/middleware/streamToolCall.d.cts +94 -0
- package/dist/middleware/streamToolCall.d.ts +94 -0
- package/dist/middleware/streamToolCall.js +130 -0
- package/dist/middleware/streamToolCall.js.map +1 -0
- package/dist/middleware/trajectory.cjs +331 -0
- package/dist/middleware/trajectory.cjs.map +1 -0
- package/dist/middleware/trajectory.d.cts +115 -0
- package/dist/middleware/trajectory.d.ts +115 -0
- package/dist/middleware/trajectory.js +329 -0
- package/dist/middleware/trajectory.js.map +1 -0
- package/dist/parsers/linePrefix.d.cts +1 -1
- package/dist/parsers/linePrefix.d.ts +1 -1
- package/dist/serializer/serializer.cjs +5 -4
- package/dist/serializer/serializer.cjs.map +1 -1
- package/dist/serializer/serializer.d.cts +1 -1
- package/dist/serializer/serializer.d.ts +1 -1
- package/dist/serializer/serializer.js +5 -4
- package/dist/serializer/serializer.js.map +1 -1
- package/dist/serializer/utils.cjs +3 -0
- package/dist/serializer/utils.cjs.map +1 -1
- package/dist/serializer/utils.d.cts +1 -1
- package/dist/serializer/utils.d.ts +1 -1
- package/dist/serializer/utils.js +3 -0
- package/dist/serializer/utils.js.map +1 -1
- package/dist/{serializer-CQxucveV.d.ts → serializer-53t8gGQa.d.ts} +3 -2
- package/dist/{serializer-BKn50Vnx.d.cts → serializer-c51B2z6d.d.cts} +3 -2
- package/dist/template.cjs +20 -0
- package/dist/template.cjs.map +1 -1
- package/dist/template.d.cts +1 -0
- package/dist/template.d.ts +1 -0
- package/dist/template.js +20 -0
- package/dist/template.js.map +1 -1
- package/dist/tools/arxiv.d.cts +1 -1
- package/dist/tools/arxiv.d.ts +1 -1
- package/dist/tools/base.cjs.map +1 -1
- package/dist/tools/base.d.cts +3 -2
- package/dist/tools/base.d.ts +3 -2
- package/dist/tools/base.js.map +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 +3 -3
- package/dist/tools/database/milvus.d.ts +3 -3
- 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.cjs +68 -0
- package/dist/tools/handoff.cjs.map +1 -0
- package/dist/tools/handoff.d.cts +47 -0
- package/dist/tools/handoff.d.ts +47 -0
- package/dist/tools/handoff.js +66 -0
- package/dist/tools/handoff.js.map +1 -0
- 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.cjs +52 -0
- package/dist/tools/think.cjs.map +1 -0
- package/dist/tools/think.d.cts +47 -0
- package/dist/tools/think.d.ts +47 -0
- package/dist/tools/think.js +50 -0
- package/dist/tools/think.js.map +1 -0
- 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-CJwiMH3u.d.ts +213 -0
- package/dist/types-W0QttuP_.d.cts +213 -0
- 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 +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/vercel/backend/utils.ts"],"names":["encodeCustomMessage","msg","UserMessage","type","text","role","content","slice","decodeCustomMessage","value","_","id","split","join","unmaskCustomMessage","Role","USER","key","Array","isArray","map","val","filter","isTruthy","decoded","vercelFetcher","customFetch","url","options","isString","body","getProp","headers","JSON","parse","isPlainObject","messages","forEach","stringify","fetcher","fetch","parseHeadersFromEnv","env","parseEnv","z","preprocess","Object","fromEntries","String","pair","includes","record","string","extractTokenUsage","usage","promptTokens","inputTokens","completionTokens","outputTokens","totalTokens","reasoningTokens","cachedPromptTokens","cachedInputTokens"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/vercel/backend/utils.ts"],"names":["encodeCustomMessage","msg","UserMessage","type","text","role","content","slice","decodeCustomMessage","value","_","id","split","join","unmaskCustomMessage","Role","USER","key","Array","isArray","map","val","filter","isTruthy","decoded","vercelFetcher","customFetch","url","options","isString","body","getProp","headers","JSON","parse","isPlainObject","messages","forEach","stringify","fetcher","fetch","parseHeadersFromEnv","env","parseEnv","z","preprocess","Object","fromEntries","String","pair","includes","record","string","extractTokenUsage","usage","promptTokens","inputTokens","completionTokens","outputTokens","totalTokens","reasoningTokens","cachedPromptTokens","cachedInputTokens","mergeTokenUsage","target","sources","source","isToolCallValid","obj","toolName","toolCallId","input","Boolean","parseBrokenJson"],"mappings":"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","file":"utils.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CustomMessage, Role, UserMessage } from \"@/backend/message.js\";\nimport { isPlainObject, isString, isTruthy } from \"remeda\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { TextPart, LanguageModelUsage, ToolCallPart } from \"ai\";\nimport { z } from \"zod\";\nimport { parseEnv } from \"@/internals/env.js\";\nimport { ChatModelUsage } from \"@/backend/chat.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\n\nexport function encodeCustomMessage(msg: CustomMessage): UserMessage {\n return new UserMessage([\n {\n type: \"text\",\n text: `#custom_role#${msg.role}#`,\n },\n ...(msg.content.slice() as TextPart[]),\n ]);\n}\n\nexport function decodeCustomMessage(value: string) {\n const [_, id, role, ...content] = value.split(\"#\");\n if (id !== \"custom_role\") {\n return;\n }\n return { role, content: content.join(\"#\") };\n}\n\nfunction unmaskCustomMessage(msg: Record<string, any>) {\n if (msg.role !== Role.USER) {\n return;\n }\n\n for (const key of [\"content\", \"text\"]) {\n let value = msg[key];\n if (!value) {\n continue;\n }\n\n if (Array.isArray(value)) {\n value = value\n .map((val) => (val.type === \"text\" ? val.text || val.content : null))\n .filter(isTruthy)\n .join(\"\");\n }\n\n const decoded = decodeCustomMessage(value);\n if (decoded) {\n msg.role = decoded.role;\n msg[key] = decoded.content;\n break;\n }\n }\n}\n\nexport function vercelFetcher(customFetch?: typeof fetch): typeof fetch {\n return async (url, options) => {\n if (\n options &&\n isString(options.body) &&\n (getProp(options.headers, [\"content-type\"]) === \"application/json\" ||\n getProp(options.headers, [\"Content-Type\"]) === \"application/json\")\n ) {\n const body = JSON.parse(options.body);\n if (isPlainObject(body) && Array.isArray(body.messages)) {\n body.messages.forEach((msg) => {\n if (!isPlainObject(msg)) {\n return;\n }\n unmaskCustomMessage(msg);\n });\n }\n options.body = JSON.stringify(body);\n }\n\n const fetcher = customFetch ?? fetch;\n return await fetcher(url, options);\n };\n}\n\nexport function parseHeadersFromEnv(env: string): Record<string, any> {\n return parseEnv(\n env,\n z.preprocess((value) => {\n return Object.fromEntries(\n String(value || \"\")\n .split(\",\")\n .filter((pair) => pair.includes(\"=\"))\n .map((pair) => pair.split(\"=\")),\n );\n }, z.record(z.string())),\n );\n}\n\nexport function extractTokenUsage(usage: LanguageModelUsage): ChatModelUsage {\n return {\n promptTokens: usage.inputTokens ?? 0,\n completionTokens: usage.outputTokens ?? 0,\n totalTokens: usage.totalTokens ?? 0,\n reasoningTokens: usage.reasoningTokens,\n cachedPromptTokens: usage.cachedInputTokens,\n };\n}\n\nexport function mergeTokenUsage(target: ChatModelUsage, ...sources: ChatModelUsage[]): void {\n for (const source of sources) {\n target.totalTokens += source.totalTokens ?? 0;\n target.promptTokens += source.promptTokens ?? 0;\n target.completionTokens += source.completionTokens ?? 0;\n if (source.reasoningTokens) {\n target.reasoningTokens = (target.reasoningTokens ?? 0) + source.reasoningTokens;\n }\n if (source.cachedPromptTokens) {\n target.cachedPromptTokens = (target.cachedPromptTokens ?? 0) + source.cachedPromptTokens;\n }\n }\n}\n\nexport function isToolCallValid(obj: ToolCallPart) {\n if (!obj.toolName || !obj.toolCallId || !obj.input) {\n return false;\n }\n if (isString(obj.input)) {\n return Boolean(parseBrokenJson(obj.input, { pair: [\"{\", \"}\"] }));\n }\n return Boolean(obj.input);\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { CustomMessage, UserMessage } from '../../../backend/message.cjs';
|
|
2
|
-
import { LanguageModelUsage } from 'ai';
|
|
3
|
-
import { f as ChatModelUsage } from '../../../chat-
|
|
2
|
+
import { LanguageModelUsage, ToolCallPart } from 'ai';
|
|
3
|
+
import { f as ChatModelUsage } from '../../../chat-BOb9n7AJ.cjs';
|
|
4
4
|
import '../../../internals/serializable.cjs';
|
|
5
5
|
import '../../../internals/types.cjs';
|
|
6
6
|
import '../../../internals/helpers/guards.cjs';
|
|
7
7
|
import '../../../context.cjs';
|
|
8
|
-
import '../../../emitter-
|
|
8
|
+
import '../../../emitter-jN55XZZq.cjs';
|
|
9
9
|
import '../../../internals/helpers/promise.cjs';
|
|
10
10
|
import '../../../errors.cjs';
|
|
11
11
|
import 'promise-based-task';
|
|
@@ -33,5 +33,7 @@ declare function decodeCustomMessage(value: string): {
|
|
|
33
33
|
declare function vercelFetcher(customFetch?: typeof fetch): typeof fetch;
|
|
34
34
|
declare function parseHeadersFromEnv(env: string): Record<string, any>;
|
|
35
35
|
declare function extractTokenUsage(usage: LanguageModelUsage): ChatModelUsage;
|
|
36
|
+
declare function mergeTokenUsage(target: ChatModelUsage, ...sources: ChatModelUsage[]): void;
|
|
37
|
+
declare function isToolCallValid(obj: ToolCallPart): boolean;
|
|
36
38
|
|
|
37
|
-
export { decodeCustomMessage, encodeCustomMessage, extractTokenUsage, parseHeadersFromEnv, vercelFetcher };
|
|
39
|
+
export { decodeCustomMessage, encodeCustomMessage, extractTokenUsage, isToolCallValid, mergeTokenUsage, parseHeadersFromEnv, vercelFetcher };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { CustomMessage, UserMessage } from '../../../backend/message.js';
|
|
2
|
-
import { LanguageModelUsage } from 'ai';
|
|
3
|
-
import { f as ChatModelUsage } from '../../../chat-
|
|
2
|
+
import { LanguageModelUsage, ToolCallPart } from 'ai';
|
|
3
|
+
import { f as ChatModelUsage } from '../../../chat-DrqwUgD8.js';
|
|
4
4
|
import '../../../internals/serializable.js';
|
|
5
5
|
import '../../../internals/types.js';
|
|
6
6
|
import '../../../internals/helpers/guards.js';
|
|
7
7
|
import '../../../context.js';
|
|
8
|
-
import '../../../emitter-
|
|
8
|
+
import '../../../emitter-36-9MnvA.js';
|
|
9
9
|
import '../../../internals/helpers/promise.js';
|
|
10
10
|
import '../../../errors.js';
|
|
11
11
|
import 'promise-based-task';
|
|
@@ -33,5 +33,7 @@ declare function decodeCustomMessage(value: string): {
|
|
|
33
33
|
declare function vercelFetcher(customFetch?: typeof fetch): typeof fetch;
|
|
34
34
|
declare function parseHeadersFromEnv(env: string): Record<string, any>;
|
|
35
35
|
declare function extractTokenUsage(usage: LanguageModelUsage): ChatModelUsage;
|
|
36
|
+
declare function mergeTokenUsage(target: ChatModelUsage, ...sources: ChatModelUsage[]): void;
|
|
37
|
+
declare function isToolCallValid(obj: ToolCallPart): boolean;
|
|
36
38
|
|
|
37
|
-
export { decodeCustomMessage, encodeCustomMessage, extractTokenUsage, parseHeadersFromEnv, vercelFetcher };
|
|
39
|
+
export { decodeCustomMessage, encodeCustomMessage, extractTokenUsage, isToolCallValid, mergeTokenUsage, parseHeadersFromEnv, vercelFetcher };
|
|
@@ -3,6 +3,7 @@ import { isString, isPlainObject, isTruthy } from 'remeda';
|
|
|
3
3
|
import { getProp } from '../../../internals/helpers/object.js';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { parseEnv } from '../../../internals/env.js';
|
|
6
|
+
import { parseBrokenJson } from '../../../internals/helpers/schema.js';
|
|
6
7
|
|
|
7
8
|
var __defProp = Object.defineProperty;
|
|
8
9
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
@@ -90,7 +91,36 @@ function extractTokenUsage(usage) {
|
|
|
90
91
|
};
|
|
91
92
|
}
|
|
92
93
|
__name(extractTokenUsage, "extractTokenUsage");
|
|
94
|
+
function mergeTokenUsage(target, ...sources) {
|
|
95
|
+
for (const source of sources) {
|
|
96
|
+
target.totalTokens += source.totalTokens ?? 0;
|
|
97
|
+
target.promptTokens += source.promptTokens ?? 0;
|
|
98
|
+
target.completionTokens += source.completionTokens ?? 0;
|
|
99
|
+
if (source.reasoningTokens) {
|
|
100
|
+
target.reasoningTokens = (target.reasoningTokens ?? 0) + source.reasoningTokens;
|
|
101
|
+
}
|
|
102
|
+
if (source.cachedPromptTokens) {
|
|
103
|
+
target.cachedPromptTokens = (target.cachedPromptTokens ?? 0) + source.cachedPromptTokens;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
__name(mergeTokenUsage, "mergeTokenUsage");
|
|
108
|
+
function isToolCallValid(obj) {
|
|
109
|
+
if (!obj.toolName || !obj.toolCallId || !obj.input) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
if (isString(obj.input)) {
|
|
113
|
+
return Boolean(parseBrokenJson(obj.input, {
|
|
114
|
+
pair: [
|
|
115
|
+
"{",
|
|
116
|
+
"}"
|
|
117
|
+
]
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
120
|
+
return Boolean(obj.input);
|
|
121
|
+
}
|
|
122
|
+
__name(isToolCallValid, "isToolCallValid");
|
|
93
123
|
|
|
94
|
-
export { decodeCustomMessage, encodeCustomMessage, extractTokenUsage, parseHeadersFromEnv, vercelFetcher };
|
|
124
|
+
export { decodeCustomMessage, encodeCustomMessage, extractTokenUsage, isToolCallValid, mergeTokenUsage, parseHeadersFromEnv, vercelFetcher };
|
|
95
125
|
//# sourceMappingURL=utils.js.map
|
|
96
126
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/vercel/backend/utils.ts"],"names":["encodeCustomMessage","msg","UserMessage","type","text","role","content","slice","decodeCustomMessage","value","_","id","split","join","unmaskCustomMessage","Role","USER","key","Array","isArray","map","val","filter","isTruthy","decoded","vercelFetcher","customFetch","url","options","isString","body","getProp","headers","JSON","parse","isPlainObject","messages","forEach","stringify","fetcher","fetch","parseHeadersFromEnv","env","parseEnv","z","preprocess","Object","fromEntries","String","pair","includes","record","string","extractTokenUsage","usage","promptTokens","inputTokens","completionTokens","outputTokens","totalTokens","reasoningTokens","cachedPromptTokens","cachedInputTokens"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/vercel/backend/utils.ts"],"names":["encodeCustomMessage","msg","UserMessage","type","text","role","content","slice","decodeCustomMessage","value","_","id","split","join","unmaskCustomMessage","Role","USER","key","Array","isArray","map","val","filter","isTruthy","decoded","vercelFetcher","customFetch","url","options","isString","body","getProp","headers","JSON","parse","isPlainObject","messages","forEach","stringify","fetcher","fetch","parseHeadersFromEnv","env","parseEnv","z","preprocess","Object","fromEntries","String","pair","includes","record","string","extractTokenUsage","usage","promptTokens","inputTokens","completionTokens","outputTokens","totalTokens","reasoningTokens","cachedPromptTokens","cachedInputTokens","mergeTokenUsage","target","sources","source","isToolCallValid","obj","toolName","toolCallId","input","Boolean","parseBrokenJson"],"mappings":"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","file":"utils.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CustomMessage, Role, UserMessage } from \"@/backend/message.js\";\nimport { isPlainObject, isString, isTruthy } from \"remeda\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { TextPart, LanguageModelUsage, ToolCallPart } from \"ai\";\nimport { z } from \"zod\";\nimport { parseEnv } from \"@/internals/env.js\";\nimport { ChatModelUsage } from \"@/backend/chat.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\n\nexport function encodeCustomMessage(msg: CustomMessage): UserMessage {\n return new UserMessage([\n {\n type: \"text\",\n text: `#custom_role#${msg.role}#`,\n },\n ...(msg.content.slice() as TextPart[]),\n ]);\n}\n\nexport function decodeCustomMessage(value: string) {\n const [_, id, role, ...content] = value.split(\"#\");\n if (id !== \"custom_role\") {\n return;\n }\n return { role, content: content.join(\"#\") };\n}\n\nfunction unmaskCustomMessage(msg: Record<string, any>) {\n if (msg.role !== Role.USER) {\n return;\n }\n\n for (const key of [\"content\", \"text\"]) {\n let value = msg[key];\n if (!value) {\n continue;\n }\n\n if (Array.isArray(value)) {\n value = value\n .map((val) => (val.type === \"text\" ? val.text || val.content : null))\n .filter(isTruthy)\n .join(\"\");\n }\n\n const decoded = decodeCustomMessage(value);\n if (decoded) {\n msg.role = decoded.role;\n msg[key] = decoded.content;\n break;\n }\n }\n}\n\nexport function vercelFetcher(customFetch?: typeof fetch): typeof fetch {\n return async (url, options) => {\n if (\n options &&\n isString(options.body) &&\n (getProp(options.headers, [\"content-type\"]) === \"application/json\" ||\n getProp(options.headers, [\"Content-Type\"]) === \"application/json\")\n ) {\n const body = JSON.parse(options.body);\n if (isPlainObject(body) && Array.isArray(body.messages)) {\n body.messages.forEach((msg) => {\n if (!isPlainObject(msg)) {\n return;\n }\n unmaskCustomMessage(msg);\n });\n }\n options.body = JSON.stringify(body);\n }\n\n const fetcher = customFetch ?? fetch;\n return await fetcher(url, options);\n };\n}\n\nexport function parseHeadersFromEnv(env: string): Record<string, any> {\n return parseEnv(\n env,\n z.preprocess((value) => {\n return Object.fromEntries(\n String(value || \"\")\n .split(\",\")\n .filter((pair) => pair.includes(\"=\"))\n .map((pair) => pair.split(\"=\")),\n );\n }, z.record(z.string())),\n );\n}\n\nexport function extractTokenUsage(usage: LanguageModelUsage): ChatModelUsage {\n return {\n promptTokens: usage.inputTokens ?? 0,\n completionTokens: usage.outputTokens ?? 0,\n totalTokens: usage.totalTokens ?? 0,\n reasoningTokens: usage.reasoningTokens,\n cachedPromptTokens: usage.cachedInputTokens,\n };\n}\n\nexport function mergeTokenUsage(target: ChatModelUsage, ...sources: ChatModelUsage[]): void {\n for (const source of sources) {\n target.totalTokens += source.totalTokens ?? 0;\n target.promptTokens += source.promptTokens ?? 0;\n target.completionTokens += source.completionTokens ?? 0;\n if (source.reasoningTokens) {\n target.reasoningTokens = (target.reasoningTokens ?? 0) + source.reasoningTokens;\n }\n if (source.cachedPromptTokens) {\n target.cachedPromptTokens = (target.cachedPromptTokens ?? 0) + source.cachedPromptTokens;\n }\n }\n}\n\nexport function isToolCallValid(obj: ToolCallPart) {\n if (!obj.toolName || !obj.toolCallId || !obj.input) {\n return false;\n }\n if (isString(obj.input)) {\n return Boolean(parseBrokenJson(obj.input, { pair: [\"{\", \"}\"] }));\n }\n return Boolean(obj.input);\n}\n"]}
|
|
@@ -7,7 +7,6 @@ var WatsonxAiMlVml_v1 = require('@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1
|
|
|
7
7
|
var utils_cjs = require('../../../serializer/utils.cjs');
|
|
8
8
|
var emitter_cjs = require('../../../emitter/emitter.cjs');
|
|
9
9
|
var message_cjs = require('../../../backend/message.cjs');
|
|
10
|
-
var schema_cjs = require('../../../internals/helpers/schema.cjs');
|
|
11
10
|
var env_cjs = require('../../../internals/env.cjs');
|
|
12
11
|
var errors_cjs = require('../../../errors.cjs');
|
|
13
12
|
var base_cjs = require('../../../tools/base.cjs');
|
|
@@ -61,7 +60,7 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
|
|
|
61
60
|
...await this.prepareInput(input),
|
|
62
61
|
signal: run.signal
|
|
63
62
|
});
|
|
64
|
-
const { messages, finishReason, usage } = this.extractOutput(result.choices, result.usage);
|
|
63
|
+
const { messages, finishReason, usage } = this.extractOutput(result.choices, result.usage, result.id);
|
|
65
64
|
return new chat_cjs.ChatModelOutput(messages, usage, finishReason);
|
|
66
65
|
}
|
|
67
66
|
async *_createStream(input, run) {
|
|
@@ -78,11 +77,11 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
|
|
|
78
77
|
const { messages, finishReason, usage } = this.extractOutput(raw.data.choices.map(({ delta, ...choice }) => ({
|
|
79
78
|
...choice,
|
|
80
79
|
message: delta
|
|
81
|
-
})), raw.data.usage);
|
|
80
|
+
})), raw.data.usage, raw.data.id);
|
|
82
81
|
yield new chat_cjs.ChatModelOutput(messages, usage, finishReason);
|
|
83
82
|
}
|
|
84
83
|
}
|
|
85
|
-
extractOutput(choices, usage) {
|
|
84
|
+
extractOutput(choices, usage, id) {
|
|
86
85
|
return {
|
|
87
86
|
finishReason: remeda.findLast(choices, (choice) => Boolean(choice?.finish_reason))?.finish_reason,
|
|
88
87
|
usage: usage ? {
|
|
@@ -96,7 +95,7 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
|
|
|
96
95
|
const msg = new message_cjs.AssistantMessage({
|
|
97
96
|
type: "text",
|
|
98
97
|
text: message.content
|
|
99
|
-
});
|
|
98
|
+
}, {}, id);
|
|
100
99
|
messages.push(msg);
|
|
101
100
|
}
|
|
102
101
|
if (message?.tool_calls) {
|
|
@@ -104,15 +103,15 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
|
|
|
104
103
|
type: "tool-call",
|
|
105
104
|
toolCallId: call.id,
|
|
106
105
|
toolName: call.function.name,
|
|
107
|
-
input:
|
|
108
|
-
})));
|
|
106
|
+
input: call.function.arguments
|
|
107
|
+
})), {}, id);
|
|
109
108
|
messages.push(msg);
|
|
110
109
|
}
|
|
111
110
|
if (message?.refusal) {
|
|
112
111
|
const msg = new message_cjs.AssistantMessage({
|
|
113
112
|
type: "text",
|
|
114
113
|
text: message.refusal
|
|
115
|
-
});
|
|
114
|
+
}, {}, id);
|
|
116
115
|
messages.push(msg);
|
|
117
116
|
}
|
|
118
117
|
return messages;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/watsonx/backend/chat.ts"],"names":["Type","WatsonxAiMlVml_v1","WatsonxChatModel","ChatModel","client","emitter","Emitter","root","child","namespace","creator","toolChoiceSupport","providerId","modelId","getEnv","WatsonxClient","ensure","config","name","parameters","undefined","NotImplementedError","_create","input","run","result","instance","textChat","prepareInput","signal","messages","finishReason","usage","extractOutput","choices","ChatModelOutput","_createStream","stream","textChatStream","returnObject","raw","aborted","controller","abort","data","map","delta","choice","message","findLast","Boolean","finish_reason","completionTokens","completion_tokens","promptTokens","prompt_tokens","totalTokens","total_tokens","flatMap","content","msg","AssistantMessage","type","text","push","tool_calls","call","toolCallId","id","toolName","function","parseBrokenJson","arguments","refusal","filter","isTruthy","overrides","tools","Promise","all","tool","description","getInputJsonSchema","toolConfig","toolChoice","toolChoiceOption","Tool","includes","ToolMessage","role","output","value","JSON","stringify","tool_call_id","SystemMessage","Error","toPlain","spaceId","projectId","isEmpty","responseFormat","JSON_OBJECT","topP","frequencyPenalty","temperature","n","maxTokens","presencePenalty","stop","stopSequences","seed","createSnapshot","shallowCopy","loadSnapshot","snapshot","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 ChatConfig,\n ChatModel,\n ChatModelEmitter,\n ChatModelInput,\n ChatModelOutput,\n ChatModelParameters,\n ChatModelToolChoiceSupport,\n} from \"@/backend/chat.js\";\nimport { WatsonxClient, WatsonxClientSettings } from \"@/adapters/watsonx/backend/client.js\";\nimport { findLast, isEmpty, isTruthy } from \"remeda\";\nimport WatsonxAiMlVml_v1, {\n TextChatMessages,\n TextChatParameterTools,\n TextChatParams,\n TextChatResultChoice,\n TextChatUsage,\n} from \"@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { AssistantMessage, Message, SystemMessage, ToolMessage } from \"@/backend/message.js\";\nimport { ToolCallPart } from \"ai\";\nimport Type = WatsonxAiMlVml_v1.TextChatResponseFormat.Constants.Type;\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { getEnv } from \"@/internals/env.js\";\nimport { NotImplementedError } from \"@/errors.js\";\nimport { Tool } from \"@/tools/base.js\";\nimport type {\n TextChatMessageAssistant,\n TextChatMessageSystem,\n TextChatMessageTool,\n} from \"@ibm-cloud/watsonx-ai\";\n\nexport class WatsonxChatModel extends ChatModel {\n protected readonly client: WatsonxClient;\n public readonly emitter: ChatModelEmitter = Emitter.root.child({\n namespace: [\"backend\", \"watsonx\", \"chat\"],\n creator: this,\n });\n public readonly toolChoiceSupport: ChatModelToolChoiceSupport[] = [\"none\", \"single\"];\n\n get providerId() {\n return \"watsonx\";\n }\n\n constructor(\n public readonly modelId = getEnv(\"WATSONX_CHAT_MODEL\", \"ibm/granite-3-8b-instruct\"),\n client?: WatsonxClient | WatsonxClientSettings,\n ) {\n super();\n this.client = WatsonxClient.ensure(client);\n }\n\n config(config: ChatConfig) {\n super.config(config);\n for (const name of [\"topK\"] as (keyof ChatModelParameters)[]) {\n if (this.parameters[name] !== undefined) {\n this.parameters[name] = undefined;\n throw new NotImplementedError(\n `Setting \"${name}\" parameter is not supported for WatsonX Chat Models.`,\n );\n }\n }\n return this;\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<any>) {\n const { result } = await this.client.instance.textChat({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n });\n const { messages, finishReason, usage } = this.extractOutput(result.choices, result.usage);\n return new ChatModelOutput(messages, usage, finishReason);\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n const stream = await this.client.instance.textChatStream({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n returnObject: true,\n });\n for await (const raw of stream) {\n if (run.signal.aborted) {\n stream.controller.abort(run.signal.aborted);\n break;\n }\n const { messages, finishReason, usage } = this.extractOutput(\n raw.data.choices.map(({ delta, ...choice }) => ({ ...choice, message: delta })),\n raw.data.usage,\n );\n yield new ChatModelOutput(messages, usage, finishReason);\n }\n }\n\n protected extractOutput(choices: TextChatResultChoice[], usage?: TextChatUsage) {\n return {\n finishReason: findLast(choices, (choice) => Boolean(choice?.finish_reason))\n ?.finish_reason as ChatModelOutput[\"finishReason\"],\n usage: usage\n ? {\n completionTokens: usage.completion_tokens ?? 0,\n promptTokens: usage.prompt_tokens ?? 0,\n totalTokens: usage.total_tokens ?? 0,\n }\n : undefined,\n messages: choices\n .flatMap(({ message }) => {\n const messages: Message[] = [];\n if (message?.content) {\n const msg = new AssistantMessage({ type: \"text\", text: message.content });\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n if (message?.tool_calls) {\n const msg = new AssistantMessage(\n message.tool_calls.map(\n (call): ToolCallPart => ({\n type: \"tool-call\",\n toolCallId: call.id,\n toolName: call.function.name,\n input: parseBrokenJson(call.function.arguments),\n }),\n ),\n );\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n if (message?.refusal) {\n const msg = new AssistantMessage({ type: \"text\", text: message.refusal });\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n return messages;\n })\n .filter(isTruthy),\n };\n }\n\n protected async prepareInput(overrides: ChatModelInput): Promise<TextChatParams> {\n const input: ChatModelInput = { ...this.parameters, ...overrides };\n const tools: TextChatParameterTools[] = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: await tool.getInputJsonSchema(),\n },\n })),\n );\n\n const toolConfig: Pick<TextChatParams, \"toolChoice\" | \"toolChoiceOption\"> = {\n toolChoice: undefined,\n toolChoiceOption: undefined,\n };\n if (input.toolChoice) {\n if (input.toolChoice instanceof Tool) {\n toolConfig.toolChoice = {\n type: \"function\",\n function: { name: input.toolChoice.name },\n };\n } else if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolConfig.toolChoiceOption = input.toolChoice;\n }\n }\n\n return {\n modelId: this.modelId,\n messages: input.messages.flatMap((message): TextChatMessages[] => {\n if (message instanceof ToolMessage) {\n return message.content.map(\n (content): TextChatMessageTool => ({\n role: \"tool\",\n content:\n typeof content.output.value === \"string\"\n ? content.output.value\n : JSON.stringify(content),\n tool_call_id: content.toolCallId,\n }),\n );\n } else if (message instanceof SystemMessage) {\n return message.content.map(\n (content): TextChatMessageSystem => ({\n role: \"system\",\n content: content.text,\n }),\n );\n } else if (message instanceof AssistantMessage) {\n return message.content.map(\n (content): TextChatMessageAssistant => ({\n role: \"assistant\",\n ...(content.type === \"text\" && {\n content: content.text,\n }),\n ...(content.type === \"tool-call\" && {\n id: content.toolCallId,\n type: \"function\",\n function: {\n name: content.toolName,\n arguments: JSON.stringify(content.input),\n },\n }),\n ...(() => {\n if (content.type === \"file\") {\n throw new Error(\"Assistants cannot send a file in IBM watsonx\");\n }\n return {};\n })(),\n }),\n );\n } else {\n return [message.toPlain()];\n }\n }),\n spaceId: this.client.spaceId,\n projectId: this.client.projectId,\n tools: isEmpty(tools) ? undefined : tools,\n responseFormat: undefined,\n ...(input.responseFormat && {\n responseFormat: { type: Type.JSON_OBJECT },\n }),\n topP: input.topP,\n frequencyPenalty: input.frequencyPenalty,\n temperature: input.temperature,\n n: input.n,\n maxTokens: input.maxTokens,\n presencePenalty: input.presencePenalty,\n stop: input.stopSequences,\n seed: input.seed,\n ...toolConfig,\n };\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n modelId: this.modelId,\n parameters: shallowCopy(this.parameters),\n client: this.client,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/watsonx/backend/chat.ts"],"names":["Type","WatsonxAiMlVml_v1","WatsonxChatModel","ChatModel","client","emitter","Emitter","root","child","namespace","creator","toolChoiceSupport","providerId","modelId","getEnv","WatsonxClient","ensure","config","name","parameters","undefined","NotImplementedError","_create","input","run","result","instance","textChat","prepareInput","signal","messages","finishReason","usage","extractOutput","choices","id","ChatModelOutput","_createStream","stream","textChatStream","returnObject","raw","aborted","controller","abort","data","map","delta","choice","message","findLast","Boolean","finish_reason","completionTokens","completion_tokens","promptTokens","prompt_tokens","totalTokens","total_tokens","flatMap","content","msg","AssistantMessage","type","text","push","tool_calls","call","toolCallId","toolName","function","arguments","refusal","filter","isTruthy","overrides","tools","Promise","all","tool","description","getInputJsonSchema","toolConfig","toolChoice","toolChoiceOption","Tool","includes","ToolMessage","role","output","value","JSON","stringify","tool_call_id","SystemMessage","Error","toPlain","spaceId","projectId","isEmpty","responseFormat","JSON_OBJECT","topP","frequencyPenalty","temperature","n","maxTokens","presencePenalty","stop","stopSequences","seed","createSnapshot","shallowCopy","loadSnapshot","snapshot","Object","assign"],"mappings":";;;;;;;;;;;;;;;;;;;AA4BA,MAAOA,IAAAA,GAAOC,kCAAA,CAAkB,sBAAA,CAAuB,SAAA,CAAU,IAAA;AAU1D,MAAMC,yBAAyBC,kBAAAA,CAAAA;EAtCtC;;;;AAuCqBC,EAAAA,MAAAA;EACHC,OAAAA,GAA4BC,mBAAAA,CAAQC,KAAKC,KAAAA,CAAM;IAC7DC,SAAAA,EAAW;AAAC,MAAA,SAAA;AAAW,MAAA,SAAA;AAAW,MAAA;;IAClCC,OAAAA,EAAS;GACX,CAAA;EACgBC,iBAAAA,GAAkD;AAAC,IAAA,MAAA;AAAQ,IAAA;;AAE3E,EAAA,IAAIC,UAAAA,GAAa;AACf,IAAA,OAAO,SAAA;AACT;AAEA,EAAA,WAAA,CACkBC,OAAAA,GAAUC,cAAAA,CAAO,oBAAA,EAAsB,2BAAA,GACvDV,MAAAA,EACA;AACA,IAAA,KAAA,EAAK,EAAA,KAHWS,OAAAA,GAAAA,OAAAA;AAIhB,IAAA,IAAA,CAAKT,MAAAA,GAASW,wBAAAA,CAAcC,MAAAA,CAAOZ,MAAAA,CAAAA;AACrC;AAEAa,EAAAA,MAAAA,CAAOA,MAAAA,EAAoB;AACzB,IAAA,KAAA,CAAMA,OAAOA,MAAAA,CAAAA;AACb,IAAA,KAAA,MAAWC,IAAAA,IAAQ;AAAC,MAAA;AAA0C,KAAA,EAAA;AAC5D,MAAA,IAAI,IAAA,CAAKC,UAAAA,CAAWD,IAAAA,CAAAA,KAAUE,MAAAA,EAAW;AACvC,QAAA,IAAA,CAAKD,UAAAA,CAAWD,IAAAA,CAAAA,GAAQE,MAAAA;AACxB,QAAA,MAAM,IAAIC,8BAAAA,CACR,CAAA,SAAA,EAAYH,IAAAA,CAAAA,qDAAAA,CAA2D,CAAA;AAE3E;AACF;AACA,IAAA,OAAO,IAAA;AACT;EAEA,MAAgBI,OAAAA,CAAQC,OAAuBC,GAAAA,EAAyB;AACtE,IAAA,MAAM,EAAEC,MAAAA,EAAM,GAAK,MAAM,IAAA,CAAKrB,MAAAA,CAAOsB,SAASC,QAAAA,CAAS;MACrD,GAAI,MAAM,IAAA,CAAKC,YAAAA,CAAaL,KAAAA,CAAAA;AAC5BM,MAAAA,MAAAA,EAAQL,GAAAA,CAAIK;KACd,CAAA;AACA,IAAA,MAAM,EAAEC,QAAAA,EAAUC,YAAAA,EAAcC,KAAAA,EAAK,GAAK,IAAA,CAAKC,aAAAA,CAC7CR,MAAAA,CAAOS,OAAAA,EACPT,MAAAA,CAAOO,KAAAA,EACPP,MAAAA,CAAOU,EAAE,CAAA;AAEX,IAAA,OAAO,IAAIC,wBAAAA,CAAgBN,QAAAA,EAAUE,KAAAA,EAAOD,YAAAA,CAAAA;AAC9C;EAEA,OAAOM,aAAAA,CAAcd,OAAuBC,GAAAA,EAA0B;AAEpE,IAAA,MAAMc,MAAAA,GAAS,MAAM,IAAA,CAAKlC,MAAAA,CAAOsB,SAASa,cAAAA,CAAe;MACvD,GAAI,MAAM,IAAA,CAAKX,YAAAA,CAAaL,KAAAA,CAAAA;AAC5BM,MAAAA,MAAAA,EAAQL,GAAAA,CAAIK,MAAAA;MACZW,YAAAA,EAAc;KAChB,CAAA;AACA,IAAA,WAAA,MAAiBC,OAAOH,MAAAA,EAAQ;AAC9B,MAAA,IAAId,GAAAA,CAAIK,OAAOa,OAAAA,EAAS;AACtBJ,QAAAA,MAAAA,CAAOK,UAAAA,CAAWC,KAAAA,CAAMpB,GAAAA,CAAIK,MAAAA,CAAOa,OAAO,CAAA;AAC1C,QAAA;AACF;AACA,MAAA,MAAM,EAAEZ,QAAAA,EAAUC,YAAAA,EAAcC,KAAAA,EAAK,GAAK,KAAKC,aAAAA,CAC7CQ,GAAAA,CAAII,IAAAA,CAAKX,OAAAA,CAAQY,IAAI,CAAC,EAAEC,KAAAA,EAAO,GAAGC,QAAAA,MAAc;QAAE,GAAGA,MAAAA;QAAQC,OAAAA,EAASF;AAAM,OAAA,CAAA,GAC5EN,GAAAA,CAAII,IAAAA,CAAKb,KAAAA,EACTS,GAAAA,CAAII,KAAKV,EAAE,CAAA;AAEb,MAAA,MAAM,IAAIC,wBAAAA,CAAgBN,QAAAA,EAAUE,KAAAA,EAAOD,YAAAA,CAAAA;AAC7C;AACF;EAEUE,aAAAA,CAAcC,OAAAA,EAAiCF,OAAuBG,EAAAA,EAAa;AAC3F,IAAA,OAAO;MACLJ,YAAAA,EAAcmB,eAAAA,CAAShB,SAAS,CAACc,MAAAA,KAAWG,QAAQH,MAAAA,EAAQI,aAAAA,CAAAA,CAAAA,EACxDA,aAAAA;AACJpB,MAAAA,KAAAA,EAAOA,KAAAA,GACH;AACEqB,QAAAA,gBAAAA,EAAkBrB,MAAMsB,iBAAAA,IAAqB,CAAA;AAC7CC,QAAAA,YAAAA,EAAcvB,MAAMwB,aAAAA,IAAiB,CAAA;AACrCC,QAAAA,WAAAA,EAAazB,MAAM0B,YAAAA,IAAgB;OACrC,GACAtC,MAAAA;AACJU,MAAAA,QAAAA,EAAUI,OAAAA,CACPyB,OAAAA,CAAQ,CAAC,EAAEV,SAAO,KAAE;AACnB,QAAA,MAAMnB,WAAsB,EAAA;AAC5B,QAAA,IAAImB,SAASW,OAAAA,EAAS;AACpB,UAAA,MAAMC,GAAAA,GAAM,IAAIC,4BAAAA,CAAiB;YAAEC,IAAAA,EAAM,MAAA;AAAQC,YAAAA,IAAAA,EAAMf,OAAAA,CAAQW;WAAQ,EAAG,IAAIzB,EAAAA,CAAAA;AAC9EL,UAAAA,QAAAA,CAASmC,KAAKJ,GAAAA,CAAAA;AAChB;AACA,QAAA,IAAIZ,SAASiB,UAAAA,EAAY;AACvB,UAAA,MAAML,MAAM,IAAIC,4BAAAA,CACdb,QAAQiB,UAAAA,CAAWpB,GAAAA,CACjB,CAACqB,IAAAA,MAAwB;YACvBJ,IAAAA,EAAM,WAAA;AACNK,YAAAA,UAAAA,EAAYD,IAAAA,CAAKhC,EAAAA;AACjBkC,YAAAA,QAAAA,EAAUF,KAAKG,QAAAA,CAASpD,IAAAA;AACxBK,YAAAA,KAAAA,EAAO4C,KAAKG,QAAAA,CAASC;WACvB,CAAA,CAAA,EAEF,EAAC,EACDpC,EAAAA,CAAAA;AAEFL,UAAAA,QAAAA,CAASmC,KAAKJ,GAAAA,CAAAA;AAChB;AACA,QAAA,IAAIZ,SAASuB,OAAAA,EAAS;AACpB,UAAA,MAAMX,GAAAA,GAAM,IAAIC,4BAAAA,CAAiB;YAAEC,IAAAA,EAAM,MAAA;AAAQC,YAAAA,IAAAA,EAAMf,OAAAA,CAAQuB;WAAQ,EAAG,IAAIrC,EAAAA,CAAAA;AAC9EL,UAAAA,QAAAA,CAASmC,KAAKJ,GAAAA,CAAAA;AAChB;AACA,QAAA,OAAO/B,QAAAA;OACT,CAAA,CACC2C,OAAOC,eAAAA;AACZ,KAAA;AACF;AAEA,EAAA,MAAgB9C,aAAa+C,SAAAA,EAAoD;AAC/E,IAAA,MAAMpD,KAAAA,GAAwB;AAAE,MAAA,GAAG,IAAA,CAAKJ,UAAAA;MAAY,GAAGwD;AAAU,KAAA;AACjE,IAAA,MAAMC,KAAAA,GAAkC,MAAMC,OAAAA,CAAQC,GAAAA,CAAAA,CACnDvD,KAAAA,CAAMqD,SAAS,EAAA,EAAI9B,GAAAA,CAAI,OAAOiC,IAAAA,MAAU;MACvChB,IAAAA,EAAM,UAAA;MACNO,QAAAA,EAAU;AACRpD,QAAAA,IAAAA,EAAM6D,IAAAA,CAAK7D,IAAAA;AACX8D,QAAAA,WAAAA,EAAaD,IAAAA,CAAKC,WAAAA;QAClB7D,UAAAA,EAAY,MAAM4D,KAAKE,kBAAAA;AACzB;AACF,KAAA,CAAA,CAAA,CAAA;AAGF,IAAA,MAAMC,UAAAA,GAAsE;MAC1EC,UAAAA,EAAY/D,MAAAA;MACZgE,gBAAAA,EAAkBhE;AACpB,KAAA;AACA,IAAA,IAAIG,MAAM4D,UAAAA,EAAY;AACpB,MAAA,IAAI5D,KAAAA,CAAM4D,sBAAsBE,aAAAA,EAAM;AACpCH,QAAAA,UAAAA,CAAWC,UAAAA,GAAa;UACtBpB,IAAAA,EAAM,UAAA;UACNO,QAAAA,EAAU;AAAEpD,YAAAA,IAAAA,EAAMK,MAAM4D,UAAAA,CAAWjE;AAAK;AAC1C,SAAA;AACF,OAAA,MAAA,IAAW,IAAA,CAAKP,iBAAAA,CAAkB2E,QAAAA,CAAS/D,KAAAA,CAAM4D,UAAU,CAAA,EAAG;AAC5DD,QAAAA,UAAAA,CAAWE,mBAAmB7D,KAAAA,CAAM4D,UAAAA;AACtC;AACF;AAEA,IAAA,OAAO;AACLtE,MAAAA,OAAAA,EAAS,IAAA,CAAKA,OAAAA;AACdiB,MAAAA,QAAAA,EAAUP,KAAAA,CAAMO,QAAAA,CAAS6B,OAAAA,CAAQ,CAACV,OAAAA,KAAAA;AAChC,QAAA,IAAIA,mBAAmBsC,uBAAAA,EAAa;AAClC,UAAA,OAAOtC,OAAAA,CAAQW,OAAAA,CAAQd,GAAAA,CACrB,CAACc,OAAAA,MAAkC;YACjC4B,IAAAA,EAAM,MAAA;YACN5B,OAAAA,EACE,OAAOA,OAAAA,CAAQ6B,MAAAA,CAAOC,KAAAA,KAAU,QAAA,GAC5B9B,QAAQ6B,MAAAA,CAAOC,KAAAA,GACfC,IAAAA,CAAKC,SAAAA,CAAUhC,OAAAA,CAAAA;AACrBiC,YAAAA,YAAAA,EAAcjC,OAAAA,CAAQQ;WACxB,CAAA,CAAA;AAEJ,SAAA,MAAA,IAAWnB,mBAAmB6C,yBAAAA,EAAe;AAC3C,UAAA,OAAO7C,OAAAA,CAAQW,OAAAA,CAAQd,GAAAA,CACrB,CAACc,OAAAA,MAAoC;YACnC4B,IAAAA,EAAM,QAAA;AACN5B,YAAAA,OAAAA,EAASA,OAAAA,CAAQI;WACnB,CAAA,CAAA;AAEJ,SAAA,MAAA,IAAWf,mBAAmBa,4BAAAA,EAAkB;AAC9C,UAAA,OAAOb,OAAAA,CAAQW,OAAAA,CAAQd,GAAAA,CACrB,CAACc,OAAAA,MAAuC;YACtC4B,IAAAA,EAAM,WAAA;YACN,GAAI5B,OAAAA,CAAQG,SAAS,MAAA,IAAU;AAC7BH,cAAAA,OAAAA,EAASA,OAAAA,CAAQI;AACnB,aAAA;YACA,GAAIJ,OAAAA,CAAQG,SAAS,WAAA,IAAe;AAClC5B,cAAAA,EAAAA,EAAIyB,OAAAA,CAAQQ,UAAAA;cACZL,IAAAA,EAAM,UAAA;cACNO,QAAAA,EAAU;AACRpD,gBAAAA,IAAAA,EAAM0C,OAAAA,CAAQS,QAAAA;gBACdE,SAAAA,EAAWoB,IAAAA,CAAKC,SAAAA,CAAUhC,OAAAA,CAAQrC,KAAK;AACzC;AACF,aAAA;AACA,YAAA,GAAA,CAAI,MAAA;AACF,cAAA,IAAIqC,OAAAA,CAAQG,SAAS,MAAA,EAAQ;AAC3B,gBAAA,MAAM,IAAIgC,MAAM,8CAAA,CAAA;AAClB;AACA,cAAA,OAAO,EAAC;aACV;WACF,CAAA,CAAA;SAEJ,MAAO;AACL,UAAA,OAAO;AAAC9C,YAAAA,OAAAA,CAAQ+C,OAAAA;;AAClB;OACF,CAAA;AACAC,MAAAA,OAAAA,EAAS,KAAK7F,MAAAA,CAAO6F,OAAAA;AACrBC,MAAAA,SAAAA,EAAW,KAAK9F,MAAAA,CAAO8F,SAAAA;MACvBtB,KAAAA,EAAOuB,cAAAA,CAAQvB,KAAAA,CAAAA,GAASxD,MAAAA,GAAYwD,KAAAA;MACpCwB,cAAAA,EAAgBhF,MAAAA;AAChB,MAAA,GAAIG,MAAM6E,cAAAA,IAAkB;QAC1BA,cAAAA,EAAgB;AAAErC,UAAAA,IAAAA,EAAM/D,IAAAA,CAAKqG;AAAY;AAC3C,OAAA;AACAC,MAAAA,IAAAA,EAAM/E,KAAAA,CAAM+E,IAAAA;AACZC,MAAAA,gBAAAA,EAAkBhF,KAAAA,CAAMgF,gBAAAA;AACxBC,MAAAA,WAAAA,EAAajF,KAAAA,CAAMiF,WAAAA;AACnBC,MAAAA,CAAAA,EAAGlF,KAAAA,CAAMkF,CAAAA;AACTC,MAAAA,SAAAA,EAAWnF,KAAAA,CAAMmF,SAAAA;AACjBC,MAAAA,eAAAA,EAAiBpF,KAAAA,CAAMoF,eAAAA;AACvBC,MAAAA,IAAAA,EAAMrF,KAAAA,CAAMsF,aAAAA;AACZC,MAAAA,IAAAA,EAAMvF,KAAAA,CAAMuF,IAAAA;MACZ,GAAG5B;AACL,KAAA;AACF;EAEA6B,cAAAA,GAAiB;AACf,IAAA,OAAO;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACTlG,MAAAA,OAAAA,EAAS,IAAA,CAAKA,OAAAA;MACdM,UAAAA,EAAY6F,qBAAAA,CAAY,KAAK7F,UAAU,CAAA;AACvCf,MAAAA,MAAAA,EAAQ,IAAA,CAAKA;AACf,KAAA;AACF;AAEA6G,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF","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 ChatConfig,\n ChatModel,\n ChatModelEmitter,\n ChatModelInput,\n ChatModelOutput,\n ChatModelParameters,\n ChatModelToolChoiceSupport,\n} from \"@/backend/chat.js\";\nimport { WatsonxClient, WatsonxClientSettings } from \"@/adapters/watsonx/backend/client.js\";\nimport { findLast, isEmpty, isTruthy } from \"remeda\";\nimport WatsonxAiMlVml_v1, {\n TextChatMessages,\n TextChatParameterTools,\n TextChatParams,\n TextChatResultChoice,\n TextChatUsage,\n} from \"@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { AssistantMessage, Message, SystemMessage, ToolMessage } from \"@/backend/message.js\";\nimport { ToolCallPart } from \"ai\";\nimport Type = WatsonxAiMlVml_v1.TextChatResponseFormat.Constants.Type;\nimport { getEnv } from \"@/internals/env.js\";\nimport { NotImplementedError } from \"@/errors.js\";\nimport { Tool } from \"@/tools/base.js\";\nimport type {\n TextChatMessageAssistant,\n TextChatMessageSystem,\n TextChatMessageTool,\n} from \"@ibm-cloud/watsonx-ai\";\n\nexport class WatsonxChatModel extends ChatModel {\n protected readonly client: WatsonxClient;\n public readonly emitter: ChatModelEmitter = Emitter.root.child({\n namespace: [\"backend\", \"watsonx\", \"chat\"],\n creator: this,\n });\n public readonly toolChoiceSupport: ChatModelToolChoiceSupport[] = [\"none\", \"single\"];\n\n get providerId() {\n return \"watsonx\";\n }\n\n constructor(\n public readonly modelId = getEnv(\"WATSONX_CHAT_MODEL\", \"ibm/granite-3-8b-instruct\"),\n client?: WatsonxClient | WatsonxClientSettings,\n ) {\n super();\n this.client = WatsonxClient.ensure(client);\n }\n\n config(config: ChatConfig) {\n super.config(config);\n for (const name of [\"topK\"] as (keyof ChatModelParameters)[]) {\n if (this.parameters[name] !== undefined) {\n this.parameters[name] = undefined;\n throw new NotImplementedError(\n `Setting \"${name}\" parameter is not supported for WatsonX Chat Models.`,\n );\n }\n }\n return this;\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<any>) {\n const { result } = await this.client.instance.textChat({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n });\n const { messages, finishReason, usage } = this.extractOutput(\n result.choices,\n result.usage,\n result.id,\n );\n return new ChatModelOutput(messages, usage, finishReason);\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n // @ts-ignore\n const stream = await this.client.instance.textChatStream({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n returnObject: true,\n });\n for await (const raw of stream) {\n if (run.signal.aborted) {\n stream.controller.abort(run.signal.aborted);\n break;\n }\n const { messages, finishReason, usage } = this.extractOutput(\n raw.data.choices.map(({ delta, ...choice }) => ({ ...choice, message: delta })),\n raw.data.usage,\n raw.data.id,\n );\n yield new ChatModelOutput(messages, usage, finishReason);\n }\n }\n\n protected extractOutput(choices: TextChatResultChoice[], usage?: TextChatUsage, id?: string) {\n return {\n finishReason: findLast(choices, (choice) => Boolean(choice?.finish_reason))\n ?.finish_reason as ChatModelOutput[\"finishReason\"],\n usage: usage\n ? {\n completionTokens: usage.completion_tokens ?? 0,\n promptTokens: usage.prompt_tokens ?? 0,\n totalTokens: usage.total_tokens ?? 0,\n }\n : undefined,\n messages: choices\n .flatMap(({ message }) => {\n const messages: Message[] = [];\n if (message?.content) {\n const msg = new AssistantMessage({ type: \"text\", text: message.content }, {}, id);\n messages.push(msg);\n }\n if (message?.tool_calls) {\n const msg = new AssistantMessage(\n message.tool_calls.map(\n (call): ToolCallPart => ({\n type: \"tool-call\",\n toolCallId: call.id,\n toolName: call.function.name,\n input: call.function.arguments,\n }),\n ),\n {},\n id,\n );\n messages.push(msg);\n }\n if (message?.refusal) {\n const msg = new AssistantMessage({ type: \"text\", text: message.refusal }, {}, id);\n messages.push(msg);\n }\n return messages;\n })\n .filter(isTruthy),\n };\n }\n\n protected async prepareInput(overrides: ChatModelInput): Promise<TextChatParams> {\n const input: ChatModelInput = { ...this.parameters, ...overrides };\n const tools: TextChatParameterTools[] = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: await tool.getInputJsonSchema(),\n },\n })),\n );\n\n const toolConfig: Pick<TextChatParams, \"toolChoice\" | \"toolChoiceOption\"> = {\n toolChoice: undefined,\n toolChoiceOption: undefined,\n };\n if (input.toolChoice) {\n if (input.toolChoice instanceof Tool) {\n toolConfig.toolChoice = {\n type: \"function\",\n function: { name: input.toolChoice.name },\n };\n } else if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolConfig.toolChoiceOption = input.toolChoice;\n }\n }\n\n return {\n modelId: this.modelId,\n messages: input.messages.flatMap((message): TextChatMessages[] => {\n if (message instanceof ToolMessage) {\n return message.content.map(\n (content): TextChatMessageTool => ({\n role: \"tool\",\n content:\n typeof content.output.value === \"string\"\n ? content.output.value\n : JSON.stringify(content),\n tool_call_id: content.toolCallId,\n }),\n );\n } else if (message instanceof SystemMessage) {\n return message.content.map(\n (content): TextChatMessageSystem => ({\n role: \"system\",\n content: content.text,\n }),\n );\n } else if (message instanceof AssistantMessage) {\n return message.content.map(\n (content): TextChatMessageAssistant => ({\n role: \"assistant\",\n ...(content.type === \"text\" && {\n content: content.text,\n }),\n ...(content.type === \"tool-call\" && {\n id: content.toolCallId,\n type: \"function\",\n function: {\n name: content.toolName,\n arguments: JSON.stringify(content.input),\n },\n }),\n ...(() => {\n if (content.type === \"file\") {\n throw new Error(\"Assistants cannot send a file in IBM watsonx\");\n }\n return {};\n })(),\n }),\n );\n } else {\n return [message.toPlain()];\n }\n }),\n spaceId: this.client.spaceId,\n projectId: this.client.projectId,\n tools: isEmpty(tools) ? undefined : tools,\n responseFormat: undefined,\n ...(input.responseFormat && {\n responseFormat: { type: Type.JSON_OBJECT },\n }),\n topP: input.topP,\n frequencyPenalty: input.frequencyPenalty,\n temperature: input.temperature,\n n: input.n,\n maxTokens: input.maxTokens,\n presencePenalty: input.presencePenalty,\n stop: input.stopSequences,\n seed: input.seed,\n ...toolConfig,\n };\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n modelId: this.modelId,\n parameters: shallowCopy(this.parameters),\n client: this.client,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { Logger } from '../../../logger/logger.cjs';
|
|
2
|
-
import { m as ChatModel, h as ChatModelEmitter, l as ChatModelToolChoiceSupport, k as ChatConfig, d as ChatModelInput, n as ChatModelOutput, C as ChatModelParameters, i as ChatModelCache, g as ChatModelEvents } from '../../../chat-
|
|
2
|
+
import { m as ChatModel, h as ChatModelEmitter, l as ChatModelToolChoiceSupport, k as ChatConfig, d as ChatModelInput, n as ChatModelOutput, C as ChatModelParameters, i as ChatModelCache, g as ChatModelEvents } from '../../../chat-BOb9n7AJ.cjs';
|
|
3
3
|
import { Message, MessageContentPart } from '../../../backend/message.cjs';
|
|
4
4
|
import { WatsonxClient, WatsonxClientSettings } from './client.cjs';
|
|
5
5
|
import { TextChatResultChoice, TextChatUsage, TextChatParams } from '@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js';
|
|
6
|
-
import { E as Emitter } from '../../../emitter-
|
|
6
|
+
import { E as Emitter } from '../../../emitter-jN55XZZq.cjs';
|
|
7
7
|
import { GetRunContext } from '../../../context.cjs';
|
|
8
8
|
import 'pino';
|
|
9
9
|
import '../../../errors.cjs';
|
|
10
10
|
import '../../../internals/types.cjs';
|
|
11
11
|
import '../../../internals/helpers/guards.cjs';
|
|
12
12
|
import '../../../internals/serializable.cjs';
|
|
13
|
-
import 'ai';
|
|
14
13
|
import 'promise-based-task';
|
|
15
14
|
import '../../../cache/base.cjs';
|
|
16
15
|
import '../../../backend/constants.cjs';
|
|
@@ -21,6 +20,7 @@ import 'zod';
|
|
|
21
20
|
import 'zod-to-json-schema';
|
|
22
21
|
import '../../../internals/helpers/promise.cjs';
|
|
23
22
|
import '../../../template.cjs';
|
|
23
|
+
import 'ai';
|
|
24
24
|
import '@ibm-cloud/watsonx-ai';
|
|
25
25
|
import 'ibm-cloud-sdk-core';
|
|
26
26
|
import '../../../backend/client.cjs';
|
|
@@ -35,7 +35,7 @@ declare class WatsonxChatModel extends ChatModel {
|
|
|
35
35
|
config(config: ChatConfig): this;
|
|
36
36
|
protected _create(input: ChatModelInput, run: GetRunContext<any>): Promise<ChatModelOutput>;
|
|
37
37
|
_createStream(input: ChatModelInput, run: GetRunContext<this>): AsyncGenerator<ChatModelOutput, void, unknown>;
|
|
38
|
-
protected extractOutput(choices: TextChatResultChoice[], usage?: TextChatUsage): {
|
|
38
|
+
protected extractOutput(choices: TextChatResultChoice[], usage?: TextChatUsage, id?: string): {
|
|
39
39
|
finishReason: ChatModelOutput["finishReason"];
|
|
40
40
|
usage: {
|
|
41
41
|
completionTokens: number;
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { Logger } from '../../../logger/logger.js';
|
|
2
|
-
import { m as ChatModel, h as ChatModelEmitter, l as ChatModelToolChoiceSupport, k as ChatConfig, d as ChatModelInput, n as ChatModelOutput, C as ChatModelParameters, i as ChatModelCache, g as ChatModelEvents } from '../../../chat-
|
|
2
|
+
import { m as ChatModel, h as ChatModelEmitter, l as ChatModelToolChoiceSupport, k as ChatConfig, d as ChatModelInput, n as ChatModelOutput, C as ChatModelParameters, i as ChatModelCache, g as ChatModelEvents } from '../../../chat-DrqwUgD8.js';
|
|
3
3
|
import { Message, MessageContentPart } from '../../../backend/message.js';
|
|
4
4
|
import { WatsonxClient, WatsonxClientSettings } from './client.js';
|
|
5
5
|
import { TextChatResultChoice, TextChatUsage, TextChatParams } from '@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js';
|
|
6
|
-
import { E as Emitter } from '../../../emitter-
|
|
6
|
+
import { E as Emitter } from '../../../emitter-36-9MnvA.js';
|
|
7
7
|
import { GetRunContext } from '../../../context.js';
|
|
8
8
|
import 'pino';
|
|
9
9
|
import '../../../errors.js';
|
|
10
10
|
import '../../../internals/types.js';
|
|
11
11
|
import '../../../internals/helpers/guards.js';
|
|
12
12
|
import '../../../internals/serializable.js';
|
|
13
|
-
import 'ai';
|
|
14
13
|
import 'promise-based-task';
|
|
15
14
|
import '../../../cache/base.js';
|
|
16
15
|
import '../../../backend/constants.js';
|
|
@@ -21,6 +20,7 @@ import 'zod';
|
|
|
21
20
|
import 'zod-to-json-schema';
|
|
22
21
|
import '../../../internals/helpers/promise.js';
|
|
23
22
|
import '../../../template.js';
|
|
23
|
+
import 'ai';
|
|
24
24
|
import '@ibm-cloud/watsonx-ai';
|
|
25
25
|
import 'ibm-cloud-sdk-core';
|
|
26
26
|
import '../../../backend/client.js';
|
|
@@ -35,7 +35,7 @@ declare class WatsonxChatModel extends ChatModel {
|
|
|
35
35
|
config(config: ChatConfig): this;
|
|
36
36
|
protected _create(input: ChatModelInput, run: GetRunContext<any>): Promise<ChatModelOutput>;
|
|
37
37
|
_createStream(input: ChatModelInput, run: GetRunContext<this>): AsyncGenerator<ChatModelOutput, void, unknown>;
|
|
38
|
-
protected extractOutput(choices: TextChatResultChoice[], usage?: TextChatUsage): {
|
|
38
|
+
protected extractOutput(choices: TextChatResultChoice[], usage?: TextChatUsage, id?: string): {
|
|
39
39
|
finishReason: ChatModelOutput["finishReason"];
|
|
40
40
|
usage: {
|
|
41
41
|
completionTokens: number;
|
|
@@ -5,7 +5,6 @@ import WatsonxAiMlVml_v1 from '@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.j
|
|
|
5
5
|
import { shallowCopy } from '../../../serializer/utils.js';
|
|
6
6
|
import { Emitter } from '../../../emitter/emitter.js';
|
|
7
7
|
import { AssistantMessage, ToolMessage, SystemMessage } from '../../../backend/message.js';
|
|
8
|
-
import { parseBrokenJson } from '../../../internals/helpers/schema.js';
|
|
9
8
|
import { getEnv } from '../../../internals/env.js';
|
|
10
9
|
import { NotImplementedError } from '../../../errors.js';
|
|
11
10
|
import { Tool } from '../../../tools/base.js';
|
|
@@ -55,7 +54,7 @@ class WatsonxChatModel extends ChatModel {
|
|
|
55
54
|
...await this.prepareInput(input),
|
|
56
55
|
signal: run.signal
|
|
57
56
|
});
|
|
58
|
-
const { messages, finishReason, usage } = this.extractOutput(result.choices, result.usage);
|
|
57
|
+
const { messages, finishReason, usage } = this.extractOutput(result.choices, result.usage, result.id);
|
|
59
58
|
return new ChatModelOutput(messages, usage, finishReason);
|
|
60
59
|
}
|
|
61
60
|
async *_createStream(input, run) {
|
|
@@ -72,11 +71,11 @@ class WatsonxChatModel extends ChatModel {
|
|
|
72
71
|
const { messages, finishReason, usage } = this.extractOutput(raw.data.choices.map(({ delta, ...choice }) => ({
|
|
73
72
|
...choice,
|
|
74
73
|
message: delta
|
|
75
|
-
})), raw.data.usage);
|
|
74
|
+
})), raw.data.usage, raw.data.id);
|
|
76
75
|
yield new ChatModelOutput(messages, usage, finishReason);
|
|
77
76
|
}
|
|
78
77
|
}
|
|
79
|
-
extractOutput(choices, usage) {
|
|
78
|
+
extractOutput(choices, usage, id) {
|
|
80
79
|
return {
|
|
81
80
|
finishReason: findLast(choices, (choice) => Boolean(choice?.finish_reason))?.finish_reason,
|
|
82
81
|
usage: usage ? {
|
|
@@ -90,7 +89,7 @@ class WatsonxChatModel extends ChatModel {
|
|
|
90
89
|
const msg = new AssistantMessage({
|
|
91
90
|
type: "text",
|
|
92
91
|
text: message.content
|
|
93
|
-
});
|
|
92
|
+
}, {}, id);
|
|
94
93
|
messages.push(msg);
|
|
95
94
|
}
|
|
96
95
|
if (message?.tool_calls) {
|
|
@@ -98,15 +97,15 @@ class WatsonxChatModel extends ChatModel {
|
|
|
98
97
|
type: "tool-call",
|
|
99
98
|
toolCallId: call.id,
|
|
100
99
|
toolName: call.function.name,
|
|
101
|
-
input:
|
|
102
|
-
})));
|
|
100
|
+
input: call.function.arguments
|
|
101
|
+
})), {}, id);
|
|
103
102
|
messages.push(msg);
|
|
104
103
|
}
|
|
105
104
|
if (message?.refusal) {
|
|
106
105
|
const msg = new AssistantMessage({
|
|
107
106
|
type: "text",
|
|
108
107
|
text: message.refusal
|
|
109
|
-
});
|
|
108
|
+
}, {}, id);
|
|
110
109
|
messages.push(msg);
|
|
111
110
|
}
|
|
112
111
|
return messages;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/watsonx/backend/chat.ts"],"names":["Type","WatsonxChatModel","ChatModel","client","emitter","Emitter","root","child","namespace","creator","toolChoiceSupport","providerId","modelId","getEnv","WatsonxClient","ensure","config","name","parameters","undefined","NotImplementedError","_create","input","run","result","instance","textChat","prepareInput","signal","messages","finishReason","usage","extractOutput","choices","ChatModelOutput","_createStream","stream","textChatStream","returnObject","raw","aborted","controller","abort","data","map","delta","choice","message","findLast","Boolean","finish_reason","completionTokens","completion_tokens","promptTokens","prompt_tokens","totalTokens","total_tokens","flatMap","content","msg","AssistantMessage","type","text","push","tool_calls","call","toolCallId","id","toolName","function","parseBrokenJson","arguments","refusal","filter","isTruthy","overrides","tools","Promise","all","tool","description","getInputJsonSchema","toolConfig","toolChoice","toolChoiceOption","Tool","includes","ToolMessage","role","output","value","JSON","stringify","tool_call_id","SystemMessage","Error","toPlain","spaceId","projectId","isEmpty","responseFormat","JSON_OBJECT","topP","frequencyPenalty","temperature","n","maxTokens","presencePenalty","stop","stopSequences","seed","createSnapshot","shallowCopy","loadSnapshot","snapshot","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 ChatConfig,\n ChatModel,\n ChatModelEmitter,\n ChatModelInput,\n ChatModelOutput,\n ChatModelParameters,\n ChatModelToolChoiceSupport,\n} from \"@/backend/chat.js\";\nimport { WatsonxClient, WatsonxClientSettings } from \"@/adapters/watsonx/backend/client.js\";\nimport { findLast, isEmpty, isTruthy } from \"remeda\";\nimport WatsonxAiMlVml_v1, {\n TextChatMessages,\n TextChatParameterTools,\n TextChatParams,\n TextChatResultChoice,\n TextChatUsage,\n} from \"@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { AssistantMessage, Message, SystemMessage, ToolMessage } from \"@/backend/message.js\";\nimport { ToolCallPart } from \"ai\";\nimport Type = WatsonxAiMlVml_v1.TextChatResponseFormat.Constants.Type;\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { getEnv } from \"@/internals/env.js\";\nimport { NotImplementedError } from \"@/errors.js\";\nimport { Tool } from \"@/tools/base.js\";\nimport type {\n TextChatMessageAssistant,\n TextChatMessageSystem,\n TextChatMessageTool,\n} from \"@ibm-cloud/watsonx-ai\";\n\nexport class WatsonxChatModel extends ChatModel {\n protected readonly client: WatsonxClient;\n public readonly emitter: ChatModelEmitter = Emitter.root.child({\n namespace: [\"backend\", \"watsonx\", \"chat\"],\n creator: this,\n });\n public readonly toolChoiceSupport: ChatModelToolChoiceSupport[] = [\"none\", \"single\"];\n\n get providerId() {\n return \"watsonx\";\n }\n\n constructor(\n public readonly modelId = getEnv(\"WATSONX_CHAT_MODEL\", \"ibm/granite-3-8b-instruct\"),\n client?: WatsonxClient | WatsonxClientSettings,\n ) {\n super();\n this.client = WatsonxClient.ensure(client);\n }\n\n config(config: ChatConfig) {\n super.config(config);\n for (const name of [\"topK\"] as (keyof ChatModelParameters)[]) {\n if (this.parameters[name] !== undefined) {\n this.parameters[name] = undefined;\n throw new NotImplementedError(\n `Setting \"${name}\" parameter is not supported for WatsonX Chat Models.`,\n );\n }\n }\n return this;\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<any>) {\n const { result } = await this.client.instance.textChat({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n });\n const { messages, finishReason, usage } = this.extractOutput(result.choices, result.usage);\n return new ChatModelOutput(messages, usage, finishReason);\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n const stream = await this.client.instance.textChatStream({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n returnObject: true,\n });\n for await (const raw of stream) {\n if (run.signal.aborted) {\n stream.controller.abort(run.signal.aborted);\n break;\n }\n const { messages, finishReason, usage } = this.extractOutput(\n raw.data.choices.map(({ delta, ...choice }) => ({ ...choice, message: delta })),\n raw.data.usage,\n );\n yield new ChatModelOutput(messages, usage, finishReason);\n }\n }\n\n protected extractOutput(choices: TextChatResultChoice[], usage?: TextChatUsage) {\n return {\n finishReason: findLast(choices, (choice) => Boolean(choice?.finish_reason))\n ?.finish_reason as ChatModelOutput[\"finishReason\"],\n usage: usage\n ? {\n completionTokens: usage.completion_tokens ?? 0,\n promptTokens: usage.prompt_tokens ?? 0,\n totalTokens: usage.total_tokens ?? 0,\n }\n : undefined,\n messages: choices\n .flatMap(({ message }) => {\n const messages: Message[] = [];\n if (message?.content) {\n const msg = new AssistantMessage({ type: \"text\", text: message.content });\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n if (message?.tool_calls) {\n const msg = new AssistantMessage(\n message.tool_calls.map(\n (call): ToolCallPart => ({\n type: \"tool-call\",\n toolCallId: call.id,\n toolName: call.function.name,\n input: parseBrokenJson(call.function.arguments),\n }),\n ),\n );\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n if (message?.refusal) {\n const msg = new AssistantMessage({ type: \"text\", text: message.refusal });\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n return messages;\n })\n .filter(isTruthy),\n };\n }\n\n protected async prepareInput(overrides: ChatModelInput): Promise<TextChatParams> {\n const input: ChatModelInput = { ...this.parameters, ...overrides };\n const tools: TextChatParameterTools[] = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: await tool.getInputJsonSchema(),\n },\n })),\n );\n\n const toolConfig: Pick<TextChatParams, \"toolChoice\" | \"toolChoiceOption\"> = {\n toolChoice: undefined,\n toolChoiceOption: undefined,\n };\n if (input.toolChoice) {\n if (input.toolChoice instanceof Tool) {\n toolConfig.toolChoice = {\n type: \"function\",\n function: { name: input.toolChoice.name },\n };\n } else if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolConfig.toolChoiceOption = input.toolChoice;\n }\n }\n\n return {\n modelId: this.modelId,\n messages: input.messages.flatMap((message): TextChatMessages[] => {\n if (message instanceof ToolMessage) {\n return message.content.map(\n (content): TextChatMessageTool => ({\n role: \"tool\",\n content:\n typeof content.output.value === \"string\"\n ? content.output.value\n : JSON.stringify(content),\n tool_call_id: content.toolCallId,\n }),\n );\n } else if (message instanceof SystemMessage) {\n return message.content.map(\n (content): TextChatMessageSystem => ({\n role: \"system\",\n content: content.text,\n }),\n );\n } else if (message instanceof AssistantMessage) {\n return message.content.map(\n (content): TextChatMessageAssistant => ({\n role: \"assistant\",\n ...(content.type === \"text\" && {\n content: content.text,\n }),\n ...(content.type === \"tool-call\" && {\n id: content.toolCallId,\n type: \"function\",\n function: {\n name: content.toolName,\n arguments: JSON.stringify(content.input),\n },\n }),\n ...(() => {\n if (content.type === \"file\") {\n throw new Error(\"Assistants cannot send a file in IBM watsonx\");\n }\n return {};\n })(),\n }),\n );\n } else {\n return [message.toPlain()];\n }\n }),\n spaceId: this.client.spaceId,\n projectId: this.client.projectId,\n tools: isEmpty(tools) ? undefined : tools,\n responseFormat: undefined,\n ...(input.responseFormat && {\n responseFormat: { type: Type.JSON_OBJECT },\n }),\n topP: input.topP,\n frequencyPenalty: input.frequencyPenalty,\n temperature: input.temperature,\n n: input.n,\n maxTokens: input.maxTokens,\n presencePenalty: input.presencePenalty,\n stop: input.stopSequences,\n seed: input.seed,\n ...toolConfig,\n };\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n modelId: this.modelId,\n parameters: shallowCopy(this.parameters),\n client: this.client,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/watsonx/backend/chat.ts"],"names":["Type","WatsonxChatModel","ChatModel","client","emitter","Emitter","root","child","namespace","creator","toolChoiceSupport","providerId","modelId","getEnv","WatsonxClient","ensure","config","name","parameters","undefined","NotImplementedError","_create","input","run","result","instance","textChat","prepareInput","signal","messages","finishReason","usage","extractOutput","choices","id","ChatModelOutput","_createStream","stream","textChatStream","returnObject","raw","aborted","controller","abort","data","map","delta","choice","message","findLast","Boolean","finish_reason","completionTokens","completion_tokens","promptTokens","prompt_tokens","totalTokens","total_tokens","flatMap","content","msg","AssistantMessage","type","text","push","tool_calls","call","toolCallId","toolName","function","arguments","refusal","filter","isTruthy","overrides","tools","Promise","all","tool","description","getInputJsonSchema","toolConfig","toolChoice","toolChoiceOption","Tool","includes","ToolMessage","role","output","value","JSON","stringify","tool_call_id","SystemMessage","Error","toPlain","spaceId","projectId","isEmpty","responseFormat","JSON_OBJECT","topP","frequencyPenalty","temperature","n","maxTokens","presencePenalty","stop","stopSequences","seed","createSnapshot","shallowCopy","loadSnapshot","snapshot","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 ChatConfig,\n ChatModel,\n ChatModelEmitter,\n ChatModelInput,\n ChatModelOutput,\n ChatModelParameters,\n ChatModelToolChoiceSupport,\n} from \"@/backend/chat.js\";\nimport { WatsonxClient, WatsonxClientSettings } from \"@/adapters/watsonx/backend/client.js\";\nimport { findLast, isEmpty, isTruthy } from \"remeda\";\nimport WatsonxAiMlVml_v1, {\n TextChatMessages,\n TextChatParameterTools,\n TextChatParams,\n TextChatResultChoice,\n TextChatUsage,\n} from \"@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { AssistantMessage, Message, SystemMessage, ToolMessage } from \"@/backend/message.js\";\nimport { ToolCallPart } from \"ai\";\nimport Type = WatsonxAiMlVml_v1.TextChatResponseFormat.Constants.Type;\nimport { getEnv } from \"@/internals/env.js\";\nimport { NotImplementedError } from \"@/errors.js\";\nimport { Tool } from \"@/tools/base.js\";\nimport type {\n TextChatMessageAssistant,\n TextChatMessageSystem,\n TextChatMessageTool,\n} from \"@ibm-cloud/watsonx-ai\";\n\nexport class WatsonxChatModel extends ChatModel {\n protected readonly client: WatsonxClient;\n public readonly emitter: ChatModelEmitter = Emitter.root.child({\n namespace: [\"backend\", \"watsonx\", \"chat\"],\n creator: this,\n });\n public readonly toolChoiceSupport: ChatModelToolChoiceSupport[] = [\"none\", \"single\"];\n\n get providerId() {\n return \"watsonx\";\n }\n\n constructor(\n public readonly modelId = getEnv(\"WATSONX_CHAT_MODEL\", \"ibm/granite-3-8b-instruct\"),\n client?: WatsonxClient | WatsonxClientSettings,\n ) {\n super();\n this.client = WatsonxClient.ensure(client);\n }\n\n config(config: ChatConfig) {\n super.config(config);\n for (const name of [\"topK\"] as (keyof ChatModelParameters)[]) {\n if (this.parameters[name] !== undefined) {\n this.parameters[name] = undefined;\n throw new NotImplementedError(\n `Setting \"${name}\" parameter is not supported for WatsonX Chat Models.`,\n );\n }\n }\n return this;\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<any>) {\n const { result } = await this.client.instance.textChat({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n });\n const { messages, finishReason, usage } = this.extractOutput(\n result.choices,\n result.usage,\n result.id,\n );\n return new ChatModelOutput(messages, usage, finishReason);\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n // @ts-ignore\n const stream = await this.client.instance.textChatStream({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n returnObject: true,\n });\n for await (const raw of stream) {\n if (run.signal.aborted) {\n stream.controller.abort(run.signal.aborted);\n break;\n }\n const { messages, finishReason, usage } = this.extractOutput(\n raw.data.choices.map(({ delta, ...choice }) => ({ ...choice, message: delta })),\n raw.data.usage,\n raw.data.id,\n );\n yield new ChatModelOutput(messages, usage, finishReason);\n }\n }\n\n protected extractOutput(choices: TextChatResultChoice[], usage?: TextChatUsage, id?: string) {\n return {\n finishReason: findLast(choices, (choice) => Boolean(choice?.finish_reason))\n ?.finish_reason as ChatModelOutput[\"finishReason\"],\n usage: usage\n ? {\n completionTokens: usage.completion_tokens ?? 0,\n promptTokens: usage.prompt_tokens ?? 0,\n totalTokens: usage.total_tokens ?? 0,\n }\n : undefined,\n messages: choices\n .flatMap(({ message }) => {\n const messages: Message[] = [];\n if (message?.content) {\n const msg = new AssistantMessage({ type: \"text\", text: message.content }, {}, id);\n messages.push(msg);\n }\n if (message?.tool_calls) {\n const msg = new AssistantMessage(\n message.tool_calls.map(\n (call): ToolCallPart => ({\n type: \"tool-call\",\n toolCallId: call.id,\n toolName: call.function.name,\n input: call.function.arguments,\n }),\n ),\n {},\n id,\n );\n messages.push(msg);\n }\n if (message?.refusal) {\n const msg = new AssistantMessage({ type: \"text\", text: message.refusal }, {}, id);\n messages.push(msg);\n }\n return messages;\n })\n .filter(isTruthy),\n };\n }\n\n protected async prepareInput(overrides: ChatModelInput): Promise<TextChatParams> {\n const input: ChatModelInput = { ...this.parameters, ...overrides };\n const tools: TextChatParameterTools[] = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: await tool.getInputJsonSchema(),\n },\n })),\n );\n\n const toolConfig: Pick<TextChatParams, \"toolChoice\" | \"toolChoiceOption\"> = {\n toolChoice: undefined,\n toolChoiceOption: undefined,\n };\n if (input.toolChoice) {\n if (input.toolChoice instanceof Tool) {\n toolConfig.toolChoice = {\n type: \"function\",\n function: { name: input.toolChoice.name },\n };\n } else if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolConfig.toolChoiceOption = input.toolChoice;\n }\n }\n\n return {\n modelId: this.modelId,\n messages: input.messages.flatMap((message): TextChatMessages[] => {\n if (message instanceof ToolMessage) {\n return message.content.map(\n (content): TextChatMessageTool => ({\n role: \"tool\",\n content:\n typeof content.output.value === \"string\"\n ? content.output.value\n : JSON.stringify(content),\n tool_call_id: content.toolCallId,\n }),\n );\n } else if (message instanceof SystemMessage) {\n return message.content.map(\n (content): TextChatMessageSystem => ({\n role: \"system\",\n content: content.text,\n }),\n );\n } else if (message instanceof AssistantMessage) {\n return message.content.map(\n (content): TextChatMessageAssistant => ({\n role: \"assistant\",\n ...(content.type === \"text\" && {\n content: content.text,\n }),\n ...(content.type === \"tool-call\" && {\n id: content.toolCallId,\n type: \"function\",\n function: {\n name: content.toolName,\n arguments: JSON.stringify(content.input),\n },\n }),\n ...(() => {\n if (content.type === \"file\") {\n throw new Error(\"Assistants cannot send a file in IBM watsonx\");\n }\n return {};\n })(),\n }),\n );\n } else {\n return [message.toPlain()];\n }\n }),\n spaceId: this.client.spaceId,\n projectId: this.client.projectId,\n tools: isEmpty(tools) ? undefined : tools,\n responseFormat: undefined,\n ...(input.responseFormat && {\n responseFormat: { type: Type.JSON_OBJECT },\n }),\n topP: input.topP,\n frequencyPenalty: input.frequencyPenalty,\n temperature: input.temperature,\n n: input.n,\n maxTokens: input.maxTokens,\n presencePenalty: input.presencePenalty,\n stop: input.stopSequences,\n seed: input.seed,\n ...toolConfig,\n };\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n modelId: this.modelId,\n parameters: shallowCopy(this.parameters),\n client: this.client,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { WatsonxClient, WatsonxClientSettings } from './client.cjs';
|
|
2
2
|
import { EmbeddingModel, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from '../../../backend/embedding.cjs';
|
|
3
3
|
import { EmbeddingParameters } from '@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js';
|
|
4
|
-
import { E as Emitter } from '../../../emitter-
|
|
4
|
+
import { E as Emitter } from '../../../emitter-jN55XZZq.cjs';
|
|
5
5
|
import '@ibm-cloud/watsonx-ai';
|
|
6
6
|
import 'ibm-cloud-sdk-core';
|
|
7
7
|
import '../../../backend/client.cjs';
|
|
@@ -11,7 +11,7 @@ import '../../../internals/helpers/guards.cjs';
|
|
|
11
11
|
import '../../../context.cjs';
|
|
12
12
|
import '../../../internals/helpers/promise.cjs';
|
|
13
13
|
import '../../../errors.cjs';
|
|
14
|
-
import '../../../chat-
|
|
14
|
+
import '../../../chat-BOb9n7AJ.cjs';
|
|
15
15
|
import '../../../backend/message.cjs';
|
|
16
16
|
import 'ai';
|
|
17
17
|
import 'promise-based-task';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { WatsonxClient, WatsonxClientSettings } from './client.js';
|
|
2
2
|
import { EmbeddingModel, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from '../../../backend/embedding.js';
|
|
3
3
|
import { EmbeddingParameters } from '@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js';
|
|
4
|
-
import { E as Emitter } from '../../../emitter-
|
|
4
|
+
import { E as Emitter } from '../../../emitter-36-9MnvA.js';
|
|
5
5
|
import '@ibm-cloud/watsonx-ai';
|
|
6
6
|
import 'ibm-cloud-sdk-core';
|
|
7
7
|
import '../../../backend/client.js';
|
|
@@ -11,7 +11,7 @@ import '../../../internals/helpers/guards.js';
|
|
|
11
11
|
import '../../../context.js';
|
|
12
12
|
import '../../../internals/helpers/promise.js';
|
|
13
13
|
import '../../../errors.js';
|
|
14
|
-
import '../../../chat-
|
|
14
|
+
import '../../../chat-DrqwUgD8.js';
|
|
15
15
|
import '../../../backend/message.js';
|
|
16
16
|
import 'ai';
|
|
17
17
|
import 'promise-based-task';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VercelChatModel } from '../../vercel/backend/chat.cjs';
|
|
2
2
|
import { XaiClientSettings, XaiClient } from './client.cjs';
|
|
3
3
|
import { XaiProvider } from '@ai-sdk/xai';
|
|
4
|
-
import { C as ChatModelParameters } from '../../../chat-
|
|
4
|
+
import { C as ChatModelParameters } from '../../../chat-BOb9n7AJ.cjs';
|
|
5
5
|
import '../../../logger/logger.cjs';
|
|
6
6
|
import 'pino';
|
|
7
7
|
import '../../../errors.cjs';
|
|
@@ -9,7 +9,7 @@ import '../../../internals/types.cjs';
|
|
|
9
9
|
import '../../../internals/helpers/guards.cjs';
|
|
10
10
|
import '../../../internals/serializable.cjs';
|
|
11
11
|
import 'ai';
|
|
12
|
-
import '../../../emitter-
|
|
12
|
+
import '../../../emitter-jN55XZZq.cjs';
|
|
13
13
|
import '../../../backend/message.cjs';
|
|
14
14
|
import '../../../context.cjs';
|
|
15
15
|
import '../../../internals/helpers/promise.cjs';
|