beeai-framework 0.1.9 → 0.1.11

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 (546) hide show
  1. package/README.md +18 -6
  2. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  3. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +7 -6
  4. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +7 -6
  5. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  6. package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
  7. package/dist/adapters/amazon-bedrock/backend/client.d.cts +1 -1
  8. package/dist/adapters/amazon-bedrock/backend/client.d.ts +1 -1
  9. package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
  10. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  11. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +15 -4
  12. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +15 -4
  13. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  14. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  15. package/dist/adapters/anthropic/backend/chat.d.cts +9 -8
  16. package/dist/adapters/anthropic/backend/chat.d.ts +9 -8
  17. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  18. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  19. package/dist/adapters/anthropic/backend/client.d.cts +1 -1
  20. package/dist/adapters/anthropic/backend/client.d.ts +1 -1
  21. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  22. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  23. package/dist/adapters/anthropic/backend/embedding.d.cts +15 -4
  24. package/dist/adapters/anthropic/backend/embedding.d.ts +15 -4
  25. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  26. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  27. package/dist/adapters/azure-openai/backend/chat.d.cts +9 -8
  28. package/dist/adapters/azure-openai/backend/chat.d.ts +9 -8
  29. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  30. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  31. package/dist/adapters/azure-openai/backend/client.d.cts +1 -1
  32. package/dist/adapters/azure-openai/backend/client.d.ts +1 -1
  33. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  34. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  35. package/dist/adapters/azure-openai/backend/embedding.d.cts +15 -4
  36. package/dist/adapters/azure-openai/backend/embedding.d.ts +15 -4
  37. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  38. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  39. package/dist/adapters/dummy/backend/chat.d.cts +12 -7
  40. package/dist/adapters/dummy/backend/chat.d.ts +12 -7
  41. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  42. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  43. package/dist/adapters/dummy/backend/embedding.d.cts +15 -3
  44. package/dist/adapters/dummy/backend/embedding.d.ts +15 -3
  45. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  46. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  47. package/dist/adapters/google-vertex/backend/chat.d.cts +9 -8
  48. package/dist/adapters/google-vertex/backend/chat.d.ts +9 -8
  49. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  50. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  51. package/dist/adapters/google-vertex/backend/client.d.cts +1 -1
  52. package/dist/adapters/google-vertex/backend/client.d.ts +1 -1
  53. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  54. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  55. package/dist/adapters/google-vertex/backend/embedding.d.cts +15 -4
  56. package/dist/adapters/google-vertex/backend/embedding.d.ts +15 -4
  57. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  58. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  59. package/dist/adapters/groq/backend/chat.d.cts +9 -8
  60. package/dist/adapters/groq/backend/chat.d.ts +9 -8
  61. package/dist/adapters/groq/backend/chat.js.map +1 -1
  62. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  63. package/dist/adapters/groq/backend/client.d.cts +1 -1
  64. package/dist/adapters/groq/backend/client.d.ts +1 -1
  65. package/dist/adapters/groq/backend/client.js.map +1 -1
  66. package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
  67. package/dist/adapters/groq/backend/embedding.d.cts +15 -4
  68. package/dist/adapters/groq/backend/embedding.d.ts +15 -4
  69. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  70. package/dist/adapters/langchain/backend/chat.cjs +5 -3
  71. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  72. package/dist/adapters/langchain/backend/chat.d.cts +12 -7
  73. package/dist/adapters/langchain/backend/chat.d.ts +12 -7
  74. package/dist/adapters/langchain/backend/chat.js +5 -3
  75. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  76. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  77. package/dist/adapters/langchain/backend/embedding.d.cts +15 -3
  78. package/dist/adapters/langchain/backend/embedding.d.ts +15 -3
  79. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  80. package/dist/adapters/langchain/tools.cjs.map +1 -1
  81. package/dist/adapters/langchain/tools.d.cts +1 -1
  82. package/dist/adapters/langchain/tools.d.ts +1 -1
  83. package/dist/adapters/langchain/tools.js.map +1 -1
  84. package/dist/adapters/ollama/backend/chat.cjs +4 -0
  85. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  86. package/dist/adapters/ollama/backend/chat.d.cts +10 -8
  87. package/dist/adapters/ollama/backend/chat.d.ts +10 -8
  88. package/dist/adapters/ollama/backend/chat.js +4 -0
  89. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  90. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  91. package/dist/adapters/ollama/backend/client.d.cts +1 -1
  92. package/dist/adapters/ollama/backend/client.d.ts +1 -1
  93. package/dist/adapters/ollama/backend/client.js.map +1 -1
  94. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  95. package/dist/adapters/ollama/backend/embedding.d.cts +15 -4
  96. package/dist/adapters/ollama/backend/embedding.d.ts +15 -4
  97. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  98. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  99. package/dist/adapters/openai/backend/chat.d.cts +7 -6
  100. package/dist/adapters/openai/backend/chat.d.ts +7 -6
  101. package/dist/adapters/openai/backend/chat.js.map +1 -1
  102. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  103. package/dist/adapters/openai/backend/client.d.cts +1 -1
  104. package/dist/adapters/openai/backend/client.d.ts +1 -1
  105. package/dist/adapters/openai/backend/client.js.map +1 -1
  106. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  107. package/dist/adapters/openai/backend/embedding.d.cts +15 -4
  108. package/dist/adapters/openai/backend/embedding.d.ts +15 -4
  109. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  110. package/dist/adapters/vercel/backend/chat.cjs +51 -7
  111. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  112. package/dist/adapters/vercel/backend/chat.d.cts +12 -7
  113. package/dist/adapters/vercel/backend/chat.d.ts +12 -7
  114. package/dist/adapters/vercel/backend/chat.js +54 -10
  115. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  116. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  117. package/dist/adapters/vercel/backend/embedding.d.cts +14 -3
  118. package/dist/adapters/vercel/backend/embedding.d.ts +14 -3
  119. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  120. package/dist/adapters/watsonx/backend/chat.cjs +25 -4
  121. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  122. package/dist/adapters/watsonx/backend/chat.d.cts +13 -7
  123. package/dist/adapters/watsonx/backend/chat.d.ts +13 -7
  124. package/dist/adapters/watsonx/backend/chat.js +25 -4
  125. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  126. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  127. package/dist/adapters/watsonx/backend/client.d.cts +1 -1
  128. package/dist/adapters/watsonx/backend/client.d.ts +1 -1
  129. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  130. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  131. package/dist/adapters/watsonx/backend/embedding.d.cts +15 -3
  132. package/dist/adapters/watsonx/backend/embedding.d.ts +15 -3
  133. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  134. package/dist/{agent-Bpt7IFa_.d.cts → agent-Ca5UE2P1.d.cts} +3 -3
  135. package/dist/{agent-Bf2FaCKy.d.ts → agent-CgsoqVL5.d.ts} +3 -3
  136. package/dist/agents/base.cjs.map +1 -1
  137. package/dist/agents/base.d.cts +2 -2
  138. package/dist/agents/base.d.ts +2 -2
  139. package/dist/agents/base.js.map +1 -1
  140. package/dist/agents/experimental/remote/agent.cjs.map +1 -1
  141. package/dist/agents/experimental/remote/agent.d.cts +2 -2
  142. package/dist/agents/experimental/remote/agent.d.ts +2 -2
  143. package/dist/agents/experimental/remote/agent.js.map +1 -1
  144. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  145. package/dist/agents/experimental/replan/agent.d.cts +6 -6
  146. package/dist/agents/experimental/replan/agent.d.ts +6 -6
  147. package/dist/agents/experimental/replan/agent.js.map +1 -1
  148. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  149. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  150. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  151. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  152. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  153. package/dist/agents/experimental/streamlit/agent.d.cts +6 -6
  154. package/dist/agents/experimental/streamlit/agent.d.ts +6 -6
  155. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  156. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  157. package/dist/agents/experimental/streamlit/prompts.d.cts +1 -1
  158. package/dist/agents/experimental/streamlit/prompts.d.ts +1 -1
  159. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  160. package/dist/agents/react/agent.cjs.map +1 -1
  161. package/dist/agents/react/agent.d.cts +6 -6
  162. package/dist/agents/react/agent.d.ts +6 -6
  163. package/dist/agents/react/agent.js.map +1 -1
  164. package/dist/agents/react/prompts.cjs.map +1 -1
  165. package/dist/agents/react/prompts.d.cts +2 -2
  166. package/dist/agents/react/prompts.d.ts +2 -2
  167. package/dist/agents/react/prompts.js.map +1 -1
  168. package/dist/agents/react/runners/base.cjs.map +1 -1
  169. package/dist/agents/react/runners/base.d.cts +6 -6
  170. package/dist/agents/react/runners/base.d.ts +6 -6
  171. package/dist/agents/react/runners/base.js.map +1 -1
  172. package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
  173. package/dist/agents/react/runners/deep-think/prompts.d.cts +2 -2
  174. package/dist/agents/react/runners/deep-think/prompts.d.ts +2 -2
  175. package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
  176. package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
  177. package/dist/agents/react/runners/deep-think/runner.d.cts +7 -7
  178. package/dist/agents/react/runners/deep-think/runner.d.ts +7 -7
  179. package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
  180. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  181. package/dist/agents/react/runners/default/runner.d.cts +9 -9
  182. package/dist/agents/react/runners/default/runner.d.ts +9 -9
  183. package/dist/agents/react/runners/default/runner.js.map +1 -1
  184. package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
  185. package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
  186. package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
  187. package/dist/agents/react/runners/granite/prompts.d.cts +2 -2
  188. package/dist/agents/react/runners/granite/prompts.d.ts +2 -2
  189. package/dist/agents/react/runners/granite/prompts.js.map +1 -1
  190. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  191. package/dist/agents/react/runners/granite/runner.d.cts +8 -8
  192. package/dist/agents/react/runners/granite/runner.d.ts +8 -8
  193. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  194. package/dist/agents/react/types.d.cts +5 -5
  195. package/dist/agents/react/types.d.ts +5 -5
  196. package/dist/agents/toolCalling/agent.cjs +33 -12
  197. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  198. package/dist/agents/toolCalling/agent.d.cts +7 -6
  199. package/dist/agents/toolCalling/agent.d.ts +7 -6
  200. package/dist/agents/toolCalling/agent.js +35 -14
  201. package/dist/agents/toolCalling/agent.js.map +1 -1
  202. package/dist/agents/toolCalling/prompts.cjs +3 -2
  203. package/dist/agents/toolCalling/prompts.cjs.map +1 -1
  204. package/dist/agents/toolCalling/prompts.d.cts +1 -1
  205. package/dist/agents/toolCalling/prompts.d.ts +1 -1
  206. package/dist/agents/toolCalling/prompts.js +3 -2
  207. package/dist/agents/toolCalling/prompts.js.map +1 -1
  208. package/dist/agents/toolCalling/types.d.cts +2 -2
  209. package/dist/agents/toolCalling/types.d.ts +2 -2
  210. package/dist/agents/types.d.cts +2 -2
  211. package/dist/agents/types.d.ts +2 -2
  212. package/dist/backend/backend.cjs.map +1 -1
  213. package/dist/backend/backend.d.cts +6 -5
  214. package/dist/backend/backend.d.ts +6 -5
  215. package/dist/backend/backend.js.map +1 -1
  216. package/dist/backend/chat.cjs +61 -3
  217. package/dist/backend/chat.cjs.map +1 -1
  218. package/dist/backend/chat.d.cts +17 -138
  219. package/dist/backend/chat.d.ts +17 -138
  220. package/dist/backend/chat.js +64 -6
  221. package/dist/backend/chat.js.map +1 -1
  222. package/dist/backend/client.cjs.map +1 -1
  223. package/dist/backend/client.d.cts +1 -1
  224. package/dist/backend/client.d.ts +1 -1
  225. package/dist/backend/client.js.map +1 -1
  226. package/dist/backend/constants.cjs +5 -0
  227. package/dist/backend/constants.cjs.map +1 -1
  228. package/dist/backend/constants.d.cts +6 -1
  229. package/dist/backend/constants.d.ts +6 -1
  230. package/dist/backend/constants.js +5 -0
  231. package/dist/backend/constants.js.map +1 -1
  232. package/dist/backend/core.d.cts +5 -4
  233. package/dist/backend/core.d.ts +5 -4
  234. package/dist/backend/embedding.cjs.map +1 -1
  235. package/dist/backend/embedding.d.cts +14 -2
  236. package/dist/backend/embedding.d.ts +14 -2
  237. package/dist/backend/embedding.js.map +1 -1
  238. package/dist/backend/errors.cjs.map +1 -1
  239. package/dist/backend/errors.d.cts +1 -1
  240. package/dist/backend/errors.d.ts +1 -1
  241. package/dist/backend/errors.js.map +1 -1
  242. package/dist/backend/message.cjs.map +1 -1
  243. package/dist/backend/message.d.cts +1 -1
  244. package/dist/backend/message.d.ts +1 -1
  245. package/dist/backend/message.js.map +1 -1
  246. package/dist/backend/utils.cjs +35 -0
  247. package/dist/backend/utils.cjs.map +1 -1
  248. package/dist/backend/utils.d.cts +20 -28
  249. package/dist/backend/utils.d.ts +20 -28
  250. package/dist/backend/utils.js +35 -2
  251. package/dist/backend/utils.js.map +1 -1
  252. package/dist/{base-mmG-8Pk9.d.ts → base-BOCDDBvG.d.ts} +2 -2
  253. package/dist/{base-daM6fHUP.d.cts → base-szR2Izbt.d.cts} +2 -2
  254. package/dist/cache/base.cjs.map +1 -1
  255. package/dist/cache/base.d.cts +1 -1
  256. package/dist/cache/base.d.ts +1 -1
  257. package/dist/cache/base.js.map +1 -1
  258. package/dist/cache/decoratorCache.cjs.map +1 -1
  259. package/dist/cache/decoratorCache.d.cts +1 -1
  260. package/dist/cache/decoratorCache.d.ts +1 -1
  261. package/dist/cache/decoratorCache.js.map +1 -1
  262. package/dist/cache/fileCache.cjs.map +1 -1
  263. package/dist/cache/fileCache.d.cts +1 -1
  264. package/dist/cache/fileCache.d.ts +1 -1
  265. package/dist/cache/fileCache.js.map +1 -1
  266. package/dist/cache/nullCache.cjs.map +1 -1
  267. package/dist/cache/nullCache.d.cts +1 -1
  268. package/dist/cache/nullCache.d.ts +1 -1
  269. package/dist/cache/nullCache.js.map +1 -1
  270. package/dist/cache/slidingCache.cjs.map +1 -1
  271. package/dist/cache/slidingCache.d.cts +1 -1
  272. package/dist/cache/slidingCache.d.ts +1 -1
  273. package/dist/cache/slidingCache.js.map +1 -1
  274. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  275. package/dist/cache/unconstrainedCache.d.cts +1 -1
  276. package/dist/cache/unconstrainedCache.d.ts +1 -1
  277. package/dist/cache/unconstrainedCache.js.map +1 -1
  278. package/dist/chat-BdN8hGWn.d.ts +174 -0
  279. package/dist/chat-DvMzAHj6.d.cts +174 -0
  280. package/dist/context.cjs.map +1 -1
  281. package/dist/context.d.cts +2 -2
  282. package/dist/context.d.ts +2 -2
  283. package/dist/context.js.map +1 -1
  284. package/dist/emitter/emitter.cjs.map +1 -1
  285. package/dist/emitter/emitter.d.cts +1 -1
  286. package/dist/emitter/emitter.d.ts +1 -1
  287. package/dist/emitter/emitter.js.map +1 -1
  288. package/dist/emitter/errors.cjs.map +1 -1
  289. package/dist/emitter/errors.d.cts +1 -1
  290. package/dist/emitter/errors.d.ts +1 -1
  291. package/dist/emitter/errors.js.map +1 -1
  292. package/dist/emitter/types.d.cts +1 -1
  293. package/dist/emitter/types.d.ts +1 -1
  294. package/dist/emitter/utils.cjs.map +1 -1
  295. package/dist/emitter/utils.d.cts +1 -1
  296. package/dist/emitter/utils.d.ts +1 -1
  297. package/dist/emitter/utils.js.map +1 -1
  298. package/dist/{emitter-BxVxGBbJ.d.ts → emitter-C3dO-s2P.d.ts} +2 -2
  299. package/dist/{emitter-C9EN5B0j.d.cts → emitter-D5Mu0EEH.d.cts} +2 -2
  300. package/dist/errors.cjs.map +1 -1
  301. package/dist/errors.d.cts +1 -1
  302. package/dist/errors.d.ts +1 -1
  303. package/dist/errors.js.map +1 -1
  304. package/dist/index.d.cts +4 -6
  305. package/dist/index.d.ts +4 -6
  306. package/dist/internals/env.cjs.map +1 -1
  307. package/dist/internals/env.d.cts +1 -1
  308. package/dist/internals/env.d.ts +1 -1
  309. package/dist/internals/env.js.map +1 -1
  310. package/dist/internals/fetcher.cjs.map +1 -1
  311. package/dist/internals/fetcher.d.cts +2 -2
  312. package/dist/internals/fetcher.d.ts +2 -2
  313. package/dist/internals/fetcher.js.map +1 -1
  314. package/dist/internals/helpers/array.cjs.map +1 -1
  315. package/dist/internals/helpers/array.d.cts +1 -1
  316. package/dist/internals/helpers/array.d.ts +1 -1
  317. package/dist/internals/helpers/array.js.map +1 -1
  318. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  319. package/dist/internals/helpers/cancellation.d.cts +1 -1
  320. package/dist/internals/helpers/cancellation.d.ts +1 -1
  321. package/dist/internals/helpers/cancellation.js.map +1 -1
  322. package/dist/internals/helpers/counter.cjs.map +1 -1
  323. package/dist/internals/helpers/counter.d.cts +1 -1
  324. package/dist/internals/helpers/counter.d.ts +1 -1
  325. package/dist/internals/helpers/counter.js.map +1 -1
  326. package/dist/internals/helpers/general.cjs.map +1 -1
  327. package/dist/internals/helpers/general.d.cts +1 -1
  328. package/dist/internals/helpers/general.d.ts +1 -1
  329. package/dist/internals/helpers/general.js.map +1 -1
  330. package/dist/internals/helpers/guards.cjs.map +1 -1
  331. package/dist/internals/helpers/guards.d.cts +1 -1
  332. package/dist/internals/helpers/guards.d.ts +1 -1
  333. package/dist/internals/helpers/guards.js.map +1 -1
  334. package/dist/internals/helpers/hash.cjs.map +1 -1
  335. package/dist/internals/helpers/hash.d.cts +1 -1
  336. package/dist/internals/helpers/hash.d.ts +1 -1
  337. package/dist/internals/helpers/hash.js.map +1 -1
  338. package/dist/internals/helpers/map.cjs.map +1 -1
  339. package/dist/internals/helpers/map.d.cts +1 -1
  340. package/dist/internals/helpers/map.d.ts +1 -1
  341. package/dist/internals/helpers/map.js.map +1 -1
  342. package/dist/internals/helpers/math.cjs.map +1 -1
  343. package/dist/internals/helpers/math.d.cts +1 -1
  344. package/dist/internals/helpers/math.d.ts +1 -1
  345. package/dist/internals/helpers/math.js.map +1 -1
  346. package/dist/internals/helpers/number.cjs.map +1 -1
  347. package/dist/internals/helpers/number.d.cts +1 -1
  348. package/dist/internals/helpers/number.d.ts +1 -1
  349. package/dist/internals/helpers/number.js.map +1 -1
  350. package/dist/internals/helpers/object.cjs.map +1 -1
  351. package/dist/internals/helpers/object.d.cts +1 -1
  352. package/dist/internals/helpers/object.d.ts +1 -1
  353. package/dist/internals/helpers/object.js.map +1 -1
  354. package/dist/internals/helpers/paginate.cjs.map +1 -1
  355. package/dist/internals/helpers/paginate.d.cts +1 -1
  356. package/dist/internals/helpers/paginate.d.ts +1 -1
  357. package/dist/internals/helpers/paginate.js.map +1 -1
  358. package/dist/internals/helpers/promise.cjs.map +1 -1
  359. package/dist/internals/helpers/promise.d.cts +1 -1
  360. package/dist/internals/helpers/promise.d.ts +1 -1
  361. package/dist/internals/helpers/promise.js.map +1 -1
  362. package/dist/internals/helpers/prototype.cjs.map +1 -1
  363. package/dist/internals/helpers/prototype.d.cts +1 -1
  364. package/dist/internals/helpers/prototype.d.ts +1 -1
  365. package/dist/internals/helpers/prototype.js.map +1 -1
  366. package/dist/internals/helpers/retry.cjs.map +1 -1
  367. package/dist/internals/helpers/retry.d.cts +1 -1
  368. package/dist/internals/helpers/retry.d.ts +1 -1
  369. package/dist/internals/helpers/retry.js.map +1 -1
  370. package/dist/internals/helpers/retryable.cjs.map +1 -1
  371. package/dist/internals/helpers/retryable.d.cts +1 -1
  372. package/dist/internals/helpers/retryable.d.ts +1 -1
  373. package/dist/internals/helpers/retryable.js.map +1 -1
  374. package/dist/internals/helpers/schema.cjs.map +1 -1
  375. package/dist/internals/helpers/schema.d.cts +1 -1
  376. package/dist/internals/helpers/schema.d.ts +1 -1
  377. package/dist/internals/helpers/schema.js.map +1 -1
  378. package/dist/internals/helpers/stream.cjs.map +1 -1
  379. package/dist/internals/helpers/stream.d.cts +1 -1
  380. package/dist/internals/helpers/stream.d.ts +1 -1
  381. package/dist/internals/helpers/stream.js.map +1 -1
  382. package/dist/internals/helpers/string.cjs.map +1 -1
  383. package/dist/internals/helpers/string.d.cts +1 -1
  384. package/dist/internals/helpers/string.d.ts +1 -1
  385. package/dist/internals/helpers/string.js.map +1 -1
  386. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  387. package/dist/internals/helpers/weakRef.d.cts +1 -1
  388. package/dist/internals/helpers/weakRef.d.ts +1 -1
  389. package/dist/internals/helpers/weakRef.js.map +1 -1
  390. package/dist/internals/serializable.cjs.map +1 -1
  391. package/dist/internals/serializable.d.cts +1 -1
  392. package/dist/internals/serializable.d.ts +1 -1
  393. package/dist/internals/serializable.js.map +1 -1
  394. package/dist/internals/types.cjs.map +1 -1
  395. package/dist/internals/types.d.cts +1 -1
  396. package/dist/internals/types.d.ts +1 -1
  397. package/dist/internals/types.js.map +1 -1
  398. package/dist/logger/logger.cjs.map +1 -1
  399. package/dist/logger/logger.js.map +1 -1
  400. package/dist/logger/pretty.cjs.map +1 -1
  401. package/dist/logger/pretty.js.map +1 -1
  402. package/dist/memory/base.cjs.map +1 -1
  403. package/dist/memory/base.js.map +1 -1
  404. package/dist/memory/slidingMemory.cjs.map +1 -1
  405. package/dist/memory/slidingMemory.js.map +1 -1
  406. package/dist/memory/summarizeMemory.cjs.map +1 -1
  407. package/dist/memory/summarizeMemory.d.cts +4 -4
  408. package/dist/memory/summarizeMemory.d.ts +4 -4
  409. package/dist/memory/summarizeMemory.js.map +1 -1
  410. package/dist/memory/tokenMemory.cjs.map +1 -1
  411. package/dist/memory/tokenMemory.js.map +1 -1
  412. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  413. package/dist/memory/unconstrainedMemory.js.map +1 -1
  414. package/dist/parsers/errors.cjs.map +1 -1
  415. package/dist/parsers/errors.d.cts +1 -1
  416. package/dist/parsers/errors.d.ts +1 -1
  417. package/dist/parsers/errors.js.map +1 -1
  418. package/dist/parsers/field.cjs.map +1 -1
  419. package/dist/parsers/field.js.map +1 -1
  420. package/dist/parsers/linePrefix.cjs.map +1 -1
  421. package/dist/parsers/linePrefix.d.cts +2 -2
  422. package/dist/parsers/linePrefix.d.ts +2 -2
  423. package/dist/parsers/linePrefix.js.map +1 -1
  424. package/dist/serializer/error.cjs.map +1 -1
  425. package/dist/serializer/error.d.cts +1 -1
  426. package/dist/serializer/error.d.ts +1 -1
  427. package/dist/serializer/error.js.map +1 -1
  428. package/dist/serializer/serializer.cjs.map +1 -1
  429. package/dist/serializer/serializer.d.cts +1 -1
  430. package/dist/serializer/serializer.d.ts +1 -1
  431. package/dist/serializer/serializer.js.map +1 -1
  432. package/dist/serializer/utils.cjs.map +1 -1
  433. package/dist/serializer/utils.d.cts +1 -1
  434. package/dist/serializer/utils.d.ts +1 -1
  435. package/dist/serializer/utils.js.map +1 -1
  436. package/dist/{serializer-VYDhdryk.d.ts → serializer-BswFRdT8.d.ts} +2 -2
  437. package/dist/{serializer-CJx5ZpUx.d.cts → serializer-Dz4AIM2O.d.cts} +2 -2
  438. package/dist/template.cjs.map +1 -1
  439. package/dist/template.d.cts +1 -1
  440. package/dist/template.d.ts +1 -1
  441. package/dist/template.js.map +1 -1
  442. package/dist/tools/arxiv.cjs.map +1 -1
  443. package/dist/tools/arxiv.d.cts +2 -2
  444. package/dist/tools/arxiv.d.ts +2 -2
  445. package/dist/tools/arxiv.js.map +1 -1
  446. package/dist/tools/base.cjs.map +1 -1
  447. package/dist/tools/base.d.cts +1 -1
  448. package/dist/tools/base.d.ts +1 -1
  449. package/dist/tools/base.js.map +1 -1
  450. package/dist/tools/calculator.cjs.map +1 -1
  451. package/dist/tools/calculator.d.cts +2 -2
  452. package/dist/tools/calculator.d.ts +2 -2
  453. package/dist/tools/calculator.js.map +1 -1
  454. package/dist/tools/custom.cjs.map +1 -1
  455. package/dist/tools/custom.d.cts +5 -5
  456. package/dist/tools/custom.d.ts +5 -5
  457. package/dist/tools/custom.js.map +1 -1
  458. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  459. package/dist/tools/database/elasticsearch.d.cts +2 -2
  460. package/dist/tools/database/elasticsearch.d.ts +2 -2
  461. package/dist/tools/database/elasticsearch.js.map +1 -1
  462. package/dist/tools/database/metadata.cjs.map +1 -1
  463. package/dist/tools/database/metadata.d.cts +1 -1
  464. package/dist/tools/database/metadata.d.ts +1 -1
  465. package/dist/tools/database/metadata.js.map +1 -1
  466. package/dist/tools/database/milvus.cjs.map +1 -1
  467. package/dist/tools/database/milvus.d.cts +4 -4
  468. package/dist/tools/database/milvus.d.ts +4 -4
  469. package/dist/tools/database/milvus.js.map +1 -1
  470. package/dist/tools/database/sql.cjs.map +1 -1
  471. package/dist/tools/database/sql.d.cts +2 -2
  472. package/dist/tools/database/sql.d.ts +2 -2
  473. package/dist/tools/database/sql.js.map +1 -1
  474. package/dist/tools/llm.cjs.map +1 -1
  475. package/dist/tools/llm.d.cts +5 -5
  476. package/dist/tools/llm.d.ts +5 -5
  477. package/dist/tools/llm.js.map +1 -1
  478. package/dist/tools/mcp.cjs.map +1 -1
  479. package/dist/tools/mcp.d.cts +2 -2
  480. package/dist/tools/mcp.d.ts +2 -2
  481. package/dist/tools/mcp.js.map +1 -1
  482. package/dist/tools/openapi.cjs.map +1 -1
  483. package/dist/tools/openapi.d.cts +1 -1
  484. package/dist/tools/openapi.d.ts +1 -1
  485. package/dist/tools/openapi.js.map +1 -1
  486. package/dist/tools/python/output.cjs.map +1 -1
  487. package/dist/tools/python/output.d.cts +2 -2
  488. package/dist/tools/python/output.d.ts +2 -2
  489. package/dist/tools/python/output.js.map +1 -1
  490. package/dist/tools/python/python.cjs +3 -3
  491. package/dist/tools/python/python.cjs.map +1 -1
  492. package/dist/tools/python/python.d.cts +4 -4
  493. package/dist/tools/python/python.d.ts +4 -4
  494. package/dist/tools/python/python.js +3 -3
  495. package/dist/tools/python/python.js.map +1 -1
  496. package/dist/tools/python/storage.cjs.map +1 -1
  497. package/dist/tools/python/storage.d.cts +1 -1
  498. package/dist/tools/python/storage.d.ts +1 -1
  499. package/dist/tools/python/storage.js.map +1 -1
  500. package/dist/tools/search/base.cjs.map +1 -1
  501. package/dist/tools/search/base.d.cts +2 -2
  502. package/dist/tools/search/base.d.ts +2 -2
  503. package/dist/tools/search/base.js.map +1 -1
  504. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  505. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -2
  506. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -2
  507. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  508. package/dist/tools/search/googleSearch.cjs.map +1 -1
  509. package/dist/tools/search/googleSearch.d.cts +1 -1
  510. package/dist/tools/search/googleSearch.d.ts +1 -1
  511. package/dist/tools/search/googleSearch.js.map +1 -1
  512. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  513. package/dist/tools/search/searXNGSearch.d.cts +2 -2
  514. package/dist/tools/search/searXNGSearch.d.ts +2 -2
  515. package/dist/tools/search/searXNGSearch.js.map +1 -1
  516. package/dist/tools/search/wikipedia.cjs.map +1 -1
  517. package/dist/tools/search/wikipedia.d.cts +1 -1
  518. package/dist/tools/search/wikipedia.d.ts +1 -1
  519. package/dist/tools/search/wikipedia.js.map +1 -1
  520. package/dist/tools/similarity.cjs.map +1 -1
  521. package/dist/tools/similarity.d.cts +2 -2
  522. package/dist/tools/similarity.d.ts +2 -2
  523. package/dist/tools/similarity.js.map +1 -1
  524. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  525. package/dist/tools/weather/openMeteo.d.cts +2 -2
  526. package/dist/tools/weather/openMeteo.d.ts +2 -2
  527. package/dist/tools/weather/openMeteo.js.map +1 -1
  528. package/dist/tools/web/webCrawler.cjs.map +1 -1
  529. package/dist/tools/web/webCrawler.d.cts +1 -1
  530. package/dist/tools/web/webCrawler.d.ts +1 -1
  531. package/dist/tools/web/webCrawler.js.map +1 -1
  532. package/dist/version.cjs +1 -1
  533. package/dist/version.cjs.map +1 -1
  534. package/dist/version.d.cts +1 -1
  535. package/dist/version.d.ts +1 -1
  536. package/dist/version.js +1 -1
  537. package/dist/version.js.map +1 -1
  538. package/dist/workflows/agent.cjs.map +1 -1
  539. package/dist/workflows/agent.d.cts +43 -43
  540. package/dist/workflows/agent.d.ts +43 -43
  541. package/dist/workflows/agent.js.map +1 -1
  542. package/dist/workflows/workflow.cjs.map +1 -1
  543. package/dist/workflows/workflow.d.cts +1 -1
  544. package/dist/workflows/workflow.d.ts +1 -1
  545. package/dist/workflows/workflow.js.map +1 -1
  546. package/package.json +18 -18
