beeai-framework 0.1.10 → 0.1.12

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 (556) 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 +5 -5
  19. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  20. package/dist/adapters/anthropic/backend/client.d.cts +2 -2
  21. package/dist/adapters/anthropic/backend/client.d.ts +2 -2
  22. package/dist/adapters/anthropic/backend/client.js +5 -5
  23. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  24. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  25. package/dist/adapters/anthropic/backend/embedding.d.cts +15 -4
  26. package/dist/adapters/anthropic/backend/embedding.d.ts +15 -4
  27. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  28. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  29. package/dist/adapters/azure-openai/backend/chat.d.cts +9 -8
  30. package/dist/adapters/azure-openai/backend/chat.d.ts +9 -8
  31. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  32. package/dist/adapters/azure-openai/backend/client.cjs +6 -6
  33. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  34. package/dist/adapters/azure-openai/backend/client.d.cts +2 -2
  35. package/dist/adapters/azure-openai/backend/client.d.ts +2 -2
  36. package/dist/adapters/azure-openai/backend/client.js +6 -6
  37. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  38. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  39. package/dist/adapters/azure-openai/backend/embedding.d.cts +15 -4
  40. package/dist/adapters/azure-openai/backend/embedding.d.ts +15 -4
  41. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  42. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  43. package/dist/adapters/dummy/backend/chat.d.cts +12 -7
  44. package/dist/adapters/dummy/backend/chat.d.ts +12 -7
  45. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  46. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  47. package/dist/adapters/dummy/backend/embedding.d.cts +15 -3
  48. package/dist/adapters/dummy/backend/embedding.d.ts +15 -3
  49. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  50. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  51. package/dist/adapters/google-vertex/backend/chat.d.cts +9 -8
  52. package/dist/adapters/google-vertex/backend/chat.d.ts +9 -8
  53. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  54. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  55. package/dist/adapters/google-vertex/backend/client.d.cts +1 -1
  56. package/dist/adapters/google-vertex/backend/client.d.ts +1 -1
  57. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  58. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  59. package/dist/adapters/google-vertex/backend/embedding.d.cts +15 -4
  60. package/dist/adapters/google-vertex/backend/embedding.d.ts +15 -4
  61. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  62. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  63. package/dist/adapters/groq/backend/chat.d.cts +9 -8
  64. package/dist/adapters/groq/backend/chat.d.ts +9 -8
  65. package/dist/adapters/groq/backend/chat.js.map +1 -1
  66. package/dist/adapters/groq/backend/client.cjs +3 -3
  67. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  68. package/dist/adapters/groq/backend/client.d.cts +1 -1
  69. package/dist/adapters/groq/backend/client.d.ts +1 -1
  70. package/dist/adapters/groq/backend/client.js +3 -3
  71. package/dist/adapters/groq/backend/client.js.map +1 -1
  72. package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
  73. package/dist/adapters/groq/backend/embedding.d.cts +15 -4
  74. package/dist/adapters/groq/backend/embedding.d.ts +15 -4
  75. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  76. package/dist/adapters/langchain/backend/chat.cjs +5 -3
  77. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  78. package/dist/adapters/langchain/backend/chat.d.cts +12 -7
  79. package/dist/adapters/langchain/backend/chat.d.ts +12 -7
  80. package/dist/adapters/langchain/backend/chat.js +5 -3
  81. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  82. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  83. package/dist/adapters/langchain/backend/embedding.d.cts +15 -3
  84. package/dist/adapters/langchain/backend/embedding.d.ts +15 -3
  85. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  86. package/dist/adapters/langchain/tools.cjs.map +1 -1
  87. package/dist/adapters/langchain/tools.d.cts +1 -1
  88. package/dist/adapters/langchain/tools.d.ts +1 -1
  89. package/dist/adapters/langchain/tools.js.map +1 -1
  90. package/dist/adapters/ollama/backend/chat.cjs +4 -0
  91. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  92. package/dist/adapters/ollama/backend/chat.d.cts +10 -8
  93. package/dist/adapters/ollama/backend/chat.d.ts +10 -8
  94. package/dist/adapters/ollama/backend/chat.js +4 -0
  95. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  96. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  97. package/dist/adapters/ollama/backend/client.d.cts +1 -1
  98. package/dist/adapters/ollama/backend/client.d.ts +1 -1
  99. package/dist/adapters/ollama/backend/client.js.map +1 -1
  100. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  101. package/dist/adapters/ollama/backend/embedding.d.cts +15 -4
  102. package/dist/adapters/ollama/backend/embedding.d.ts +15 -4
  103. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  104. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  105. package/dist/adapters/openai/backend/chat.d.cts +7 -6
  106. package/dist/adapters/openai/backend/chat.d.ts +7 -6
  107. package/dist/adapters/openai/backend/chat.js.map +1 -1
  108. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  109. package/dist/adapters/openai/backend/client.d.cts +1 -1
  110. package/dist/adapters/openai/backend/client.d.ts +1 -1
  111. package/dist/adapters/openai/backend/client.js.map +1 -1
  112. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  113. package/dist/adapters/openai/backend/embedding.d.cts +15 -4
  114. package/dist/adapters/openai/backend/embedding.d.ts +15 -4
  115. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  116. package/dist/adapters/vercel/backend/chat.cjs +41 -7
  117. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  118. package/dist/adapters/vercel/backend/chat.d.cts +12 -7
  119. package/dist/adapters/vercel/backend/chat.d.ts +12 -7
  120. package/dist/adapters/vercel/backend/chat.js +44 -10
  121. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  122. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  123. package/dist/adapters/vercel/backend/embedding.d.cts +14 -3
  124. package/dist/adapters/vercel/backend/embedding.d.ts +14 -3
  125. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  126. package/dist/adapters/watsonx/backend/chat.cjs +25 -4
  127. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  128. package/dist/adapters/watsonx/backend/chat.d.cts +13 -7
  129. package/dist/adapters/watsonx/backend/chat.d.ts +13 -7
  130. package/dist/adapters/watsonx/backend/chat.js +25 -4
  131. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  132. package/dist/adapters/watsonx/backend/client.cjs +1 -1
  133. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  134. package/dist/adapters/watsonx/backend/client.d.cts +1 -1
  135. package/dist/adapters/watsonx/backend/client.d.ts +1 -1
  136. package/dist/adapters/watsonx/backend/client.js +1 -1
  137. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  138. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  139. package/dist/adapters/watsonx/backend/embedding.d.cts +15 -3
  140. package/dist/adapters/watsonx/backend/embedding.d.ts +15 -3
  141. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  142. package/dist/{agent-COg8SPbf.d.cts → agent-2C0Z9iYa.d.cts} +4 -4
  143. package/dist/{agent-Dv5YSk8H.d.ts → agent-DN_52QhH.d.ts} +4 -4
  144. package/dist/agents/base.cjs.map +1 -1
  145. package/dist/agents/base.d.cts +2 -2
  146. package/dist/agents/base.d.ts +2 -2
  147. package/dist/agents/base.js.map +1 -1
  148. package/dist/agents/experimental/remote/agent.cjs.map +1 -1
  149. package/dist/agents/experimental/remote/agent.d.cts +2 -2
  150. package/dist/agents/experimental/remote/agent.d.ts +2 -2
  151. package/dist/agents/experimental/remote/agent.js.map +1 -1
  152. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  153. package/dist/agents/experimental/replan/agent.d.cts +6 -6
  154. package/dist/agents/experimental/replan/agent.d.ts +6 -6
  155. package/dist/agents/experimental/replan/agent.js.map +1 -1
  156. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  157. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  158. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  159. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  160. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  161. package/dist/agents/experimental/streamlit/agent.d.cts +6 -6
  162. package/dist/agents/experimental/streamlit/agent.d.ts +6 -6
  163. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  164. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  165. package/dist/agents/experimental/streamlit/prompts.d.cts +1 -1
  166. package/dist/agents/experimental/streamlit/prompts.d.ts +1 -1
  167. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  168. package/dist/agents/react/agent.cjs.map +1 -1
  169. package/dist/agents/react/agent.d.cts +6 -6
  170. package/dist/agents/react/agent.d.ts +6 -6
  171. package/dist/agents/react/agent.js.map +1 -1
  172. package/dist/agents/react/prompts.cjs.map +1 -1
  173. package/dist/agents/react/prompts.d.cts +2 -2
  174. package/dist/agents/react/prompts.d.ts +2 -2
  175. package/dist/agents/react/prompts.js.map +1 -1
  176. package/dist/agents/react/runners/base.cjs.map +1 -1
  177. package/dist/agents/react/runners/base.d.cts +6 -6
  178. package/dist/agents/react/runners/base.d.ts +6 -6
  179. package/dist/agents/react/runners/base.js.map +1 -1
  180. package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
  181. package/dist/agents/react/runners/deep-think/prompts.d.cts +2 -2
  182. package/dist/agents/react/runners/deep-think/prompts.d.ts +2 -2
  183. package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
  184. package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
  185. package/dist/agents/react/runners/deep-think/runner.d.cts +7 -7
  186. package/dist/agents/react/runners/deep-think/runner.d.ts +7 -7
  187. package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
  188. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  189. package/dist/agents/react/runners/default/runner.d.cts +9 -9
  190. package/dist/agents/react/runners/default/runner.d.ts +9 -9
  191. package/dist/agents/react/runners/default/runner.js.map +1 -1
  192. package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
  193. package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
  194. package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
  195. package/dist/agents/react/runners/granite/prompts.d.cts +2 -2
  196. package/dist/agents/react/runners/granite/prompts.d.ts +2 -2
  197. package/dist/agents/react/runners/granite/prompts.js.map +1 -1
  198. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  199. package/dist/agents/react/runners/granite/runner.d.cts +7 -7
  200. package/dist/agents/react/runners/granite/runner.d.ts +7 -7
  201. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  202. package/dist/agents/react/types.d.cts +5 -5
  203. package/dist/agents/react/types.d.ts +5 -5
  204. package/dist/agents/toolCalling/agent.cjs +33 -12
  205. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  206. package/dist/agents/toolCalling/agent.d.cts +7 -6
  207. package/dist/agents/toolCalling/agent.d.ts +7 -6
  208. package/dist/agents/toolCalling/agent.js +35 -14
  209. package/dist/agents/toolCalling/agent.js.map +1 -1
  210. package/dist/agents/toolCalling/prompts.cjs +3 -2
  211. package/dist/agents/toolCalling/prompts.cjs.map +1 -1
  212. package/dist/agents/toolCalling/prompts.d.cts +1 -1
  213. package/dist/agents/toolCalling/prompts.d.ts +1 -1
  214. package/dist/agents/toolCalling/prompts.js +3 -2
  215. package/dist/agents/toolCalling/prompts.js.map +1 -1
  216. package/dist/agents/toolCalling/types.d.cts +2 -2
  217. package/dist/agents/toolCalling/types.d.ts +2 -2
  218. package/dist/agents/types.d.cts +2 -2
  219. package/dist/agents/types.d.ts +2 -2
  220. package/dist/backend/backend.cjs.map +1 -1
  221. package/dist/backend/backend.d.cts +6 -5
  222. package/dist/backend/backend.d.ts +6 -5
  223. package/dist/backend/backend.js.map +1 -1
  224. package/dist/backend/chat.cjs +61 -3
  225. package/dist/backend/chat.cjs.map +1 -1
  226. package/dist/backend/chat.d.cts +17 -138
  227. package/dist/backend/chat.d.ts +17 -138
  228. package/dist/backend/chat.js +64 -6
  229. package/dist/backend/chat.js.map +1 -1
  230. package/dist/backend/client.cjs +1 -1
  231. package/dist/backend/client.cjs.map +1 -1
  232. package/dist/backend/client.d.cts +1 -1
  233. package/dist/backend/client.d.ts +1 -1
  234. package/dist/backend/client.js +1 -1
  235. package/dist/backend/client.js.map +1 -1
  236. package/dist/backend/constants.cjs +5 -0
  237. package/dist/backend/constants.cjs.map +1 -1
  238. package/dist/backend/constants.d.cts +6 -1
  239. package/dist/backend/constants.d.ts +6 -1
  240. package/dist/backend/constants.js +5 -0
  241. package/dist/backend/constants.js.map +1 -1
  242. package/dist/backend/core.d.cts +5 -4
  243. package/dist/backend/core.d.ts +5 -4
  244. package/dist/backend/embedding.cjs.map +1 -1
  245. package/dist/backend/embedding.d.cts +14 -2
  246. package/dist/backend/embedding.d.ts +14 -2
  247. package/dist/backend/embedding.js.map +1 -1
  248. package/dist/backend/errors.cjs.map +1 -1
  249. package/dist/backend/errors.d.cts +1 -1
  250. package/dist/backend/errors.d.ts +1 -1
  251. package/dist/backend/errors.js.map +1 -1
  252. package/dist/backend/message.cjs.map +1 -1
  253. package/dist/backend/message.d.cts +1 -1
  254. package/dist/backend/message.d.ts +1 -1
  255. package/dist/backend/message.js.map +1 -1
  256. package/dist/backend/utils.cjs +35 -0
  257. package/dist/backend/utils.cjs.map +1 -1
  258. package/dist/backend/utils.d.cts +20 -28
  259. package/dist/backend/utils.d.ts +20 -28
  260. package/dist/backend/utils.js +35 -2
  261. package/dist/backend/utils.js.map +1 -1
  262. package/dist/{base-Csr9guq2.d.cts → base-BPsHNV2O.d.cts} +2 -2
  263. package/dist/{base-DHhpWHQm.d.ts → base-ZnwDK6ZB.d.ts} +2 -2
  264. package/dist/cache/base.cjs.map +1 -1
  265. package/dist/cache/base.d.cts +1 -1
  266. package/dist/cache/base.d.ts +1 -1
  267. package/dist/cache/base.js.map +1 -1
  268. package/dist/cache/decoratorCache.cjs.map +1 -1
  269. package/dist/cache/decoratorCache.d.cts +1 -1
  270. package/dist/cache/decoratorCache.d.ts +1 -1
  271. package/dist/cache/decoratorCache.js.map +1 -1
  272. package/dist/cache/fileCache.cjs.map +1 -1
  273. package/dist/cache/fileCache.d.cts +1 -1
  274. package/dist/cache/fileCache.d.ts +1 -1
  275. package/dist/cache/fileCache.js.map +1 -1
  276. package/dist/cache/nullCache.cjs.map +1 -1
  277. package/dist/cache/nullCache.d.cts +1 -1
  278. package/dist/cache/nullCache.d.ts +1 -1
  279. package/dist/cache/nullCache.js.map +1 -1
  280. package/dist/cache/slidingCache.cjs.map +1 -1
  281. package/dist/cache/slidingCache.d.cts +1 -1
  282. package/dist/cache/slidingCache.d.ts +1 -1
  283. package/dist/cache/slidingCache.js.map +1 -1
  284. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  285. package/dist/cache/unconstrainedCache.d.cts +1 -1
  286. package/dist/cache/unconstrainedCache.d.ts +1 -1
  287. package/dist/cache/unconstrainedCache.js.map +1 -1
  288. package/dist/chat-BvyMdWFo.d.cts +174 -0
  289. package/dist/chat-diSK3Sui.d.ts +174 -0
  290. package/dist/context.cjs.map +1 -1
  291. package/dist/context.d.cts +2 -2
  292. package/dist/context.d.ts +2 -2
  293. package/dist/context.js.map +1 -1
  294. package/dist/emitter/emitter.cjs.map +1 -1
  295. package/dist/emitter/emitter.d.cts +1 -1
  296. package/dist/emitter/emitter.d.ts +1 -1
  297. package/dist/emitter/emitter.js.map +1 -1
  298. package/dist/emitter/errors.cjs.map +1 -1
  299. package/dist/emitter/errors.d.cts +1 -1
  300. package/dist/emitter/errors.d.ts +1 -1
  301. package/dist/emitter/errors.js.map +1 -1
  302. package/dist/emitter/types.d.cts +1 -1
  303. package/dist/emitter/types.d.ts +1 -1
  304. package/dist/emitter/utils.cjs.map +1 -1
  305. package/dist/emitter/utils.d.cts +1 -1
  306. package/dist/emitter/utils.d.ts +1 -1
  307. package/dist/emitter/utils.js.map +1 -1
  308. package/dist/{emitter-BWtGHYn0.d.cts → emitter-BTr99H7I.d.cts} +2 -2
  309. package/dist/{emitter-l0W9gC1A.d.ts → emitter-DiGmS_5O.d.ts} +2 -2
  310. package/dist/errors.cjs.map +1 -1
  311. package/dist/errors.d.cts +1 -1
  312. package/dist/errors.d.ts +1 -1
  313. package/dist/errors.js.map +1 -1
  314. package/dist/index.d.cts +4 -6
  315. package/dist/index.d.ts +4 -6
  316. package/dist/internals/env.cjs.map +1 -1
  317. package/dist/internals/env.d.cts +1 -1
  318. package/dist/internals/env.d.ts +1 -1
  319. package/dist/internals/env.js.map +1 -1
  320. package/dist/internals/fetcher.cjs.map +1 -1
  321. package/dist/internals/fetcher.d.cts +2 -2
  322. package/dist/internals/fetcher.d.ts +2 -2
  323. package/dist/internals/fetcher.js.map +1 -1
  324. package/dist/internals/helpers/array.cjs.map +1 -1
  325. package/dist/internals/helpers/array.d.cts +1 -1
  326. package/dist/internals/helpers/array.d.ts +1 -1
  327. package/dist/internals/helpers/array.js.map +1 -1
  328. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  329. package/dist/internals/helpers/cancellation.d.cts +1 -1
  330. package/dist/internals/helpers/cancellation.d.ts +1 -1
  331. package/dist/internals/helpers/cancellation.js.map +1 -1
  332. package/dist/internals/helpers/counter.cjs.map +1 -1
  333. package/dist/internals/helpers/counter.d.cts +1 -1
  334. package/dist/internals/helpers/counter.d.ts +1 -1
  335. package/dist/internals/helpers/counter.js.map +1 -1
  336. package/dist/internals/helpers/general.cjs.map +1 -1
  337. package/dist/internals/helpers/general.d.cts +1 -1
  338. package/dist/internals/helpers/general.d.ts +1 -1
  339. package/dist/internals/helpers/general.js.map +1 -1
  340. package/dist/internals/helpers/guards.cjs.map +1 -1
  341. package/dist/internals/helpers/guards.d.cts +1 -1
  342. package/dist/internals/helpers/guards.d.ts +1 -1
  343. package/dist/internals/helpers/guards.js.map +1 -1
  344. package/dist/internals/helpers/hash.cjs.map +1 -1
  345. package/dist/internals/helpers/hash.d.cts +1 -1
  346. package/dist/internals/helpers/hash.d.ts +1 -1
  347. package/dist/internals/helpers/hash.js.map +1 -1
  348. package/dist/internals/helpers/map.cjs.map +1 -1
  349. package/dist/internals/helpers/map.d.cts +1 -1
  350. package/dist/internals/helpers/map.d.ts +1 -1
  351. package/dist/internals/helpers/map.js.map +1 -1
  352. package/dist/internals/helpers/math.cjs.map +1 -1
  353. package/dist/internals/helpers/math.d.cts +1 -1
  354. package/dist/internals/helpers/math.d.ts +1 -1
  355. package/dist/internals/helpers/math.js.map +1 -1
  356. package/dist/internals/helpers/number.cjs.map +1 -1
  357. package/dist/internals/helpers/number.d.cts +1 -1
  358. package/dist/internals/helpers/number.d.ts +1 -1
  359. package/dist/internals/helpers/number.js.map +1 -1
  360. package/dist/internals/helpers/object.cjs.map +1 -1
  361. package/dist/internals/helpers/object.d.cts +1 -1
  362. package/dist/internals/helpers/object.d.ts +1 -1
  363. package/dist/internals/helpers/object.js.map +1 -1
  364. package/dist/internals/helpers/paginate.cjs.map +1 -1
  365. package/dist/internals/helpers/paginate.d.cts +1 -1
  366. package/dist/internals/helpers/paginate.d.ts +1 -1
  367. package/dist/internals/helpers/paginate.js.map +1 -1
  368. package/dist/internals/helpers/promise.cjs.map +1 -1
  369. package/dist/internals/helpers/promise.d.cts +1 -1
  370. package/dist/internals/helpers/promise.d.ts +1 -1
  371. package/dist/internals/helpers/promise.js.map +1 -1
  372. package/dist/internals/helpers/prototype.cjs.map +1 -1
  373. package/dist/internals/helpers/prototype.d.cts +1 -1
  374. package/dist/internals/helpers/prototype.d.ts +1 -1
  375. package/dist/internals/helpers/prototype.js.map +1 -1
  376. package/dist/internals/helpers/retry.cjs.map +1 -1
  377. package/dist/internals/helpers/retry.d.cts +1 -1
  378. package/dist/internals/helpers/retry.d.ts +1 -1
  379. package/dist/internals/helpers/retry.js.map +1 -1
  380. package/dist/internals/helpers/retryable.cjs.map +1 -1
  381. package/dist/internals/helpers/retryable.d.cts +1 -1
  382. package/dist/internals/helpers/retryable.d.ts +1 -1
  383. package/dist/internals/helpers/retryable.js.map +1 -1
  384. package/dist/internals/helpers/schema.cjs.map +1 -1
  385. package/dist/internals/helpers/schema.d.cts +1 -1
  386. package/dist/internals/helpers/schema.d.ts +1 -1
  387. package/dist/internals/helpers/schema.js.map +1 -1
  388. package/dist/internals/helpers/stream.cjs.map +1 -1
  389. package/dist/internals/helpers/stream.d.cts +1 -1
  390. package/dist/internals/helpers/stream.d.ts +1 -1
  391. package/dist/internals/helpers/stream.js.map +1 -1
  392. package/dist/internals/helpers/string.cjs.map +1 -1
  393. package/dist/internals/helpers/string.d.cts +1 -1
  394. package/dist/internals/helpers/string.d.ts +1 -1
  395. package/dist/internals/helpers/string.js.map +1 -1
  396. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  397. package/dist/internals/helpers/weakRef.d.cts +1 -1
  398. package/dist/internals/helpers/weakRef.d.ts +1 -1
  399. package/dist/internals/helpers/weakRef.js.map +1 -1
  400. package/dist/internals/serializable.cjs.map +1 -1
  401. package/dist/internals/serializable.d.cts +1 -1
  402. package/dist/internals/serializable.d.ts +1 -1
  403. package/dist/internals/serializable.js.map +1 -1
  404. package/dist/internals/types.cjs.map +1 -1
  405. package/dist/internals/types.d.cts +1 -1
  406. package/dist/internals/types.d.ts +1 -1
  407. package/dist/internals/types.js.map +1 -1
  408. package/dist/logger/logger.cjs.map +1 -1
  409. package/dist/logger/logger.js.map +1 -1
  410. package/dist/logger/pretty.cjs.map +1 -1
  411. package/dist/logger/pretty.js.map +1 -1
  412. package/dist/memory/base.cjs.map +1 -1
  413. package/dist/memory/base.js.map +1 -1
  414. package/dist/memory/slidingMemory.cjs.map +1 -1
  415. package/dist/memory/slidingMemory.js.map +1 -1
  416. package/dist/memory/summarizeMemory.cjs.map +1 -1
  417. package/dist/memory/summarizeMemory.d.cts +4 -4
  418. package/dist/memory/summarizeMemory.d.ts +4 -4
  419. package/dist/memory/summarizeMemory.js.map +1 -1
  420. package/dist/memory/tokenMemory.cjs.map +1 -1
  421. package/dist/memory/tokenMemory.js.map +1 -1
  422. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  423. package/dist/memory/unconstrainedMemory.js.map +1 -1
  424. package/dist/parsers/errors.cjs.map +1 -1
  425. package/dist/parsers/errors.d.cts +1 -1
  426. package/dist/parsers/errors.d.ts +1 -1
  427. package/dist/parsers/errors.js.map +1 -1
  428. package/dist/parsers/field.cjs.map +1 -1
  429. package/dist/parsers/field.js.map +1 -1
  430. package/dist/parsers/linePrefix.cjs.map +1 -1
  431. package/dist/parsers/linePrefix.d.cts +2 -2
  432. package/dist/parsers/linePrefix.d.ts +2 -2
  433. package/dist/parsers/linePrefix.js.map +1 -1
  434. package/dist/serializer/error.cjs.map +1 -1
  435. package/dist/serializer/error.d.cts +1 -1
  436. package/dist/serializer/error.d.ts +1 -1
  437. package/dist/serializer/error.js.map +1 -1
  438. package/dist/serializer/serializer.cjs.map +1 -1
  439. package/dist/serializer/serializer.d.cts +1 -1
  440. package/dist/serializer/serializer.d.ts +1 -1
  441. package/dist/serializer/serializer.js.map +1 -1
  442. package/dist/serializer/utils.cjs.map +1 -1
  443. package/dist/serializer/utils.d.cts +1 -1
  444. package/dist/serializer/utils.d.ts +1 -1
  445. package/dist/serializer/utils.js.map +1 -1
  446. package/dist/{serializer-VYDhdryk.d.ts → serializer-BswFRdT8.d.ts} +2 -2
  447. package/dist/{serializer-CJx5ZpUx.d.cts → serializer-Dz4AIM2O.d.cts} +2 -2
  448. package/dist/template.cjs.map +1 -1
  449. package/dist/template.d.cts +1 -1
  450. package/dist/template.d.ts +1 -1
  451. package/dist/template.js.map +1 -1
  452. package/dist/tools/arxiv.cjs.map +1 -1
  453. package/dist/tools/arxiv.d.cts +2 -2
  454. package/dist/tools/arxiv.d.ts +2 -2
  455. package/dist/tools/arxiv.js.map +1 -1
  456. package/dist/tools/base.cjs.map +1 -1
  457. package/dist/tools/base.d.cts +1 -1
  458. package/dist/tools/base.d.ts +1 -1
  459. package/dist/tools/base.js.map +1 -1
  460. package/dist/tools/calculator.cjs.map +1 -1
  461. package/dist/tools/calculator.d.cts +2 -2
  462. package/dist/tools/calculator.d.ts +2 -2
  463. package/dist/tools/calculator.js.map +1 -1
  464. package/dist/tools/custom.cjs.map +1 -1
  465. package/dist/tools/custom.d.cts +5 -5
  466. package/dist/tools/custom.d.ts +5 -5
  467. package/dist/tools/custom.js.map +1 -1
  468. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  469. package/dist/tools/database/elasticsearch.d.cts +2 -2
  470. package/dist/tools/database/elasticsearch.d.ts +2 -2
  471. package/dist/tools/database/elasticsearch.js.map +1 -1
  472. package/dist/tools/database/metadata.cjs.map +1 -1
  473. package/dist/tools/database/metadata.d.cts +1 -1
  474. package/dist/tools/database/metadata.d.ts +1 -1
  475. package/dist/tools/database/metadata.js.map +1 -1
  476. package/dist/tools/database/milvus.cjs.map +1 -1
  477. package/dist/tools/database/milvus.d.cts +2 -2
  478. package/dist/tools/database/milvus.d.ts +2 -2
  479. package/dist/tools/database/milvus.js.map +1 -1
  480. package/dist/tools/database/sql.cjs.map +1 -1
  481. package/dist/tools/database/sql.d.cts +2 -2
  482. package/dist/tools/database/sql.d.ts +2 -2
  483. package/dist/tools/database/sql.js.map +1 -1
  484. package/dist/tools/llm.cjs.map +1 -1
  485. package/dist/tools/llm.d.cts +5 -5
  486. package/dist/tools/llm.d.ts +5 -5
  487. package/dist/tools/llm.js.map +1 -1
  488. package/dist/tools/mcp.cjs.map +1 -1
  489. package/dist/tools/mcp.d.cts +2 -2
  490. package/dist/tools/mcp.d.ts +2 -2
  491. package/dist/tools/mcp.js.map +1 -1
  492. package/dist/tools/openapi.cjs.map +1 -1
  493. package/dist/tools/openapi.d.cts +1 -1
  494. package/dist/tools/openapi.d.ts +1 -1
  495. package/dist/tools/openapi.js.map +1 -1
  496. package/dist/tools/python/output.cjs.map +1 -1
  497. package/dist/tools/python/output.d.cts +2 -2
  498. package/dist/tools/python/output.d.ts +2 -2
  499. package/dist/tools/python/output.js.map +1 -1
  500. package/dist/tools/python/python.cjs +3 -3
  501. package/dist/tools/python/python.cjs.map +1 -1
  502. package/dist/tools/python/python.d.cts +4 -4
  503. package/dist/tools/python/python.d.ts +4 -4
  504. package/dist/tools/python/python.js +3 -3
  505. package/dist/tools/python/python.js.map +1 -1
  506. package/dist/tools/python/storage.cjs.map +1 -1
  507. package/dist/tools/python/storage.d.cts +1 -1
  508. package/dist/tools/python/storage.d.ts +1 -1
  509. package/dist/tools/python/storage.js.map +1 -1
  510. package/dist/tools/search/base.cjs.map +1 -1
  511. package/dist/tools/search/base.d.cts +2 -2
  512. package/dist/tools/search/base.d.ts +2 -2
  513. package/dist/tools/search/base.js.map +1 -1
  514. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  515. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -2
  516. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -2
  517. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  518. package/dist/tools/search/googleSearch.cjs.map +1 -1
  519. package/dist/tools/search/googleSearch.d.cts +1 -1
  520. package/dist/tools/search/googleSearch.d.ts +1 -1
  521. package/dist/tools/search/googleSearch.js.map +1 -1
  522. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  523. package/dist/tools/search/searXNGSearch.d.cts +2 -2
  524. package/dist/tools/search/searXNGSearch.d.ts +2 -2
  525. package/dist/tools/search/searXNGSearch.js.map +1 -1
  526. package/dist/tools/search/wikipedia.cjs.map +1 -1
  527. package/dist/tools/search/wikipedia.d.cts +1 -1
  528. package/dist/tools/search/wikipedia.d.ts +1 -1
  529. package/dist/tools/search/wikipedia.js.map +1 -1
  530. package/dist/tools/similarity.cjs.map +1 -1
  531. package/dist/tools/similarity.d.cts +2 -2
  532. package/dist/tools/similarity.d.ts +2 -2
  533. package/dist/tools/similarity.js.map +1 -1
  534. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  535. package/dist/tools/weather/openMeteo.d.cts +2 -2
  536. package/dist/tools/weather/openMeteo.d.ts +2 -2
  537. package/dist/tools/weather/openMeteo.js.map +1 -1
  538. package/dist/tools/web/webCrawler.cjs.map +1 -1
  539. package/dist/tools/web/webCrawler.d.cts +1 -1
  540. package/dist/tools/web/webCrawler.d.ts +1 -1
  541. package/dist/tools/web/webCrawler.js.map +1 -1
  542. package/dist/version.cjs +1 -1
  543. package/dist/version.cjs.map +1 -1
  544. package/dist/version.d.cts +1 -1
  545. package/dist/version.d.ts +1 -1
  546. package/dist/version.js +1 -1
  547. package/dist/version.js.map +1 -1
  548. package/dist/workflows/agent.cjs.map +1 -1
  549. package/dist/workflows/agent.d.cts +43 -43
  550. package/dist/workflows/agent.d.ts +43 -43
  551. package/dist/workflows/agent.js.map +1 -1
  552. package/dist/workflows/workflow.cjs.map +1 -1
  553. package/dist/workflows/workflow.d.cts +1 -1
  554. package/dist/workflows/workflow.d.ts +1 -1
  555. package/dist/workflows/workflow.js.map +1 -1
  556. package/package.json +18 -18
