beeai-framework 0.1.23 → 0.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/dist/adapters/a2a/agents/agent.d.cts +2 -2
  2. package/dist/adapters/a2a/agents/agent.d.ts +2 -2
  3. package/dist/adapters/a2a/agents/events.d.cts +1 -1
  4. package/dist/adapters/a2a/agents/events.d.ts +1 -1
  5. package/dist/adapters/a2a/agents/types.d.cts +2 -2
  6. package/dist/adapters/a2a/agents/types.d.ts +2 -2
  7. package/dist/adapters/a2a/serve/agent_executor.d.cts +3 -3
  8. package/dist/adapters/a2a/serve/agent_executor.d.ts +3 -3
  9. package/dist/adapters/a2a/serve/server.d.cts +2 -2
  10. package/dist/adapters/a2a/serve/server.d.ts +2 -2
  11. package/dist/adapters/acp/agents/agent.d.cts +2 -2
  12. package/dist/adapters/acp/agents/agent.d.ts +2 -2
  13. package/dist/adapters/acp/agents/events.d.cts +1 -1
  14. package/dist/adapters/acp/agents/events.d.ts +1 -1
  15. package/dist/adapters/agentstack/agents/agent.d.cts +2 -2
  16. package/dist/adapters/agentstack/agents/agent.d.ts +2 -2
  17. package/dist/adapters/agentstack/agents/events.d.cts +1 -1
  18. package/dist/adapters/agentstack/agents/events.d.ts +1 -1
  19. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +4 -4
  20. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +4 -4
  21. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +2 -2
  22. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +2 -2
  23. package/dist/adapters/anthropic/backend/chat.d.cts +4 -4
  24. package/dist/adapters/anthropic/backend/chat.d.ts +4 -4
  25. package/dist/adapters/anthropic/backend/embedding.d.cts +2 -2
  26. package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
  27. package/dist/adapters/azure-openai/backend/chat.d.cts +4 -4
  28. package/dist/adapters/azure-openai/backend/chat.d.ts +4 -4
  29. package/dist/adapters/azure-openai/backend/embedding.d.cts +2 -2
  30. package/dist/adapters/azure-openai/backend/embedding.d.ts +2 -2
  31. package/dist/adapters/dummy/backend/chat.d.cts +7 -4
  32. package/dist/adapters/dummy/backend/chat.d.ts +7 -4
  33. package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
  34. package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
  35. package/dist/adapters/google-vertex/backend/chat.d.cts +4 -4
  36. package/dist/adapters/google-vertex/backend/chat.d.ts +4 -4
  37. package/dist/adapters/google-vertex/backend/embedding.d.cts +2 -2
  38. package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
  39. package/dist/adapters/groq/backend/chat.d.cts +4 -4
  40. package/dist/adapters/groq/backend/chat.d.ts +4 -4
  41. package/dist/adapters/groq/backend/embedding.d.cts +2 -2
  42. package/dist/adapters/groq/backend/embedding.d.ts +2 -2
  43. package/dist/adapters/langchain/backend/chat.d.cts +7 -4
  44. package/dist/adapters/langchain/backend/chat.d.ts +7 -4
  45. package/dist/adapters/langchain/backend/embedding.d.cts +2 -2
  46. package/dist/adapters/langchain/backend/embedding.d.ts +2 -2
  47. package/dist/adapters/langchain/tools.d.cts +1 -1
  48. package/dist/adapters/langchain/tools.d.ts +1 -1
  49. package/dist/adapters/ollama/backend/chat.d.cts +4 -4
  50. package/dist/adapters/ollama/backend/chat.d.ts +4 -4
  51. package/dist/adapters/ollama/backend/embedding.d.cts +2 -2
  52. package/dist/adapters/ollama/backend/embedding.d.ts +2 -2
  53. package/dist/adapters/openai/backend/chat.d.cts +4 -4
  54. package/dist/adapters/openai/backend/chat.d.ts +4 -4
  55. package/dist/adapters/openai/backend/embedding.d.cts +2 -2
  56. package/dist/adapters/openai/backend/embedding.d.ts +2 -2
  57. package/dist/adapters/vercel/backend/chat.d.cts +7 -4
  58. package/dist/adapters/vercel/backend/chat.d.ts +7 -4
  59. package/dist/adapters/vercel/backend/embedding.d.cts +2 -2
  60. package/dist/adapters/vercel/backend/embedding.d.ts +2 -2
  61. package/dist/adapters/vercel/backend/utils.d.cts +2 -2
  62. package/dist/adapters/vercel/backend/utils.d.ts +2 -2
  63. package/dist/adapters/watsonx/backend/chat.cjs +45 -9
  64. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  65. package/dist/adapters/watsonx/backend/chat.d.cts +8 -5
  66. package/dist/adapters/watsonx/backend/chat.d.ts +8 -5
  67. package/dist/adapters/watsonx/backend/chat.js +45 -9
  68. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  69. package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
  70. package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
  71. package/dist/adapters/xai/backend/chat.d.cts +4 -4
  72. package/dist/adapters/xai/backend/chat.d.ts +4 -4
  73. package/dist/{agent-BVuc9Nfn.d.cts → agent-CuJD7Szg.d.cts} +4 -4
  74. package/dist/{agent-Cuy8Q4gw.d.ts → agent-DIyHPkn2.d.ts} +4 -4
  75. package/dist/agents/base.d.cts +2 -2
  76. package/dist/agents/base.d.ts +2 -2
  77. package/dist/agents/experimental/replan/agent.d.cts +3 -3
  78. package/dist/agents/experimental/replan/agent.d.ts +3 -3
  79. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  80. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  81. package/dist/agents/experimental/streamlit/agent.d.cts +3 -3
  82. package/dist/agents/experimental/streamlit/agent.d.ts +3 -3
  83. package/dist/agents/react/agent.d.cts +4 -4
  84. package/dist/agents/react/agent.d.ts +4 -4
  85. package/dist/agents/react/runners/base.d.cts +4 -4
  86. package/dist/agents/react/runners/base.d.ts +4 -4
  87. package/dist/agents/react/runners/deep-think/runner.d.cts +4 -4
  88. package/dist/agents/react/runners/deep-think/runner.d.ts +4 -4
  89. package/dist/agents/react/runners/default/runner.d.cts +4 -4
  90. package/dist/agents/react/runners/default/runner.d.ts +4 -4
  91. package/dist/agents/react/runners/granite/runner.d.cts +4 -4
  92. package/dist/agents/react/runners/granite/runner.d.ts +4 -4
  93. package/dist/agents/react/types.d.cts +2 -2
  94. package/dist/agents/react/types.d.ts +2 -2
  95. package/dist/agents/requirement/agent.d.cts +4 -4
  96. package/dist/agents/requirement/agent.d.ts +4 -4
  97. package/dist/agents/requirement/requirements/conditional.d.cts +4 -4
  98. package/dist/agents/requirement/requirements/conditional.d.ts +4 -4
  99. package/dist/agents/requirement/requirements/requirement.d.cts +4 -4
  100. package/dist/agents/requirement/requirements/requirement.d.ts +4 -4
  101. package/dist/agents/requirement/requirements/utils.d.cts +1 -1
  102. package/dist/agents/requirement/requirements/utils.d.ts +1 -1
  103. package/dist/agents/requirement/runner.cjs +21 -13
  104. package/dist/agents/requirement/runner.cjs.map +1 -1
  105. package/dist/agents/requirement/runner.d.cts +4 -4
  106. package/dist/agents/requirement/runner.d.ts +4 -4
  107. package/dist/agents/requirement/runner.js +21 -13
  108. package/dist/agents/requirement/runner.js.map +1 -1
  109. package/dist/agents/requirement/types.d.cts +4 -4
  110. package/dist/agents/requirement/types.d.ts +4 -4
  111. package/dist/agents/requirement/utils/llm.d.cts +4 -4
  112. package/dist/agents/requirement/utils/llm.d.ts +4 -4
  113. package/dist/agents/requirement/utils/tool.cjs +13 -2
  114. package/dist/agents/requirement/utils/tool.cjs.map +1 -1
  115. package/dist/agents/requirement/utils/tool.d.cts +4 -4
  116. package/dist/agents/requirement/utils/tool.d.ts +4 -4
  117. package/dist/agents/requirement/utils/tool.js +11 -0
  118. package/dist/agents/requirement/utils/tool.js.map +1 -1
  119. package/dist/agents/toolCalling/agent.d.cts +3 -3
  120. package/dist/agents/toolCalling/agent.d.ts +3 -3
  121. package/dist/agents/toolCalling/types.d.cts +1 -1
  122. package/dist/agents/toolCalling/types.d.ts +1 -1
  123. package/dist/agents/types.d.cts +2 -2
  124. package/dist/agents/types.d.ts +2 -2
  125. package/dist/backend/backend.d.cts +2 -2
  126. package/dist/backend/backend.d.ts +2 -2
  127. package/dist/backend/chat.cjs +128 -47
  128. package/dist/backend/chat.cjs.map +1 -1
  129. package/dist/backend/chat.d.cts +2 -2
  130. package/dist/backend/chat.d.ts +2 -2
  131. package/dist/backend/chat.js +132 -51
  132. package/dist/backend/chat.js.map +1 -1
  133. package/dist/backend/core.d.cts +3 -3
  134. package/dist/backend/core.d.ts +3 -3
  135. package/dist/backend/embedding.d.cts +2 -2
  136. package/dist/backend/embedding.d.ts +2 -2
  137. package/dist/backend/errors.cjs +25 -0
  138. package/dist/backend/errors.cjs.map +1 -1
  139. package/dist/backend/errors.d.cts +34 -1
  140. package/dist/backend/errors.d.ts +34 -1
  141. package/dist/backend/errors.js +24 -1
  142. package/dist/backend/errors.js.map +1 -1
  143. package/dist/backend/utils.d.cts +2 -2
  144. package/dist/backend/utils.d.ts +2 -2
  145. package/dist/{base-CyFx7BRL.d.ts → base-BfhNzUYf.d.ts} +1 -1
  146. package/dist/{base-XfWeXQ-S.d.cts → base-BqzN2QwB.d.cts} +1 -1
  147. package/dist/{chat-DrqwUgD8.d.ts → chat-DTxmaKP0.d.ts} +10 -2
  148. package/dist/{chat-BOb9n7AJ.d.cts → chat-DaqV3woF.d.cts} +10 -2
  149. package/dist/context.d.cts +1 -1
  150. package/dist/context.d.ts +1 -1
  151. package/dist/emitter/emitter.d.cts +1 -1
  152. package/dist/emitter/emitter.d.ts +1 -1
  153. package/dist/emitter/types.d.cts +1 -1
  154. package/dist/emitter/types.d.ts +1 -1
  155. package/dist/index.d.cts +3 -3
  156. package/dist/index.d.ts +3 -3
  157. package/dist/internals/fetcher.d.cts +1 -1
  158. package/dist/internals/fetcher.d.ts +1 -1
  159. package/dist/internals/helpers/object.cjs +18 -0
  160. package/dist/internals/helpers/object.cjs.map +1 -1
  161. package/dist/internals/helpers/object.d.cts +2 -1
  162. package/dist/internals/helpers/object.d.ts +2 -1
  163. package/dist/internals/helpers/object.js +18 -1
  164. package/dist/internals/helpers/object.js.map +1 -1
  165. package/dist/memory/summarizeMemory.d.cts +2 -2
  166. package/dist/memory/summarizeMemory.d.ts +2 -2
  167. package/dist/middleware/streamToolCall.cjs +16 -1
  168. package/dist/middleware/streamToolCall.cjs.map +1 -1
  169. package/dist/middleware/streamToolCall.d.cts +13 -3
  170. package/dist/middleware/streamToolCall.d.ts +13 -3
  171. package/dist/middleware/streamToolCall.js +16 -1
  172. package/dist/middleware/streamToolCall.js.map +1 -1
  173. package/dist/middleware/trajectory.d.cts +1 -1
  174. package/dist/middleware/trajectory.d.ts +1 -1
  175. package/dist/parsers/linePrefix.d.cts +1 -1
  176. package/dist/parsers/linePrefix.d.ts +1 -1
  177. package/dist/tools/arxiv.d.cts +1 -1
  178. package/dist/tools/arxiv.d.ts +1 -1
  179. package/dist/tools/base.d.cts +1 -1
  180. package/dist/tools/base.d.ts +1 -1
  181. package/dist/tools/calculator.d.cts +1 -1
  182. package/dist/tools/calculator.d.ts +1 -1
  183. package/dist/tools/custom.d.cts +2 -2
  184. package/dist/tools/custom.d.ts +2 -2
  185. package/dist/tools/database/elasticsearch.d.cts +1 -1
  186. package/dist/tools/database/elasticsearch.d.ts +1 -1
  187. package/dist/tools/database/milvus.d.cts +1 -1
  188. package/dist/tools/database/milvus.d.ts +1 -1
  189. package/dist/tools/database/qdrant.d.cts +1 -1
  190. package/dist/tools/database/qdrant.d.ts +1 -1
  191. package/dist/tools/database/sql.d.cts +1 -1
  192. package/dist/tools/database/sql.d.ts +1 -1
  193. package/dist/tools/handoff.d.cts +2 -2
  194. package/dist/tools/handoff.d.ts +2 -2
  195. package/dist/tools/llm.d.cts +2 -2
  196. package/dist/tools/llm.d.ts +2 -2
  197. package/dist/tools/mcp.d.cts +1 -1
  198. package/dist/tools/mcp.d.ts +1 -1
  199. package/dist/tools/openapi.d.cts +1 -1
  200. package/dist/tools/openapi.d.ts +1 -1
  201. package/dist/tools/python/output.d.cts +1 -1
  202. package/dist/tools/python/output.d.ts +1 -1
  203. package/dist/tools/python/python.d.cts +2 -2
  204. package/dist/tools/python/python.d.ts +2 -2
  205. package/dist/tools/search/base.d.cts +1 -1
  206. package/dist/tools/search/base.d.ts +1 -1
  207. package/dist/tools/search/duckDuckGoSearch.d.cts +1 -1
  208. package/dist/tools/search/duckDuckGoSearch.d.ts +1 -1
  209. package/dist/tools/search/googleSearch.d.cts +1 -1
  210. package/dist/tools/search/googleSearch.d.ts +1 -1
  211. package/dist/tools/search/searXNGSearch.d.cts +1 -1
  212. package/dist/tools/search/searXNGSearch.d.ts +1 -1
  213. package/dist/tools/search/wikipedia.d.cts +1 -1
  214. package/dist/tools/search/wikipedia.d.ts +1 -1
  215. package/dist/tools/similarity.d.cts +1 -1
  216. package/dist/tools/similarity.d.ts +1 -1
  217. package/dist/tools/think.d.cts +1 -1
  218. package/dist/tools/think.d.ts +1 -1
  219. package/dist/tools/weather/openMeteo.d.cts +1 -1
  220. package/dist/tools/weather/openMeteo.d.ts +1 -1
  221. package/dist/tools/web/webCrawler.d.cts +1 -1
  222. package/dist/tools/web/webCrawler.d.ts +1 -1
  223. package/dist/{types-CJwiMH3u.d.ts → types-YT-WdK3m.d.ts} +3 -3
  224. package/dist/{types-W0QttuP_.d.cts → types-YoNQSxQH.d.cts} +3 -3
  225. package/dist/version.cjs +1 -1
  226. package/dist/version.js +1 -1
  227. package/dist/workflows/agent.d.cts +3 -3
  228. package/dist/workflows/agent.d.ts +3 -3
  229. package/dist/workflows/workflow.d.cts +1 -1
  230. package/dist/workflows/workflow.d.ts +1 -1
  231. package/package.json +2 -2
  232. package/dist/{emitter-36-9MnvA.d.ts → emitter-CL56qab4.d.ts} +1 -1
  233. package/dist/{emitter-jN55XZZq.d.cts → emitter-UkIkNrek.d.cts} +1 -1