@@ -1 +1 @@
1
- {"version":3,"sources":["chat.ts"],"names":["VercelChatModel","ChatModel","emitter","supportsToolStreaming","constructor","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","_run","finishReason","usage","response","messages","generateText","transformInput","ChatModelOutput","transformMessages","_createStructure","schema","run","inputSchema","_input","generateObject","temperature","abortSignal","signal","output","ZodArray","ZodEnum","object","_createStream","isEmpty","tools","fullStream","streamText","lastChunk","event","message","type","AssistantMessage","textDelta","toolCallId","toolName","args","ChatModelError","error","ToolMessage","result","Error","Promise","all","map","tool","name","description","parameters","jsonSchema","getInputJsonSchema","msg","role","content","text","mapToObj","flatMap","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","destroy","Object","assign"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n CoreAssistantMessage,\n CoreMessage,\n CoreToolMessage,\n generateObject,\n generateText,\n jsonSchema,\n LanguageModelV1,\n streamText,\n TextPart,\n ToolCallPart,\n} from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { AssistantMessage, Message, ToolMessage } from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { ZodArray, ZodEnum } from \"zod\";\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV1 = LanguageModelV1,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, _run: GetRunContext<this>) {\n const {\n finishReason,\n usage,\n response: { messages },\n } = await generateText(await this.transformInput(input));\n\n return new ChatModelOutput(this.transformMessages(messages), usage, finishReason);\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const inputSchema = schema._input || schema;\n\n const response = await generateObject({\n temperature: 0,\n ...(await this.transformInput(input)),\n schema,\n abortSignal: run.signal,\n model: this.model,\n // @ts-expect-error\n output:\n inputSchema instanceof ZodArray\n ? \"array\"\n : inputSchema instanceof ZodEnum\n ? \"enum\"\n : \"object\",\n });\n\n return { object: response.object };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const { fullStream, usage, finishReason, response } = streamText({\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let lastChunk: ChatModelOutput | null = null;\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n message = new AssistantMessage(event.textDelta);\n break;\n case \"tool-call\":\n message = new AssistantMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n args: event.args,\n });\n break;\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"step-finish\":\n case \"step-start\":\n continue;\n case \"tool-result\":\n message = new ToolMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n result: event.result,\n });\n break;\n case \"tool-call-streaming-start\":\n case \"tool-call-delta\":\n continue;\n case \"finish\":\n continue;\n default:\n throw new Error(`Unhandled event \"${event.type}\"`);\n }\n lastChunk = new ChatModelOutput([message]);\n yield lastChunk;\n }\n\n if (!lastChunk) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n lastChunk.usage = await usage;\n lastChunk.finishReason = await finishReason;\n await response;\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n parameters: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): CoreMessage => {\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n }\n return { role: msg.role as \"user\" | \"system\", content: msg.text };\n });\n\n return {\n ...this.parameters,\n ...input,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(messages: (CoreAssistantMessage | CoreToolMessage)[]): Message[] {\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(msg.content, msg.providerOptions);\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["chat.ts"],"names":["VercelChatModel","ChatModel","emitter","supportsToolStreaming","constructor","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","run","responseFormat","ZodSchema","schema","output","_createStructure","finishReason","usage","response","messages","generateText","transformInput","ChatModelOutput","transformMessages","generateObject","temperature","abortSignal","signal","_input","ZodArray","ZodEnum","jsonSchema","z","any","schemaName","name","schemaDescription","description","object","AssistantMessage","JSON","stringify","_createStream","isEmpty","tools","fullStream","streamText","lastChunk","event","message","type","textDelta","toolCallId","toolName","args","ChatModelError","error","ToolMessage","result","Error","Promise","all","map","tool","parameters","getInputJsonSchema","msg","role","content","UserMessage","SystemMessage","toolChoice","Tool","toolChoiceSupport","includes","logger","warn","mapToObj","flatMap","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","destroy","Object","assign"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n CoreAssistantMessage,\n CoreMessage,\n CoreToolMessage,\n generateObject,\n generateText,\n jsonSchema,\n LanguageModelV1,\n streamText,\n TextPart,\n ToolCallPart,\n ToolChoice,\n} from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n AssistantMessage,\n Message,\n SystemMessage,\n ToolMessage,\n UserMessage,\n} from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z, ZodArray, ZodEnum, ZodSchema } from \"zod\";\nimport { Tool } from \"@/tools/base.js\";\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV1 = LanguageModelV1,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<this>) {\n const responseFormat = input.responseFormat;\n if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n const { output } = await this._createStructure(\n {\n ...input,\n schema: responseFormat,\n },\n run,\n );\n return output;\n }\n\n const {\n finishReason,\n usage,\n response: { messages },\n } = await generateText(await this.transformInput(input));\n\n return new ChatModelOutput(this.transformMessages(messages), usage, finishReason);\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const response = await generateObject<T>({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n model: this.model,\n ...(schema instanceof ZodSchema\n ? {\n schema,\n output: ((schema._input || schema) instanceof ZodArray\n ? \"array\"\n : (schema._input || schema) instanceof ZodEnum\n ? \"enum\"\n : \"object\") as any,\n }\n : {\n schema: schema.schema ? jsonSchema<T>(schema.schema) : z.any(),\n schemaName: schema.name,\n schemaDescription: schema.description,\n }),\n });\n\n return {\n object: response.object,\n output: new ChatModelOutput(\n [new AssistantMessage(JSON.stringify(response.object, null, 2))],\n response.usage,\n response.finishReason,\n ),\n };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const { fullStream, usage, finishReason, response } = streamText({\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let lastChunk: ChatModelOutput | null = null;\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n message = new AssistantMessage(event.textDelta);\n break;\n case \"tool-call\":\n message = new AssistantMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n args: event.args,\n });\n break;\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"step-finish\":\n case \"step-start\":\n continue;\n case \"tool-result\":\n message = new ToolMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n result: event.result,\n });\n break;\n case \"tool-call-streaming-start\":\n case \"tool-call-delta\":\n continue;\n case \"finish\":\n continue;\n default:\n throw new Error(`Unhandled event \"${event.type}\"`);\n }\n lastChunk = new ChatModelOutput([message]);\n yield lastChunk;\n }\n\n if (!lastChunk) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n lastChunk.usage = await usage;\n lastChunk.finishReason = await finishReason;\n await response;\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n parameters: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): CoreMessage => {\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n } else if (msg instanceof UserMessage) {\n return { role: msg.role, content: msg.content };\n } else if (msg instanceof SystemMessage) {\n return { role: \"user\", content: msg.content };\n }\n return { role: msg.role, content: msg.content } as CoreMessage;\n });\n\n let toolChoice: ToolChoice<Record<string, any>> | undefined;\n if (input.toolChoice && input.toolChoice instanceof Tool) {\n if (this.toolChoiceSupport.includes(\"single\")) {\n toolChoice = {\n type: \"tool\",\n toolName: input.toolChoice.name,\n };\n } else {\n this.logger.warn(`The single tool choice is not supported.`);\n }\n } else if (input.toolChoice) {\n if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolChoice = input.toolChoice;\n } else {\n this.logger.warn(`The following tool choice value '${input.toolChoice}' is not supported.`);\n }\n }\n\n return {\n ...this.parameters,\n ...input,\n toolChoice,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(messages: (CoreAssistantMessage | CoreToolMessage)[]): Message[] {\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(msg.content, msg.providerOptions);\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["embedding.ts"],"names":["VercelEmbeddingModel","EmbeddingModel","emitter","constructor","model","Emitter","root","child","namespace","providerId","creator","modelId","provider","split","toCamelCase","_create","input","run","embedMany","values","abortSignal","signal","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":";;;;;;;;;AA8BO,MAAMA,6BAEHC,4BAAAA,CAAAA;EAhCV;;;;AAiCkBC,EAAAA,OAAAA;AAEhBC,EAAAA,WAAAA,CAA4BC,KAAU,EAAA;AACpC,IAAK,KAAA,EAAA,EAAA,KADqBA,KAAAA,GAAAA,KAAAA;AAE1B,IAAKF,IAAAA,CAAAA,OAAAA,GAAUG,mBAAQC,CAAAA,IAAAA,CAAKC,KAAM,CAAA;MAChCC,SAAW,EAAA;AAAC,QAAA,SAAA;QAAW,IAAKC,CAAAA,UAAAA;AAAY,QAAA;;MACxCC,OAAS,EAAA;KACX,CAAA;AACF;AAEA,EAAA,IAAIC,OAAkB,GAAA;AACpB,IAAA,OAAO,KAAKP,KAAMO,CAAAA,OAAAA;AACpB;AAEA,EAAA,IAAIF,UAAqB,GAAA;AACvB,IAAA,MAAMG,QAAW,GAAA,IAAA,CAAKR,KAAMQ,CAAAA,QAAAA,CAASC,KAAM,CAAA,GAAA,CAAK,CAAA,CAAA,CAAGA,CAAAA,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA;AAC9D,IAAA,OAAOC,mBAAYF,QAAAA,CAAAA;AACrB;EAEA,MAAgBG,OAAAA,CACdC,OACAC,GAC+B,EAAA;AAC/B,IAAA,OAAOC,YAAkB,CAAA;AACvBd,MAAAA,KAAAA,EAAO,IAAKA,CAAAA,KAAAA;AACZe,MAAAA,MAAAA,EAAQH,KAAMG,CAAAA,MAAAA;AACdC,MAAAA,WAAAA,EAAaH,GAAII,CAAAA;KACnB,CAAA;AACF;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACTb,MAAAA,UAAAA,EAAY,IAAKA,CAAAA,UAAAA;AACjBE,MAAAA,OAAAA,EAAS,IAAKP,CAAAA;AAChB,KAAA;AACF;AAEA,EAAA,MAAMmB,aAAa,EAAEd,UAAAA,EAAYE,OAAS,EAAA,GAAGa,UAAoD,EAAA;AAC/F,IAAMC,MAAAA,QAAAA,GAAW,MAAMzB,oBAAqB0B,CAAAA,QAAAA,CAC1C,GAAGjB,UAAAA,CAAAA,CAAAA,EAAcE,OAAAA,CAAS,CAAA,CAAA;AAE5B,IAAI,IAAA,EAAEc,oBAAoBzB,oBAAuB,CAAA,EAAA;AAC/C,MAAM,MAAA,IAAI2B,MAAM,4BAAA,CAAA;AAClB;AACAF,IAAAA,QAAAA,CAASG,OAAO,EAAA;AAChBC,IAAAA,MAAAA,CAAOC,OAAO,IAAM,EAAA;MAClB,GAAGN,QAAAA;AACHpB,MAAAA,KAAAA,EAAOqB,QAASrB,CAAAA;KAClB,CAAA;AACF;AACF","file":"embedding.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n EmbeddingModel,\n EmbeddingModelInput,\n EmbeddingModelOutput,\n EmbeddingModelEvents,\n} from \"@/backend/embedding.js\";\nimport { embedMany, EmbeddingModel as Model } from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\n\ntype InternalEmbeddingModel = Model<string>;\n\nexport class VercelEmbeddingModel<\n R extends InternalEmbeddingModel = InternalEmbeddingModel,\n> extends EmbeddingModel {\n public readonly emitter: Emitter<EmbeddingModelEvents>;\n\n constructor(public readonly model: R) {\n super();\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"embedding\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(\n input: EmbeddingModelInput,\n run: GetRunContext<this>,\n ): Promise<EmbeddingModelOutput> {\n return embedMany<string>({\n model: this.model,\n values: input.values,\n abortSignal: run.signal,\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.model,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await VercelEmbeddingModel.fromName(\n `${providerId}:${modelId}` as FullModelName,\n );\n if (!(instance instanceof VercelEmbeddingModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["embedding.ts"],"names":["VercelEmbeddingModel","EmbeddingModel","emitter","constructor","model","Emitter","root","child","namespace","providerId","creator","modelId","provider","split","toCamelCase","_create","input","run","embedMany","values","abortSignal","signal","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":";;;;;;;;;AA8BO,MAAMA,6BAEHC,4BAAAA,CAAAA;EAhCV;;;;AAiCkBC,EAAAA,OAAAA;AAEhBC,EAAAA,WAAAA,CAA4BC,KAAU,EAAA;AACpC,IAAK,KAAA,EAAA,EAAA,KADqBA,KAAAA,GAAAA,KAAAA;AAE1B,IAAKF,IAAAA,CAAAA,OAAAA,GAAUG,mBAAQC,CAAAA,IAAAA,CAAKC,KAAM,CAAA;MAChCC,SAAW,EAAA;AAAC,QAAA,SAAA;QAAW,IAAKC,CAAAA,UAAAA;AAAY,QAAA;;MACxCC,OAAS,EAAA;KACX,CAAA;AACF;AAEA,EAAA,IAAIC,OAAkB,GAAA;AACpB,IAAA,OAAO,KAAKP,KAAMO,CAAAA,OAAAA;AACpB;AAEA,EAAA,IAAIF,UAAqB,GAAA;AACvB,IAAA,MAAMG,QAAW,GAAA,IAAA,CAAKR,KAAMQ,CAAAA,QAAAA,CAASC,KAAM,CAAA,GAAA,CAAK,CAAA,CAAA,CAAGA,CAAAA,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA;AAC9D,IAAA,OAAOC,mBAAYF,QAAAA,CAAAA;AACrB;EAEA,MAAgBG,OAAAA,CACdC,OACAC,GAC+B,EAAA;AAC/B,IAAA,OAAOC,YAAkB,CAAA;AACvBd,MAAAA,KAAAA,EAAO,IAAKA,CAAAA,KAAAA;AACZe,MAAAA,MAAAA,EAAQH,KAAMG,CAAAA,MAAAA;AACdC,MAAAA,WAAAA,EAAaH,GAAII,CAAAA;KACnB,CAAA;AACF;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACTb,MAAAA,UAAAA,EAAY,IAAKA,CAAAA,UAAAA;AACjBE,MAAAA,OAAAA,EAAS,IAAKP,CAAAA;AAChB,KAAA;AACF;AAEA,EAAA,MAAMmB,aAAa,EAAEd,UAAAA,EAAYE,OAAS,EAAA,GAAGa,UAAoD,EAAA;AAC/F,IAAMC,MAAAA,QAAAA,GAAW,MAAMzB,oBAAqB0B,CAAAA,QAAAA,CAC1C,GAAGjB,UAAAA,CAAAA,CAAAA,EAAcE,OAAAA,CAAS,CAAA,CAAA;AAE5B,IAAI,IAAA,EAAEc,oBAAoBzB,oBAAuB,CAAA,EAAA;AAC/C,MAAM,MAAA,IAAI2B,MAAM,4BAAA,CAAA;AAClB;AACAF,IAAAA,QAAAA,CAASG,OAAO,EAAA;AAChBC,IAAAA,MAAAA,CAAOC,OAAO,IAAM,EAAA;MAClB,GAAGN,QAAAA;AACHpB,MAAAA,KAAAA,EAAOqB,QAASrB,CAAAA;KAClB,CAAA;AACF;AACF","file":"embedding.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n EmbeddingModel,\n EmbeddingModelInput,\n EmbeddingModelOutput,\n EmbeddingModelEvents,\n} from \"@/backend/embedding.js\";\nimport { embedMany, EmbeddingModel as Model } from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\n\ntype InternalEmbeddingModel = Model<string>;\n\nexport class VercelEmbeddingModel<\n R extends InternalEmbeddingModel = InternalEmbeddingModel,\n> extends EmbeddingModel {\n public readonly emitter: Emitter<EmbeddingModelEvents>;\n\n constructor(public readonly model: R) {\n super();\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"embedding\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(\n input: EmbeddingModelInput,\n run: GetRunContext<this>,\n ): Promise<EmbeddingModelOutput> {\n return embedMany<string>({\n model: this.model,\n values: input.values,\n abortSignal: run.signal,\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.model,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await VercelEmbeddingModel.fromName(\n `${providerId}:${modelId}` as FullModelName,\n );\n if (!(instance instanceof VercelEmbeddingModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
@@ -1,17 +1,28 @@
1
1
  import { EmbeddingModel as EmbeddingModel$1, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from '../../../backend/embedding.cjs';
2
2
  import { EmbeddingModel } from 'ai';
3
- import { E as Emitter } from '../../../emitter-C9EN5B0j.cjs';
3
+ import { E as Emitter } from '../../../emitter-D5Mu0EEH.cjs';
4
4
  import { GetRunContext } from '../../../context.cjs';
5
5
  import '../../../internals/serializable.cjs';
6
6
  import '../../../internals/types.cjs';
7
7
  import '../../../internals/helpers/guards.cjs';
8
8
  import '../../../errors.cjs';
9
- import '../../../backend/utils.cjs';
9
+ import '../../../chat-DvMzAHj6.cjs';
10
+ import '../../../backend/message.cjs';
11
+ import 'promise-based-task';
12
+ import '../../../cache/base.cjs';
10
13
  import '../../../backend/constants.cjs';
14
+ import '../../../tools/base.cjs';
15
+ import 'ajv';
16
+ import '../../../internals/helpers/schema.cjs';
17
+ import 'zod';
18
+ import 'zod-to-json-schema';
11
19
  import '../../../internals/helpers/promise.cjs';
20
+ import '../../../template.cjs';
21
+ import '../../../logger/logger.cjs';
22
+ import 'pino';
12
23
 
13
24
  /**
14
- * Copyright 2025 IBM Corp.
25
+ * Copyright 2025 © BeeAI a Series of LF Projects, LLC
15
26
  *
16
27
  * Licensed under the Apache License, Version 2.0 (the "License");
17
28
  * you may not use this file except in compliance with the License.
@@ -1,17 +1,28 @@
1
1
  import { EmbeddingModel as EmbeddingModel$1, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from '../../../backend/embedding.js';
2
2
  import { EmbeddingModel } from 'ai';
3
- import { E as Emitter } from '../../../emitter-BxVxGBbJ.js';
3
+ import { E as Emitter } from '../../../emitter-C3dO-s2P.js';
4
4
  import { GetRunContext } from '../../../context.js';
5
5
  import '../../../internals/serializable.js';
6
6
  import '../../../internals/types.js';
7
7
  import '../../../internals/helpers/guards.js';
8
8
  import '../../../errors.js';
9
- import '../../../backend/utils.js';
9
+ import '../../../chat-BdN8hGWn.js';
10
+ import '../../../backend/message.js';
11
+ import 'promise-based-task';
12
+ import '../../../cache/base.js';
10
13
  import '../../../backend/constants.js';
14
+ import '../../../tools/base.js';
15
+ import 'ajv';
16
+ import '../../../internals/helpers/schema.js';
17
+ import 'zod';
18
+ import 'zod-to-json-schema';
11
19
  import '../../../internals/helpers/promise.js';
20
+ import '../../../template.js';
21
+ import '../../../logger/logger.js';
22
+ import 'pino';
12
23
 
13
24
  /**
14
- * Copyright 2025 IBM Corp.
25
+ * Copyright 2025 © BeeAI a Series of LF Projects, LLC
15
26
  *
16
27
  * Licensed under the Apache License, Version 2.0 (the "License");
17
28
  * you may not use this file except in compliance with the License.
@@ -1 +1 @@
1
- {"version":3,"sources":["embedding.ts"],"names":["VercelEmbeddingModel","EmbeddingModel","emitter","constructor","model","Emitter","root","child","namespace","providerId","creator","modelId","provider","split","toCamelCase","_create","input","run","embedMany","values","abortSignal","signal","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":";;;;;;;AA8BO,MAAMA,6BAEHC,cAAAA,CAAAA;EAhCV;;;;AAiCkBC,EAAAA,OAAAA;AAEhBC,EAAAA,WAAAA,CAA4BC,KAAU,EAAA;AACpC,IAAK,KAAA,EAAA,EAAA,KADqBA,KAAAA,GAAAA,KAAAA;AAE1B,IAAKF,IAAAA,CAAAA,OAAAA,GAAUG,OAAQC,CAAAA,IAAAA,CAAKC,KAAM,CAAA;MAChCC,SAAW,EAAA;AAAC,QAAA,SAAA;QAAW,IAAKC,CAAAA,UAAAA;AAAY,QAAA;;MACxCC,OAAS,EAAA;KACX,CAAA;AACF;AAEA,EAAA,IAAIC,OAAkB,GAAA;AACpB,IAAA,OAAO,KAAKP,KAAMO,CAAAA,OAAAA;AACpB;AAEA,EAAA,IAAIF,UAAqB,GAAA;AACvB,IAAA,MAAMG,QAAW,GAAA,IAAA,CAAKR,KAAMQ,CAAAA,QAAAA,CAASC,KAAM,CAAA,GAAA,CAAK,CAAA,CAAA,CAAGA,CAAAA,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA;AAC9D,IAAA,OAAOC,YAAYF,QAAAA,CAAAA;AACrB;EAEA,MAAgBG,OAAAA,CACdC,OACAC,GAC+B,EAAA;AAC/B,IAAA,OAAOC,SAAkB,CAAA;AACvBd,MAAAA,KAAAA,EAAO,IAAKA,CAAAA,KAAAA;AACZe,MAAAA,MAAAA,EAAQH,KAAMG,CAAAA,MAAAA;AACdC,MAAAA,WAAAA,EAAaH,GAAII,CAAAA;KACnB,CAAA;AACF;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACTb,MAAAA,UAAAA,EAAY,IAAKA,CAAAA,UAAAA;AACjBE,MAAAA,OAAAA,EAAS,IAAKP,CAAAA;AAChB,KAAA;AACF;AAEA,EAAA,MAAMmB,aAAa,EAAEd,UAAAA,EAAYE,OAAS,EAAA,GAAGa,UAAoD,EAAA;AAC/F,IAAMC,MAAAA,QAAAA,GAAW,MAAMzB,oBAAqB0B,CAAAA,QAAAA,CAC1C,GAAGjB,UAAAA,CAAAA,CAAAA,EAAcE,OAAAA,CAAS,CAAA,CAAA;AAE5B,IAAI,IAAA,EAAEc,oBAAoBzB,oBAAuB,CAAA,EAAA;AAC/C,MAAM,MAAA,IAAI2B,MAAM,4BAAA,CAAA;AAClB;AACAF,IAAAA,QAAAA,CAASG,OAAO,EAAA;AAChBC,IAAAA,MAAAA,CAAOC,OAAO,IAAM,EAAA;MAClB,GAAGN,QAAAA;AACHpB,MAAAA,KAAAA,EAAOqB,QAASrB,CAAAA;KAClB,CAAA;AACF;AACF","file":"embedding.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n EmbeddingModel,\n EmbeddingModelInput,\n EmbeddingModelOutput,\n EmbeddingModelEvents,\n} from \"@/backend/embedding.js\";\nimport { embedMany, EmbeddingModel as Model } from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\n\ntype InternalEmbeddingModel = Model<string>;\n\nexport class VercelEmbeddingModel<\n R extends InternalEmbeddingModel = InternalEmbeddingModel,\n> extends EmbeddingModel {\n public readonly emitter: Emitter<EmbeddingModelEvents>;\n\n constructor(public readonly model: R) {\n super();\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"embedding\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(\n input: EmbeddingModelInput,\n run: GetRunContext<this>,\n ): Promise<EmbeddingModelOutput> {\n return embedMany<string>({\n model: this.model,\n values: input.values,\n abortSignal: run.signal,\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.model,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await VercelEmbeddingModel.fromName(\n `${providerId}:${modelId}` as FullModelName,\n );\n if (!(instance instanceof VercelEmbeddingModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["embedding.ts"],"names":["VercelEmbeddingModel","EmbeddingModel","emitter","constructor","model","Emitter","root","child","namespace","providerId","creator","modelId","provider","split","toCamelCase","_create","input","run","embedMany","values","abortSignal","signal","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":";;;;;;;AA8BO,MAAMA,6BAEHC,cAAAA,CAAAA;EAhCV;;;;AAiCkBC,EAAAA,OAAAA;AAEhBC,EAAAA,WAAAA,CAA4BC,KAAU,EAAA;AACpC,IAAK,KAAA,EAAA,EAAA,KADqBA,KAAAA,GAAAA,KAAAA;AAE1B,IAAKF,IAAAA,CAAAA,OAAAA,GAAUG,OAAQC,CAAAA,IAAAA,CAAKC,KAAM,CAAA;MAChCC,SAAW,EAAA;AAAC,QAAA,SAAA;QAAW,IAAKC,CAAAA,UAAAA;AAAY,QAAA;;MACxCC,OAAS,EAAA;KACX,CAAA;AACF;AAEA,EAAA,IAAIC,OAAkB,GAAA;AACpB,IAAA,OAAO,KAAKP,KAAMO,CAAAA,OAAAA;AACpB;AAEA,EAAA,IAAIF,UAAqB,GAAA;AACvB,IAAA,MAAMG,QAAW,GAAA,IAAA,CAAKR,KAAMQ,CAAAA,QAAAA,CAASC,KAAM,CAAA,GAAA,CAAK,CAAA,CAAA,CAAGA,CAAAA,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA;AAC9D,IAAA,OAAOC,YAAYF,QAAAA,CAAAA;AACrB;EAEA,MAAgBG,OAAAA,CACdC,OACAC,GAC+B,EAAA;AAC/B,IAAA,OAAOC,SAAkB,CAAA;AACvBd,MAAAA,KAAAA,EAAO,IAAKA,CAAAA,KAAAA;AACZe,MAAAA,MAAAA,EAAQH,KAAMG,CAAAA,MAAAA;AACdC,MAAAA,WAAAA,EAAaH,GAAII,CAAAA;KACnB,CAAA;AACF;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACTb,MAAAA,UAAAA,EAAY,IAAKA,CAAAA,UAAAA;AACjBE,MAAAA,OAAAA,EAAS,IAAKP,CAAAA;AAChB,KAAA;AACF;AAEA,EAAA,MAAMmB,aAAa,EAAEd,UAAAA,EAAYE,OAAS,EAAA,GAAGa,UAAoD,EAAA;AAC/F,IAAMC,MAAAA,QAAAA,GAAW,MAAMzB,oBAAqB0B,CAAAA,QAAAA,CAC1C,GAAGjB,UAAAA,CAAAA,CAAAA,EAAcE,OAAAA,CAAS,CAAA,CAAA;AAE5B,IAAI,IAAA,EAAEc,oBAAoBzB,oBAAuB,CAAA,EAAA;AAC/C,MAAM,MAAA,IAAI2B,MAAM,4BAAA,CAAA;AAClB;AACAF,IAAAA,QAAAA,CAASG,OAAO,EAAA;AAChBC,IAAAA,MAAAA,CAAOC,OAAO,IAAM,EAAA;MAClB,GAAGN,QAAAA;AACHpB,MAAAA,KAAAA,EAAOqB,QAASrB,CAAAA;KAClB,CAAA;AACF;AACF","file":"embedding.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n EmbeddingModel,\n EmbeddingModelInput,\n EmbeddingModelOutput,\n EmbeddingModelEvents,\n} from \"@/backend/embedding.js\";\nimport { embedMany, EmbeddingModel as Model } from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\n\ntype InternalEmbeddingModel = Model<string>;\n\nexport class VercelEmbeddingModel<\n R extends InternalEmbeddingModel = InternalEmbeddingModel,\n> extends EmbeddingModel {\n public readonly emitter: Emitter<EmbeddingModelEvents>;\n\n constructor(public readonly model: R) {\n super();\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"embedding\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(\n input: EmbeddingModelInput,\n run: GetRunContext<this>,\n ): Promise<EmbeddingModelOutput> {\n return embedMany<string>({\n model: this.model,\n values: input.values,\n abortSignal: run.signal,\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.model,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await VercelEmbeddingModel.fromName(\n `${providerId}:${modelId}` as FullModelName,\n );\n if (!(instance instanceof VercelEmbeddingModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
@@ -10,6 +10,7 @@ var message_cjs = require('../../../backend/message.cjs');
10
10
  var schema_cjs = require('../../../internals/helpers/schema.cjs');
11
11
  var env_cjs = require('../../../internals/env.cjs');
12
12
  var errors_cjs = require('../../../errors.cjs');
13
+ var base_cjs = require('../../../tools/base.cjs');
13
14
 
14
15
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
16
 
@@ -25,6 +26,7 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
25
26
  modelId;
26
27
  client;
27
28
  emitter;
29
+ toolChoiceSupport;
28
30
  get providerId() {
29
31
  return "watsonx";
30
32
  }
@@ -36,7 +38,10 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
36
38
  "chat"
37
39
  ],
38
40
  creator: this
39
- });
41
+ }), this.toolChoiceSupport = [
42
+ "none",
43
+ "single"
44
+ ];
40
45
  this.client = client_cjs.WatsonxClient.ensure(client);
41
46
  }
42
47
  config(config) {
@@ -127,6 +132,22 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
127
132
  parameters: await tool.getInputJsonSchema()
128
133
  }
129
134
  })));
135
+ const toolConfig = {
136
+ toolChoice: void 0,
137
+ toolChoiceOption: void 0
138
+ };
139
+ if (input.toolChoice) {
140
+ if (input.toolChoice instanceof base_cjs.Tool) {
141
+ toolConfig.toolChoice = {
142
+ type: "function",
143
+ function: {
144
+ name: input.toolChoice.name
145
+ }
146
+ };
147
+ } else if (this.toolChoiceSupport.includes(input.toolChoice)) {
148
+ toolConfig.toolChoiceOption = input.toolChoice;
149
+ }
150
+ }
130
151
  return {
131
152
  modelId: this.modelId,
132
153
  messages: input.messages.flatMap((message) => {
@@ -166,7 +187,7 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
166
187
  projectId: this.client.projectId,
167
188
  tools: remeda.isEmpty(tools) ? void 0 : tools,
168
189
  responseFormat: void 0,
169
- ...input.responseFormat?.type === "object-json" && {
190
+ ...input.responseFormat && {
170
191
  responseFormat: {
171
192
  type: Type.JSON_OBJECT
172
193
  }
@@ -177,9 +198,9 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
177
198
  n: input.n,
178
199
  maxTokens: input.maxTokens,
179
200
  presencePenalty: input.presencePenalty,
180
- toolChoice: input.toolChoice,
181
201
  stop: input.stopSequences,
182
- seed: input.seed
202
+ seed: input.seed,
203
+ ...toolConfig
183
204
  };
184
205
  }
185
206
  createSnapshot() {
@@ -1 +1 @@
1
- {"version":3,"sources":["chat.ts"],"names":["Type","WatsonxAiMlVml_v1","WatsonxChatModel","ChatModel","client","emitter","providerId","constructor","modelId","getEnv","Emitter","root","child","namespace","creator","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","args","parseBrokenJson","arguments","refusal","filter","isTruthy","overrides","tools","Promise","all","tool","description","getInputJsonSchema","ToolMessage","role","JSON","stringify","tool_call_id","SystemMessage","toPlain","spaceId","projectId","isEmpty","responseFormat","JSON_OBJECT","topP","frequencyPenalty","temperature","n","maxTokens","presencePenalty","toolChoice","stop","stopSequences","seed","createSnapshot","shallowCopy","loadSnapshot","snapshot","Object","assign"],"mappings":"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","file":"chat.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChatConfig,\n ChatModel,\n ChatModelEmitter,\n ChatModelInput,\n ChatModelOutput,\n ChatModelParameters,\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\";\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\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 args: 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 return {\n modelId: this.modelId,\n messages: input.messages.flatMap((message): TextChatMessages[] => {\n if (message instanceof ToolMessage) {\n return message.content.map((content) => ({\n role: \"tool\",\n content: JSON.stringify(content.result),\n tool_call_id: content.toolCallId,\n }));\n } else if (message instanceof SystemMessage) {\n return message.content.map((content) => ({\n role: \"system\",\n content: content.text,\n }));\n } else if (message instanceof AssistantMessage) {\n return message.content.map((content) => ({\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.args),\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?.type === \"object-json\" && {\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 toolChoice: input.toolChoice,\n stop: input.stopSequences,\n seed: input.seed,\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":["chat.ts"],"names":["Type","WatsonxAiMlVml_v1","WatsonxChatModel","ChatModel","client","emitter","toolChoiceSupport","providerId","constructor","modelId","getEnv","Emitter","root","child","namespace","creator","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","args","parseBrokenJson","arguments","refusal","filter","isTruthy","overrides","tools","Promise","all","tool","description","getInputJsonSchema","toolConfig","toolChoice","toolChoiceOption","Tool","includes","ToolMessage","role","JSON","stringify","tool_call_id","SystemMessage","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 *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\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\";\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 args: 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((content) => ({\n role: \"tool\",\n content: JSON.stringify(content.result),\n tool_call_id: content.toolCallId,\n }));\n } else if (message instanceof SystemMessage) {\n return message.content.map((content) => ({\n role: \"system\",\n content: content.text,\n }));\n } else if (message instanceof AssistantMessage) {\n return message.content.map((content) => ({\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.args),\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,17 +1,18 @@
1
- import { ChatModel, ChatModelEmitter, ChatConfig, ChatModelInput, ChatModelOutput, ChatModelParameters, ChatModelCache, ChatModelEvents } from '../../../backend/chat.cjs';
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-DvMzAHj6.cjs';
2
3
  import { Message, MessageContentPart } from '../../../backend/message.cjs';
3
4
  import { WatsonxClient, WatsonxClientSettings } from './client.cjs';
4
5
  import { TextChatResultChoice, TextChatUsage, TextChatParams } from '@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js';
5
- import { E as Emitter } from '../../../emitter-C9EN5B0j.cjs';
6
+ import { E as Emitter } from '../../../emitter-D5Mu0EEH.cjs';
6
7
  import { GetRunContext } from '../../../context.cjs';
7
- import 'ai';
8
- import '../../../internals/serializable.cjs';
8
+ import 'pino';
9
+ import '../../../errors.cjs';
9
10
  import '../../../internals/types.cjs';
10
11
  import '../../../internals/helpers/guards.cjs';
11
- import '../../../errors.cjs';
12
+ import '../../../internals/serializable.cjs';
13
+ import 'ai';
12
14
  import 'promise-based-task';
13
15
  import '../../../cache/base.cjs';
14
- import '../../../backend/utils.cjs';
15
16
  import '../../../backend/constants.cjs';
16
17
  import '../../../tools/base.cjs';
17
18
  import 'ajv';
@@ -19,7 +20,7 @@ import '../../../internals/helpers/schema.cjs';
19
20
  import 'zod';
20
21
  import 'zod-to-json-schema';
21
22
  import '../../../internals/helpers/promise.cjs';
22
- import '@ai-sdk/provider';
23
+ import '../../../template.cjs';
23
24
  import '@ibm-cloud/watsonx-ai';
24
25
  import 'ibm-cloud-sdk-core';
25
26
  import '../../../backend/client.cjs';
@@ -28,6 +29,7 @@ declare class WatsonxChatModel extends ChatModel {
28
29
  readonly modelId: string;
29
30
  protected readonly client: WatsonxClient;
30
31
  readonly emitter: ChatModelEmitter;
32
+ readonly toolChoiceSupport: ChatModelToolChoiceSupport[];
31
33
  get providerId(): string;
32
34
  constructor(modelId?: string, client?: WatsonxClient | WatsonxClientSettings);
33
35
  config(config: ChatConfig): this;
@@ -49,6 +51,10 @@ declare class WatsonxChatModel extends ChatModel {
49
51
  client: WatsonxClient;
50
52
  cache: ChatModelCache;
51
53
  emitter: Emitter<ChatModelEvents>;
54
+ logger: Logger;
55
+ toolChoiceSupport: ChatModelToolChoiceSupport[];
56
+ toolCallFallbackViaResponseFormat: boolean;
57
+ modelSupportsToolCalling: boolean;
52
58
  };
53
59
  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void;
54
60
  }
@@ -1,17 +1,18 @@
1
- import { ChatModel, ChatModelEmitter, ChatConfig, ChatModelInput, ChatModelOutput, ChatModelParameters, ChatModelCache, ChatModelEvents } from '../../../backend/chat.js';
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-BdN8hGWn.js';
2
3
  import { Message, MessageContentPart } from '../../../backend/message.js';
3
4
  import { WatsonxClient, WatsonxClientSettings } from './client.js';
4
5
  import { TextChatResultChoice, TextChatUsage, TextChatParams } from '@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js';
5
- import { E as Emitter } from '../../../emitter-BxVxGBbJ.js';
6
+ import { E as Emitter } from '../../../emitter-C3dO-s2P.js';
6
7
  import { GetRunContext } from '../../../context.js';
7
- import 'ai';
8
- import '../../../internals/serializable.js';
8
+ import 'pino';
9
+ import '../../../errors.js';
9
10
  import '../../../internals/types.js';
10
11
  import '../../../internals/helpers/guards.js';
11
- import '../../../errors.js';
12
+ import '../../../internals/serializable.js';
13
+ import 'ai';
12
14
  import 'promise-based-task';
13
15
  import '../../../cache/base.js';
14
- import '../../../backend/utils.js';
15
16
  import '../../../backend/constants.js';
16
17
  import '../../../tools/base.js';
17
18
  import 'ajv';
@@ -19,7 +20,7 @@ import '../../../internals/helpers/schema.js';
19
20
  import 'zod';
20
21
  import 'zod-to-json-schema';
21
22
  import '../../../internals/helpers/promise.js';
22
- import '@ai-sdk/provider';
23
+ import '../../../template.js';
23
24
  import '@ibm-cloud/watsonx-ai';
24
25
  import 'ibm-cloud-sdk-core';
25
26
  import '../../../backend/client.js';
@@ -28,6 +29,7 @@ declare class WatsonxChatModel extends ChatModel {
28
29
  readonly modelId: string;
29
30
  protected readonly client: WatsonxClient;
30
31
  readonly emitter: ChatModelEmitter;
32
+ readonly toolChoiceSupport: ChatModelToolChoiceSupport[];
31
33
  get providerId(): string;
32
34
  constructor(modelId?: string, client?: WatsonxClient | WatsonxClientSettings);
33
35
  config(config: ChatConfig): this;
@@ -49,6 +51,10 @@ declare class WatsonxChatModel extends ChatModel {
49
51
  client: WatsonxClient;
50
52
  cache: ChatModelCache;
51
53
  emitter: Emitter<ChatModelEvents>;
54
+ logger: Logger;
55
+ toolChoiceSupport: ChatModelToolChoiceSupport[];
56
+ toolCallFallbackViaResponseFormat: boolean;
57
+ modelSupportsToolCalling: boolean;
52
58
  };
53
59
  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void;
54
60
  }
@@ -8,6 +8,7 @@ import { AssistantMessage, ToolMessage, SystemMessage } from '../../../backend/m
8
8
  import { parseBrokenJson } from '../../../internals/helpers/schema.js';
9
9
  import { getEnv } from '../../../internals/env.js';
10
10
  import { NotImplementedError } from '../../../errors.js';
11
+ import { Tool } from '../../../tools/base.js';
11
12
 
12
13
  var __defProp = Object.defineProperty;
13
14
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
@@ -19,6 +20,7 @@ class WatsonxChatModel extends ChatModel {
19
20
  modelId;
20
21
  client;
21
22
  emitter;
23
+ toolChoiceSupport;
22
24
  get providerId() {
23
25
  return "watsonx";
24
26
  }
@@ -30,7 +32,10 @@ class WatsonxChatModel extends ChatModel {
30
32
  "chat"
31
33
  ],
32
34
  creator: this
33
- });
35
+ }), this.toolChoiceSupport = [
36
+ "none",
37
+ "single"
38
+ ];
34
39
  this.client = WatsonxClient.ensure(client);
35
40
  }
36
41
  config(config) {
@@ -121,6 +126,22 @@ class WatsonxChatModel extends ChatModel {
121
126
  parameters: await tool.getInputJsonSchema()
122
127
  }
123
128
  })));
129
+ const toolConfig = {
130
+ toolChoice: void 0,
131
+ toolChoiceOption: void 0
132
+ };
133
+ if (input.toolChoice) {
134
+ if (input.toolChoice instanceof Tool) {
135
+ toolConfig.toolChoice = {
136
+ type: "function",
137
+ function: {
138
+ name: input.toolChoice.name
139
+ }
140
+ };
141
+ } else if (this.toolChoiceSupport.includes(input.toolChoice)) {
142
+ toolConfig.toolChoiceOption = input.toolChoice;
143
+ }
144
+ }
124
145
  return {
125
146
  modelId: this.modelId,
126
147
  messages: input.messages.flatMap((message) => {
@@ -160,7 +181,7 @@ class WatsonxChatModel extends ChatModel {
160
181
  projectId: this.client.projectId,
161
182
  tools: isEmpty(tools) ? void 0 : tools,
162
183
  responseFormat: void 0,
163
- ...input.responseFormat?.type === "object-json" && {
184
+ ...input.responseFormat && {
164
185
  responseFormat: {
165
186
  type: Type.JSON_OBJECT
166
187
  }
@@ -171,9 +192,9 @@ class WatsonxChatModel extends ChatModel {
171
192
  n: input.n,
172
193
  maxTokens: input.maxTokens,
173
194
  presencePenalty: input.presencePenalty,
174
- toolChoice: input.toolChoice,
175
195
  stop: input.stopSequences,
176
- seed: input.seed
196
+ seed: input.seed,
197
+ ...toolConfig
177
198
  };
178
199
  }
179
200
  createSnapshot() {
@@ -1 +1 @@
1
- {"version":3,"sources":["chat.ts"],"names":["Type","WatsonxChatModel","ChatModel","client","emitter","providerId","constructor","modelId","getEnv","Emitter","root","child","namespace","creator","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","args","parseBrokenJson","arguments","refusal","filter","isTruthy","overrides","tools","Promise","all","tool","description","getInputJsonSchema","ToolMessage","role","JSON","stringify","tool_call_id","SystemMessage","toPlain","spaceId","projectId","isEmpty","responseFormat","JSON_OBJECT","topP","frequencyPenalty","temperature","n","maxTokens","presencePenalty","toolChoice","stop","stopSequences","seed","createSnapshot","shallowCopy","loadSnapshot","snapshot","Object","assign"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChatConfig,\n ChatModel,\n ChatModelEmitter,\n ChatModelInput,\n ChatModelOutput,\n ChatModelParameters,\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\";\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\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 args: 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 return {\n modelId: this.modelId,\n messages: input.messages.flatMap((message): TextChatMessages[] => {\n if (message instanceof ToolMessage) {\n return message.content.map((content) => ({\n role: \"tool\",\n content: JSON.stringify(content.result),\n tool_call_id: content.toolCallId,\n }));\n } else if (message instanceof SystemMessage) {\n return message.content.map((content) => ({\n role: \"system\",\n content: content.text,\n }));\n } else if (message instanceof AssistantMessage) {\n return message.content.map((content) => ({\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.args),\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?.type === \"object-json\" && {\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 toolChoice: input.toolChoice,\n stop: input.stopSequences,\n seed: input.seed,\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":["chat.ts"],"names":["Type","WatsonxChatModel","ChatModel","client","emitter","toolChoiceSupport","providerId","constructor","modelId","getEnv","Emitter","root","child","namespace","creator","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","args","parseBrokenJson","arguments","refusal","filter","isTruthy","overrides","tools","Promise","all","tool","description","getInputJsonSchema","toolConfig","toolChoice","toolChoiceOption","Tool","includes","ToolMessage","role","JSON","stringify","tool_call_id","SystemMessage","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 *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\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\";\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 args: 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((content) => ({\n role: \"tool\",\n content: JSON.stringify(content.result),\n tool_call_id: content.toolCallId,\n }));\n } else if (message instanceof SystemMessage) {\n return message.content.map((content) => ({\n role: \"system\",\n content: content.text,\n }));\n } else if (message instanceof AssistantMessage) {\n return message.content.map((content) => ({\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.args),\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"]}