@@ -1,142 +1,21 @@
1
- import { Message, AssistantMessage, MessageContentPart } from './message.js';
2
- import * as ai from 'ai';
3
- import { Run, GetRunContext } from '../context.js';
4
- import { Serializable } from '../internals/serializable.js';
5
- import { C as Callback, E as Emitter } from '../emitter-l0W9gC1A.js';
6
- import { FrameworkError } from '../errors.js';
7
- import { Task } from 'promise-based-task';
8
- import { BaseCache } from '../cache/base.js';
9
- import { FullModelName } from './utils.js';
10
- import { ProviderName } from './constants.js';
11
- import { AnyTool } from '../tools/base.js';
12
- import { LanguageModelV1FunctionTool, LanguageModelV1ProviderDefinedTool, LanguageModelV1ToolChoice, JSONSchema7 } from '@ai-sdk/provider';
13
- import { z } from 'zod';
14
- import '../internals/helpers/promise.js';
1
+ import './message.js';
2
+ import 'ai';
3
+ import '../context.js';
4
+ import '../internals/serializable.js';
5
+ import '../emitter-DiGmS_5O.js';
6
+ import '../errors.js';
7
+ import 'promise-based-task';
8
+ import '../cache/base.js';
9
+ export { k as ChatConfig, m as ChatModel, i as ChatModelCache, h as ChatModelEmitter, g as ChatModelEvents, e as ChatModelFinishReason, d as ChatModelInput, a as ChatModelObjectInput, b as ChatModelObjectOutput, n as ChatModelOutput, C as ChatModelParameters, c as ChatModelToolChoice, l as ChatModelToolChoiceSupport, f as ChatModelUsage, j as ConfigFn } from '../chat-diSK3Sui.js';
10
+ import './constants.js';
11
+ import '../tools/base.js';
12
+ import 'zod';
13
+ import 'ajv';
14
+ import '../template.js';
15
+ import '../logger/logger.js';
15
16
  import '../internals/types.js';