@@ -10,6 +10,8 @@ var message_cjs = require('../../../backend/message.cjs');
10
10
  var env_cjs = require('../../../internals/env.cjs');
11
11
  var errors_cjs = require('../../../errors.cjs');
12
12
  var base_cjs = require('../../../tools/base.cjs');
13
+ var object_cjs = require('../../../internals/helpers/object.cjs');
14
+ var node_crypto = require('node:crypto');
13
15
 
14
16
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
17
 
@@ -69,6 +71,7 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
69
71
  signal: run.signal,
70
72
  returnObject: true
71
73
  });
74
+ const toolCallIds = /* @__PURE__ */ new Map();
72
75
  for await (const raw of stream) {
73
76
  if (run.signal.aborted) {
74
77
  stream.controller.abort(run.signal.aborted);
@@ -77,11 +80,33 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
77
80
  const { messages, finishReason, usage } = this.extractOutput(raw.data.choices.map(({ delta, ...choice }) => ({
78
81
  ...choice,
79
82
  message: delta
80
- })), raw.data.usage, raw.data.id);
83
+ })), raw.data.usage, raw.data.id, toolCallIds);
81
84
  yield new chat_cjs.ChatModelOutput(messages, usage, finishReason);
82
85
  }
83
86
  }
84
- extractOutput(choices, usage, id) {
87
+ extractOutput(choices, usage, id, toolCallIdsByName) {
88
+ if (!toolCallIdsByName) {
89
+ toolCallIdsByName = /* @__PURE__ */ new Map();
90
+ }
91
+ const extractToolCall = /* @__PURE__ */ __name((toolCallId, toolCallName) => {
92
+ if (!toolCallName && !toolCallId) {
93
+ [toolCallName, toolCallId] = object_cjs.getLast(toolCallIdsByName, [
94
+ "",
95
+ ""
96
+ ]);
97
+ }
98
+ if (!toolCallId) {
99
+ toolCallId = toolCallIdsByName.get(toolCallName) || "";
100
+ }
101
+ if (!toolCallId) {
102
+ toolCallId = `chatcmpl-tool-${node_crypto.randomBytes(16).toString("hex")}`;
103
+ }
104
+ toolCallIdsByName.set(toolCallName, toolCallId);
105
+ return {
106
+ toolCallId,
107
+ toolName: toolCallName
108
+ };
109
+ }, "extractToolCall");
85
110
  return {
86
111
  finishReason: remeda.findLast(choices, (choice) => Boolean(choice?.finish_reason))?.finish_reason,
87
112
  usage: usage ? {
@@ -91,6 +116,14 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
91
116
  } : void 0,
92
117
  messages: choices.flatMap(({ message }) => {
93
118
  const messages = [];
119
+ const reasoning = message?.reasoning_content;
120
+ if (reasoning) {
121
+ const msg = new message_cjs.AssistantMessage({
122
+ type: "text",
123
+ text: reasoning
124
+ }, {}, id);
125
+ messages.push(msg);
126
+ }
94
127
  if (message?.content) {
95
128
  const msg = new message_cjs.AssistantMessage({
96
129
  type: "text",
@@ -98,13 +131,16 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
98
131
  }, {}, id);
99
132
  messages.push(msg);
100
133
  }
101
- if (message?.tool_calls) {
102
- const msg = new message_cjs.AssistantMessage(message.tool_calls.map((call) => ({
103
- type: "tool-call",
104
- toolCallId: call.id,
105
- toolName: call.function.name,
106
- input: call.function.arguments
107
- })), {}, id);
134
+ if (message?.tool_calls && message.tool_calls.length > 0) {
135
+ const chunks = [];
136
+ for (const toolCall of message.tool_calls) {
137
+ chunks.push({
138
+ type: "tool-call",
139
+ ...extractToolCall(toolCall.id, toolCall.function.name),
140
+ input: toolCall.function.arguments
141
+ });
142
+ }
143
+ const msg = new message_cjs.AssistantMessage(chunks, {}, id);
108
144
  messages.push(msg);
109
145
  }
110
146
  if (message?.refusal) {
@@ -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","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.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
+ {"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","toolCallIds","Map","raw","aborted","controller","abort","data","map","delta","choice","message","toolCallIdsByName","extractToolCall","toolCallId","toolCallName","getLast","get","randomBytes","toString","set","toolName","findLast","Boolean","finish_reason","completionTokens","completion_tokens","promptTokens","prompt_tokens","totalTokens","total_tokens","flatMap","reasoning","reasoning_content","msg","AssistantMessage","type","text","push","content","tool_calls","length","chunks","toolCall","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;AAY1D,MAAMC,yBAAyBC,kBAAAA,CAAAA;EAxCtC;;;;AAyCqBC,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;AAEA,IAAA,MAAMC,WAAAA,uBAAkBC,GAAAA,EAAAA;AACxB,IAAA,WAAA,MAAiBC,OAAOL,MAAAA,EAAQ;AAC9B,MAAA,IAAId,GAAAA,CAAIK,OAAOe,OAAAA,EAAS;AACtBN,QAAAA,MAAAA,CAAOO,UAAAA,CAAWC,KAAAA,CAAMtB,GAAAA,CAAIK,MAAAA,CAAOe,OAAO,CAAA;AAC1C,QAAA;AACF;AACA,MAAA,MAAM,EAAEd,QAAAA,EAAUC,YAAAA,EAAcC,KAAAA,EAAK,GAAK,KAAKC,aAAAA,CAC7CU,GAAAA,CAAII,IAAAA,CAAKb,OAAAA,CAAQc,IAAI,CAAC,EAAEC,KAAAA,EAAO,GAAGC,QAAAA,MAAc;QAAE,GAAGA,MAAAA;QAAQC,OAAAA,EAASF;AAAM,OAAA,CAAA,GAC5EN,GAAAA,CAAII,IAAAA,CAAKf,OACTW,GAAAA,CAAII,IAAAA,CAAKZ,IACTM,WAAAA,CAAAA;AAEF,MAAA,MAAM,IAAIL,wBAAAA,CAAgBN,QAAAA,EAAUE,KAAAA,EAAOD,YAAAA,CAAAA;AAC7C;AACF;EAEUE,aAAAA,CACRC,OAAAA,EACAF,KAAAA,EACAG,EAAAA,EACAiB,iBAAAA,EACA;AACA,IAAA,IAAI,CAACA,iBAAAA,EAAmB;AACtBA,MAAAA,iBAAAA,uBAAwBV,GAAAA,EAAAA;AAC1B;AAEA,IAAA,MAAMW,eAAAA,mBAAkB,MAAA,CAAA,CACtBC,UAAAA,EACAC,YAAAA,KAAAA;AAIA,MAAA,IAAI,CAACA,YAAAA,IAAgB,CAACD,UAAAA,EAAY;AAChC,QAAA,CAACC,YAAAA,EAAcD,UAAAA,CAAAA,GAAcE,kBAAAA,CAAQJ,iBAAAA,EAAmB;AAAC,UAAA,EAAA;AAAI,UAAA;AAAG,SAAA,CAAA;AAClE;AACA,MAAA,IAAI,CAACE,UAAAA,EAAY;AACfA,QAAAA,UAAAA,GAAaF,iBAAAA,CAAkBK,GAAAA,CAAIF,YAAAA,CAAAA,IAAiB,EAAA;AACtD;AACA,MAAA,IAAI,CAACD,UAAAA,EAAY;AACfA,QAAAA,UAAAA,GAAa,iBAAiBI,uBAAAA,CAAY,EAAA,CAAA,CAAIC,QAAAA,CAAS,KAAA,CAAA,CAAA,CAAA;AACzD;AACAP,MAAAA,iBAAAA,CAAkBQ,GAAAA,CAAIL,cAAcD,UAAAA,CAAAA;AACpC,MAAA,OAAO;AACLA,QAAAA,UAAAA;QACAO,QAAAA,EAAUN;AACZ,OAAA;KACF,EApBwB,iBAAA,CAAA;AAsBxB,IAAA,OAAO;MACLxB,YAAAA,EAAc+B,eAAAA,CAAS5B,SAAS,CAACgB,MAAAA,KAAWa,QAAQb,MAAAA,EAAQc,aAAAA,CAAAA,CAAAA,EACxDA,aAAAA;AACJhC,MAAAA,KAAAA,EAAOA,KAAAA,GACH;AACEiC,QAAAA,gBAAAA,EAAkBjC,MAAMkC,iBAAAA,IAAqB,CAAA;AAC7CC,QAAAA,YAAAA,EAAcnC,MAAMoC,aAAAA,IAAiB,CAAA;AACrCC,QAAAA,WAAAA,EAAarC,MAAMsC,YAAAA,IAAgB;OACrC,GACAlD,MAAAA;AACJU,MAAAA,QAAAA,EAAUI,OAAAA,CACPqC,OAAAA,CAAQ,CAAC,EAAEpB,SAAO,KAAE;AACnB,QAAA,MAAMrB,WAAsB,EAAA;AAG5B,QAAA,MAAM0C,YAAYrB,OAAAA,EAASsB,iBAAAA;AAC3B,QAAA,IAAID,SAAAA,EAAW;AACb,UAAA,MAAME,GAAAA,GAAM,IAAIC,4BAAAA,CAAiB;YAAEC,IAAAA,EAAM,MAAA;YAAQC,IAAAA,EAAML;WAAU,EAAG,IAAIrC,EAAAA,CAAAA;AACxEL,UAAAA,QAAAA,CAASgD,KAAKJ,GAAAA,CAAAA;AAChB;AACA,QAAA,IAAIvB,SAAS4B,OAAAA,EAAS;AACpB,UAAA,MAAML,GAAAA,GAAM,IAAIC,4BAAAA,CAAiB;YAAEC,IAAAA,EAAM,MAAA;AAAQC,YAAAA,IAAAA,EAAM1B,OAAAA,CAAQ4B;WAAQ,EAAG,IAAI5C,EAAAA,CAAAA;AAC9EL,UAAAA,QAAAA,CAASgD,KAAKJ,GAAAA,CAAAA;AAChB;AACA,QAAA,IAAIvB,OAAAA,EAAS6B,UAAAA,IAAc7B,OAAAA,CAAQ6B,UAAAA,CAAWC,SAAS,CAAA,EAAG;AACxD,UAAA,MAAMC,SAAyB,EAAA;AAC/B,UAAA,KAAA,MAAWC,QAAAA,IAAYhC,QAAQ6B,UAAAA,EAAY;AACzCE,YAAAA,MAAAA,CAAOJ,IAAAA,CAAK;cACVF,IAAAA,EAAM,WAAA;AACN,cAAA,GAAGvB,eAAAA,CAAgB8B,QAAAA,CAAShD,EAAAA,EAAIgD,QAAAA,CAASC,SAASlE,IAAI,CAAA;AACtDK,cAAAA,KAAAA,EAAO4D,SAASC,QAAAA,CAASC;aAC3B,CAAA;AACF;AACA,UAAA,MAAMX,MAAM,IAAIC,4BAAAA,CAAiBO,MAAAA,EAAQ,IAAI/C,EAAAA,CAAAA;AAC7CL,UAAAA,QAAAA,CAASgD,KAAKJ,GAAAA,CAAAA;AAChB;AACA,QAAA,IAAIvB,SAASmC,OAAAA,EAAS;AACpB,UAAA,MAAMZ,GAAAA,GAAM,IAAIC,4BAAAA,CAAiB;YAAEC,IAAAA,EAAM,MAAA;AAAQC,YAAAA,IAAAA,EAAM1B,OAAAA,CAAQmC;WAAQ,EAAG,IAAInD,EAAAA,CAAAA;AAC9EL,UAAAA,QAAAA,CAASgD,KAAKJ,GAAAA,CAAAA;AAChB;AACA,QAAA,OAAO5C,QAAAA;OACT,CAAA,CACCyD,OAAOC,eAAAA;AACZ,KAAA;AACF;AAEA,EAAA,MAAgB5D,aAAa6D,SAAAA,EAAoD;AAC/E,IAAA,MAAMlE,KAAAA,GAAwB;AAAE,MAAA,GAAG,IAAA,CAAKJ,UAAAA;MAAY,GAAGsE;AAAU,KAAA;AACjE,IAAA,MAAMC,KAAAA,GAAkC,MAAMC,OAAAA,CAAQC,GAAAA,CAAAA,CACnDrE,KAAAA,CAAMmE,SAAS,EAAA,EAAI1C,GAAAA,CAAI,OAAO6C,IAAAA,MAAU;MACvCjB,IAAAA,EAAM,UAAA;MACNQ,QAAAA,EAAU;AACRlE,QAAAA,IAAAA,EAAM2E,IAAAA,CAAK3E,IAAAA;AACX4E,QAAAA,WAAAA,EAAaD,IAAAA,CAAKC,WAAAA;QAClB3E,UAAAA,EAAY,MAAM0E,KAAKE,kBAAAA;AACzB;AACF,KAAA,CAAA,CAAA,CAAA;AAGF,IAAA,MAAMC,UAAAA,GAAsE;MAC1EC,UAAAA,EAAY7E,MAAAA;MACZ8E,gBAAAA,EAAkB9E;AACpB,KAAA;AACA,IAAA,IAAIG,MAAM0E,UAAAA,EAAY;AACpB,MAAA,IAAI1E,KAAAA,CAAM0E,sBAAsBE,aAAAA,EAAM;AACpCH,QAAAA,UAAAA,CAAWC,UAAAA,GAAa;UACtBrB,IAAAA,EAAM,UAAA;UACNQ,QAAAA,EAAU;AAAElE,YAAAA,IAAAA,EAAMK,MAAM0E,UAAAA,CAAW/E;AAAK;AAC1C,SAAA;AACF,OAAA,MAAA,IAAW,IAAA,CAAKP,iBAAAA,CAAkByF,QAAAA,CAAS7E,KAAAA,CAAM0E,UAAU,CAAA,EAAG;AAC5DD,QAAAA,UAAAA,CAAWE,mBAAmB3E,KAAAA,CAAM0E,UAAAA;AACtC;AACF;AAEA,IAAA,OAAO;AACLpF,MAAAA,OAAAA,EAAS,IAAA,CAAKA,OAAAA;AACdiB,MAAAA,QAAAA,EAAUP,KAAAA,CAAMO,QAAAA,CAASyC,OAAAA,CAAQ,CAACpB,OAAAA,KAAAA;AAChC,QAAA,IAAIA,mBAAmBkD,uBAAAA,EAAa;AAClC,UAAA,OAAOlD,OAAAA,CAAQ4B,OAAAA,CAAQ/B,GAAAA,CACrB,CAAC+B,OAAAA,MAAkC;YACjCuB,IAAAA,EAAM,MAAA;YACNvB,OAAAA,EACE,OAAOA,OAAAA,CAAQwB,MAAAA,CAAOC,KAAAA,KAAU,QAAA,GAC5BzB,QAAQwB,MAAAA,CAAOC,KAAAA,GACfC,IAAAA,CAAKC,SAAAA,CAAU3B,OAAAA,CAAAA;AACrB4B,YAAAA,YAAAA,EAAc5B,OAAAA,CAAQzB;WACxB,CAAA,CAAA;AAEJ,SAAA,MAAA,IAAWH,mBAAmByD,yBAAAA,EAAe;AAC3C,UAAA,OAAOzD,OAAAA,CAAQ4B,OAAAA,CAAQ/B,GAAAA,CACrB,CAAC+B,OAAAA,MAAoC;YACnCuB,IAAAA,EAAM,QAAA;AACNvB,YAAAA,OAAAA,EAASA,OAAAA,CAAQF;WACnB,CAAA,CAAA;AAEJ,SAAA,MAAA,IAAW1B,mBAAmBwB,4BAAAA,EAAkB;AAC9C,UAAA,OAAOxB,OAAAA,CAAQ4B,OAAAA,CAAQ/B,GAAAA,CACrB,CAAC+B,OAAAA,MAAuC;YACtCuB,IAAAA,EAAM,WAAA;YACN,GAAIvB,OAAAA,CAAQH,SAAS,MAAA,IAAU;AAC7BG,cAAAA,OAAAA,EAASA,OAAAA,CAAQF;AACnB,aAAA;YACA,GAAIE,OAAAA,CAAQH,SAAS,WAAA,IAAe;AAClCzC,cAAAA,EAAAA,EAAI4C,OAAAA,CAAQzB,UAAAA;cACZsB,IAAAA,EAAM,UAAA;cACNQ,QAAAA,EAAU;AACRlE,gBAAAA,IAAAA,EAAM6D,OAAAA,CAAQlB,QAAAA;gBACdwB,SAAAA,EAAWoB,IAAAA,CAAKC,SAAAA,CAAU3B,OAAAA,CAAQxD,KAAK;AACzC;AACF,aAAA;AACA,YAAA,GAAA,CAAI,MAAA;AACF,cAAA,IAAIwD,OAAAA,CAAQH,SAAS,MAAA,EAAQ;AAC3B,gBAAA,MAAM,IAAIiC,MAAM,8CAAA,CAAA;AAClB;AACA,cAAA,OAAO,EAAC;aACV;WACF,CAAA,CAAA;SAEJ,MAAO;AACL,UAAA,OAAO;AAAC1D,YAAAA,OAAAA,CAAQ2D,OAAAA;;AAClB;OACF,CAAA;AACAC,MAAAA,OAAAA,EAAS,KAAK3G,MAAAA,CAAO2G,OAAAA;AACrBC,MAAAA,SAAAA,EAAW,KAAK5G,MAAAA,CAAO4G,SAAAA;MACvBtB,KAAAA,EAAOuB,cAAAA,CAAQvB,KAAAA,CAAAA,GAAStE,MAAAA,GAAYsE,KAAAA;MACpCwB,cAAAA,EAAgB9F,MAAAA;AAChB,MAAA,GAAIG,MAAM2F,cAAAA,IAAkB;QAC1BA,cAAAA,EAAgB;AAAEtC,UAAAA,IAAAA,EAAM5E,IAAAA,CAAKmH;AAAY;AAC3C,OAAA;AACAC,MAAAA,IAAAA,EAAM7F,KAAAA,CAAM6F,IAAAA;AACZC,MAAAA,gBAAAA,EAAkB9F,KAAAA,CAAM8F,gBAAAA;AACxBC,MAAAA,WAAAA,EAAa/F,KAAAA,CAAM+F,WAAAA;AACnBC,MAAAA,CAAAA,EAAGhG,KAAAA,CAAMgG,CAAAA;AACTC,MAAAA,SAAAA,EAAWjG,KAAAA,CAAMiG,SAAAA;AACjBC,MAAAA,eAAAA,EAAiBlG,KAAAA,CAAMkG,eAAAA;AACvBC,MAAAA,IAAAA,EAAMnG,KAAAA,CAAMoG,aAAAA;AACZC,MAAAA,IAAAA,EAAMrG,KAAAA,CAAMqG,IAAAA;MACZ,GAAG5B;AACL,KAAA;AACF;EAEA6B,cAAAA,GAAiB;AACf,IAAA,OAAO;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACThH,MAAAA,OAAAA,EAAS,IAAA,CAAKA,OAAAA;MACdM,UAAAA,EAAY2G,qBAAAA,CAAY,KAAK3G,UAAU,CAAA;AACvCf,MAAAA,MAAAA,EAAQ,IAAA,CAAKA;AACf,KAAA;AACF;AAEA2H,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\";\nimport { getLast } from \"@/internals/helpers/object.js\";\nimport { randomBytes } from \"node:crypto\";\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\n const toolCallIds = new Map<string, string>(); // toolName / id\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 toolCallIds,\n );\n yield new ChatModelOutput(messages, usage, finishReason);\n }\n }\n\n protected extractOutput(\n choices: TextChatResultChoice[],\n usage?: TextChatUsage,\n id?: string,\n toolCallIdsByName?: Map<string, string>,\n ) {\n if (!toolCallIdsByName) {\n toolCallIdsByName = new Map();\n }\n\n const extractToolCall = (\n toolCallId: string,\n toolCallName: string,\n ): Pick<ToolCallPart, \"toolName\" | \"toolCallId\"> => {\n // Some tool call parts don't have the 'id'\n // this function tries to guess it based on the previous chunks\n if (!toolCallName && !toolCallId) {\n [toolCallName, toolCallId] = getLast(toolCallIdsByName, [\"\", \"\"]);\n }\n if (!toolCallId) {\n toolCallId = toolCallIdsByName.get(toolCallName) || \"\";\n }\n if (!toolCallId) {\n toolCallId = `chatcmpl-tool-${randomBytes(16).toString(\"hex\")}`;\n }\n toolCallIdsByName.set(toolCallName, toolCallId);\n return {\n toolCallId: toolCallId,\n toolName: toolCallName,\n };\n };\n\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\n // @ts-expect-error wrong types\n const reasoning = message?.reasoning_content;\n if (reasoning) {\n const msg = new AssistantMessage({ type: \"text\", text: reasoning }, {}, id);\n messages.push(msg);\n }\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 && message.tool_calls.length > 0) {\n const chunks: ToolCallPart[] = [];\n for (const toolCall of message.tool_calls) {\n chunks.push({\n type: \"tool-call\",\n ...extractToolCall(toolCall.id, toolCall.function.name),\n input: toolCall.function.arguments,\n });\n }\n const msg = new AssistantMessage(chunks, {}, id);\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,15 +1,16 @@
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-BOb9n7AJ.cjs';
2
+ import { GetRunContext, MiddlewareType } from '../../../context.cjs';
3
+ 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-DaqV3woF.cjs';
3
4
  import { Message, MessageContentPart } from '../../../backend/message.cjs';
4
5
  import { WatsonxClient, WatsonxClientSettings } from './client.cjs';
5
6
  import { TextChatResultChoice, TextChatUsage, TextChatParams } from '@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js';
6
- import { E as Emitter } from '../../../emitter-jN55XZZq.cjs';
7
- import { GetRunContext } from '../../../context.cjs';
7
+ import { E as Emitter } from '../../../emitter-UkIkNrek.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 '../../../internals/helpers/promise.cjs';
13
14
  import 'promise-based-task';
14
15
  import '../../../cache/base.cjs';
15
16
  import '../../../backend/constants.cjs';
@@ -18,7 +19,6 @@ import 'ajv';
18
19
  import '../../../internals/helpers/schema.cjs';
19
20
  import 'zod';
20
21
  import 'zod-to-json-schema';
21
- import '../../../internals/helpers/promise.cjs';
22
22
  import '../../../template.cjs';
23
23
  import 'ai';
24
24
  import '@ibm-cloud/watsonx-ai';
@@ -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, id?: string): {
38
+ protected extractOutput(choices: TextChatResultChoice[], usage?: TextChatUsage, id?: string, toolCallIdsByName?: Map<string, string>): {
39
39
  finishReason: ChatModelOutput["finishReason"];
40
40
  usage: {
41
41
  completionTokens: number;
@@ -51,10 +51,13 @@ declare class WatsonxChatModel extends ChatModel {
51
51
  client: WatsonxClient;
52
52
  cache: ChatModelCache;
53
53
  emitter: Emitter<ChatModelEvents>;
54
+ middlewares: MiddlewareType<any>[];
54
55
  logger: Logger;
55
56
  toolChoiceSupport: ChatModelToolChoiceSupport[];
56
57
  toolCallFallbackViaResponseFormat: boolean;
57
58
  modelSupportsToolCalling: boolean;
59
+ retryOnEmptyResponse: boolean;
60
+ fixInvalidToolCalls: boolean;
58
61
  };
59
62
  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void;
60
63
  }
@@ -1,15 +1,16 @@
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-DrqwUgD8.js';
2
+ import { GetRunContext, MiddlewareType } from '../../../context.js';
3
+ 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-DTxmaKP0.js';
3
4
  import { Message, MessageContentPart } from '../../../backend/message.js';
4
5
  import { WatsonxClient, WatsonxClientSettings } from './client.js';
5
6
  import { TextChatResultChoice, TextChatUsage, TextChatParams } from '@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js';
6
- import { E as Emitter } from '../../../emitter-36-9MnvA.js';
7
- import { GetRunContext } from '../../../context.js';
7
+ import { E as Emitter } from '../../../emitter-CL56qab4.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 '../../../internals/helpers/promise.js';
13
14
  import 'promise-based-task';
14
15
  import '../../../cache/base.js';
15
16
  import '../../../backend/constants.js';
@@ -18,7 +19,6 @@ import 'ajv';
18
19
  import '../../../internals/helpers/schema.js';
19
20
  import 'zod';
20
21
  import 'zod-to-json-schema';
21
- import '../../../internals/helpers/promise.js';
22
22
  import '../../../template.js';
23
23
  import 'ai';
24
24
  import '@ibm-cloud/watsonx-ai';
@@ -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, id?: string): {
38
+ protected extractOutput(choices: TextChatResultChoice[], usage?: TextChatUsage, id?: string, toolCallIdsByName?: Map<string, string>): {
39
39
  finishReason: ChatModelOutput["finishReason"];
40
40
  usage: {
41
41
  completionTokens: number;
@@ -51,10 +51,13 @@ declare class WatsonxChatModel extends ChatModel {
51
51
  client: WatsonxClient;
52
52
  cache: ChatModelCache;
53
53
  emitter: Emitter<ChatModelEvents>;
54
+ middlewares: MiddlewareType<any>[];
54
55
  logger: Logger;
55
56
  toolChoiceSupport: ChatModelToolChoiceSupport[];
56
57
  toolCallFallbackViaResponseFormat: boolean;
57
58
  modelSupportsToolCalling: boolean;
59
+ retryOnEmptyResponse: boolean;
60
+ fixInvalidToolCalls: boolean;
58
61
  };
59
62
  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void;
60
63
  }
@@ -8,6 +8,8 @@ import { AssistantMessage, ToolMessage, SystemMessage } from '../../../backend/m
8
8
  import { getEnv } from '../../../internals/env.js';
9
9
  import { NotImplementedError } from '../../../errors.js';
10
10
  import { Tool } from '../../../tools/base.js';
11
+ import { getLast } from '../../../internals/helpers/object.js';
12
+ import { randomBytes } from 'node:crypto';
11
13
 
12
14
  var __defProp = Object.defineProperty;
13
15
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
@@ -63,6 +65,7 @@ class WatsonxChatModel extends ChatModel {
63
65
  signal: run.signal,
64
66
  returnObject: true
65
67
  });
68
+ const toolCallIds = /* @__PURE__ */ new Map();
66
69
  for await (const raw of stream) {
67
70
  if (run.signal.aborted) {
68
71
  stream.controller.abort(run.signal.aborted);
@@ -71,11 +74,33 @@ class WatsonxChatModel extends ChatModel {
71
74
  const { messages, finishReason, usage } = this.extractOutput(raw.data.choices.map(({ delta, ...choice }) => ({
72
75
  ...choice,
73
76
  message: delta
74
- })), raw.data.usage, raw.data.id);
77
+ })), raw.data.usage, raw.data.id, toolCallIds);
75
78
  yield new ChatModelOutput(messages, usage, finishReason);
76
79
  }
77
80
  }
78
- extractOutput(choices, usage, id) {
81
+ extractOutput(choices, usage, id, toolCallIdsByName) {
82
+ if (!toolCallIdsByName) {
83
+ toolCallIdsByName = /* @__PURE__ */ new Map();
84
+ }
85
+ const extractToolCall = /* @__PURE__ */ __name((toolCallId, toolCallName) => {
86
+ if (!toolCallName && !toolCallId) {
87
+ [toolCallName, toolCallId] = getLast(toolCallIdsByName, [
88
+ "",
89
+ ""
90
+ ]);
91
+ }
92
+ if (!toolCallId) {
93
+ toolCallId = toolCallIdsByName.get(toolCallName) || "";
94
+ }
95
+ if (!toolCallId) {
96
+ toolCallId = `chatcmpl-tool-${randomBytes(16).toString("hex")}`;
97
+ }
98
+ toolCallIdsByName.set(toolCallName, toolCallId);
99
+ return {
100
+ toolCallId,
101
+ toolName: toolCallName
102
+ };
103
+ }, "extractToolCall");
79
104
  return {
80
105
  finishReason: findLast(choices, (choice) => Boolean(choice?.finish_reason))?.finish_reason,
81
106
  usage: usage ? {
@@ -85,6 +110,14 @@ class WatsonxChatModel extends ChatModel {
85
110
  } : void 0,
86
111
  messages: choices.flatMap(({ message }) => {
87
112
  const messages = [];
113
+ const reasoning = message?.reasoning_content;
114
+ if (reasoning) {
115
+ const msg = new AssistantMessage({
116
+ type: "text",
117
+ text: reasoning
118
+ }, {}, id);
119
+ messages.push(msg);
120
+ }
88
121
  if (message?.content) {
89
122
  const msg = new AssistantMessage({
90
123
  type: "text",
@@ -92,13 +125,16 @@ class WatsonxChatModel extends ChatModel {
92
125
  }, {}, id);
93
126
  messages.push(msg);
94
127
  }
95
- if (message?.tool_calls) {
96
- const msg = new AssistantMessage(message.tool_calls.map((call) => ({
97
- type: "tool-call",
98
- toolCallId: call.id,
99
- toolName: call.function.name,
100
- input: call.function.arguments
101
- })), {}, id);
128
+ if (message?.tool_calls && message.tool_calls.length > 0) {
129
+ const chunks = [];
130
+ for (const toolCall of message.tool_calls) {
131
+ chunks.push({
132
+ type: "tool-call",
133
+ ...extractToolCall(toolCall.id, toolCall.function.name),
134
+ input: toolCall.function.arguments
135
+ });
136
+ }
137
+ const msg = new AssistantMessage(chunks, {}, id);
102
138
  messages.push(msg);
103
139
  }
104
140
  if (message?.refusal) {
@@ -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","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,GAAO,iBAAA,CAAkB,sBAAA,CAAuB,SAAA,CAAU,IAAA;AAU1D,MAAMC,yBAAyBC,SAAAA,CAAAA;EAtCtC;;;;AAuCqBC,EAAAA,MAAAA;EACHC,OAAAA,GAA4BC,OAAAA,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,MAAAA,CAAO,oBAAA,EAAsB,2BAAA,GACvDV,MAAAA,EACA;AACA,IAAA,KAAA,EAAK,EAAA,KAHWS,OAAAA,GAAAA,OAAAA;AAIhB,IAAA,IAAA,CAAKT,MAAAA,GAASW,aAAAA,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,mBAAAA,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,eAAAA,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,eAAAA,CAAgBN,QAAAA,EAAUE,KAAAA,EAAOD,YAAAA,CAAAA;AAC7C;AACF;EAEUE,aAAAA,CAAcC,OAAAA,EAAiCF,OAAuBG,EAAAA,EAAa;AAC3F,IAAA,OAAO;MACLJ,YAAAA,EAAcmB,QAAAA,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,gBAAAA,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,gBAAAA,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,gBAAAA,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,QAAAA;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,IAAAA,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,WAAAA,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,aAAAA,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,gBAAAA,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,OAAAA,CAAQvB,KAAAA,CAAAA,GAASxD,MAAAA,GAAYwD,KAAAA;MACpCwB,cAAAA,EAAgBhF,MAAAA;AAChB,MAAA,GAAIG,MAAM6E,cAAAA,IAAkB;QAC1BA,cAAAA,EAAgB;AAAErC,UAAAA,IAAAA,EAAM9D,IAAAA,CAAKoG;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,WAAAA,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.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
+ {"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","toolCallIds","Map","raw","aborted","controller","abort","data","map","delta","choice","message","toolCallIdsByName","extractToolCall","toolCallId","toolCallName","getLast","get","randomBytes","toString","set","toolName","findLast","Boolean","finish_reason","completionTokens","completion_tokens","promptTokens","prompt_tokens","totalTokens","total_tokens","flatMap","reasoning","reasoning_content","msg","AssistantMessage","type","text","push","content","tool_calls","length","chunks","toolCall","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\";\nimport { getLast } from \"@/internals/helpers/object.js\";\nimport { randomBytes } from \"node:crypto\";\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\n const toolCallIds = new Map<string, string>(); // toolName / id\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 toolCallIds,\n );\n yield new ChatModelOutput(messages, usage, finishReason);\n }\n }\n\n protected extractOutput(\n choices: TextChatResultChoice[],\n usage?: TextChatUsage,\n id?: string,\n toolCallIdsByName?: Map<string, string>,\n ) {\n if (!toolCallIdsByName) {\n toolCallIdsByName = new Map();\n }\n\n const extractToolCall = (\n toolCallId: string,\n toolCallName: string,\n ): Pick<ToolCallPart, \"toolName\" | \"toolCallId\"> => {\n // Some tool call parts don't have the 'id'\n // this function tries to guess it based on the previous chunks\n if (!toolCallName && !toolCallId) {\n [toolCallName, toolCallId] = getLast(toolCallIdsByName, [\"\", \"\"]);\n }\n if (!toolCallId) {\n toolCallId = toolCallIdsByName.get(toolCallName) || \"\";\n }\n if (!toolCallId) {\n toolCallId = `chatcmpl-tool-${randomBytes(16).toString(\"hex\")}`;\n }\n toolCallIdsByName.set(toolCallName, toolCallId);\n return {\n toolCallId: toolCallId,\n toolName: toolCallName,\n };\n };\n\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\n // @ts-expect-error wrong types\n const reasoning = message?.reasoning_content;\n if (reasoning) {\n const msg = new AssistantMessage({ type: \"text\", text: reasoning }, {}, id);\n messages.push(msg);\n }\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 && message.tool_calls.length > 0) {\n const chunks: ToolCallPart[] = [];\n for (const toolCall of message.tool_calls) {\n chunks.push({\n type: \"tool-call\",\n ...extractToolCall(toolCall.id, toolCall.function.name),\n input: toolCall.function.arguments,\n });\n }\n const msg = new AssistantMessage(chunks, {}, id);\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-jN55XZZq.cjs';
4
+ import { E as Emitter } from '../../../emitter-UkIkNrek.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-BOb9n7AJ.cjs';
14
+ import '../../../chat-DaqV3woF.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-36-9MnvA.js';
4
+ import { E as Emitter } from '../../../emitter-CL56qab4.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-DrqwUgD8.js';
14
+ import '../../../chat-DTxmaKP0.js';
15
15
  import '../../../backend/message.js';
16
16
  import 'ai';
17
17
  import 'promise-based-task';
@@ -1,18 +1,18 @@
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-BOb9n7AJ.cjs';
4
+ import { C as ChatModelParameters } from '../../../chat-DaqV3woF.cjs';
5
5
  import '../../../logger/logger.cjs';
6
6
  import 'pino';
7
7
  import '../../../errors.cjs';
8
8
  import '../../../internals/types.cjs';
9
9
  import '../../../internals/helpers/guards.cjs';
10
10
  import '../../../internals/serializable.cjs';
11
- import 'ai';
12
- import '../../../emitter-jN55XZZq.cjs';
13
- import '../../../backend/message.cjs';
14
11
  import '../../../context.cjs';
12
+ import '../../../emitter-UkIkNrek.cjs';
15
13
  import '../../../internals/helpers/promise.cjs';
14
+ import 'ai';
15
+ import '../../../backend/message.cjs';
16
16
  import 'promise-based-task';
17
17
  import '../../../cache/base.cjs';
18
18
  import '../../../backend/constants.cjs';
@@ -1,18 +1,18 @@
1
1
  import { VercelChatModel } from '../../vercel/backend/chat.js';
2
2
  import { XaiClientSettings, XaiClient } from './client.js';
3
3
  import { XaiProvider } from '@ai-sdk/xai';
4
- import { C as ChatModelParameters } from '../../../chat-DrqwUgD8.js';
4
+ import { C as ChatModelParameters } from '../../../chat-DTxmaKP0.js';
5
5
  import '../../../logger/logger.js';
6
6
  import 'pino';
7
7
  import '../../../errors.js';
8
8
  import '../../../internals/types.js';
9
9
  import '../../../internals/helpers/guards.js';
10
10
  import '../../../internals/serializable.js';
11
- import 'ai';
12
- import '../../../emitter-36-9MnvA.js';
13
- import '../../../backend/message.js';
14
11
  import '../../../context.js';
12
+ import '../../../emitter-CL56qab4.js';
15
13
  import '../../../internals/helpers/promise.js';
14
+ import 'ai';
15
+ import '../../../backend/message.js';
16
16
  import 'promise-based-task';
17
17
  import '../../../cache/base.js';
18
18
  import '../../../backend/constants.js';
@@ -1,12 +1,12 @@
1
1
  import { GetRunContext, RunContext, MiddlewareType } from './context.cjs';
2
- import { c as AgentMeta, a as BaseAgent } from './base-XfWeXQ-S.cjs';
2
+ import { c as AgentMeta, a as BaseAgent } from './base-BqzN2QwB.cjs';
3
3
  import { AnyTool } from './tools/base.cjs';
4
4
  import { BaseMemory } from './memory/base.cjs';
5
- import { E as Emitter } from './emitter-jN55XZZq.cjs';
5
+ import { E as Emitter } from './emitter-UkIkNrek.cjs';
6
6
  import { ReActAgentRunOptions, ReActAgentRunIteration, ReActAgentCallbacks, ReActAgentParserInput, ReActAgentMeta, ReActAgentRunInput, ReActAgentIterationToolResult, ReActAgentTemplates, ReActAgentExecutionConfig, ReActAgentRunOutput } from './agents/react/types.cjs';
7
7
  import { LinePrefixParser } from './parsers/linePrefix.cjs';
8
8
  import { Serializable } from './internals/serializable.cjs';
9
- import { m as ChatModel } from './chat-BOb9n7AJ.cjs';
9
+ import { m as ChatModel } from './chat-DaqV3woF.cjs';
10
10
  import { RetryCounter } from './internals/helpers/counter.cjs';
11
11
 
12
12
  interface ReActAgentRunnerLLMInput {
@@ -82,4 +82,4 @@ declare class ReActAgent extends BaseAgent<ReActAgentRunInput, ReActAgentRunOutp
82
82
  };
83
83
  }
84
84
 
85
- export { BaseRunner as B, type ReActAgentRunnerLLMInput as R, type ReActAgentRunnerToolInput as a, type ReActAgentInput as b, ReActAgent as c, type ReActAgentTemplateFactory as d };
85
+ export { BaseRunner as B, type ReActAgentInput as R, ReActAgent as a, type ReActAgentRunnerLLMInput as b, type ReActAgentRunnerToolInput as c, type ReActAgentTemplateFactory as d };
@@ -1,12 +1,12 @@
1
1
  import { GetRunContext, RunContext, MiddlewareType } from './context.js';
2
- import { c as AgentMeta, a as BaseAgent } from './base-CyFx7BRL.js';
2
+ import { c as AgentMeta, a as BaseAgent } from './base-BfhNzUYf.js';
3
3
  import { AnyTool } from './tools/base.js';
4
4
  import { BaseMemory } from './memory/base.js';
5
- import { E as Emitter } from './emitter-36-9MnvA.js';
5
+ import { E as Emitter } from './emitter-CL56qab4.js';
6
6
  import { ReActAgentRunOptions, ReActAgentRunIteration, ReActAgentCallbacks, ReActAgentParserInput, ReActAgentMeta, ReActAgentRunInput, ReActAgentIterationToolResult, ReActAgentTemplates, ReActAgentExecutionConfig, ReActAgentRunOutput } from './agents/react/types.js';
7
7
  import { LinePrefixParser } from './parsers/linePrefix.js';
8
8
  import { Serializable } from './internals/serializable.js';
9
- import { m as ChatModel } from './chat-DrqwUgD8.js';
9
+ import { m as ChatModel } from './chat-DTxmaKP0.js';
10
10
  import { RetryCounter } from './internals/helpers/counter.js';
11
11
 
12
12
  interface ReActAgentRunnerLLMInput {
@@ -82,4 +82,4 @@ declare class ReActAgent extends BaseAgent<ReActAgentRunInput, ReActAgentRunOutp
82
82
  };
83
83
  }
84
84
 
85
- export { BaseRunner as B, type ReActAgentRunnerLLMInput as R, type ReActAgentRunnerToolInput as a, type ReActAgentInput as b, ReActAgent as c, type ReActAgentTemplateFactory as d };
85
+ export { BaseRunner as B, type ReActAgentInput as R, ReActAgent as a, type ReActAgentRunnerLLMInput as b, type ReActAgentRunnerToolInput as c, type ReActAgentTemplateFactory as d };
@@ -1,8 +1,8 @@
1
1
  import '../context.cjs';
2
2
  import '../errors.cjs';
3
- export { A as AgentError, a as BaseAgent, B as BaseAgentRunOptions } from '../base-XfWeXQ-S.cjs';
3
+ export { A as AgentError, a as BaseAgent, B as BaseAgentRunOptions } from '../base-BqzN2QwB.cjs';
4
4
  import '../internals/serializable.cjs';
5
- import '../emitter-jN55XZZq.cjs';
5
+ import '../emitter-UkIkNrek.cjs';
6
6
  import '../memory/base.cjs';
7
7
  import '../internals/helpers/promise.cjs';
8
8
  import '../internals/types.cjs';