16
17
  import '../internals/helpers/guards.js';
17
- import 'ajv';
18
+ import '../internals/helpers/promise.js';
18
19
  import '../internals/helpers/schema.js';
19
20
  import 'zod-to-json-schema';
20
-
21
- interface ChatModelParameters {
22
- maxTokens?: number;
23
- topP?: number;
24
- frequencyPenalty?: number;
25
- temperature?: number;
26
- topK?: number;
27
- n?: number;
28
- presencePenalty?: number;
29
- seed?: number;
30
- stopSequences?: string[];
31
- }
32
- interface ChatModelObjectInput<T> extends ChatModelParameters {
33
- schema: z.ZodSchema<T>;
34
- messages: Message[];
35
- abortSignal?: AbortSignal;
36
- maxRetries?: number;
37
- }
38
- interface ChatModelObjectOutput<T> {
39
- object: T;
40
- }
41
- interface ChatModelInput extends ChatModelParameters {
42
- tools?: AnyTool[];
43
- abortSignal?: AbortSignal;
44
- stopSequences?: string[];
45
- responseFormat?: {
46
- type: "regular";
47
- tools?: (LanguageModelV1FunctionTool | LanguageModelV1ProviderDefinedTool)[];
48
- toolChoice?: LanguageModelV1ToolChoice;
49
- } | {
50
- type: "object-json";
51
- schema?: JSONSchema7;
52
- name?: string;
53
- description?: string;
54
- } | {
55
- type: "object-tool";
56
- tool: LanguageModelV1FunctionTool;
57
- };
58
- toolChoice?: never;
59
- messages: Message[];
60
- }
61
- type ChatModelFinishReason = "stop" | "length" | "content-filter" | "tool-calls" | "error" | "other" | "unknown";
62
- interface ChatModelUsage {
63
- promptTokens: number;
64
- completionTokens: number;
65
- totalTokens: number;
66
- }
67
- interface ChatModelEvents {
68
- newToken?: Callback<{
69
- value: ChatModelOutput;
70
- callbacks: {
71
- abort: () => void;
72
- };
73
- }>;
74
- success?: Callback<{
75
- value: ChatModelOutput;
76
- }>;
77
- start?: Callback<{
78
- input: ChatModelInput;
79
- }>;
80
- error?: Callback<{
81
- input: ChatModelInput;
82
- error: FrameworkError;
83
- }>;
84
- finish?: Callback<null>;
85
- }
86
- type ChatModelEmitter<A = Record<never, never>> = Emitter<ChatModelEvents & Omit<A, keyof ChatModelEvents>>;
87
- type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;
88
- type ConfigFn<T> = (value: T) => T;
89
- interface ChatConfig {
90
- cache?: ChatModelCache | ConfigFn<ChatModelCache>;
91
- parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;
92
- }
93
- declare abstract class ChatModel extends Serializable {
94
- abstract readonly emitter: Emitter<ChatModelEvents>;
95
- cache: ChatModelCache;
96
- parameters: ChatModelParameters;
97
- abstract get modelId(): string;
98
- abstract get providerId(): string;
99
- create(input: ChatModelInput & {
100
- stream?: boolean;
101
- }): Run<ChatModelOutput, this, readonly [ChatModelInput & {
102
- stream?: boolean;
103
- }]>;
104
- createStructure<T>(input: ChatModelObjectInput<T>): Run<ChatModelObjectOutput<T>, this, readonly [ChatModelObjectInput<T>]>;
105
- config({ cache, parameters }: ChatConfig): void;
106
- static fromName(name: FullModelName | ProviderName, options?: ChatModelParameters): Promise<ChatModel>;
107
- protected abstract _create(input: ChatModelInput, run: GetRunContext<typeof this>): Promise<ChatModelOutput>;
108
- protected abstract _createStream(input: ChatModelInput, run: GetRunContext<typeof this>): AsyncGenerator<ChatModelOutput, void>;
109
- protected _createStructure<T>(input: ChatModelObjectInput<T>, run: GetRunContext<typeof this>): Promise<ChatModelObjectOutput<T>>;
110
- createSnapshot(): {
111
- cache: ChatModelCache;
112
- emitter: Emitter<ChatModelEvents>;
113
- parameters: ChatModelParameters;
114
- };
115
- destroy(): void;
116
- protected createCacheAccessor({ abortSignal: _, messages, tools, ...input }: ChatModelInput): Promise<{
117
- key: string;
118
- value: ChatModelOutput[] | undefined;
119
- resolve: <T2 extends ChatModelOutput>(value: T2[]) => void;
120
- reject: (error: Error) => Promise<void>;
121
- }>;
122
- }
123
- declare class ChatModelOutput extends Serializable {
124
- readonly messages: Message[];
125
- usage?: ChatModelUsage | undefined;
126
- finishReason?: ChatModelFinishReason | undefined;
127
- constructor(messages: Message[], usage?: ChatModelUsage | undefined, finishReason?: ChatModelFinishReason | undefined);
128
- static fromChunks(chunks: ChatModelOutput[]): ChatModelOutput;
129
- merge(other: ChatModelOutput): void;
130
- getToolCalls(): ai.ToolCallPart[];
131
- getTextMessages(): AssistantMessage[];
132
- getTextContent(): string;
133
- toString(): string;
134
- createSnapshot(): {
135
- messages: Message<MessageContentPart, string>[];
136
- usage: ChatModelUsage | undefined;
137
- finishReason: ChatModelFinishReason | undefined;
138
- };
139
- loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void;
140
- }
141
-
142
- export { type ChatConfig, ChatModel, type ChatModelCache, type ChatModelEmitter, type ChatModelEvents, type ChatModelFinishReason, type ChatModelInput, type ChatModelObjectInput, type ChatModelObjectOutput, ChatModelOutput, type ChatModelParameters, type ChatModelUsage, type ConfigFn };
21
+ import 'pino';
@@ -3,19 +3,21 @@ import { shallowCopy } from '../serializer/utils.js';
3
3
  import { customMerge } from '../internals/helpers/object.js';
4
4
  import { takeBigger } from '../internals/helpers/number.js';
5
5
  import { RunContext } from '../context.js';
6
- import { isFunction } from 'remeda';
6
+ import { isEmpty, randomString, isFunction } from 'remeda';
7
7
  import { ObjectHashKeyFn } from '../cache/decoratorCache.js';
8
8
  import { Task } from 'promise-based-task';
9
9
  import { NullCache } from '../cache/nullCache.js';
10
- import { parseModel, loadModel } from './utils.js';
10
+ import { generateToolUnionSchema, filterToolsByToolChoice, parseModel, loadModel } from './utils.js';
11
+ import { Tool } from '../tools/base.js';
11
12
  import { SystemMessage, AssistantMessage, UserMessage } from './message.js';
12
13
  import { ChatModelError } from './errors.js';
13
14
  import { z } from 'zod';
14
- import { toJsonSchema, parseBrokenJson, createSchemaValidator } from '../internals/helpers/schema.js';
15
+ import { parseBrokenJson, toJsonSchema, createSchemaValidator } from '../internals/helpers/schema.js';
15
16
  import { Retryable } from '../internals/helpers/retryable.js';
16
17
  import { PromptTemplate } from '../template.js';
17
18
  import { toAsyncGenerator } from '../internals/helpers/promise.js';
18
19
  import { Serializer } from '../serializer/serializer.js';
20
+ import { Logger } from '../logger/logger.js';
19
21
 
20
22
  var __defProp = Object.defineProperty;
21
23
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
@@ -25,6 +27,17 @@ class ChatModel extends Serializable {
25
27
  }
26
28
  cache = new NullCache();
27
29
  parameters = {};
30
+ logger = Logger.root.child({
31
+ name: this.constructor.name
32
+ });
33
+ toolChoiceSupport = [
34
+ "required",
35
+ "none",
36
+ "single",
37
+ "auto"
38
+ ];
39
+ toolCallFallbackViaResponseFormat = true;
40
+ modelSupportsToolCalling = true;
28
41
  create(input) {
29
42
  input = shallowCopy(input);
30
43
  return RunContext.enter(this, {
@@ -33,6 +46,18 @@ class ChatModel extends Serializable {
33
46
  ],
34
47
  signal: input?.abortSignal
35
48
  }, async (run) => {
49
+ if (!this.modelSupportsToolCalling) {
50
+ input.tools = [];
51
+ }
52
+ const forceToolCallViaResponseFormat = this.shouldForceToolCallViaResponseFormat(input);
53
+ if (forceToolCallViaResponseFormat && input.tools && !isEmpty(input.tools)) {
54
+ input.responseFormat = await generateToolUnionSchema(filterToolsByToolChoice(input.tools, input.toolChoice));
55
+ input.toolChoice = void 0;
56
+ }
57
+ if (!this.isToolChoiceSupported(input.toolChoice)) {
58
+ this.logger.warn(`The following tool choice value '${input.toolChoice}' is not supported. Ignoring.`);
59
+ input.toolChoice = void 0;
60
+ }
36
61
  const cacheEntry = await this.createCacheAccessor(input);
37
62
  try {
38
63
  await run.emitter.emit("start", {
@@ -55,6 +80,24 @@ class ChatModel extends Serializable {
55
80
  }
56
81
  cacheEntry.resolve(chunks);
57
82
  const result = ChatModelOutput.fromChunks(chunks);
83
+ if (forceToolCallViaResponseFormat && isEmpty(result.getToolCalls())) {
84
+ const lastMsg = result.messages.at(-1);
85
+ const toolCall = parseBrokenJson(lastMsg.text);
86
+ if (!toolCall) {
87
+ throw new ChatModelError(`Failed to produce a valid tool call. Generate output: ${lastMsg.text}`, [], {
88
+ isFatal: true,
89
+ isRetryable: false
90
+ });
91
+ }
92
+ lastMsg.content.length = 0;
93
+ lastMsg.content.push({
94
+ type: "tool-call",
95
+ toolCallId: `call_${randomString(8).toLowerCase()}`,
96
+ toolName: toolCall.name,
97
+ // todo: add types
98
+ args: toolCall.parameters
99
+ });
100
+ }
58
101
  await run.emitter.emit("success", {
59
102
  value: result
60
103
  });
@@ -103,7 +146,7 @@ class ChatModel extends Serializable {
103
146
  async _createStructure(input, run) {
104
147
  const { schema, ...options } = input;
105
148
  const jsonSchema = toJsonSchema(schema);
106
- const systemTemplate = new PromptTemplate({
149
+ const systemTemplate = input.systemPromptTemplate ?? new PromptTemplate({
107
150
  schema: z.object({
108
151
  schema: z.string().min(1)
109
152
  }),
@@ -161,7 +204,8 @@ Validation Errors: {{errors}}`
161
204
  });
162
205
  }
163
206
  return {
164
- object
207
+ object,
208
+ output: response
165
209
  };
166
210
  }, "executor"),
167
211
  config: {
@@ -174,7 +218,11 @@ Validation Errors: {{errors}}`
174
218
  return {
175
219
  cache: this.cache,
176
220
  emitter: this.emitter,
177
- parameters: shallowCopy(this.parameters)
221
+ parameters: shallowCopy(this.parameters),
222
+ logger: this.logger,
223
+ toolChoiceSupport: this.toolChoiceSupport.slice(),
224
+ toolCallFallbackViaResponseFormat: this.toolCallFallbackViaResponseFormat,
225
+ modelSupportsToolCalling: this.modelSupportsToolCalling
178
226
  };
179
227
  }
180
228
  destroy() {
@@ -207,6 +255,16 @@ Validation Errors: {{errors}}`
207
255
  }, "reject")
208
256
  };
209
257
  }
258
+ shouldForceToolCallViaResponseFormat({ tools = [], toolChoice, responseFormat }) {
259
+ if (isEmpty(tools) || !toolChoice || toolChoice === "none" || toolChoice === "auto" || !this.toolCallFallbackViaResponseFormat || Boolean(responseFormat)) {
260
+ return false;
261
+ }
262
+ const toolChoiceSupported = this.isToolChoiceSupported(toolChoice);
263
+ return !this.modelSupportsToolCalling || !toolChoiceSupported;
264
+ }
265
+ isToolChoiceSupported(choice) {
266
+ return !choice || (choice instanceof Tool ? this.toolChoiceSupport.includes("single") : this.toolChoiceSupport.includes(choice));
267
+ }
210
268
  }
211
269
  class ChatModelOutput extends Serializable {
212
270
  static {
@@ -1 +1 @@
1
- {"version":3,"sources":["chat.ts"],"names":["ChatModel","Serializable","cache","NullCache","parameters","create","input","shallowCopy","RunContext","enter","params","signal","abortSignal","run","cacheEntry","createCacheAccessor","emitter","emit","chunks","generator","value","stream","_createStream","toAsyncGenerator","_create","controller","AbortController","push","callbacks","abort","aborted","resolve","result","ChatModelOutput","fromChunks","error","reject","ChatModelError","createStructure","_createStructure","config","isFunction","fromName","name","options","providerId","modelId","parseModel","Target","loadModel","undefined","schema","jsonSchema","toJsonSchema","systemTemplate","PromptTemplate","z","object","string","min","template","messages","SystemMessage","render","JSON","stringify","errorTemplate","errors","expected","received","Retryable","executor","response","responseFormat","type","textResponse","getTextContent","parseBrokenJson","pair","validator","createSchemaValidator","success","context","UserMessage","maxRetries","get","createSnapshot","destroy","_","tools","key","ObjectHashKeyFn","Serializer","serialize","map","msg","toPlain","isNew","task","Task","set","delete","constructor","usage","finishReason","final","forEach","cur","merge","other","customMerge","totalTokens","takeBigger","promptTokens","completionTokens","getToolCalls","filter","r","AssistantMessage","flatMap","Boolean","getTextMessages","text","join","toString","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 { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { customMerge } from \"@/internals/helpers/object.js\";\nimport { takeBigger } from \"@/internals/helpers/number.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { isFunction } from \"remeda\";\nimport { ObjectHashKeyFn } from \"@/cache/decoratorCache.js\";\nimport { Task } from \"promise-based-task\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { FullModelName, loadModel, parseModel } from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\nimport {\n JSONSchema7,\n LanguageModelV1FunctionTool,\n LanguageModelV1ProviderDefinedTool,\n LanguageModelV1ToolChoice,\n} from \"@ai-sdk/provider\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z } from \"zod\";\nimport {\n createSchemaValidator,\n parseBrokenJson,\n toJsonSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { Retryable } from \"@/internals/helpers/retryable.js\";\nimport type { ValidateFunction } from \"ajv\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { toAsyncGenerator } from \"@/internals/helpers/promise.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\n\nexport interface ChatModelParameters {\n maxTokens?: number;\n topP?: number;\n frequencyPenalty?: number;\n temperature?: number;\n topK?: number;\n n?: number;\n presencePenalty?: number;\n seed?: number;\n stopSequences?: string[];\n}\n\nexport interface ChatModelObjectInput<T> extends ChatModelParameters {\n schema: z.ZodSchema<T>;\n messages: Message[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface ChatModelObjectOutput<T> {\n object: T;\n}\n\nexport interface ChatModelInput extends ChatModelParameters {\n tools?: AnyTool[];\n abortSignal?: AbortSignal;\n stopSequences?: string[];\n responseFormat?:\n | {\n type: \"regular\";\n tools?: (LanguageModelV1FunctionTool | LanguageModelV1ProviderDefinedTool)[];\n toolChoice?: LanguageModelV1ToolChoice;\n }\n | {\n type: \"object-json\";\n schema?: JSONSchema7;\n name?: string;\n description?: string;\n }\n | {\n type: \"object-tool\";\n tool: LanguageModelV1FunctionTool;\n };\n toolChoice?: never; // TODO\n messages: Message[];\n}\n\nexport type ChatModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"error\"\n | \"other\"\n | \"unknown\";\n\nexport interface ChatModelUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n}\n\nexport interface ChatModelEvents {\n newToken?: Callback<{ value: ChatModelOutput; callbacks: { abort: () => void } }>;\n success?: Callback<{ value: ChatModelOutput }>;\n start?: Callback<{ input: ChatModelInput }>;\n error?: Callback<{ input: ChatModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type ChatModelEmitter<A = Record<never, never>> = Emitter<\n ChatModelEvents & Omit<A, keyof ChatModelEvents>\n>;\n\nexport type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;\nexport type ConfigFn<T> = (value: T) => T;\nexport interface ChatConfig {\n cache?: ChatModelCache | ConfigFn<ChatModelCache>;\n parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;\n}\n\nexport abstract class ChatModel extends Serializable {\n public abstract readonly emitter: Emitter<ChatModelEvents>;\n public cache: ChatModelCache = new NullCache();\n public parameters: ChatModelParameters = {};\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: ChatModelInput & { stream?: boolean }) {\n input = shallowCopy(input);\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n const cacheEntry = await this.createCacheAccessor(input);\n\n try {\n await run.emitter.emit(\"start\", { input });\n const chunks: ChatModelOutput[] = [];\n\n const generator =\n cacheEntry.value ??\n (input.stream\n ? this._createStream(input, run)\n : toAsyncGenerator(this._create(input, run)));\n\n const controller = new AbortController();\n for await (const value of generator) {\n chunks.push(value);\n await run.emitter.emit(\"newToken\", {\n value,\n callbacks: { abort: () => controller.abort() },\n });\n if (controller.signal.aborted) {\n break;\n }\n }\n\n cacheEntry.resolve(chunks);\n const result = ChatModelOutput.fromChunks(chunks);\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n await cacheEntry.reject(error);\n if (error instanceof ChatModelError) {\n throw error;\n } else {\n throw new ChatModelError(`The Chat Model has encountered an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n createStructure<T>(input: ChatModelObjectInput<T>) {\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n return await this._createStructure<T>(input, run);\n },\n );\n }\n\n config({ cache, parameters }: ChatConfig): void {\n if (cache) {\n this.cache = isFunction(cache) ? cache(this.cache) : cache;\n }\n if (parameters) {\n this.parameters = isFunction(parameters) ? parameters(this.parameters) : parameters;\n }\n }\n\n static async fromName(name: FullModelName | ProviderName, options?: ChatModelParameters) {\n const { providerId, modelId } = parseModel(name);\n const Target = await loadModel<ChatModel>(providerId, \"chat\");\n return new Target(modelId || undefined, options);\n }\n\n protected abstract _create(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelOutput>;\n protected abstract _createStream(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): AsyncGenerator<ChatModelOutput, void>;\n\n protected async _createStructure<T>(\n input: ChatModelObjectInput<T>,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const { schema, ...options } = input;\n const jsonSchema = toJsonSchema(schema);\n\n const systemTemplate = new PromptTemplate({\n schema: z.object({\n schema: z.string().min(1),\n }),\n template: `You are a helpful assistant that generates only valid JSON adhering to the following JSON Schema.\n\n\\`\\`\\`\n{{schema}}\n\\`\\`\\`\n\nIMPORTANT: You MUST answer with a JSON object that matches the JSON schema above.`,\n });\n\n const messages: Message[] = [\n new SystemMessage(systemTemplate.render({ schema: JSON.stringify(jsonSchema, null, 2) })),\n ...input.messages,\n ];\n\n const errorTemplate = new PromptTemplate({\n schema: z.object({\n errors: z.string(),\n expected: z.string(),\n received: z.string(),\n }),\n template: `Generated object does not match the expected JSON schema!\n\nValidation Errors: {{errors}}`,\n });\n\n return new Retryable<ChatModelObjectOutput<T>>({\n executor: async () => {\n const response = await this._create(\n {\n ...options,\n messages,\n responseFormat: { type: \"object-json\" },\n },\n run,\n );\n\n const textResponse = response.getTextContent();\n const object: T = parseBrokenJson(textResponse, { pair: [\"{\", \"}\"] });\n const validator = createSchemaValidator(schema) as ValidateFunction<T>;\n\n const success = validator(object);\n if (!success) {\n const context = {\n expected: JSON.stringify(jsonSchema),\n received: textResponse,\n errors: JSON.stringify(validator.errors ?? []),\n };\n\n messages.push(new UserMessage(errorTemplate.render(context)));\n throw new ChatModelError(`LLM did not produce a valid output.`, [], {\n context,\n });\n }\n\n return { object };\n },\n config: {\n signal: run.signal,\n maxRetries: input?.maxRetries || 1,\n },\n }).get();\n }\n\n createSnapshot() {\n return { cache: this.cache, emitter: this.emitter, parameters: shallowCopy(this.parameters) };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n\n protected async createCacheAccessor({\n abortSignal: _,\n messages,\n tools = [],\n ...input\n }: ChatModelInput) {\n const key = ObjectHashKeyFn({\n ...input,\n messages: await Serializer.serialize(messages.map((msg) => msg.toPlain())),\n tools: await Serializer.serialize(tools),\n });\n const value = await this.cache.get(key);\n const isNew = value === undefined;\n\n let task: Task<ChatModelOutput[]> | null = null;\n if (isNew) {\n task = new Task();\n await this.cache.set(key, task);\n }\n\n return {\n key,\n value,\n resolve: <T2 extends ChatModelOutput>(value: T2[]) => {\n task?.resolve?.(value);\n },\n reject: async (error: Error) => {\n task?.reject?.(error);\n if (isNew) {\n await this.cache.delete(key);\n }\n },\n };\n }\n}\n\nexport class ChatModelOutput extends Serializable {\n constructor(\n public readonly messages: Message[],\n public usage?: ChatModelUsage,\n public finishReason?: ChatModelFinishReason,\n ) {\n super();\n }\n\n static fromChunks(chunks: ChatModelOutput[]) {\n const final = new ChatModelOutput([]);\n chunks.forEach((cur) => final.merge(cur));\n return final;\n }\n\n merge(other: ChatModelOutput) {\n this.messages.push(...other.messages);\n this.finishReason = other.finishReason;\n if (this.usage && other.usage) {\n this.usage = customMerge([this.usage, other.usage], {\n totalTokens: takeBigger,\n promptTokens: takeBigger,\n completionTokens: takeBigger,\n });\n } else if (other.usage) {\n this.usage = shallowCopy(other.usage);\n }\n }\n\n getToolCalls() {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.getToolCalls())\n .filter(Boolean);\n }\n\n getTextMessages(): AssistantMessage[] {\n return this.messages.filter((r) => r instanceof AssistantMessage).filter((r) => r.text);\n }\n\n getTextContent(): string {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.text)\n .filter(Boolean)\n .join(\"\");\n }\n\n toString() {\n return this.getTextContent();\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n usage: shallowCopy(this.usage),\n finishReason: this.finishReason,\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":["ChatModel","Serializable","cache","NullCache","parameters","logger","Logger","root","child","name","constructor","toolChoiceSupport","toolCallFallbackViaResponseFormat","modelSupportsToolCalling","create","input","shallowCopy","RunContext","enter","params","signal","abortSignal","run","tools","forceToolCallViaResponseFormat","shouldForceToolCallViaResponseFormat","isEmpty","responseFormat","generateToolUnionSchema","filterToolsByToolChoice","toolChoice","undefined","isToolChoiceSupported","warn","cacheEntry","createCacheAccessor","emitter","emit","chunks","generator","value","stream","_createStream","toAsyncGenerator","_create","controller","AbortController","push","callbacks","abort","aborted","resolve","result","ChatModelOutput","fromChunks","getToolCalls","lastMsg","messages","at","toolCall","parseBrokenJson","text","ChatModelError","isFatal","isRetryable","content","length","type","toolCallId","randomString","toLowerCase","toolName","args","error","reject","createStructure","_createStructure","config","isFunction","fromName","options","providerId","modelId","parseModel","Target","loadModel","schema","jsonSchema","toJsonSchema","systemTemplate","systemPromptTemplate","PromptTemplate","z","object","string","min","template","SystemMessage","render","JSON","stringify","errorTemplate","errors","expected","received","Retryable","executor","response","textResponse","getTextContent","pair","validator","createSchemaValidator","success","context","UserMessage","output","maxRetries","get","createSnapshot","slice","destroy","_","key","ObjectHashKeyFn","Serializer","serialize","map","msg","toPlain","isNew","task","Task","set","delete","Boolean","toolChoiceSupported","choice","Tool","includes","usage","finishReason","final","forEach","cur","merge","other","customMerge","totalTokens","takeBigger","promptTokens","completionTokens","filter","r","AssistantMessage","flatMap","getTextMessages","join","toString","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 { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { customMerge } from \"@/internals/helpers/object.js\";\nimport { takeBigger } from \"@/internals/helpers/number.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { isEmpty, isFunction, randomString } from \"remeda\";\nimport { ObjectHashKeyFn } from \"@/cache/decoratorCache.js\";\nimport { Task } from \"promise-based-task\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport {\n filterToolsByToolChoice,\n FullModelName,\n generateToolUnionSchema,\n loadModel,\n parseModel,\n} from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\n\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z, ZodSchema, ZodType } from \"zod\";\nimport {\n createSchemaValidator,\n parseBrokenJson,\n toJsonSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { Retryable } from \"@/internals/helpers/retryable.js\";\nimport { SchemaObject, ValidateFunction } from \"ajv\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { toAsyncGenerator } from \"@/internals/helpers/promise.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { Logger } from \"@/logger/logger.js\";\n\nexport interface ChatModelParameters {\n maxTokens?: number;\n topP?: number;\n frequencyPenalty?: number;\n temperature?: number;\n topK?: number;\n n?: number;\n presencePenalty?: number;\n seed?: number;\n stopSequences?: string[];\n}\n\ninterface ResponseObjectJson {\n type: \"object-json\";\n schema?: SchemaObject;\n name?: string;\n description?: string;\n}\n\nexport interface ChatModelObjectInput<T> extends ChatModelParameters {\n schema: z.ZodSchema<T> | ResponseObjectJson;\n systemPromptTemplate?: PromptTemplate<ZodType<{ schema: string }>>;\n messages: Message[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface ChatModelObjectOutput<T> {\n object: T;\n output: ChatModelOutput;\n}\n\nexport type ChatModelToolChoice = \"auto\" | \"none\" | \"required\" | AnyTool;\n\nexport interface ChatModelInput extends ChatModelParameters {\n tools?: AnyTool[];\n abortSignal?: AbortSignal;\n stopSequences?: string[];\n responseFormat?: ZodSchema | ResponseObjectJson;\n toolChoice?: ChatModelToolChoice;\n messages: Message[];\n}\n\nexport type ChatModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"error\"\n | \"other\"\n | \"unknown\";\n\nexport interface ChatModelUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n}\n\nexport interface ChatModelEvents {\n newToken?: Callback<{ value: ChatModelOutput; callbacks: { abort: () => void } }>;\n success?: Callback<{ value: ChatModelOutput }>;\n start?: Callback<{ input: ChatModelInput }>;\n error?: Callback<{ input: ChatModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type ChatModelEmitter<A = Record<never, never>> = Emitter<\n ChatModelEvents & Omit<A, keyof ChatModelEvents>\n>;\n\nexport type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;\nexport type ConfigFn<T> = (value: T) => T;\nexport interface ChatConfig {\n cache?: ChatModelCache | ConfigFn<ChatModelCache>;\n parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;\n}\n\nexport type ChatModelToolChoiceSupport = \"required\" | \"none\" | \"single\" | \"auto\";\n\nexport abstract class ChatModel extends Serializable {\n public abstract readonly emitter: Emitter<ChatModelEvents>;\n public cache: ChatModelCache = new NullCache();\n public parameters: ChatModelParameters = {};\n protected readonly logger = Logger.root.child({\n name: this.constructor.name,\n });\n\n public readonly toolChoiceSupport: ChatModelToolChoiceSupport[] = [\n \"required\",\n \"none\",\n \"single\",\n \"auto\",\n ];\n public toolCallFallbackViaResponseFormat = true;\n public readonly modelSupportsToolCalling: boolean = true;\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: ChatModelInput & { stream?: boolean }) {\n input = shallowCopy(input);\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n if (!this.modelSupportsToolCalling) {\n input.tools = [];\n }\n\n const forceToolCallViaResponseFormat = this.shouldForceToolCallViaResponseFormat(input);\n if (forceToolCallViaResponseFormat && input.tools && !isEmpty(input.tools)) {\n input.responseFormat = await generateToolUnionSchema(\n filterToolsByToolChoice(input.tools, input.toolChoice),\n );\n input.toolChoice = undefined;\n }\n\n if (!this.isToolChoiceSupported(input.toolChoice)) {\n this.logger.warn(\n `The following tool choice value '${input.toolChoice}' is not supported. Ignoring.`,\n );\n input.toolChoice = undefined;\n }\n\n const cacheEntry = await this.createCacheAccessor(input);\n\n try {\n await run.emitter.emit(\"start\", { input });\n const chunks: ChatModelOutput[] = [];\n\n const generator =\n cacheEntry.value ??\n (input.stream\n ? this._createStream(input, run)\n : toAsyncGenerator(this._create(input, run)));\n\n const controller = new AbortController();\n for await (const value of generator) {\n chunks.push(value);\n await run.emitter.emit(\"newToken\", {\n value,\n callbacks: { abort: () => controller.abort() },\n });\n if (controller.signal.aborted) {\n break;\n }\n }\n\n cacheEntry.resolve(chunks);\n const result = ChatModelOutput.fromChunks(chunks);\n\n if (forceToolCallViaResponseFormat && isEmpty(result.getToolCalls())) {\n const lastMsg = result.messages.at(-1)!;\n const toolCall = parseBrokenJson(lastMsg.text);\n if (!toolCall) {\n throw new ChatModelError(\n `Failed to produce a valid tool call. Generate output: ${lastMsg.text}`,\n [],\n {\n isFatal: true,\n isRetryable: false,\n },\n );\n }\n lastMsg.content.length = 0;\n lastMsg.content.push({\n type: \"tool-call\",\n toolCallId: `call_${randomString(8).toLowerCase()}`,\n toolName: toolCall.name, // todo: add types\n args: toolCall.parameters,\n });\n }\n\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n await cacheEntry.reject(error);\n if (error instanceof ChatModelError) {\n throw error;\n } else {\n throw new ChatModelError(`The Chat Model has encountered an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n createStructure<T>(input: ChatModelObjectInput<T>) {\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n return await this._createStructure<T>(input, run);\n },\n );\n }\n\n config({ cache, parameters }: ChatConfig): void {\n if (cache) {\n this.cache = isFunction(cache) ? cache(this.cache) : cache;\n }\n if (parameters) {\n this.parameters = isFunction(parameters) ? parameters(this.parameters) : parameters;\n }\n }\n\n static async fromName(name: FullModelName | ProviderName, options?: ChatModelParameters) {\n const { providerId, modelId } = parseModel(name);\n const Target = await loadModel<ChatModel>(providerId, \"chat\");\n return new Target(modelId || undefined, options);\n }\n\n protected abstract _create(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelOutput>;\n protected abstract _createStream(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): AsyncGenerator<ChatModelOutput, void>;\n\n protected async _createStructure<T>(\n input: ChatModelObjectInput<T>,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const { schema, ...options } = input;\n const jsonSchema = toJsonSchema(schema);\n\n const systemTemplate =\n input.systemPromptTemplate ??\n new PromptTemplate({\n schema: z.object({\n schema: z.string().min(1),\n }),\n template: `You are a helpful assistant that generates only valid JSON adhering to the following JSON Schema.\n\n\\`\\`\\`\n{{schema}}\n\\`\\`\\`\n\nIMPORTANT: You MUST answer with a JSON object that matches the JSON schema above.`,\n });\n\n const messages: Message[] = [\n new SystemMessage(systemTemplate.render({ schema: JSON.stringify(jsonSchema, null, 2) })),\n ...input.messages,\n ];\n\n const errorTemplate = new PromptTemplate({\n schema: z.object({\n errors: z.string(),\n expected: z.string(),\n received: z.string(),\n }),\n template: `Generated object does not match the expected JSON schema!\n\nValidation Errors: {{errors}}`,\n });\n\n return new Retryable<ChatModelObjectOutput<T>>({\n executor: async () => {\n const response = await this._create(\n {\n ...options,\n messages,\n responseFormat: { type: \"object-json\" },\n },\n run,\n );\n\n const textResponse = response.getTextContent();\n const object: T = parseBrokenJson(textResponse, { pair: [\"{\", \"}\"] });\n const validator = createSchemaValidator(schema) as ValidateFunction<T>;\n\n const success = validator(object);\n if (!success) {\n const context = {\n expected: JSON.stringify(jsonSchema),\n received: textResponse,\n errors: JSON.stringify(validator.errors ?? []),\n };\n\n messages.push(new UserMessage(errorTemplate.render(context)));\n throw new ChatModelError(`LLM did not produce a valid output.`, [], {\n context,\n });\n }\n\n return {\n object,\n output: response,\n };\n },\n config: {\n signal: run.signal,\n maxRetries: input?.maxRetries || 1,\n },\n }).get();\n }\n\n createSnapshot() {\n return {\n cache: this.cache,\n emitter: this.emitter,\n parameters: shallowCopy(this.parameters),\n logger: this.logger,\n toolChoiceSupport: this.toolChoiceSupport.slice(),\n toolCallFallbackViaResponseFormat: this.toolCallFallbackViaResponseFormat,\n modelSupportsToolCalling: this.modelSupportsToolCalling,\n };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n\n protected async createCacheAccessor({\n abortSignal: _,\n messages,\n tools = [],\n ...input\n }: ChatModelInput) {\n const key = ObjectHashKeyFn({\n ...input,\n messages: await Serializer.serialize(messages.map((msg) => msg.toPlain())),\n tools: await Serializer.serialize(tools),\n });\n const value = await this.cache.get(key);\n const isNew = value === undefined;\n\n let task: Task<ChatModelOutput[]> | null = null;\n if (isNew) {\n task = new Task();\n await this.cache.set(key, task);\n }\n\n return {\n key,\n value,\n resolve: <T2 extends ChatModelOutput>(value: T2[]) => {\n task?.resolve?.(value);\n },\n reject: async (error: Error) => {\n task?.reject?.(error);\n if (isNew) {\n await this.cache.delete(key);\n }\n },\n };\n }\n\n protected shouldForceToolCallViaResponseFormat({\n tools = [],\n toolChoice,\n responseFormat,\n }: ChatModelInput) {\n if (\n isEmpty(tools) ||\n !toolChoice ||\n toolChoice === \"none\" ||\n toolChoice === \"auto\" ||\n !this.toolCallFallbackViaResponseFormat ||\n Boolean(responseFormat)\n ) {\n return false;\n }\n\n const toolChoiceSupported = this.isToolChoiceSupported(toolChoice);\n return !this.modelSupportsToolCalling || !toolChoiceSupported;\n }\n\n protected isToolChoiceSupported(choice?: ChatModelToolChoice): boolean {\n return (\n !choice ||\n (choice instanceof Tool\n ? this.toolChoiceSupport.includes(\"single\")\n : this.toolChoiceSupport.includes(choice))\n );\n }\n}\n\nexport class ChatModelOutput extends Serializable {\n constructor(\n public readonly messages: Message[],\n public usage?: ChatModelUsage,\n public finishReason?: ChatModelFinishReason,\n ) {\n super();\n }\n\n static fromChunks(chunks: ChatModelOutput[]) {\n const final = new ChatModelOutput([]);\n chunks.forEach((cur) => final.merge(cur));\n return final;\n }\n\n merge(other: ChatModelOutput) {\n this.messages.push(...other.messages);\n this.finishReason = other.finishReason;\n if (this.usage && other.usage) {\n this.usage = customMerge([this.usage, other.usage], {\n totalTokens: takeBigger,\n promptTokens: takeBigger,\n completionTokens: takeBigger,\n });\n } else if (other.usage) {\n this.usage = shallowCopy(other.usage);\n }\n }\n\n getToolCalls() {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.getToolCalls())\n .filter(Boolean);\n }\n\n getTextMessages(): AssistantMessage[] {\n return this.messages.filter((r) => r instanceof AssistantMessage).filter((r) => r.text);\n }\n\n getTextContent(): string {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.text)\n .filter(Boolean)\n .join(\"\");\n }\n\n toString() {\n return this.getTextContent();\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n usage: shallowCopy(this.usage),\n finishReason: this.finishReason,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
@@ -13,7 +13,7 @@ class BackendClient extends serializable_cjs.Serializable {
13
13
  settings;
14
14
  constructor(settings) {
15
15
  super();
16
- this.settings = settings;
16
+ this.settings = settings ?? {};
17
17
  this.instance = this.create();
18
18
  }
19
19
  createSnapshot() {
@@ -1 +1 @@
1
- {"version":3,"sources":["client.ts"],"names":["BackendClient","Serializable","instance","settings","constructor","create","createSnapshot","shallowCopy","loadSnapshot","snapshot","Object","assign","ensure"],"mappings":";;;;;;;AAmBO,MAAeA,sBAA4BC,6BAAAA,CAAAA;EAnBlD;;;AAoBkBC,EAAAA,QAAAA;AACGC,EAAAA,QAAAA;AAEnBC,EAAAA,WAAAA,CAAYD,QAAa,EAAA;AACvB,IAAK,KAAA,EAAA;AACL,IAAA,IAAA,CAAKA,QAAWA,GAAAA,QAAAA;AAChB,IAAKD,IAAAA,CAAAA,QAAAA,GAAW,KAAKG,MAAM,EAAA;AAC7B;EAIAC,cAAiB,GAAA;AACf,IAAO,OAAA;MACLH,QAAUI,EAAAA,qBAAAA,CAAY,KAAKJ,QAAQ;AACrC,KAAA;AACF;AAEAK,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACpBC,IAAAA,MAAAA,CAAOC,OAAO,IAAM,EAAA;AAAET,MAAAA,QAAAA,EAAU,KAAKG,MAAM;KAAG,CAAA;AAChD;AAEA,EAAA,OAAOO,OAELT,QACG,EAAA;AACH,IAAIA,IAAAA,QAAAA,IAAYA,oBAAoB,IAAM,EAAA;AACxC,MAAOA,OAAAA,QAAAA;AACT;AACA,IAAO,OAAA,IAAI,KAAKA,QAAAA,CAAAA;AAClB;AACF","file":"client.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 { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\n\nexport abstract class BackendClient<P, T> extends Serializable {\n public readonly instance: T;\n protected readonly settings: P;\n\n constructor(settings: P) {\n super();\n this.settings = settings;\n this.instance = this.create();\n }\n\n protected abstract create(): T;\n\n createSnapshot() {\n return {\n settings: shallowCopy(this.settings),\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n Object.assign(this, { instance: this.create() });\n }\n\n static ensure<P2, T2, R extends BackendClient<P2, T2>>(\n this: new (settings: P2) => R,\n settings?: P2 | R,\n ): R {\n if (settings && settings instanceof this) {\n return settings;\n }\n return new this(settings as P2);\n }\n}\n"]}
1
+ {"version":3,"sources":["client.ts"],"names":["BackendClient","Serializable","instance","settings","constructor","create","createSnapshot","shallowCopy","loadSnapshot","snapshot","Object","assign","ensure"],"mappings":";;;;;;;AAmBO,MAAeA,sBAA4BC,6BAAAA,CAAAA;EAnBlD;;;AAoBkBC,EAAAA,QAAAA;AACGC,EAAAA,QAAAA;AAEnBC,EAAAA,WAAAA,CAAYD,QAAa,EAAA;AACvB,IAAK,KAAA,EAAA;AACL,IAAKA,IAAAA,CAAAA,QAAAA,GAAWA,YAAa,EAAC;AAC9B,IAAKD,IAAAA,CAAAA,QAAAA,GAAW,KAAKG,MAAM,EAAA;AAC7B;EAIAC,cAAiB,GAAA;AACf,IAAO,OAAA;MACLH,QAAUI,EAAAA,qBAAAA,CAAY,KAAKJ,QAAQ;AACrC,KAAA;AACF;AAEAK,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACpBC,IAAAA,MAAAA,CAAOC,OAAO,IAAM,EAAA;AAAET,MAAAA,QAAAA,EAAU,KAAKG,MAAM;KAAG,CAAA;AAChD;AAEA,EAAA,OAAOO,OAELT,QACG,EAAA;AACH,IAAIA,IAAAA,QAAAA,IAAYA,oBAAoB,IAAM,EAAA;AACxC,MAAOA,OAAAA,QAAAA;AACT;AACA,IAAO,OAAA,IAAI,KAAKA,QAAAA,CAAAA;AAClB;AACF","file":"client.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 { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\n\nexport abstract class BackendClient<P, T> extends Serializable {\n public readonly instance: T;\n protected readonly settings: P;\n\n constructor(settings: P) {\n super();\n this.settings = settings ?? ({} as P);\n this.instance = this.create();\n }\n\n protected abstract create(): T;\n\n createSnapshot() {\n return {\n settings: shallowCopy(this.settings),\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n Object.assign(this, { instance: this.create() });\n }\n\n static ensure<P2, T2, R extends BackendClient<P2, T2>>(\n this: new (settings: P2) => R,\n settings?: P2 | R,\n ): R {\n if (settings && settings instanceof this) {\n return settings;\n }\n return new this(settings as P2);\n }\n}\n"]}
@@ -3,7 +3,7 @@ import '../internals/types.cjs';
3
3
  import '../internals/helpers/guards.cjs';
4
4
 
5
5
  /**
6
- * Copyright 2025 IBM Corp.
6
+ * Copyright 2025 © BeeAI a Series of LF Projects, LLC
7
7
  *
8
8
  * Licensed under the Apache License, Version 2.0 (the "License");
9
9
  * you may not use this file except in compliance with the License.
@@ -3,7 +3,7 @@ import '../internals/types.js';
3
3
  import '../internals/helpers/guards.js';
4
4
 
5
5
  /**
6
- * Copyright 2025 IBM Corp.
6
+ * Copyright 2025 © BeeAI a Series of LF Projects, LLC
7
7
  *
8
8
  * Licensed under the Apache License, Version 2.0 (the "License");
9
9
  * you may not use this file except in compliance with the License.
@@ -11,7 +11,7 @@ class BackendClient extends Serializable {
11
11
  settings;
12
12
  constructor(settings) {
13
13
  super();
14
- this.settings = settings;
14
+ this.settings = settings ?? {};
15
15
  this.instance = this.create();
16
16
  }
17
17
  createSnapshot() {
@@ -1 +1 @@
1
- {"version":3,"sources":["client.ts"],"names":["BackendClient","Serializable","instance","settings","constructor","create","createSnapshot","shallowCopy","loadSnapshot","snapshot","Object","assign","ensure"],"mappings":";;;;;AAmBO,MAAeA,sBAA4BC,YAAAA,CAAAA;EAnBlD;;;AAoBkBC,EAAAA,QAAAA;AACGC,EAAAA,QAAAA;AAEnBC,EAAAA,WAAAA,CAAYD,QAAa,EAAA;AACvB,IAAK,KAAA,EAAA;AACL,IAAA,IAAA,CAAKA,QAAWA,GAAAA,QAAAA;AAChB,IAAKD,IAAAA,CAAAA,QAAAA,GAAW,KAAKG,MAAM,EAAA;AAC7B;EAIAC,cAAiB,GAAA;AACf,IAAO,OAAA;MACLH,QAAUI,EAAAA,WAAAA,CAAY,KAAKJ,QAAQ;AACrC,KAAA;AACF;AAEAK,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACpBC,IAAAA,MAAAA,CAAOC,OAAO,IAAM,EAAA;AAAET,MAAAA,QAAAA,EAAU,KAAKG,MAAM;KAAG,CAAA;AAChD;AAEA,EAAA,OAAOO,OAELT,QACG,EAAA;AACH,IAAIA,IAAAA,QAAAA,IAAYA,oBAAoB,IAAM,EAAA;AACxC,MAAOA,OAAAA,QAAAA;AACT;AACA,IAAO,OAAA,IAAI,KAAKA,QAAAA,CAAAA;AAClB;AACF","file":"client.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 { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\n\nexport abstract class BackendClient<P, T> extends Serializable {\n public readonly instance: T;\n protected readonly settings: P;\n\n constructor(settings: P) {\n super();\n this.settings = settings;\n this.instance = this.create();\n }\n\n protected abstract create(): T;\n\n createSnapshot() {\n return {\n settings: shallowCopy(this.settings),\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n Object.assign(this, { instance: this.create() });\n }\n\n static ensure<P2, T2, R extends BackendClient<P2, T2>>(\n this: new (settings: P2) => R,\n settings?: P2 | R,\n ): R {\n if (settings && settings instanceof this) {\n return settings;\n }\n return new this(settings as P2);\n }\n}\n"]}
1
+ {"version":3,"sources":["client.ts"],"names":["BackendClient","Serializable","instance","settings","constructor","create","createSnapshot","shallowCopy","loadSnapshot","snapshot","Object","assign","ensure"],"mappings":";;;;;AAmBO,MAAeA,sBAA4BC,YAAAA,CAAAA;EAnBlD;;;AAoBkBC,EAAAA,QAAAA;AACGC,EAAAA,QAAAA;AAEnBC,EAAAA,WAAAA,CAAYD,QAAa,EAAA;AACvB,IAAK,KAAA,EAAA;AACL,IAAKA,IAAAA,CAAAA,QAAAA,GAAWA,YAAa,EAAC;AAC9B,IAAKD,IAAAA,CAAAA,QAAAA,GAAW,KAAKG,MAAM,EAAA;AAC7B;EAIAC,cAAiB,GAAA;AACf,IAAO,OAAA;MACLH,QAAUI,EAAAA,WAAAA,CAAY,KAAKJ,QAAQ;AACrC,KAAA;AACF;AAEAK,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACpBC,IAAAA,MAAAA,CAAOC,OAAO,IAAM,EAAA;AAAET,MAAAA,QAAAA,EAAU,KAAKG,MAAM;KAAG,CAAA;AAChD;AAEA,EAAA,OAAOO,OAELT,QACG,EAAA;AACH,IAAIA,IAAAA,QAAAA,IAAYA,oBAAoB,IAAM,EAAA;AACxC,MAAOA,OAAAA,QAAAA;AACT;AACA,IAAO,OAAA,IAAI,KAAKA,QAAAA,CAAAA;AAClB;AACF","file":"client.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 { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\n\nexport abstract class BackendClient<P, T> extends Serializable {\n public readonly instance: T;\n protected readonly settings: P;\n\n constructor(settings: P) {\n super();\n this.settings = settings ?? ({} as P);\n this.instance = this.create();\n }\n\n protected abstract create(): T;\n\n createSnapshot() {\n return {\n settings: shallowCopy(this.settings),\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n Object.assign(this, { instance: this.create() });\n }\n\n static ensure<P2, T2, R extends BackendClient<P2, T2>>(\n this: new (settings: P2) => R,\n settings?: P2 | R,\n ): R {\n if (settings && settings instanceof this) {\n return settings;\n }\n return new this(settings as P2);\n }\n}\n"]}
@@ -54,6 +54,11 @@ const BackendProviders = {
54
54
  name: "Dummy",
55
55
  module: "dummy",
56
56
  aliases: []
57
+ },
58
+ Anthropic: {
59
+ name: "Anthropic",
60
+ module: "anthropic",
61
+ aliases: []
57
62
  }
58
63
  };
59
64
 
@@ -1 +1 @@
1
- {"version":3,"sources":["constants.ts"],"names":["BackendProviders","OpenAI","name","module","aliases","Azure","Watsonx","Ollama","GoogleVertex","Bedrock","Groq","Dummy"],"mappings":";;AAgBO,MAAMA,gBAAmB,GAAA;EAC9BC,MAAQ,EAAA;IAAEC,IAAM,EAAA,QAAA;IAAUC,MAAQ,EAAA,QAAA;IAAUC,OAAS,EAAA;AAAC,MAAA;;AAAsB,GAAA;EAC5EC,KAAO,EAAA;IAAEH,IAAM,EAAA,OAAA;IAASC,MAAQ,EAAA,OAAA;IAASC,OAAS,EAAA;AAAC,MAAA,WAAA;AAAa,MAAA;;AAA+B,GAAA;EAC/FE,OAAS,EAAA;IAAEJ,IAAM,EAAA,SAAA;IAAWC,MAAQ,EAAA,SAAA;IAAWC,OAAS,EAAA;AAAC,MAAA,SAAA;AAAW,MAAA;;AAAmB,GAAA;EACvFG,MAAQ,EAAA;IAAEL,IAAM,EAAA,QAAA;IAAUC,MAAQ,EAAA,QAAA;AAAUC,IAAAA,OAAAA,EAAS;AAAe,GAAA;EACpEI,YAAc,EAAA;IACZN,IAAM,EAAA,cAAA;IACNC,MAAQ,EAAA,eAAA;IACRC,OAAS,EAAA;AAAC,MAAA,QAAA;AAAU,MAAA;;AACtB,GAAA;EACAK,OAAS,EAAA;IACPP,IAAM,EAAA,SAAA;IACNC,MAAQ,EAAA,gBAAA;IACRC,OAAS,EAAA;AAAC,MAAA,QAAA;AAAU,MAAA;;AACtB,GAAA;EACAM,IAAM,EAAA;IAAER,IAAM,EAAA,MAAA;IAAQC,MAAQ,EAAA,MAAA;AAAQC,IAAAA,OAAAA,EAAS;AAAe,GAAA;EAC9DO,KAAO,EAAA;IAAET,IAAM,EAAA,OAAA;IAASC,MAAQ,EAAA,OAAA;AAASC,IAAAA,OAAAA,EAAS;AAAe;AACnE","file":"constants.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\nexport const BackendProviders = {\n OpenAI: { name: \"OpenAI\", module: \"openai\", aliases: [\"openai\"] as string[] },\n Azure: { name: \"Azure\", module: \"azure\", aliases: [\"microsoft\", \"microsoft-azure\"] as string[] },\n Watsonx: { name: \"Watsonx\", module: \"watsonx\", aliases: [\"watsonx\", \"ibm\"] as string[] },\n Ollama: { name: \"Ollama\", module: \"ollama\", aliases: [] as string[] },\n GoogleVertex: {\n name: \"GoogleVertex\",\n module: \"google-vertex\",\n aliases: [\"google\", \"vertex\"] as string[],\n },\n Bedrock: {\n name: \"Bedrock\",\n module: \"amazon-bedrock\",\n aliases: [\"amazon\", \"bedrock\"] as string[],\n },\n Groq: { name: \"Groq\", module: \"groq\", aliases: [] as string[] },\n Dummy: { name: \"Dummy\", module: \"dummy\", aliases: [] as string[] },\n} as const;\n\nexport type ProviderName = (typeof BackendProviders)[keyof typeof BackendProviders][\"module\"];\nexport type ProviderHumanName = (typeof BackendProviders)[keyof typeof BackendProviders][\"name\"];\nexport type ProviderDef = (typeof BackendProviders)[keyof typeof BackendProviders];\n"]}
1
+ {"version":3,"sources":["constants.ts"],"names":["BackendProviders","OpenAI","name","module","aliases","Azure","Watsonx","Ollama","GoogleVertex","Bedrock","Groq","Dummy","Anthropic"],"mappings":";;AAgBO,MAAMA,gBAAmB,GAAA;EAC9BC,MAAQ,EAAA;IAAEC,IAAM,EAAA,QAAA;IAAUC,MAAQ,EAAA,QAAA;IAAUC,OAAS,EAAA;AAAC,MAAA;;AAAsB,GAAA;EAC5EC,KAAO,EAAA;IAAEH,IAAM,EAAA,OAAA;IAASC,MAAQ,EAAA,OAAA;IAASC,OAAS,EAAA;AAAC,MAAA,WAAA;AAAa,MAAA;;AAA+B,GAAA;EAC/FE,OAAS,EAAA;IAAEJ,IAAM,EAAA,SAAA;IAAWC,MAAQ,EAAA,SAAA;IAAWC,OAAS,EAAA;AAAC,MAAA,SAAA;AAAW,MAAA;;AAAmB,GAAA;EACvFG,MAAQ,EAAA;IAAEL,IAAM,EAAA,QAAA;IAAUC,MAAQ,EAAA,QAAA;AAAUC,IAAAA,OAAAA,EAAS;AAAe,GAAA;EACpEI,YAAc,EAAA;IACZN,IAAM,EAAA,cAAA;IACNC,MAAQ,EAAA,eAAA;IACRC,OAAS,EAAA;AAAC,MAAA,QAAA;AAAU,MAAA;;AACtB,GAAA;EACAK,OAAS,EAAA;IACPP,IAAM,EAAA,SAAA;IACNC,MAAQ,EAAA,gBAAA;IACRC,OAAS,EAAA;AAAC,MAAA,QAAA;AAAU,MAAA;;AACtB,GAAA;EACAM,IAAM,EAAA;IAAER,IAAM,EAAA,MAAA;IAAQC,MAAQ,EAAA,MAAA;AAAQC,IAAAA,OAAAA,EAAS;AAAe,GAAA;EAC9DO,KAAO,EAAA;IAAET,IAAM,EAAA,OAAA;IAASC,MAAQ,EAAA,OAAA;AAASC,IAAAA,OAAAA,EAAS;AAAe,GAAA;EACjEQ,SAAW,EAAA;IAAEV,IAAM,EAAA,WAAA;IAAaC,MAAQ,EAAA,WAAA;AAAaC,IAAAA,OAAAA,EAAS;AAAe;AAC/E","file":"constants.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\nexport const BackendProviders = {\n OpenAI: { name: \"OpenAI\", module: \"openai\", aliases: [\"openai\"] as string[] },\n Azure: { name: \"Azure\", module: \"azure\", aliases: [\"microsoft\", \"microsoft-azure\"] as string[] },\n Watsonx: { name: \"Watsonx\", module: \"watsonx\", aliases: [\"watsonx\", \"ibm\"] as string[] },\n Ollama: { name: \"Ollama\", module: \"ollama\", aliases: [] as string[] },\n GoogleVertex: {\n name: \"GoogleVertex\",\n module: \"google-vertex\",\n aliases: [\"google\", \"vertex\"] as string[],\n },\n Bedrock: {\n name: \"Bedrock\",\n module: \"amazon-bedrock\",\n aliases: [\"amazon\", \"bedrock\"] as string[],\n },\n Groq: { name: \"Groq\", module: \"groq\", aliases: [] as string[] },\n Dummy: { name: \"Dummy\", module: \"dummy\", aliases: [] as string[] },\n Anthropic: { name: \"Anthropic\", module: \"anthropic\", aliases: [] as string[] },\n} as const;\n\nexport type ProviderName = (typeof BackendProviders)[keyof typeof BackendProviders][\"module\"];\nexport type ProviderHumanName = (typeof BackendProviders)[keyof typeof BackendProviders][\"name\"];\nexport type ProviderDef = (typeof BackendProviders)[keyof typeof BackendProviders];\n"]}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2025 IBM Corp.
2
+ * Copyright 2025 © BeeAI a Series of LF Projects, LLC
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -54,6 +54,11 @@ declare const BackendProviders: {
54
54
  readonly module: "dummy";
55
55
  readonly aliases: string[];
56
56
  };
57
+ readonly Anthropic: {
58
+ readonly name: "Anthropic";
59
+ readonly module: "anthropic";
60
+ readonly aliases: string[];
61
+ };
57
62
  };
58
63
  type ProviderName = (typeof BackendProviders)[keyof typeof BackendProviders]["module"];
59
64
  type ProviderHumanName = (typeof BackendProviders)[keyof typeof BackendProviders]["name"];
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2025 IBM Corp.
2
+ * Copyright 2025 © BeeAI a Series of LF Projects, LLC
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -54,6 +54,11 @@ declare const BackendProviders: {
54
54
  readonly module: "dummy";
55
55
  readonly aliases: string[];
56
56
  };
57
+ readonly Anthropic: {
58
+ readonly name: "Anthropic";
59
+ readonly module: "anthropic";
60
+ readonly aliases: string[];
61
+ };
57
62
  };
58
63
  type ProviderName = (typeof BackendProviders)[keyof typeof BackendProviders]["module"];
59
64
  type ProviderHumanName = (typeof BackendProviders)[keyof typeof BackendProviders]["name"];
@@ -52,6 +52,11 @@ const BackendProviders = {
52
52
  name: "Dummy",
53
53
  module: "dummy",
54
54
  aliases: []
55
+ },
56
+ Anthropic: {
57
+ name: "Anthropic",
58
+ module: "anthropic",
59
+ aliases: []
55
60
  }
56
61
  };
57
62
 
@@ -1 +1 @@
1
- {"version":3,"sources":["constants.ts"],"names":["BackendProviders","OpenAI","name","module","aliases","Azure","Watsonx","Ollama","GoogleVertex","Bedrock","Groq","Dummy"],"mappings":"AAgBO,MAAMA,gBAAmB,GAAA;EAC9BC,MAAQ,EAAA;IAAEC,IAAM,EAAA,QAAA;IAAUC,MAAQ,EAAA,QAAA;IAAUC,OAAS,EAAA;AAAC,MAAA;;AAAsB,GAAA;EAC5EC,KAAO,EAAA;IAAEH,IAAM,EAAA,OAAA;IAASC,MAAQ,EAAA,OAAA;IAASC,OAAS,EAAA;AAAC,MAAA,WAAA;AAAa,MAAA;;AAA+B,GAAA;EAC/FE,OAAS,EAAA;IAAEJ,IAAM,EAAA,SAAA;IAAWC,MAAQ,EAAA,SAAA;IAAWC,OAAS,EAAA;AAAC,MAAA,SAAA;AAAW,MAAA;;AAAmB,GAAA;EACvFG,MAAQ,EAAA;IAAEL,IAAM,EAAA,QAAA;IAAUC,MAAQ,EAAA,QAAA;AAAUC,IAAAA,OAAAA,EAAS;AAAe,GAAA;EACpEI,YAAc,EAAA;IACZN,IAAM,EAAA,cAAA;IACNC,MAAQ,EAAA,eAAA;IACRC,OAAS,EAAA;AAAC,MAAA,QAAA;AAAU,MAAA;;AACtB,GAAA;EACAK,OAAS,EAAA;IACPP,IAAM,EAAA,SAAA;IACNC,MAAQ,EAAA,gBAAA;IACRC,OAAS,EAAA;AAAC,MAAA,QAAA;AAAU,MAAA;;AACtB,GAAA;EACAM,IAAM,EAAA;IAAER,IAAM,EAAA,MAAA;IAAQC,MAAQ,EAAA,MAAA;AAAQC,IAAAA,OAAAA,EAAS;AAAe,GAAA;EAC9DO,KAAO,EAAA;IAAET,IAAM,EAAA,OAAA;IAASC,MAAQ,EAAA,OAAA;AAASC,IAAAA,OAAAA,EAAS;AAAe;AACnE","file":"constants.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\nexport const BackendProviders = {\n OpenAI: { name: \"OpenAI\", module: \"openai\", aliases: [\"openai\"] as string[] },\n Azure: { name: \"Azure\", module: \"azure\", aliases: [\"microsoft\", \"microsoft-azure\"] as string[] },\n Watsonx: { name: \"Watsonx\", module: \"watsonx\", aliases: [\"watsonx\", \"ibm\"] as string[] },\n Ollama: { name: \"Ollama\", module: \"ollama\", aliases: [] as string[] },\n GoogleVertex: {\n name: \"GoogleVertex\",\n module: \"google-vertex\",\n aliases: [\"google\", \"vertex\"] as string[],\n },\n Bedrock: {\n name: \"Bedrock\",\n module: \"amazon-bedrock\",\n aliases: [\"amazon\", \"bedrock\"] as string[],\n },\n Groq: { name: \"Groq\", module: \"groq\", aliases: [] as string[] },\n Dummy: { name: \"Dummy\", module: \"dummy\", aliases: [] as string[] },\n} as const;\n\nexport type ProviderName = (typeof BackendProviders)[keyof typeof BackendProviders][\"module\"];\nexport type ProviderHumanName = (typeof BackendProviders)[keyof typeof BackendProviders][\"name\"];\nexport type ProviderDef = (typeof BackendProviders)[keyof typeof BackendProviders];\n"]}
1
+ {"version":3,"sources":["constants.ts"],"names":["BackendProviders","OpenAI","name","module","aliases","Azure","Watsonx","Ollama","GoogleVertex","Bedrock","Groq","Dummy","Anthropic"],"mappings":"AAgBO,MAAMA,gBAAmB,GAAA;EAC9BC,MAAQ,EAAA;IAAEC,IAAM,EAAA,QAAA;IAAUC,MAAQ,EAAA,QAAA;IAAUC,OAAS,EAAA;AAAC,MAAA;;AAAsB,GAAA;EAC5EC,KAAO,EAAA;IAAEH,IAAM,EAAA,OAAA;IAASC,MAAQ,EAAA,OAAA;IAASC,OAAS,EAAA;AAAC,MAAA,WAAA;AAAa,MAAA;;AAA+B,GAAA;EAC/FE,OAAS,EAAA;IAAEJ,IAAM,EAAA,SAAA;IAAWC,MAAQ,EAAA,SAAA;IAAWC,OAAS,EAAA;AAAC,MAAA,SAAA;AAAW,MAAA;;AAAmB,GAAA;EACvFG,MAAQ,EAAA;IAAEL,IAAM,EAAA,QAAA;IAAUC,MAAQ,EAAA,QAAA;AAAUC,IAAAA,OAAAA,EAAS;AAAe,GAAA;EACpEI,YAAc,EAAA;IACZN,IAAM,EAAA,cAAA;IACNC,MAAQ,EAAA,eAAA;IACRC,OAAS,EAAA;AAAC,MAAA,QAAA;AAAU,MAAA;;AACtB,GAAA;EACAK,OAAS,EAAA;IACPP,IAAM,EAAA,SAAA;IACNC,MAAQ,EAAA,gBAAA;IACRC,OAAS,EAAA;AAAC,MAAA,QAAA;AAAU,MAAA;;AACtB,GAAA;EACAM,IAAM,EAAA;IAAER,IAAM,EAAA,MAAA;IAAQC,MAAQ,EAAA,MAAA;AAAQC,IAAAA,OAAAA,EAAS;AAAe,GAAA;EAC9DO,KAAO,EAAA;IAAET,IAAM,EAAA,OAAA;IAASC,MAAQ,EAAA,OAAA;AAASC,IAAAA,OAAAA,EAAS;AAAe,GAAA;EACjEQ,SAAW,EAAA;IAAEV,IAAM,EAAA,WAAA;IAAaC,MAAQ,EAAA,WAAA;AAAaC,IAAAA,OAAAA,EAAS;AAAe;AAC/E","file":"constants.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\nexport const BackendProviders = {\n OpenAI: { name: \"OpenAI\", module: \"openai\", aliases: [\"openai\"] as string[] },\n Azure: { name: \"Azure\", module: \"azure\", aliases: [\"microsoft\", \"microsoft-azure\"] as string[] },\n Watsonx: { name: \"Watsonx\", module: \"watsonx\", aliases: [\"watsonx\", \"ibm\"] as string[] },\n Ollama: { name: \"Ollama\", module: \"ollama\", aliases: [] as string[] },\n GoogleVertex: {\n name: \"GoogleVertex\",\n module: \"google-vertex\",\n aliases: [\"google\", \"vertex\"] as string[],\n },\n Bedrock: {\n name: \"Bedrock\",\n module: \"amazon-bedrock\",\n aliases: [\"amazon\", \"bedrock\"] as string[],\n },\n Groq: { name: \"Groq\", module: \"groq\", aliases: [] as string[] },\n Dummy: { name: \"Dummy\", module: \"dummy\", aliases: [] as string[] },\n Anthropic: { name: \"Anthropic\", module: \"anthropic\", aliases: [] as string[] },\n} as const;\n\nexport type ProviderName = (typeof BackendProviders)[keyof typeof BackendProviders][\"module\"];\nexport type ProviderHumanName = (typeof BackendProviders)[keyof typeof BackendProviders][\"name\"];\nexport type ProviderDef = (typeof BackendProviders)[keyof typeof BackendProviders];\n"]}
@@ -1,16 +1,15 @@
1
1
  export { Backend } from './backend.cjs';
2
- export { ChatConfig, ChatModel, ChatModelCache, ChatModelEmitter, ChatModelEvents, ChatModelFinishReason, ChatModelInput, ChatModelObjectInput, ChatModelObjectOutput, ChatModelOutput, ChatModelParameters, ChatModelUsage, ConfigFn } from './chat.cjs';
2
+ export { k as ChatConfig, m as ChatModel, i as ChatModelCache, h as ChatModelEmitter, g as ChatModelEvents, e as ChatModelFinishReason, d as ChatModelInput, a as ChatModelObjectInput, b as ChatModelObjectOutput, n as ChatModelOutput, C as ChatModelParameters, c as ChatModelToolChoice, l as ChatModelToolChoiceSupport, f as ChatModelUsage, j as ConfigFn } from '../chat-BvyMdWFo.cjs';
3
3
  export { EmbeddingModel, EmbeddingModelEmitter, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from './embedding.cjs';
4
4
  export { AssistantMessage, CustomMessage, Message, MessageContentPart, MessageInput, MessageMeta, MessageRole, Role, SystemMessage, ToolMessage, UserMessage } from './message.cjs';
5
5
  export { BackendError, ChatModelError, EmbeddingModelError } from './errors.cjs';
6
6
  import '../internals/serializable.cjs';
7
7
  import '../internals/types.cjs';
8
8
  import '../internals/helpers/guards.cjs';
9
- import './utils.cjs';
10
9
  import './constants.cjs';
11
10
  import 'ai';
12
11
  import '../context.cjs';
13
- import '../emitter-BWtGHYn0.cjs';
12
+ import '../emitter-BTr99H7I.cjs';
14
13
  import '../internals/helpers/promise.cjs';
15
14
  import '../errors.cjs';
16
15
  import 'promise-based-task';
@@ -20,4 +19,6 @@ import 'ajv';
20
19
  import '../internals/helpers/schema.cjs';
21
20
  import 'zod';
22
21
  import 'zod-to-json-schema';
23
- import '@ai-sdk/provider';
22
+ import '../template.cjs';
23
+ import '../logger/logger.cjs';
24
+ import 'pino';