beeai-framework 0.1.29 → 0.1.30

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 (558) hide show
  1. package/dist/adapters/a2a/agents/agent.cjs.map +1 -1
  2. package/dist/adapters/a2a/agents/agent.d.cts +2 -2
  3. package/dist/adapters/a2a/agents/agent.d.ts +2 -2
  4. package/dist/adapters/a2a/agents/agent.js.map +1 -1
  5. package/dist/adapters/a2a/agents/events.d.cts +1 -1
  6. package/dist/adapters/a2a/agents/events.d.ts +1 -1
  7. package/dist/adapters/a2a/agents/types.d.cts +2 -2
  8. package/dist/adapters/a2a/agents/types.d.ts +2 -2
  9. package/dist/adapters/a2a/agents/utils.cjs +52 -11
  10. package/dist/adapters/a2a/agents/utils.cjs.map +1 -1
  11. package/dist/adapters/a2a/agents/utils.js +52 -11
  12. package/dist/adapters/a2a/agents/utils.js.map +1 -1
  13. package/dist/adapters/a2a/serve/agent_executor.cjs.map +1 -1
  14. package/dist/adapters/a2a/serve/agent_executor.d.cts +3 -3
  15. package/dist/adapters/a2a/serve/agent_executor.d.ts +3 -3
  16. package/dist/adapters/a2a/serve/agent_executor.js.map +1 -1
  17. package/dist/adapters/a2a/serve/server.cjs.map +1 -1
  18. package/dist/adapters/a2a/serve/server.d.cts +2 -2
  19. package/dist/adapters/a2a/serve/server.d.ts +2 -2
  20. package/dist/adapters/a2a/serve/server.js.map +1 -1
  21. package/dist/adapters/acp/agents/agent.cjs.map +1 -1
  22. package/dist/adapters/acp/agents/agent.d.cts +2 -2
  23. package/dist/adapters/acp/agents/agent.d.ts +2 -2
  24. package/dist/adapters/acp/agents/agent.js.map +1 -1
  25. package/dist/adapters/acp/agents/events.d.cts +1 -1
  26. package/dist/adapters/acp/agents/events.d.ts +1 -1
  27. package/dist/adapters/agentstack/agents/agent.cjs.map +1 -1
  28. package/dist/adapters/agentstack/agents/agent.d.cts +2 -2
  29. package/dist/adapters/agentstack/agents/agent.d.ts +2 -2
  30. package/dist/adapters/agentstack/agents/agent.js.map +1 -1
  31. package/dist/adapters/agentstack/agents/events.d.cts +1 -1
  32. package/dist/adapters/agentstack/agents/events.d.ts +1 -1
  33. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  34. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +2 -2
  35. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +2 -2
  36. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  37. package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
  38. package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
  39. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  40. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +2 -2
  41. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +2 -2
  42. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  43. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  44. package/dist/adapters/anthropic/backend/chat.d.cts +2 -2
  45. package/dist/adapters/anthropic/backend/chat.d.ts +2 -2
  46. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  47. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  48. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  49. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  50. package/dist/adapters/anthropic/backend/embedding.d.cts +2 -2
  51. package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
  52. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  53. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  54. package/dist/adapters/azure-openai/backend/chat.d.cts +3 -3
  55. package/dist/adapters/azure-openai/backend/chat.d.ts +3 -3
  56. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  57. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  58. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  59. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  60. package/dist/adapters/azure-openai/backend/embedding.d.cts +2 -2
  61. package/dist/adapters/azure-openai/backend/embedding.d.ts +2 -2
  62. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  63. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  64. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  65. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  66. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  67. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  68. package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
  69. package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
  70. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  71. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  72. package/dist/adapters/google-vertex/backend/chat.d.cts +3 -3
  73. package/dist/adapters/google-vertex/backend/chat.d.ts +3 -3
  74. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  75. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  76. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  77. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  78. package/dist/adapters/google-vertex/backend/embedding.d.cts +2 -2
  79. package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
  80. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  81. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  82. package/dist/adapters/groq/backend/chat.d.cts +3 -3
  83. package/dist/adapters/groq/backend/chat.d.ts +3 -3
  84. package/dist/adapters/groq/backend/chat.js.map +1 -1
  85. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  86. package/dist/adapters/groq/backend/client.js.map +1 -1
  87. package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
  88. package/dist/adapters/groq/backend/embedding.d.cts +2 -2
  89. package/dist/adapters/groq/backend/embedding.d.ts +2 -2
  90. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  91. package/dist/adapters/langchain/backend/chat.cjs +6 -28
  92. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  93. package/dist/adapters/langchain/backend/chat.d.cts +6 -5
  94. package/dist/adapters/langchain/backend/chat.d.ts +6 -5
  95. package/dist/adapters/langchain/backend/chat.js +6 -28
  96. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  97. package/dist/adapters/langchain/backend/embedding.cjs +3 -2
  98. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  99. package/dist/adapters/langchain/backend/embedding.d.cts +3 -3
  100. package/dist/adapters/langchain/backend/embedding.d.ts +3 -3
  101. package/dist/adapters/langchain/backend/embedding.js +3 -2
  102. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  103. package/dist/adapters/langchain/backend/utils.cjs +328 -0
  104. package/dist/adapters/langchain/backend/utils.cjs.map +1 -0
  105. package/dist/adapters/langchain/backend/utils.d.cts +39 -0
  106. package/dist/adapters/langchain/backend/utils.d.ts +39 -0
  107. package/dist/adapters/langchain/backend/utils.js +324 -0
  108. package/dist/adapters/langchain/backend/utils.js.map +1 -0
  109. package/dist/adapters/langchain/tools.cjs.map +1 -1
  110. package/dist/adapters/langchain/tools.d.cts +2 -2
  111. package/dist/adapters/langchain/tools.d.ts +2 -2
  112. package/dist/adapters/langchain/tools.js.map +1 -1
  113. package/dist/adapters/mcp/serve/http_server.cjs.map +1 -1
  114. package/dist/adapters/mcp/serve/http_server.js.map +1 -1
  115. package/dist/adapters/mcp/serve/in_memory_store.cjs.map +1 -1
  116. package/dist/adapters/mcp/serve/in_memory_store.js.map +1 -1
  117. package/dist/adapters/mcp/serve/server.cjs.map +1 -1
  118. package/dist/adapters/mcp/serve/server.js.map +1 -1
  119. package/dist/adapters/minimax/backend/chat.cjs +25 -0
  120. package/dist/adapters/minimax/backend/chat.cjs.map +1 -0
  121. package/dist/adapters/minimax/backend/chat.d.cts +38 -0
  122. package/dist/adapters/minimax/backend/chat.d.ts +38 -0
  123. package/dist/adapters/minimax/backend/chat.js +23 -0
  124. package/dist/adapters/minimax/backend/chat.js.map +1 -0
  125. package/dist/adapters/minimax/backend/client.cjs +31 -0
  126. package/dist/adapters/minimax/backend/client.cjs.map +1 -0
  127. package/dist/adapters/minimax/backend/client.d.cts +17 -0
  128. package/dist/adapters/minimax/backend/client.d.ts +17 -0
  129. package/dist/adapters/minimax/backend/client.js +29 -0
  130. package/dist/adapters/minimax/backend/client.js.map +1 -0
  131. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  132. package/dist/adapters/ollama/backend/chat.d.cts +2 -2
  133. package/dist/adapters/ollama/backend/chat.d.ts +2 -2
  134. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  135. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  136. package/dist/adapters/ollama/backend/client.js.map +1 -1
  137. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  138. package/dist/adapters/ollama/backend/embedding.d.cts +2 -2
  139. package/dist/adapters/ollama/backend/embedding.d.ts +2 -2
  140. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  141. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  142. package/dist/adapters/openai/backend/chat.d.cts +2 -2
  143. package/dist/adapters/openai/backend/chat.d.ts +2 -2
  144. package/dist/adapters/openai/backend/chat.js.map +1 -1
  145. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  146. package/dist/adapters/openai/backend/client.js.map +1 -1
  147. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  148. package/dist/adapters/openai/backend/embedding.d.cts +2 -2
  149. package/dist/adapters/openai/backend/embedding.d.ts +2 -2
  150. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  151. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  152. package/dist/adapters/vercel/backend/chat.d.cts +2 -2
  153. package/dist/adapters/vercel/backend/chat.d.ts +2 -2
  154. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  155. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  156. package/dist/adapters/vercel/backend/embedding.d.cts +2 -2
  157. package/dist/adapters/vercel/backend/embedding.d.ts +2 -2
  158. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  159. package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
  160. package/dist/adapters/vercel/backend/utils.d.cts +2 -2
  161. package/dist/adapters/vercel/backend/utils.d.ts +2 -2
  162. package/dist/adapters/vercel/backend/utils.js.map +1 -1
  163. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  164. package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
  165. package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
  166. package/dist/adapters/watsonx/backend/chat.js +1 -1
  167. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  168. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  169. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  170. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  171. package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
  172. package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
  173. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  174. package/dist/adapters/xai/backend/chat.cjs.map +1 -1
  175. package/dist/adapters/xai/backend/chat.d.cts +2 -2
  176. package/dist/adapters/xai/backend/chat.d.ts +2 -2
  177. package/dist/adapters/xai/backend/chat.js.map +1 -1
  178. package/dist/adapters/xai/backend/client.cjs.map +1 -1
  179. package/dist/adapters/xai/backend/client.js.map +1 -1
  180. package/dist/{agent-CZGWXO-X.d.ts → agent-s3uhvAba.d.ts} +4 -4
  181. package/dist/{agent-PRlGoawI.d.cts → agent-zfT__iq9.d.cts} +4 -4
  182. package/dist/agents/base.cjs.map +1 -1
  183. package/dist/agents/base.d.cts +2 -2
  184. package/dist/agents/base.d.ts +2 -2
  185. package/dist/agents/base.js.map +1 -1
  186. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  187. package/dist/agents/experimental/replan/agent.d.cts +3 -3
  188. package/dist/agents/experimental/replan/agent.d.ts +3 -3
  189. package/dist/agents/experimental/replan/agent.js.map +1 -1
  190. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  191. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  192. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  193. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  194. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  195. package/dist/agents/experimental/streamlit/agent.d.cts +3 -3
  196. package/dist/agents/experimental/streamlit/agent.d.ts +3 -3
  197. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  198. package/dist/agents/experimental/streamlit/prompts.cjs +2 -2
  199. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  200. package/dist/agents/experimental/streamlit/prompts.js +2 -2
  201. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  202. package/dist/agents/react/agent.cjs +6 -6
  203. package/dist/agents/react/agent.cjs.map +1 -1
  204. package/dist/agents/react/agent.d.cts +4 -4
  205. package/dist/agents/react/agent.d.ts +4 -4
  206. package/dist/agents/react/agent.js.map +1 -1
  207. package/dist/agents/react/prompts.cjs.map +1 -1
  208. package/dist/agents/react/prompts.js.map +1 -1
  209. package/dist/agents/react/runners/base.cjs.map +1 -1
  210. package/dist/agents/react/runners/base.d.cts +4 -4
  211. package/dist/agents/react/runners/base.d.ts +4 -4
  212. package/dist/agents/react/runners/base.js.map +1 -1
  213. package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
  214. package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
  215. package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
  216. package/dist/agents/react/runners/deep-think/runner.d.cts +4 -4
  217. package/dist/agents/react/runners/deep-think/runner.d.ts +4 -4
  218. package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
  219. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  220. package/dist/agents/react/runners/default/runner.d.cts +4 -4
  221. package/dist/agents/react/runners/default/runner.d.ts +4 -4
  222. package/dist/agents/react/runners/default/runner.js.map +1 -1
  223. package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
  224. package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
  225. package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
  226. package/dist/agents/react/runners/granite/prompts.js.map +1 -1
  227. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  228. package/dist/agents/react/runners/granite/runner.d.cts +4 -4
  229. package/dist/agents/react/runners/granite/runner.d.ts +4 -4
  230. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  231. package/dist/agents/react/types.d.cts +2 -2
  232. package/dist/agents/react/types.d.ts +2 -2
  233. package/dist/agents/requirement/agent.cjs.map +1 -1
  234. package/dist/agents/requirement/agent.d.cts +5 -5
  235. package/dist/agents/requirement/agent.d.ts +5 -5
  236. package/dist/agents/requirement/agent.js.map +1 -1
  237. package/dist/agents/requirement/prompts.d.cts +8 -8
  238. package/dist/agents/requirement/prompts.d.ts +8 -8
  239. package/dist/agents/requirement/requirements/conditional.cjs.map +1 -1
  240. package/dist/agents/requirement/requirements/conditional.d.cts +5 -5
  241. package/dist/agents/requirement/requirements/conditional.d.ts +5 -5
  242. package/dist/agents/requirement/requirements/conditional.js.map +1 -1
  243. package/dist/agents/requirement/requirements/requirement.cjs.map +1 -1
  244. package/dist/agents/requirement/requirements/requirement.d.cts +4 -4
  245. package/dist/agents/requirement/requirements/requirement.d.ts +4 -4
  246. package/dist/agents/requirement/requirements/requirement.js.map +1 -1
  247. package/dist/agents/requirement/requirements/utils.cjs.map +1 -1
  248. package/dist/agents/requirement/requirements/utils.d.cts +1 -1
  249. package/dist/agents/requirement/requirements/utils.d.ts +1 -1
  250. package/dist/agents/requirement/requirements/utils.js.map +1 -1
  251. package/dist/agents/requirement/runner.cjs.map +1 -1
  252. package/dist/agents/requirement/runner.d.cts +5 -5
  253. package/dist/agents/requirement/runner.d.ts +5 -5
  254. package/dist/agents/requirement/runner.js.map +1 -1
  255. package/dist/agents/requirement/types.d.cts +4 -4
  256. package/dist/agents/requirement/types.d.ts +4 -4
  257. package/dist/agents/requirement/utils/llm.cjs.map +1 -1
  258. package/dist/agents/requirement/utils/llm.d.cts +4 -4
  259. package/dist/agents/requirement/utils/llm.d.ts +4 -4
  260. package/dist/agents/requirement/utils/llm.js.map +1 -1
  261. package/dist/agents/requirement/utils/tool.cjs.map +1 -1
  262. package/dist/agents/requirement/utils/tool.d.cts +4 -4
  263. package/dist/agents/requirement/utils/tool.d.ts +4 -4
  264. package/dist/agents/requirement/utils/tool.js.map +1 -1
  265. package/dist/agents/requirement/utils/toolCallChecker.cjs.map +1 -1
  266. package/dist/agents/requirement/utils/toolCallChecker.js.map +1 -1
  267. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  268. package/dist/agents/toolCalling/agent.d.cts +4 -4
  269. package/dist/agents/toolCalling/agent.d.ts +4 -4
  270. package/dist/agents/toolCalling/agent.js.map +1 -1
  271. package/dist/agents/toolCalling/prompts.cjs.map +1 -1
  272. package/dist/agents/toolCalling/prompts.js.map +1 -1
  273. package/dist/agents/toolCalling/types.d.cts +1 -1
  274. package/dist/agents/toolCalling/types.d.ts +1 -1
  275. package/dist/agents/types.d.cts +2 -2
  276. package/dist/agents/types.d.ts +2 -2
  277. package/dist/backend/backend.cjs.map +1 -1
  278. package/dist/backend/backend.d.cts +3 -3
  279. package/dist/backend/backend.d.ts +3 -3
  280. package/dist/backend/backend.js.map +1 -1
  281. package/dist/backend/chat.cjs.map +1 -1
  282. package/dist/backend/chat.d.cts +2 -2
  283. package/dist/backend/chat.d.ts +2 -2
  284. package/dist/backend/chat.js.map +1 -1
  285. package/dist/backend/client.cjs.map +1 -1
  286. package/dist/backend/client.js.map +1 -1
  287. package/dist/backend/constants.cjs +7 -0
  288. package/dist/backend/constants.cjs.map +1 -1
  289. package/dist/backend/constants.d.cts +5 -0
  290. package/dist/backend/constants.d.ts +5 -0
  291. package/dist/backend/constants.js +7 -0
  292. package/dist/backend/constants.js.map +1 -1
  293. package/dist/backend/core.d.cts +2 -2
  294. package/dist/backend/core.d.ts +2 -2
  295. package/dist/backend/embedding.cjs.map +1 -1
  296. package/dist/backend/embedding.d.cts +2 -2
  297. package/dist/backend/embedding.d.ts +2 -2
  298. package/dist/backend/embedding.js.map +1 -1
  299. package/dist/backend/errors.cjs.map +1 -1
  300. package/dist/backend/errors.d.cts +2 -2
  301. package/dist/backend/errors.d.ts +2 -2
  302. package/dist/backend/errors.js.map +1 -1
  303. package/dist/backend/message.cjs.map +1 -1
  304. package/dist/backend/message.js.map +1 -1
  305. package/dist/backend/utils.cjs.map +1 -1
  306. package/dist/backend/utils.d.cts +2 -2
  307. package/dist/backend/utils.d.ts +2 -2
  308. package/dist/backend/utils.js.map +1 -1
  309. package/dist/{base-CyFx7BRL.d.ts → base-BjzyQ8k6.d.ts} +2 -2
  310. package/dist/{base-XfWeXQ-S.d.cts → base-s3ioVIE9.d.cts} +2 -2
  311. package/dist/cache/decoratorCache.cjs.map +1 -1
  312. package/dist/cache/decoratorCache.js.map +1 -1
  313. package/dist/cache/fileCache.cjs.map +1 -1
  314. package/dist/cache/fileCache.js.map +1 -1
  315. package/dist/cache/nullCache.cjs.map +1 -1
  316. package/dist/cache/nullCache.js.map +1 -1
  317. package/dist/cache/slidingCache.cjs.map +1 -1
  318. package/dist/cache/slidingCache.js.map +1 -1
  319. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  320. package/dist/cache/unconstrainedCache.js.map +1 -1
  321. package/dist/{chat-BFl85cqt.d.cts → chat-C20nYj46.d.cts} +3 -3
  322. package/dist/{chat-BRuyDeKR.d.ts → chat-CfTNfR60.d.ts} +3 -3
  323. package/dist/context.cjs.map +1 -1
  324. package/dist/context.d.cts +1 -1
  325. package/dist/context.d.ts +1 -1
  326. package/dist/context.js.map +1 -1
  327. package/dist/emitter/emitter.cjs.map +1 -1
  328. package/dist/emitter/emitter.d.cts +1 -1
  329. package/dist/emitter/emitter.d.ts +1 -1
  330. package/dist/emitter/emitter.js.map +1 -1
  331. package/dist/emitter/types.d.cts +1 -1
  332. package/dist/emitter/types.d.ts +1 -1
  333. package/dist/emitter/utils.cjs.map +1 -1
  334. package/dist/emitter/utils.js.map +1 -1
  335. package/dist/{emitter-jN55XZZq.d.cts → emitter-D4OcelZ9.d.cts} +1 -1
  336. package/dist/{emitter-36-9MnvA.d.ts → emitter-kHxkUxco.d.ts} +1 -1
  337. package/dist/errors.cjs.map +1 -1
  338. package/dist/errors.js.map +1 -1
  339. package/dist/index.d.cts +4 -4
  340. package/dist/index.d.ts +4 -4
  341. package/dist/internals/env.cjs.map +1 -1
  342. package/dist/internals/env.js.map +1 -1
  343. package/dist/internals/fetcher.cjs.map +1 -1
  344. package/dist/internals/fetcher.d.cts +1 -1
  345. package/dist/internals/fetcher.d.ts +1 -1
  346. package/dist/internals/fetcher.js.map +1 -1
  347. package/dist/internals/helpers/array.cjs.map +1 -1
  348. package/dist/internals/helpers/array.js.map +1 -1
  349. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  350. package/dist/internals/helpers/cancellation.js.map +1 -1
  351. package/dist/internals/helpers/counter.cjs.map +1 -1
  352. package/dist/internals/helpers/counter.js.map +1 -1
  353. package/dist/internals/helpers/general.cjs.map +1 -1
  354. package/dist/internals/helpers/general.js.map +1 -1
  355. package/dist/internals/helpers/hash.cjs.map +1 -1
  356. package/dist/internals/helpers/hash.js.map +1 -1
  357. package/dist/internals/helpers/map.cjs.map +1 -1
  358. package/dist/internals/helpers/map.js.map +1 -1
  359. package/dist/internals/helpers/math.cjs.map +1 -1
  360. package/dist/internals/helpers/math.js.map +1 -1
  361. package/dist/internals/helpers/object.cjs +7 -1
  362. package/dist/internals/helpers/object.cjs.map +1 -1
  363. package/dist/internals/helpers/object.js +7 -1
  364. package/dist/internals/helpers/object.js.map +1 -1
  365. package/dist/internals/helpers/paginate.cjs.map +1 -1
  366. package/dist/internals/helpers/paginate.js.map +1 -1
  367. package/dist/internals/helpers/promise.cjs.map +1 -1
  368. package/dist/internals/helpers/promise.js.map +1 -1
  369. package/dist/internals/helpers/prototype.cjs.map +1 -1
  370. package/dist/internals/helpers/prototype.js.map +1 -1
  371. package/dist/internals/helpers/retry.cjs.map +1 -1
  372. package/dist/internals/helpers/retry.js.map +1 -1
  373. package/dist/internals/helpers/retryable.cjs.map +1 -1
  374. package/dist/internals/helpers/retryable.js.map +1 -1
  375. package/dist/internals/helpers/schema.cjs.map +1 -1
  376. package/dist/internals/helpers/schema.d.cts +4 -4
  377. package/dist/internals/helpers/schema.d.ts +4 -4
  378. package/dist/internals/helpers/schema.js.map +1 -1
  379. package/dist/internals/helpers/stream.cjs.map +1 -1
  380. package/dist/internals/helpers/stream.js.map +1 -1
  381. package/dist/internals/helpers/string.cjs.map +1 -1
  382. package/dist/internals/helpers/string.js.map +1 -1
  383. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  384. package/dist/internals/helpers/weakRef.js.map +1 -1
  385. package/dist/internals/serializable.cjs +3 -1
  386. package/dist/internals/serializable.cjs.map +1 -1
  387. package/dist/internals/serializable.d.cts +6 -0
  388. package/dist/internals/serializable.d.ts +6 -0
  389. package/dist/internals/serializable.js +3 -1
  390. package/dist/internals/serializable.js.map +1 -1
  391. package/dist/internals/types.cjs.map +1 -1
  392. package/dist/internals/types.js.map +1 -1
  393. package/dist/logger/logger.cjs.map +1 -1
  394. package/dist/logger/logger.d.cts +2 -2
  395. package/dist/logger/logger.d.ts +2 -2
  396. package/dist/logger/logger.js +2 -2
  397. package/dist/logger/logger.js.map +1 -1
  398. package/dist/logger/pretty.cjs.map +1 -1
  399. package/dist/logger/pretty.js.map +1 -1
  400. package/dist/memory/base.cjs.map +1 -1
  401. package/dist/memory/base.js.map +1 -1
  402. package/dist/memory/slidingMemory.cjs.map +1 -1
  403. package/dist/memory/slidingMemory.js.map +1 -1
  404. package/dist/memory/summarizeMemory.cjs.map +1 -1
  405. package/dist/memory/summarizeMemory.d.cts +2 -2
  406. package/dist/memory/summarizeMemory.d.ts +2 -2
  407. package/dist/memory/summarizeMemory.js.map +1 -1
  408. package/dist/memory/tokenMemory.cjs.map +1 -1
  409. package/dist/memory/tokenMemory.js.map +1 -1
  410. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  411. package/dist/memory/unconstrainedMemory.js.map +1 -1
  412. package/dist/middleware/streamToolCall.cjs.map +1 -1
  413. package/dist/middleware/streamToolCall.d.cts +2 -2
  414. package/dist/middleware/streamToolCall.d.ts +2 -2
  415. package/dist/middleware/streamToolCall.js.map +1 -1
  416. package/dist/middleware/trajectory.cjs.map +1 -1
  417. package/dist/middleware/trajectory.d.cts +2 -2
  418. package/dist/middleware/trajectory.d.ts +2 -2
  419. package/dist/middleware/trajectory.js.map +1 -1
  420. package/dist/parsers/errors.cjs.map +1 -1
  421. package/dist/parsers/errors.js.map +1 -1
  422. package/dist/parsers/field.cjs.map +1 -1
  423. package/dist/parsers/field.js.map +1 -1
  424. package/dist/parsers/linePrefix.cjs.map +1 -1
  425. package/dist/parsers/linePrefix.d.cts +1 -1
  426. package/dist/parsers/linePrefix.d.ts +1 -1
  427. package/dist/parsers/linePrefix.js.map +1 -1
  428. package/dist/serializer/error.cjs.map +1 -1
  429. package/dist/serializer/error.js.map +1 -1
  430. package/dist/serializer/serializer.cjs +16 -3
  431. package/dist/serializer/serializer.cjs.map +1 -1
  432. package/dist/serializer/serializer.d.cts +1 -1
  433. package/dist/serializer/serializer.d.ts +1 -1
  434. package/dist/serializer/serializer.js +16 -4
  435. package/dist/serializer/serializer.js.map +1 -1
  436. package/dist/serializer/utils.cjs.map +1 -1
  437. package/dist/serializer/utils.d.cts +1 -1
  438. package/dist/serializer/utils.d.ts +1 -1
  439. package/dist/serializer/utils.js.map +1 -1
  440. package/dist/{serializer-53t8gGQa.d.ts → serializer-BafOT48s.d.ts} +10 -4
  441. package/dist/{serializer-c51B2z6d.d.cts → serializer-CFDWYUco.d.cts} +10 -4
  442. package/dist/serve/server.cjs.map +1 -1
  443. package/dist/serve/server.js.map +1 -1
  444. package/dist/template.cjs.map +1 -1
  445. package/dist/template.js.map +1 -1
  446. package/dist/tools/arxiv.cjs.map +1 -1
  447. package/dist/tools/arxiv.d.cts +2 -2
  448. package/dist/tools/arxiv.d.ts +2 -2
  449. package/dist/tools/arxiv.js.map +1 -1
  450. package/dist/tools/base.cjs.map +1 -1
  451. package/dist/tools/base.d.cts +1 -1
  452. package/dist/tools/base.d.ts +1 -1
  453. package/dist/tools/base.js.map +1 -1
  454. package/dist/tools/calculator.cjs.map +1 -1
  455. package/dist/tools/calculator.d.cts +3 -3
  456. package/dist/tools/calculator.d.ts +3 -3
  457. package/dist/tools/calculator.js.map +1 -1
  458. package/dist/tools/custom.cjs.map +1 -1
  459. package/dist/tools/custom.d.cts +3 -3
  460. package/dist/tools/custom.d.ts +3 -3
  461. package/dist/tools/custom.js.map +1 -1
  462. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  463. package/dist/tools/database/elasticsearch.d.cts +3 -3
  464. package/dist/tools/database/elasticsearch.d.ts +3 -3
  465. package/dist/tools/database/elasticsearch.js.map +1 -1
  466. package/dist/tools/database/metadata.cjs.map +1 -1
  467. package/dist/tools/database/metadata.js.map +1 -1
  468. package/dist/tools/database/milvus.cjs.map +1 -1
  469. package/dist/tools/database/milvus.d.cts +5 -5
  470. package/dist/tools/database/milvus.d.ts +5 -5
  471. package/dist/tools/database/milvus.js.map +1 -1
  472. package/dist/tools/database/qdrant.cjs.map +1 -1
  473. package/dist/tools/database/qdrant.d.cts +2 -2
  474. package/dist/tools/database/qdrant.d.ts +2 -2
  475. package/dist/tools/database/qdrant.js.map +1 -1
  476. package/dist/tools/database/sql.cjs.map +1 -1
  477. package/dist/tools/database/sql.d.cts +2 -2
  478. package/dist/tools/database/sql.d.ts +2 -2
  479. package/dist/tools/database/sql.js.map +1 -1
  480. package/dist/tools/handoff.cjs.map +1 -1
  481. package/dist/tools/handoff.d.cts +2 -2
  482. package/dist/tools/handoff.d.ts +2 -2
  483. package/dist/tools/handoff.js.map +1 -1
  484. package/dist/tools/llm.cjs +1 -1
  485. package/dist/tools/llm.cjs.map +1 -1
  486. package/dist/tools/llm.d.cts +3 -3
  487. package/dist/tools/llm.d.ts +3 -3
  488. package/dist/tools/llm.js +1 -1
  489. package/dist/tools/llm.js.map +1 -1
  490. package/dist/tools/mcp.cjs.map +1 -1
  491. package/dist/tools/mcp.d.cts +2 -2
  492. package/dist/tools/mcp.d.ts +2 -2
  493. package/dist/tools/mcp.js.map +1 -1
  494. package/dist/tools/openapi.cjs.map +1 -1
  495. package/dist/tools/openapi.d.cts +2 -2
  496. package/dist/tools/openapi.d.ts +2 -2
  497. package/dist/tools/openapi.js.map +1 -1
  498. package/dist/tools/python/output.cjs.map +1 -1
  499. package/dist/tools/python/output.d.cts +1 -1
  500. package/dist/tools/python/output.d.ts +1 -1
  501. package/dist/tools/python/output.js.map +1 -1
  502. package/dist/tools/python/python.cjs +5 -2
  503. package/dist/tools/python/python.cjs.map +1 -1
  504. package/dist/tools/python/python.d.cts +3 -3
  505. package/dist/tools/python/python.d.ts +3 -3
  506. package/dist/tools/python/python.js +5 -2
  507. package/dist/tools/python/python.js.map +1 -1
  508. package/dist/tools/python/storage.cjs.map +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 +2 -2
  520. package/dist/tools/search/googleSearch.d.ts +2 -2
  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 +3 -3
  528. package/dist/tools/search/wikipedia.d.ts +3 -3
  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/think.cjs.map +1 -1
  535. package/dist/tools/think.d.cts +2 -2
  536. package/dist/tools/think.d.ts +2 -2
  537. package/dist/tools/think.js.map +1 -1
  538. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  539. package/dist/tools/weather/openMeteo.d.cts +2 -2
  540. package/dist/tools/weather/openMeteo.d.ts +2 -2
  541. package/dist/tools/weather/openMeteo.js.map +1 -1
  542. package/dist/tools/web/webCrawler.cjs.map +1 -1
  543. package/dist/tools/web/webCrawler.d.cts +2 -2
  544. package/dist/tools/web/webCrawler.d.ts +2 -2
  545. package/dist/tools/web/webCrawler.js.map +1 -1
  546. package/dist/{types-CkEtV8R9.d.cts → types-BNsa3W7Z.d.cts} +4 -4
  547. package/dist/{types-BQ-3LdkE.d.ts → types-DYtzF6ya.d.ts} +4 -4
  548. package/dist/version.cjs +1 -1
  549. package/dist/version.js +1 -1
  550. package/dist/workflows/agent.cjs.map +1 -1
  551. package/dist/workflows/agent.d.cts +40 -40
  552. package/dist/workflows/agent.d.ts +40 -40
  553. package/dist/workflows/agent.js.map +1 -1
  554. package/dist/workflows/workflow.cjs.map +1 -1
  555. package/dist/workflows/workflow.d.cts +1 -1
  556. package/dist/workflows/workflow.d.ts +1 -1
  557. package/dist/workflows/workflow.js.map +1 -1
  558. package/package.json +33 -10
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/agents/requirement/runner.ts"],"names":["TEMP_MESSAGE_KEY","RequirementAgentRunner","state","reasoner","iterationErrorCounter","globalErrorCounter","llm","runConfig","tools","requirements","expectedOutput","toolCallCycleChecker","ctx","forceFinalAnswerAsTool","templates","answer","result","memory","UnconstrainedMemory","steps","iteration","usage","totalTokens","promptTokens","completionTokens","reasoningTokens","cachedPromptTokens","undefined","finalAnswer","FinalAnswerTool","RequirementsReasoner","maxRetriesPerIteration","maxRetriesPerStep","RetryCounter","AgentError","maxRetries","Math","max","totalMaxRetries","incrementIteration","maxIterations","runLLM","request","streamMiddleware","createFinalAnswerStream","input","prepareLLMRequest","response","create","middleware","catch","err","ChatModelToolCallError","canStop","generatedContent","errorResponse","data","ChatModelOutput","AssistantMessage","finishReason","mergeTokenUsage","unbind","messages","createSystemMessage","system","allowedTools","toolChoice","streamPartialToolCalls","createFinalAnswerToolCall","fullText","parsed","parseBrokenJson","pair","customSchema","type","toolCallId","uuidv4","substring","toolName","name","inputSchema","parse","createRequest","extraRules","invokeToolCalls","toolCalls","toolResults","results","Promise","all","map","msg","runTool","toolCall","push","id","output","tool","error","toolError","render","reason","explain","isEmpty","getTextContent","toolNoResult","ToolMessage","value","use","addMessages","addMany","run","update","emitter","emit","runIteration","getToolCalls","length","textMessages","getTextMessages","text","m","join","finalAnswerToolCall","stream","add","updatedRequest","target","allowed","hidden","forced","preventStop","toolCallMsg","register","cycleFound","reset","tempMessages","filter","meta","deleteMany","StreamToolCallMiddleware","forceStreaming","key","matchNested","on","_","delta","outputStructured"],"mappings":"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","file":"runner.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { v4 as uuidv4 } from \"uuid\";\nimport { AgentError } from \"@/agents/base.js\";\nimport { ChatModel, ChatModelInput, ChatModelOutput } from \"@/backend/chat.js\";\nimport { AssistantMessage, Message, ToolMessage } from \"@/backend/message.js\";\nimport { ToolCallPart } from \"ai\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { RetryCounter } from \"@/internals/helpers/counter.js\";\nimport { RunContext } from \"@/context.js\";\nimport {\n RequirementAgentExecutionConfig,\n RequirementAgentRequest,\n RequirementAgentRunState,\n RequirementAgentTemplates,\n} from \"./types.js\";\nimport { Requirement, Rule } from \"./requirements/requirement.js\";\nimport { RequirementsReasoner, createSystemMessage } from \"./utils/llm.js\";\nimport { FinalAnswerTool, runTool } from \"./utils/tool.js\";\nimport { ToolCallChecker } from \"./utils/toolCallChecker.js\";\nimport { z } from \"zod\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { RequirementAgent } from \"@/agents/requirement/agent.js\";\nimport { mergeTokenUsage } from \"@/adapters/vercel/backend/utils.js\";\nimport { StreamToolCallMiddleware } from \"@/middleware/streamToolCall.js\";\nimport { ChatModelToolCallError } from \"@/backend/errors.js\";\n\nconst TEMP_MESSAGE_KEY = \"tempMessage\";\n\n/**\n * Runner for RequirementAgent execution\n */\nexport class RequirementAgentRunner {\n protected readonly state: RequirementAgentRunState;\n protected readonly reasoner: RequirementsReasoner;\n protected readonly iterationErrorCounter: RetryCounter;\n protected readonly globalErrorCounter: RetryCounter;\n\n constructor(\n protected readonly llm: ChatModel,\n protected readonly runConfig: RequirementAgentExecutionConfig,\n tools: AnyTool[],\n protected readonly requirements: Requirement[],\n expectedOutput: string | z.ZodSchema | null,\n protected readonly toolCallCycleChecker: ToolCallChecker,\n protected readonly ctx: RunContext<RequirementAgent>,\n protected forceFinalAnswerAsTool: boolean,\n protected readonly templates: RequirementAgentTemplates,\n ) {\n this.state = {\n answer: null,\n result: null,\n memory: new UnconstrainedMemory(),\n steps: [],\n iteration: 0,\n usage: {\n totalTokens: 0,\n promptTokens: 0,\n completionTokens: 0,\n reasoningTokens: 0,\n cachedPromptTokens: undefined,\n },\n };\n\n this.requirements = requirements;\n const finalAnswer = new FinalAnswerTool(expectedOutput, this.state);\n this.reasoner = new RequirementsReasoner(tools, finalAnswer, ctx);\n\n const maxRetriesPerIteration = runConfig.maxRetriesPerStep ?? 0;\n this.iterationErrorCounter = new RetryCounter(maxRetriesPerIteration, AgentError);\n\n const maxRetries = Math.max(maxRetriesPerIteration, runConfig.totalMaxRetries ?? 0);\n this.globalErrorCounter = new RetryCounter(maxRetries, AgentError);\n }\n\n protected incrementIteration(): void {\n this.state.iteration++;\n\n if (this.runConfig.maxIterations && this.state.iteration > this.runConfig.maxIterations) {\n throw new AgentError(\n `Agent was not able to resolve the task in ${this.state.iteration} iterations.`,\n );\n }\n }\n\n protected async runLLM(request: RequirementAgentRequest): Promise<ChatModelOutput> {\n const streamMiddleware = this.createFinalAnswerStream(request.finalAnswer);\n try {\n const input = await this.prepareLLMRequest(request);\n const response = await this.llm\n .create(input)\n .middleware(streamMiddleware)\n .catch((err) => {\n if (err instanceof ChatModelToolCallError && request.canStop) {\n const { generatedContent, response: errorResponse } = err.data;\n if (generatedContent) {\n return new ChatModelOutput(\n [new AssistantMessage(generatedContent)],\n errorResponse?.usage,\n errorResponse?.finishReason,\n );\n }\n }\n throw err;\n });\n\n if (response.usage) {\n mergeTokenUsage(this.state.usage, response.usage);\n }\n\n return response;\n } finally {\n streamMiddleware.unbind();\n }\n }\n\n protected async prepareLLMRequest(request: RequirementAgentRequest): Promise<ChatModelInput> {\n const messages: Message[] = [\n await createSystemMessage(this.templates.system, request),\n ...this.state.memory.messages,\n ];\n\n return {\n messages,\n tools: request.allowedTools,\n toolChoice: request.toolChoice,\n streamPartialToolCalls: true,\n maxRetries: this.runConfig.maxRetriesPerStep ?? 0,\n };\n }\n\n protected async createFinalAnswerToolCall(fullText: string): Promise<AssistantMessage | null> {\n // Try to extract JSON from text\n const parsed = parseBrokenJson(fullText, { pair: [\"{\", \"}\"] });\n if (!parsed) {\n // If no JSON and no custom schema, wrap in default schema\n if (!this.reasoner.finalAnswer.customSchema) {\n return new AssistantMessage([\n {\n type: \"tool-call\",\n toolCallId: `call_${uuidv4().substring(0, 8)}`,\n toolName: this.reasoner.finalAnswer.name,\n input: this.reasoner.finalAnswer.inputSchema().parse({ response: fullText }),\n },\n ]);\n }\n return null;\n }\n\n return new AssistantMessage([\n {\n type: \"tool-call\",\n toolCallId: `call_${uuidv4().substring(0, 8)}`,\n toolName: this.reasoner.finalAnswer.name,\n input: parsed,\n },\n ]);\n }\n\n protected async createRequest(extraRules: Rule[] = []): Promise<RequirementAgentRequest> {\n return await this.reasoner.createRequest(this.state, this.forceFinalAnswerAsTool, extraRules);\n }\n\n protected async invokeToolCalls(\n tools: AnyTool[],\n toolCalls: ToolCallPart[],\n ): Promise<ToolMessage[]> {\n const toolResults: ToolMessage[] = [];\n\n const results = await Promise.all(\n toolCalls.map((msg) => runTool(tools, msg, { state: this.state })),\n );\n\n for (const toolCall of results) {\n this.state.steps.push({\n id: uuidv4(),\n iteration: this.state.iteration,\n input: toolCall.input,\n output: toolCall.output,\n tool: toolCall.tool,\n error: toolCall.error,\n });\n\n let result: string;\n if (toolCall.error) {\n result = this.templates.toolError.render({\n reason: toolCall.error.explain(),\n });\n } else {\n result = !toolCall.output.isEmpty()\n ? toolCall.output.getTextContent()\n : this.templates.toolNoResult.render({\n toolCall: { tool: toolCall.tool, input: toolCall.input },\n });\n }\n toolResults.push(\n new ToolMessage({\n type: \"tool-result\",\n toolName: toolCall.tool?.name || toolCall.msg.toolName,\n toolCallId: toolCall.msg.toolCallId,\n output: { type: \"text\", value: result },\n }),\n );\n\n if (toolCall.error) {\n this.iterationErrorCounter.use(toolCall.error);\n this.globalErrorCounter.use(toolCall.error);\n }\n }\n\n return toolResults;\n }\n\n async addMessages(messages: Message[]): Promise<void> {\n await this.state.memory.addMany(messages);\n }\n\n async run(): Promise<RequirementAgentRunState> {\n if (this.state.answer) {\n return this.state;\n }\n\n // Initialize requirements\n await this.reasoner.update(this.requirements);\n\n while (!this.state.answer) {\n this.incrementIteration();\n\n const request = await this.createRequest();\n await this.ctx.emitter.emit(\"start\", { state: this.state, request });\n const response = await this.runIteration(request);\n await this.ctx.emitter.emit(\"success\", { state: this.state, response });\n }\n\n return this.state;\n }\n\n protected async runIteration(request: RequirementAgentRequest): Promise<ChatModelOutput> {\n const response = await this.runLLM(request);\n\n // Try to cast text message to final answer tool call if allowed\n if (response.getToolCalls().length === 0) {\n const textMessages = response.getTextMessages();\n const text = textMessages.map((m) => m.text).join(\"\\n\");\n\n const finalAnswerToolCall =\n text && request.canStop ? await this.createFinalAnswerToolCall(text) : null;\n if (finalAnswerToolCall) {\n const stream = this.createFinalAnswerStream(request.finalAnswer);\n await stream.add(new ChatModelOutput([finalAnswerToolCall]));\n } else {\n const err = new AgentError(\"Model produced an invalid final answer tool call.\");\n this.iterationErrorCounter.use(err);\n this.globalErrorCounter.use(err);\n\n if (!request.canStop) {\n return await this.runIteration(request);\n }\n\n await this.reasoner.update([]);\n const updatedRequest = await this.createRequest([\n {\n target: this.reasoner.finalAnswer.name,\n allowed: true,\n hidden: false,\n forced: false,\n preventStop: false,\n },\n ]);\n this.forceFinalAnswerAsTool = true;\n return await this.runIteration(updatedRequest);\n }\n\n response.messages.length = 0;\n response.messages.push(finalAnswerToolCall);\n }\n\n // Check for cycles\n const toolCalls = response.getToolCalls();\n for (const toolCallMsg of toolCalls) {\n this.toolCallCycleChecker.register(toolCallMsg);\n if (this.toolCallCycleChecker.cycleFound) {\n this.toolCallCycleChecker.reset();\n const updatedRequest = await this.createRequest([\n {\n target: toolCallMsg.toolName,\n allowed: false,\n hidden: false,\n forced: true,\n preventStop: false,\n },\n ]);\n return await this.runIteration(updatedRequest);\n }\n }\n\n const toolResults = await this.invokeToolCalls(request.allowedTools, toolCalls);\n await this.state.memory.addMany([...response.messages, ...toolResults]);\n\n // Delete temporary messages\n const tempMessages = this.state.memory.messages.filter((msg) => msg.meta[TEMP_MESSAGE_KEY]);\n await this.state.memory.deleteMany(tempMessages);\n\n return response;\n }\n\n private createFinalAnswerStream(finalAnswer: FinalAnswerTool) {\n const middleware = new StreamToolCallMiddleware({\n target: finalAnswer,\n forceStreaming: false,\n key: \"response\",\n matchNested: false,\n });\n middleware.emitter.on(\"update\", async (data, _) => {\n await this.ctx.emitter.emit(\"finalAnswer\", {\n state: this.state,\n output: data.output,\n delta: data.delta,\n outputStructured: undefined,\n });\n });\n return middleware;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/agents/requirement/runner.ts"],"names":["TEMP_MESSAGE_KEY","RequirementAgentRunner","state","reasoner","iterationErrorCounter","globalErrorCounter","llm","runConfig","tools","requirements","expectedOutput","toolCallCycleChecker","ctx","forceFinalAnswerAsTool","templates","answer","result","memory","UnconstrainedMemory","steps","iteration","usage","totalTokens","promptTokens","completionTokens","reasoningTokens","cachedPromptTokens","undefined","finalAnswer","FinalAnswerTool","RequirementsReasoner","maxRetriesPerIteration","maxRetriesPerStep","RetryCounter","AgentError","maxRetries","Math","max","totalMaxRetries","incrementIteration","maxIterations","runLLM","request","streamMiddleware","createFinalAnswerStream","input","prepareLLMRequest","response","create","middleware","catch","err","ChatModelToolCallError","canStop","generatedContent","errorResponse","data","ChatModelOutput","AssistantMessage","finishReason","mergeTokenUsage","unbind","messages","createSystemMessage","system","allowedTools","toolChoice","streamPartialToolCalls","createFinalAnswerToolCall","fullText","parsed","parseBrokenJson","pair","customSchema","type","toolCallId","uuidv4","substring","toolName","name","inputSchema","parse","createRequest","extraRules","invokeToolCalls","toolCalls","toolResults","results","Promise","all","map","msg","runTool","toolCall","push","id","output","tool","error","toolError","render","reason","explain","isEmpty","getTextContent","toolNoResult","ToolMessage","value","use","addMessages","addMany","run","update","emitter","emit","runIteration","getToolCalls","length","textMessages","getTextMessages","text","m","join","finalAnswerToolCall","stream","add","updatedRequest","target","allowed","hidden","forced","preventStop","toolCallMsg","register","cycleFound","reset","tempMessages","filter","meta","deleteMany","StreamToolCallMiddleware","forceStreaming","key","matchNested","on","_","delta","outputStructured"],"mappings":"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","file":"runner.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { v4 as uuidv4 } from \"uuid\";\nimport { AgentError } from \"@/agents/base.js\";\nimport { ChatModel, ChatModelInput, ChatModelOutput } from \"@/backend/chat.js\";\nimport { AssistantMessage, Message, ToolMessage } from \"@/backend/message.js\";\nimport { ToolCallPart } from \"ai\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { RetryCounter } from \"@/internals/helpers/counter.js\";\nimport { RunContext } from \"@/context.js\";\nimport {\n RequirementAgentExecutionConfig,\n RequirementAgentRequest,\n RequirementAgentRunState,\n RequirementAgentTemplates,\n} from \"./types.js\";\nimport { Requirement, Rule } from \"./requirements/requirement.js\";\nimport { RequirementsReasoner, createSystemMessage } from \"./utils/llm.js\";\nimport { FinalAnswerTool, runTool } from \"./utils/tool.js\";\nimport { ToolCallChecker } from \"./utils/toolCallChecker.js\";\nimport { z } from \"zod\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { RequirementAgent } from \"@/agents/requirement/agent.js\";\nimport { mergeTokenUsage } from \"@/adapters/vercel/backend/utils.js\";\nimport { StreamToolCallMiddleware } from \"@/middleware/streamToolCall.js\";\nimport { ChatModelToolCallError } from \"@/backend/errors.js\";\n\nconst TEMP_MESSAGE_KEY = \"tempMessage\";\n\n/**\n * Runner for RequirementAgent execution\n */\nexport class RequirementAgentRunner {\n protected readonly state: RequirementAgentRunState;\n protected readonly reasoner: RequirementsReasoner;\n protected readonly iterationErrorCounter: RetryCounter;\n protected readonly globalErrorCounter: RetryCounter;\n\n constructor(\n protected readonly llm: ChatModel,\n protected readonly runConfig: RequirementAgentExecutionConfig,\n tools: AnyTool[],\n protected readonly requirements: Requirement[],\n expectedOutput: string | z.ZodSchema | null,\n protected readonly toolCallCycleChecker: ToolCallChecker,\n protected readonly ctx: RunContext<RequirementAgent>,\n protected forceFinalAnswerAsTool: boolean,\n protected readonly templates: RequirementAgentTemplates,\n ) {\n this.state = {\n answer: null,\n result: null,\n memory: new UnconstrainedMemory(),\n steps: [],\n iteration: 0,\n usage: {\n totalTokens: 0,\n promptTokens: 0,\n completionTokens: 0,\n reasoningTokens: 0,\n cachedPromptTokens: undefined,\n },\n };\n\n this.requirements = requirements;\n const finalAnswer = new FinalAnswerTool(expectedOutput, this.state);\n this.reasoner = new RequirementsReasoner(tools, finalAnswer, ctx);\n\n const maxRetriesPerIteration = runConfig.maxRetriesPerStep ?? 0;\n this.iterationErrorCounter = new RetryCounter(maxRetriesPerIteration, AgentError);\n\n const maxRetries = Math.max(maxRetriesPerIteration, runConfig.totalMaxRetries ?? 0);\n this.globalErrorCounter = new RetryCounter(maxRetries, AgentError);\n }\n\n protected incrementIteration(): void {\n this.state.iteration++;\n\n if (this.runConfig.maxIterations && this.state.iteration > this.runConfig.maxIterations) {\n throw new AgentError(\n `Agent was not able to resolve the task in ${this.state.iteration} iterations.`,\n );\n }\n }\n\n protected async runLLM(request: RequirementAgentRequest): Promise<ChatModelOutput> {\n const streamMiddleware = this.createFinalAnswerStream(request.finalAnswer);\n try {\n const input = await this.prepareLLMRequest(request);\n const response = await this.llm\n .create(input)\n .middleware(streamMiddleware)\n .catch((err) => {\n if (err instanceof ChatModelToolCallError && request.canStop) {\n const { generatedContent, response: errorResponse } = err.data;\n if (generatedContent) {\n return new ChatModelOutput(\n [new AssistantMessage(generatedContent)],\n errorResponse?.usage,\n errorResponse?.finishReason,\n );\n }\n }\n throw err;\n });\n\n if (response.usage) {\n mergeTokenUsage(this.state.usage, response.usage);\n }\n\n return response;\n } finally {\n streamMiddleware.unbind();\n }\n }\n\n protected async prepareLLMRequest(request: RequirementAgentRequest): Promise<ChatModelInput> {\n const messages: Message[] = [\n await createSystemMessage(this.templates.system, request),\n ...this.state.memory.messages,\n ];\n\n return {\n messages,\n tools: request.allowedTools,\n toolChoice: request.toolChoice,\n streamPartialToolCalls: true,\n maxRetries: this.runConfig.maxRetriesPerStep ?? 0,\n };\n }\n\n protected async createFinalAnswerToolCall(fullText: string): Promise<AssistantMessage | null> {\n // Try to extract JSON from text\n const parsed = parseBrokenJson(fullText, { pair: [\"{\", \"}\"] });\n if (!parsed) {\n // If no JSON and no custom schema, wrap in default schema\n if (!this.reasoner.finalAnswer.customSchema) {\n return new AssistantMessage([\n {\n type: \"tool-call\",\n toolCallId: `call_${uuidv4().substring(0, 8)}`,\n toolName: this.reasoner.finalAnswer.name,\n input: this.reasoner.finalAnswer.inputSchema().parse({ response: fullText }),\n },\n ]);\n }\n return null;\n }\n\n return new AssistantMessage([\n {\n type: \"tool-call\",\n toolCallId: `call_${uuidv4().substring(0, 8)}`,\n toolName: this.reasoner.finalAnswer.name,\n input: parsed,\n },\n ]);\n }\n\n protected async createRequest(extraRules: Rule[] = []): Promise<RequirementAgentRequest> {\n return await this.reasoner.createRequest(this.state, this.forceFinalAnswerAsTool, extraRules);\n }\n\n protected async invokeToolCalls(\n tools: AnyTool[],\n toolCalls: ToolCallPart[],\n ): Promise<ToolMessage[]> {\n const toolResults: ToolMessage[] = [];\n\n const results = await Promise.all(\n toolCalls.map((msg) => runTool(tools, msg, { state: this.state })),\n );\n\n for (const toolCall of results) {\n this.state.steps.push({\n id: uuidv4(),\n iteration: this.state.iteration,\n input: toolCall.input,\n output: toolCall.output,\n tool: toolCall.tool,\n error: toolCall.error,\n });\n\n let result: string;\n if (toolCall.error) {\n result = this.templates.toolError.render({\n reason: toolCall.error.explain(),\n });\n } else {\n result = !toolCall.output.isEmpty()\n ? toolCall.output.getTextContent()\n : this.templates.toolNoResult.render({\n toolCall: { tool: toolCall.tool, input: toolCall.input },\n });\n }\n toolResults.push(\n new ToolMessage({\n type: \"tool-result\",\n toolName: toolCall.tool?.name || toolCall.msg.toolName,\n toolCallId: toolCall.msg.toolCallId,\n output: { type: \"text\", value: result },\n }),\n );\n\n if (toolCall.error) {\n this.iterationErrorCounter.use(toolCall.error);\n this.globalErrorCounter.use(toolCall.error);\n }\n }\n\n return toolResults;\n }\n\n async addMessages(messages: Message[]): Promise<void> {\n await this.state.memory.addMany(messages);\n }\n\n async run(): Promise<RequirementAgentRunState> {\n if (this.state.answer) {\n return this.state;\n }\n\n // Initialize requirements\n await this.reasoner.update(this.requirements);\n\n while (!this.state.answer) {\n this.incrementIteration();\n\n const request = await this.createRequest();\n await this.ctx.emitter.emit(\"start\", { state: this.state, request });\n const response = await this.runIteration(request);\n await this.ctx.emitter.emit(\"success\", { state: this.state, response });\n }\n\n return this.state;\n }\n\n protected async runIteration(request: RequirementAgentRequest): Promise<ChatModelOutput> {\n const response = await this.runLLM(request);\n\n // Try to cast text message to final answer tool call if allowed\n if (response.getToolCalls().length === 0) {\n const textMessages = response.getTextMessages();\n const text = textMessages.map((m) => m.text).join(\"\\n\");\n\n const finalAnswerToolCall =\n text && request.canStop ? await this.createFinalAnswerToolCall(text) : null;\n if (finalAnswerToolCall) {\n const stream = this.createFinalAnswerStream(request.finalAnswer);\n await stream.add(new ChatModelOutput([finalAnswerToolCall]));\n } else {\n const err = new AgentError(\"Model produced an invalid final answer tool call.\");\n this.iterationErrorCounter.use(err);\n this.globalErrorCounter.use(err);\n\n if (!request.canStop) {\n return await this.runIteration(request);\n }\n\n await this.reasoner.update([]);\n const updatedRequest = await this.createRequest([\n {\n target: this.reasoner.finalAnswer.name,\n allowed: true,\n hidden: false,\n forced: false,\n preventStop: false,\n },\n ]);\n this.forceFinalAnswerAsTool = true;\n return await this.runIteration(updatedRequest);\n }\n\n response.messages.length = 0;\n response.messages.push(finalAnswerToolCall);\n }\n\n // Check for cycles\n const toolCalls = response.getToolCalls();\n for (const toolCallMsg of toolCalls) {\n this.toolCallCycleChecker.register(toolCallMsg);\n if (this.toolCallCycleChecker.cycleFound) {\n this.toolCallCycleChecker.reset();\n const updatedRequest = await this.createRequest([\n {\n target: toolCallMsg.toolName,\n allowed: false,\n hidden: false,\n forced: true,\n preventStop: false,\n },\n ]);\n return await this.runIteration(updatedRequest);\n }\n }\n\n const toolResults = await this.invokeToolCalls(request.allowedTools, toolCalls);\n await this.state.memory.addMany([...response.messages, ...toolResults]);\n\n // Delete temporary messages\n const tempMessages = this.state.memory.messages.filter((msg) => msg.meta[TEMP_MESSAGE_KEY]);\n await this.state.memory.deleteMany(tempMessages);\n\n return response;\n }\n\n private createFinalAnswerStream(finalAnswer: FinalAnswerTool) {\n const middleware = new StreamToolCallMiddleware({\n target: finalAnswer,\n forceStreaming: false,\n key: \"response\",\n matchNested: false,\n });\n middleware.emitter.on(\"update\", async (data, _) => {\n await this.ctx.emitter.emit(\"finalAnswer\", {\n state: this.state,\n output: data.output,\n delta: data.delta,\n outputStructured: undefined,\n });\n });\n return middleware;\n }\n}\n"]}
@@ -3,17 +3,17 @@ import '../../backend/message.cjs';
3
3
  import '../../tools/base.cjs';
4
4
  import '../../errors.cjs';
5
5
  import '../../template.cjs';
6
- import '../../chat-BFl85cqt.cjs';
7
- import '../../base-XfWeXQ-S.cjs';
6
+ import '../../chat-C20nYj46.cjs';
7
+ import '../../base-s3ioVIE9.cjs';
8
8
  import 'zod';
9
- export { h as RequirementAgentCallbacks, c as RequirementAgentExecutionConfig, f as RequirementAgentOutput, a as RequirementAgentRequest, e as RequirementAgentRunInput, g as RequirementAgentRunOptions, R as RequirementAgentRunState, l as RequirementAgentRunStateStep, b as RequirementAgentSystemPromptInputSchema, i as RequirementAgentTaskPromptInputSchema, d as RequirementAgentTemplates, j as RequirementAgentToolErrorPromptInputSchema, k as RequirementAgentToolNoResultPromptInputSchema } from '../../types-CkEtV8R9.cjs';
9
+ export { h as RequirementAgentCallbacks, c as RequirementAgentExecutionConfig, f as RequirementAgentOutput, a as RequirementAgentRequest, e as RequirementAgentRunInput, g as RequirementAgentRunOptions, R as RequirementAgentRunState, i as RequirementAgentRunStateStep, b as RequirementAgentSystemPromptInputSchema, j as RequirementAgentTaskPromptInputSchema, d as RequirementAgentTemplates, k as RequirementAgentToolErrorPromptInputSchema, l as RequirementAgentToolNoResultPromptInputSchema } from '../../types-BNsa3W7Z.cjs';
10
10
  import '../../internals/serializable.cjs';
11
11
  import '../../internals/types.cjs';
12
12
  import '../../internals/helpers/guards.cjs';
13
13
  import 'ai';
14
14
  import 'ajv';
15
15
  import '../../context.cjs';
16
- import '../../emitter-jN55XZZq.cjs';
16
+ import '../../emitter-D4OcelZ9.cjs';
17
17
  import '../../internals/helpers/promise.cjs';
18
18
  import 'promise-based-task';
19
19
  import '../../cache/base.cjs';
@@ -3,17 +3,17 @@ import '../../backend/message.js';
3
3
  import '../../tools/base.js';
4
4
  import '../../errors.js';
5
5
  import '../../template.js';
6
- import '../../chat-BRuyDeKR.js';
7
- import '../../base-CyFx7BRL.js';
6
+ import '../../chat-CfTNfR60.js';
7
+ import '../../base-BjzyQ8k6.js';
8
8
  import 'zod';
9
- export { h as RequirementAgentCallbacks, c as RequirementAgentExecutionConfig, f as RequirementAgentOutput, a as RequirementAgentRequest, e as RequirementAgentRunInput, g as RequirementAgentRunOptions, R as RequirementAgentRunState, l as RequirementAgentRunStateStep, b as RequirementAgentSystemPromptInputSchema, i as RequirementAgentTaskPromptInputSchema, d as RequirementAgentTemplates, j as RequirementAgentToolErrorPromptInputSchema, k as RequirementAgentToolNoResultPromptInputSchema } from '../../types-BQ-3LdkE.js';
9
+ export { h as RequirementAgentCallbacks, c as RequirementAgentExecutionConfig, f as RequirementAgentOutput, a as RequirementAgentRequest, e as RequirementAgentRunInput, g as RequirementAgentRunOptions, R as RequirementAgentRunState, i as RequirementAgentRunStateStep, b as RequirementAgentSystemPromptInputSchema, j as RequirementAgentTaskPromptInputSchema, d as RequirementAgentTemplates, k as RequirementAgentToolErrorPromptInputSchema, l as RequirementAgentToolNoResultPromptInputSchema } from '../../types-DYtzF6ya.js';
10
10
  import '../../internals/serializable.js';
11
11
  import '../../internals/types.js';
12
12
  import '../../internals/helpers/guards.js';
13
13
  import 'ai';
14
14
  import 'ajv';
15
15
  import '../../context.js';
16
- import '../../emitter-36-9MnvA.js';
16
+ import '../../emitter-kHxkUxco.js';
17
17
  import '../../internals/helpers/promise.js';
18
18
  import 'promise-based-task';
19
19
  import '../../cache/base.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/agents/requirement/utils/llm.ts"],"names":["RequirementsReasoner","tools","entries","context","finalAnswer","update","requirements","requirement","push","entry","emitter","child","groupId","toCamelCase","name","creator","namespace","emit","init","findToolByName","tool","find","t","Error","map","join","createRequest","state","forceTool","extraRules","hidden","allowed","allTools","reasonByTool","WeakMap","preventStop","preventStepRefs","forced","forcedLevel","rulesByTool","Map","set","filter","e","enabled","generatedRules","run","rule","target","rules","get","priority","has","length","Math","max","r","toolName","sort","a","b","maxPriority","isAllowed","isForced","isHidden","isPreventStop","ruleEntry","reason","includes","finalAnswerIndex","indexOf","splice","AgentError","JSON","stringify","toolChoice","Tool","allowedTools","hiddenTools","canStop","createSystemMessage","template","request","SystemMessage","render","Promise","all","description","inputSchema","String","finalAnswerName","finalAnswerSchema","customSchema","undefined","finalAnswerInstructions","instructions","role","notes"],"mappings":"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","file":"llm.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { RunContext } from \"@/context.js\";\nimport { AgentError } from \"@/agents/base.js\";\nimport { SystemMessage } from \"@/backend/message.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n RequirementAgentRequest,\n RequirementAgentRunState,\n RequirementAgentSystemPromptInputSchema,\n} from \"@/agents/requirement/types.js\";\nimport {\n Requirement,\n RequirementCallbacks,\n Rule,\n} from \"@/agents/requirement/requirements/requirement.js\";\nimport { FinalAnswerTool } from \"./tool.js\";\nimport { ChatModelToolChoice } from \"@/backend/chat.js\";\nimport { toCamelCase } from \"remeda\";\n\ninterface RuleEntry {\n rule: Rule;\n requirement: Requirement | null;\n priority: number;\n}\n\n/**\n * Manages requirements and generates requests for the agent\n */\nexport class RequirementsReasoner {\n protected tools: AnyTool[];\n protected entries: Requirement[] = [];\n protected context: RunContext<any>;\n public readonly finalAnswer: FinalAnswerTool;\n\n constructor(tools: AnyTool[], finalAnswer: FinalAnswerTool, context: RunContext<any>) {\n this.tools = [...tools, finalAnswer];\n this.finalAnswer = finalAnswer;\n this.context = context;\n }\n\n async update(requirements: Requirement[]): Promise<void> {\n this.entries = [];\n\n for (const requirement of requirements) {\n this.entries.push(requirement);\n }\n\n for (const entry of this.entries) {\n const emitter = this.context.emitter.child<RequirementCallbacks>({\n groupId: toCamelCase(entry.name),\n creator: entry,\n });\n emitter.namespace.push(\"requirement\");\n\n const tools = [...this.tools];\n await emitter.emit(\"init\", { tools });\n await entry.init(tools, this.context);\n }\n }\n\n protected findToolByName(name: string): AnyTool {\n const tool = this.tools.find((t) => t.name === name);\n if (!tool) {\n throw new Error(`Tool '${name}' not found in (${this.tools.map((t) => t.name).join(\", \")}).`);\n }\n return tool;\n }\n\n async createRequest(\n state: RequirementAgentRunState,\n forceTool: boolean,\n extraRules: Rule[] = [],\n ): Promise<RequirementAgentRequest> {\n const hidden: AnyTool[] = [];\n const allowed: AnyTool[] = [];\n const allTools: AnyTool[] = [...this.tools];\n const reasonByTool = new WeakMap<AnyTool, string | undefined>();\n\n let preventStop = false;\n const preventStepRefs: RuleEntry[] = [];\n\n let forced: AnyTool | null = null;\n let forcedLevel = 0;\n const rulesByTool = new Map<string, RuleEntry[]>();\n\n // Initialize rules map\n for (const tool of this.tools) {\n rulesByTool.set(tool.name, []);\n }\n\n // Group rules from requirements\n for (const requirement of this.entries.filter((e) => e.enabled)) {\n const generatedRules = await requirement.run(state);\n for (const rule of generatedRules) {\n const tool = this.findToolByName(rule.target);\n const rules = rulesByTool.get(tool.name) || [];\n rules.push({\n priority: requirement.priority,\n rule,\n requirement,\n });\n rulesByTool.set(tool.name, rules);\n }\n }\n\n // Add extra rules\n for (const rule of extraRules) {\n if (!rulesByTool.has(rule.target)) {\n throw new Error(`Tool '${rule.target}' not found.`);\n }\n\n const rules = rulesByTool.get(rule.target)!;\n const priority = rules.length > 0 ? Math.max(...rules.map((r) => r.priority)) + 1 : 1;\n rules.push({\n priority,\n rule,\n requirement: null,\n });\n }\n\n // Aggregate rules and infer required tool\n for (const [toolName, rules] of rulesByTool.entries()) {\n const tool = this.findToolByName(toolName);\n rules.sort((a, b) => b.priority - a.priority); // DESC\n\n const maxPriority = rules.length > 0 ? rules[0].priority : 1;\n let isAllowed = true;\n let isForced = false;\n let isHidden = false;\n let isPreventStop = false;\n\n for (const ruleEntry of rules) {\n const rule = ruleEntry.rule;\n if (!rule.allowed) {\n isAllowed = false;\n }\n if (rule.hidden) {\n isHidden = true;\n }\n if (rule.forced) {\n isForced = true;\n }\n if (rule.preventStop) {\n isPreventStop = true;\n preventStepRefs.push(ruleEntry);\n }\n if (rule.reason) {\n reasonByTool.set(tool, rule.reason);\n }\n }\n\n if (isAllowed && isHidden) {\n isAllowed = false;\n }\n\n if (isAllowed) {\n if (!allowed.includes(tool)) {\n allowed.push(tool);\n }\n if (isForced && (!forced || forcedLevel < maxPriority)) {\n forced = tool;\n forcedLevel = maxPriority;\n }\n }\n if (isHidden) {\n if (!hidden.includes(tool)) {\n hidden.push(tool);\n }\n }\n if (isPreventStop) {\n preventStop = true;\n }\n }\n\n // If forced tool is set, only allow it and final answer\n if (forced) {\n allowed.length = 0;\n if (!allowed.includes(forced)) {\n allowed.push(forced);\n }\n if (!allowed.includes(this.finalAnswer as any)) {\n allowed.push(this.finalAnswer as any);\n }\n }\n\n // If prevent stop is set and forced is not final answer, remove final answer\n if (preventStop && forced !== this.finalAnswer) {\n const finalAnswerIndex = allowed.indexOf(this.finalAnswer);\n if (finalAnswerIndex !== -1) {\n allowed.splice(finalAnswerIndex, 1);\n }\n }\n\n if (allowed.length === 0) {\n throw new AgentError(\n \"One of the generated rules is preventing the agent from continuing. \" +\n \"This indicates that the provided requirements may conflict with each other. \" +\n \"See the following rules and their attached requirements that are preventing the agent from continuing.\\n\" +\n JSON.stringify(preventStepRefs, null, 2),\n );\n }\n\n let toolChoice: ChatModelToolChoice = forced || \"required\";\n if (allowed.length === 1) {\n toolChoice = allowed[0];\n }\n\n // Override to auto if not forcing and not preventing stop\n if (!(toolChoice instanceof Tool) && !forceTool && !preventStop) {\n toolChoice = \"auto\";\n }\n\n return {\n tools: allTools,\n allowedTools: allowed,\n reasonByTool,\n toolChoice,\n finalAnswer: this.finalAnswer,\n hiddenTools: hidden,\n canStop: !preventStop,\n };\n }\n}\n\n/**\n * Create system message from template and request\n */\nexport async function createSystemMessage(\n template: PromptTemplate<typeof RequirementAgentSystemPromptInputSchema>,\n request: RequirementAgentRequest,\n): Promise<SystemMessage> {\n return new SystemMessage(\n template.render({\n tools: await Promise.all(\n request.tools\n .filter((tool) => !request.hiddenTools.includes(tool))\n .map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: JSON.stringify(await tool.inputSchema(), null, 2),\n allowed: String(request.allowedTools.includes(tool)),\n reason: request.reasonByTool.get(tool),\n })),\n ),\n finalAnswerName: request.finalAnswer.name,\n finalAnswerSchema: request.finalAnswer.customSchema\n ? JSON.stringify(request.finalAnswer.inputSchema, null, 2)\n : undefined,\n finalAnswerInstructions: request.finalAnswer.instructions, // default\n role: undefined, // default\n instructions: undefined, // default\n notes: undefined, // default\n }),\n );\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/agents/requirement/utils/llm.ts"],"names":["RequirementsReasoner","tools","entries","context","finalAnswer","update","requirements","requirement","push","entry","emitter","child","groupId","toCamelCase","name","creator","namespace","emit","init","findToolByName","tool","find","t","Error","map","join","createRequest","state","forceTool","extraRules","hidden","allowed","allTools","reasonByTool","WeakMap","preventStop","preventStepRefs","forced","forcedLevel","rulesByTool","Map","set","filter","e","enabled","generatedRules","run","rule","target","rules","get","priority","has","length","Math","max","r","toolName","sort","a","b","maxPriority","isAllowed","isForced","isHidden","isPreventStop","ruleEntry","reason","includes","finalAnswerIndex","indexOf","splice","AgentError","JSON","stringify","toolChoice","Tool","allowedTools","hiddenTools","canStop","createSystemMessage","template","request","SystemMessage","render","Promise","all","description","inputSchema","String","finalAnswerName","finalAnswerSchema","customSchema","undefined","finalAnswerInstructions","instructions","role","notes"],"mappings":"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","file":"llm.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { RunContext } from \"@/context.js\";\nimport { AgentError } from \"@/agents/base.js\";\nimport { SystemMessage } from \"@/backend/message.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n RequirementAgentRequest,\n RequirementAgentRunState,\n RequirementAgentSystemPromptInputSchema,\n} from \"@/agents/requirement/types.js\";\nimport {\n Requirement,\n RequirementCallbacks,\n Rule,\n} from \"@/agents/requirement/requirements/requirement.js\";\nimport { FinalAnswerTool } from \"./tool.js\";\nimport { ChatModelToolChoice } from \"@/backend/chat.js\";\nimport { toCamelCase } from \"remeda\";\n\ninterface RuleEntry {\n rule: Rule;\n requirement: Requirement | null;\n priority: number;\n}\n\n/**\n * Manages requirements and generates requests for the agent\n */\nexport class RequirementsReasoner {\n protected tools: AnyTool[];\n protected entries: Requirement[] = [];\n protected context: RunContext<any>;\n public readonly finalAnswer: FinalAnswerTool;\n\n constructor(tools: AnyTool[], finalAnswer: FinalAnswerTool, context: RunContext<any>) {\n this.tools = [...tools, finalAnswer];\n this.finalAnswer = finalAnswer;\n this.context = context;\n }\n\n async update(requirements: Requirement[]): Promise<void> {\n this.entries = [];\n\n for (const requirement of requirements) {\n this.entries.push(requirement);\n }\n\n for (const entry of this.entries) {\n const emitter = this.context.emitter.child<RequirementCallbacks>({\n groupId: toCamelCase(entry.name),\n creator: entry,\n });\n emitter.namespace.push(\"requirement\");\n\n const tools = [...this.tools];\n await emitter.emit(\"init\", { tools });\n await entry.init(tools, this.context);\n }\n }\n\n protected findToolByName(name: string): AnyTool {\n const tool = this.tools.find((t) => t.name === name);\n if (!tool) {\n throw new Error(`Tool '${name}' not found in (${this.tools.map((t) => t.name).join(\", \")}).`);\n }\n return tool;\n }\n\n async createRequest(\n state: RequirementAgentRunState,\n forceTool: boolean,\n extraRules: Rule[] = [],\n ): Promise<RequirementAgentRequest> {\n const hidden: AnyTool[] = [];\n const allowed: AnyTool[] = [];\n const allTools: AnyTool[] = [...this.tools];\n const reasonByTool = new WeakMap<AnyTool, string | undefined>();\n\n let preventStop = false;\n const preventStepRefs: RuleEntry[] = [];\n\n let forced: AnyTool | null = null;\n let forcedLevel = 0;\n const rulesByTool = new Map<string, RuleEntry[]>();\n\n // Initialize rules map\n for (const tool of this.tools) {\n rulesByTool.set(tool.name, []);\n }\n\n // Group rules from requirements\n for (const requirement of this.entries.filter((e) => e.enabled)) {\n const generatedRules = await requirement.run(state);\n for (const rule of generatedRules) {\n const tool = this.findToolByName(rule.target);\n const rules = rulesByTool.get(tool.name) || [];\n rules.push({\n priority: requirement.priority,\n rule,\n requirement,\n });\n rulesByTool.set(tool.name, rules);\n }\n }\n\n // Add extra rules\n for (const rule of extraRules) {\n if (!rulesByTool.has(rule.target)) {\n throw new Error(`Tool '${rule.target}' not found.`);\n }\n\n const rules = rulesByTool.get(rule.target)!;\n const priority = rules.length > 0 ? Math.max(...rules.map((r) => r.priority)) + 1 : 1;\n rules.push({\n priority,\n rule,\n requirement: null,\n });\n }\n\n // Aggregate rules and infer required tool\n for (const [toolName, rules] of rulesByTool.entries()) {\n const tool = this.findToolByName(toolName);\n rules.sort((a, b) => b.priority - a.priority); // DESC\n\n const maxPriority = rules.length > 0 ? rules[0].priority : 1;\n let isAllowed = true;\n let isForced = false;\n let isHidden = false;\n let isPreventStop = false;\n\n for (const ruleEntry of rules) {\n const rule = ruleEntry.rule;\n if (!rule.allowed) {\n isAllowed = false;\n }\n if (rule.hidden) {\n isHidden = true;\n }\n if (rule.forced) {\n isForced = true;\n }\n if (rule.preventStop) {\n isPreventStop = true;\n preventStepRefs.push(ruleEntry);\n }\n if (rule.reason) {\n reasonByTool.set(tool, rule.reason);\n }\n }\n\n if (isAllowed && isHidden) {\n isAllowed = false;\n }\n\n if (isAllowed) {\n if (!allowed.includes(tool)) {\n allowed.push(tool);\n }\n if (isForced && (!forced || forcedLevel < maxPriority)) {\n forced = tool;\n forcedLevel = maxPriority;\n }\n }\n if (isHidden) {\n if (!hidden.includes(tool)) {\n hidden.push(tool);\n }\n }\n if (isPreventStop) {\n preventStop = true;\n }\n }\n\n // If forced tool is set, only allow it and final answer\n if (forced) {\n allowed.length = 0;\n if (!allowed.includes(forced)) {\n allowed.push(forced);\n }\n if (!allowed.includes(this.finalAnswer as any)) {\n allowed.push(this.finalAnswer as any);\n }\n }\n\n // If prevent stop is set and forced is not final answer, remove final answer\n if (preventStop && forced !== this.finalAnswer) {\n const finalAnswerIndex = allowed.indexOf(this.finalAnswer);\n if (finalAnswerIndex !== -1) {\n allowed.splice(finalAnswerIndex, 1);\n }\n }\n\n if (allowed.length === 0) {\n throw new AgentError(\n \"One of the generated rules is preventing the agent from continuing. \" +\n \"This indicates that the provided requirements may conflict with each other. \" +\n \"See the following rules and their attached requirements that are preventing the agent from continuing.\\n\" +\n JSON.stringify(preventStepRefs, null, 2),\n );\n }\n\n let toolChoice: ChatModelToolChoice = forced || \"required\";\n if (allowed.length === 1) {\n toolChoice = allowed[0];\n }\n\n // Override to auto if not forcing and not preventing stop\n if (!(toolChoice instanceof Tool) && !forceTool && !preventStop) {\n toolChoice = \"auto\";\n }\n\n return {\n tools: allTools,\n allowedTools: allowed,\n reasonByTool,\n toolChoice,\n finalAnswer: this.finalAnswer,\n hiddenTools: hidden,\n canStop: !preventStop,\n };\n }\n}\n\n/**\n * Create system message from template and request\n */\nexport async function createSystemMessage(\n template: PromptTemplate<typeof RequirementAgentSystemPromptInputSchema>,\n request: RequirementAgentRequest,\n): Promise<SystemMessage> {\n return new SystemMessage(\n template.render({\n tools: await Promise.all(\n request.tools\n .filter((tool) => !request.hiddenTools.includes(tool))\n .map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: JSON.stringify(await tool.inputSchema(), null, 2),\n allowed: String(request.allowedTools.includes(tool)),\n reason: request.reasonByTool.get(tool),\n })),\n ),\n finalAnswerName: request.finalAnswer.name,\n finalAnswerSchema: request.finalAnswer.customSchema\n ? JSON.stringify(request.finalAnswer.inputSchema, null, 2)\n : undefined,\n finalAnswerInstructions: request.finalAnswer.instructions, // default\n role: undefined, // default\n instructions: undefined, // default\n notes: undefined, // default\n }),\n );\n}\n"]}
@@ -2,7 +2,7 @@ import { AnyTool } from '../../../tools/base.cjs';
2
2
  import { RunContext } from '../../../context.cjs';
3
3
  import { SystemMessage } from '../../../backend/message.cjs';
4
4
  import { PromptTemplate } from '../../../template.cjs';
5
- import { F as FinalAnswerTool, R as RequirementAgentRunState, a as RequirementAgentRequest, b as RequirementAgentSystemPromptInputSchema } from '../../../types-CkEtV8R9.cjs';
5
+ import { F as FinalAnswerTool, R as RequirementAgentRunState, a as RequirementAgentRequest, b as RequirementAgentSystemPromptInputSchema } from '../../../types-BNsa3W7Z.cjs';
6
6
  import { Requirement, Rule } from '../requirements/requirement.cjs';
7
7
  import 'ajv';
8
8
  import '../../../errors.cjs';
@@ -14,15 +14,15 @@ import '../../../cache/base.cjs';
14
14
  import '../../../internals/helpers/schema.cjs';
15
15
  import 'zod';
16
16
  import 'zod-to-json-schema';
17
- import '../../../emitter-jN55XZZq.cjs';
17
+ import '../../../emitter-D4OcelZ9.cjs';
18
18
  import '../../../internals/helpers/promise.cjs';
19
19
  import 'ai';
20
20
  import '../../../memory/base.cjs';
21
- import '../../../chat-BFl85cqt.cjs';
21
+ import '../../../chat-C20nYj46.cjs';
22
22
  import '../../../backend/constants.cjs';
23
23
  import '../../../logger/logger.cjs';
24
24
  import 'pino';
25
- import '../../../base-XfWeXQ-S.cjs';
25
+ import '../../../base-s3ioVIE9.cjs';
26
26
 
27
27
  /**
28
28
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
@@ -2,7 +2,7 @@ import { AnyTool } from '../../../tools/base.js';
2
2
  import { RunContext } from '../../../context.js';
3
3
  import { SystemMessage } from '../../../backend/message.js';
4
4
  import { PromptTemplate } from '../../../template.js';
5
- import { F as FinalAnswerTool, R as RequirementAgentRunState, a as RequirementAgentRequest, b as RequirementAgentSystemPromptInputSchema } from '../../../types-BQ-3LdkE.js';
5
+ import { F as FinalAnswerTool, R as RequirementAgentRunState, a as RequirementAgentRequest, b as RequirementAgentSystemPromptInputSchema } from '../../../types-DYtzF6ya.js';
6
6
  import { Requirement, Rule } from '../requirements/requirement.js';
7
7
  import 'ajv';
8
8
  import '../../../errors.js';
@@ -14,15 +14,15 @@ import '../../../cache/base.js';
14
14
  import '../../../internals/helpers/schema.js';
15
15
  import 'zod';
16
16
  import 'zod-to-json-schema';
17
- import '../../../emitter-36-9MnvA.js';
17
+ import '../../../emitter-kHxkUxco.js';
18
18
  import '../../../internals/helpers/promise.js';
19
19
  import 'ai';
20
20
  import '../../../memory/base.js';
21
- import '../../../chat-BRuyDeKR.js';
21
+ import '../../../chat-CfTNfR60.js';
22
22
  import '../../../backend/constants.js';
23
23
  import '../../../logger/logger.js';
24
24
  import 'pino';
25
- import '../../../base-CyFx7BRL.js';
25
+ import '../../../base-BjzyQ8k6.js';
26
26
 
27
27
  /**
28
28
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/agents/requirement/utils/llm.ts"],"names":["RequirementsReasoner","tools","entries","context","finalAnswer","update","requirements","requirement","push","entry","emitter","child","groupId","toCamelCase","name","creator","namespace","emit","init","findToolByName","tool","find","t","Error","map","join","createRequest","state","forceTool","extraRules","hidden","allowed","allTools","reasonByTool","WeakMap","preventStop","preventStepRefs","forced","forcedLevel","rulesByTool","Map","set","filter","e","enabled","generatedRules","run","rule","target","rules","get","priority","has","length","Math","max","r","toolName","sort","a","b","maxPriority","isAllowed","isForced","isHidden","isPreventStop","ruleEntry","reason","includes","finalAnswerIndex","indexOf","splice","AgentError","JSON","stringify","toolChoice","Tool","allowedTools","hiddenTools","canStop","createSystemMessage","template","request","SystemMessage","render","Promise","all","description","inputSchema","String","finalAnswerName","finalAnswerSchema","customSchema","undefined","finalAnswerInstructions","instructions","role","notes"],"mappings":"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","file":"llm.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { RunContext } from \"@/context.js\";\nimport { AgentError } from \"@/agents/base.js\";\nimport { SystemMessage } from \"@/backend/message.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n RequirementAgentRequest,\n RequirementAgentRunState,\n RequirementAgentSystemPromptInputSchema,\n} from \"@/agents/requirement/types.js\";\nimport {\n Requirement,\n RequirementCallbacks,\n Rule,\n} from \"@/agents/requirement/requirements/requirement.js\";\nimport { FinalAnswerTool } from \"./tool.js\";\nimport { ChatModelToolChoice } from \"@/backend/chat.js\";\nimport { toCamelCase } from \"remeda\";\n\ninterface RuleEntry {\n rule: Rule;\n requirement: Requirement | null;\n priority: number;\n}\n\n/**\n * Manages requirements and generates requests for the agent\n */\nexport class RequirementsReasoner {\n protected tools: AnyTool[];\n protected entries: Requirement[] = [];\n protected context: RunContext<any>;\n public readonly finalAnswer: FinalAnswerTool;\n\n constructor(tools: AnyTool[], finalAnswer: FinalAnswerTool, context: RunContext<any>) {\n this.tools = [...tools, finalAnswer];\n this.finalAnswer = finalAnswer;\n this.context = context;\n }\n\n async update(requirements: Requirement[]): Promise<void> {\n this.entries = [];\n\n for (const requirement of requirements) {\n this.entries.push(requirement);\n }\n\n for (const entry of this.entries) {\n const emitter = this.context.emitter.child<RequirementCallbacks>({\n groupId: toCamelCase(entry.name),\n creator: entry,\n });\n emitter.namespace.push(\"requirement\");\n\n const tools = [...this.tools];\n await emitter.emit(\"init\", { tools });\n await entry.init(tools, this.context);\n }\n }\n\n protected findToolByName(name: string): AnyTool {\n const tool = this.tools.find((t) => t.name === name);\n if (!tool) {\n throw new Error(`Tool '${name}' not found in (${this.tools.map((t) => t.name).join(\", \")}).`);\n }\n return tool;\n }\n\n async createRequest(\n state: RequirementAgentRunState,\n forceTool: boolean,\n extraRules: Rule[] = [],\n ): Promise<RequirementAgentRequest> {\n const hidden: AnyTool[] = [];\n const allowed: AnyTool[] = [];\n const allTools: AnyTool[] = [...this.tools];\n const reasonByTool = new WeakMap<AnyTool, string | undefined>();\n\n let preventStop = false;\n const preventStepRefs: RuleEntry[] = [];\n\n let forced: AnyTool | null = null;\n let forcedLevel = 0;\n const rulesByTool = new Map<string, RuleEntry[]>();\n\n // Initialize rules map\n for (const tool of this.tools) {\n rulesByTool.set(tool.name, []);\n }\n\n // Group rules from requirements\n for (const requirement of this.entries.filter((e) => e.enabled)) {\n const generatedRules = await requirement.run(state);\n for (const rule of generatedRules) {\n const tool = this.findToolByName(rule.target);\n const rules = rulesByTool.get(tool.name) || [];\n rules.push({\n priority: requirement.priority,\n rule,\n requirement,\n });\n rulesByTool.set(tool.name, rules);\n }\n }\n\n // Add extra rules\n for (const rule of extraRules) {\n if (!rulesByTool.has(rule.target)) {\n throw new Error(`Tool '${rule.target}' not found.`);\n }\n\n const rules = rulesByTool.get(rule.target)!;\n const priority = rules.length > 0 ? Math.max(...rules.map((r) => r.priority)) + 1 : 1;\n rules.push({\n priority,\n rule,\n requirement: null,\n });\n }\n\n // Aggregate rules and infer required tool\n for (const [toolName, rules] of rulesByTool.entries()) {\n const tool = this.findToolByName(toolName);\n rules.sort((a, b) => b.priority - a.priority); // DESC\n\n const maxPriority = rules.length > 0 ? rules[0].priority : 1;\n let isAllowed = true;\n let isForced = false;\n let isHidden = false;\n let isPreventStop = false;\n\n for (const ruleEntry of rules) {\n const rule = ruleEntry.rule;\n if (!rule.allowed) {\n isAllowed = false;\n }\n if (rule.hidden) {\n isHidden = true;\n }\n if (rule.forced) {\n isForced = true;\n }\n if (rule.preventStop) {\n isPreventStop = true;\n preventStepRefs.push(ruleEntry);\n }\n if (rule.reason) {\n reasonByTool.set(tool, rule.reason);\n }\n }\n\n if (isAllowed && isHidden) {\n isAllowed = false;\n }\n\n if (isAllowed) {\n if (!allowed.includes(tool)) {\n allowed.push(tool);\n }\n if (isForced && (!forced || forcedLevel < maxPriority)) {\n forced = tool;\n forcedLevel = maxPriority;\n }\n }\n if (isHidden) {\n if (!hidden.includes(tool)) {\n hidden.push(tool);\n }\n }\n if (isPreventStop) {\n preventStop = true;\n }\n }\n\n // If forced tool is set, only allow it and final answer\n if (forced) {\n allowed.length = 0;\n if (!allowed.includes(forced)) {\n allowed.push(forced);\n }\n if (!allowed.includes(this.finalAnswer as any)) {\n allowed.push(this.finalAnswer as any);\n }\n }\n\n // If prevent stop is set and forced is not final answer, remove final answer\n if (preventStop && forced !== this.finalAnswer) {\n const finalAnswerIndex = allowed.indexOf(this.finalAnswer);\n if (finalAnswerIndex !== -1) {\n allowed.splice(finalAnswerIndex, 1);\n }\n }\n\n if (allowed.length === 0) {\n throw new AgentError(\n \"One of the generated rules is preventing the agent from continuing. \" +\n \"This indicates that the provided requirements may conflict with each other. \" +\n \"See the following rules and their attached requirements that are preventing the agent from continuing.\\n\" +\n JSON.stringify(preventStepRefs, null, 2),\n );\n }\n\n let toolChoice: ChatModelToolChoice = forced || \"required\";\n if (allowed.length === 1) {\n toolChoice = allowed[0];\n }\n\n // Override to auto if not forcing and not preventing stop\n if (!(toolChoice instanceof Tool) && !forceTool && !preventStop) {\n toolChoice = \"auto\";\n }\n\n return {\n tools: allTools,\n allowedTools: allowed,\n reasonByTool,\n toolChoice,\n finalAnswer: this.finalAnswer,\n hiddenTools: hidden,\n canStop: !preventStop,\n };\n }\n}\n\n/**\n * Create system message from template and request\n */\nexport async function createSystemMessage(\n template: PromptTemplate<typeof RequirementAgentSystemPromptInputSchema>,\n request: RequirementAgentRequest,\n): Promise<SystemMessage> {\n return new SystemMessage(\n template.render({\n tools: await Promise.all(\n request.tools\n .filter((tool) => !request.hiddenTools.includes(tool))\n .map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: JSON.stringify(await tool.inputSchema(), null, 2),\n allowed: String(request.allowedTools.includes(tool)),\n reason: request.reasonByTool.get(tool),\n })),\n ),\n finalAnswerName: request.finalAnswer.name,\n finalAnswerSchema: request.finalAnswer.customSchema\n ? JSON.stringify(request.finalAnswer.inputSchema, null, 2)\n : undefined,\n finalAnswerInstructions: request.finalAnswer.instructions, // default\n role: undefined, // default\n instructions: undefined, // default\n notes: undefined, // default\n }),\n );\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/agents/requirement/utils/llm.ts"],"names":["RequirementsReasoner","tools","entries","context","finalAnswer","update","requirements","requirement","push","entry","emitter","child","groupId","toCamelCase","name","creator","namespace","emit","init","findToolByName","tool","find","t","Error","map","join","createRequest","state","forceTool","extraRules","hidden","allowed","allTools","reasonByTool","WeakMap","preventStop","preventStepRefs","forced","forcedLevel","rulesByTool","Map","set","filter","e","enabled","generatedRules","run","rule","target","rules","get","priority","has","length","Math","max","r","toolName","sort","a","b","maxPriority","isAllowed","isForced","isHidden","isPreventStop","ruleEntry","reason","includes","finalAnswerIndex","indexOf","splice","AgentError","JSON","stringify","toolChoice","Tool","allowedTools","hiddenTools","canStop","createSystemMessage","template","request","SystemMessage","render","Promise","all","description","inputSchema","String","finalAnswerName","finalAnswerSchema","customSchema","undefined","finalAnswerInstructions","instructions","role","notes"],"mappings":"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","file":"llm.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { RunContext } from \"@/context.js\";\nimport { AgentError } from \"@/agents/base.js\";\nimport { SystemMessage } from \"@/backend/message.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n RequirementAgentRequest,\n RequirementAgentRunState,\n RequirementAgentSystemPromptInputSchema,\n} from \"@/agents/requirement/types.js\";\nimport {\n Requirement,\n RequirementCallbacks,\n Rule,\n} from \"@/agents/requirement/requirements/requirement.js\";\nimport { FinalAnswerTool } from \"./tool.js\";\nimport { ChatModelToolChoice } from \"@/backend/chat.js\";\nimport { toCamelCase } from \"remeda\";\n\ninterface RuleEntry {\n rule: Rule;\n requirement: Requirement | null;\n priority: number;\n}\n\n/**\n * Manages requirements and generates requests for the agent\n */\nexport class RequirementsReasoner {\n protected tools: AnyTool[];\n protected entries: Requirement[] = [];\n protected context: RunContext<any>;\n public readonly finalAnswer: FinalAnswerTool;\n\n constructor(tools: AnyTool[], finalAnswer: FinalAnswerTool, context: RunContext<any>) {\n this.tools = [...tools, finalAnswer];\n this.finalAnswer = finalAnswer;\n this.context = context;\n }\n\n async update(requirements: Requirement[]): Promise<void> {\n this.entries = [];\n\n for (const requirement of requirements) {\n this.entries.push(requirement);\n }\n\n for (const entry of this.entries) {\n const emitter = this.context.emitter.child<RequirementCallbacks>({\n groupId: toCamelCase(entry.name),\n creator: entry,\n });\n emitter.namespace.push(\"requirement\");\n\n const tools = [...this.tools];\n await emitter.emit(\"init\", { tools });\n await entry.init(tools, this.context);\n }\n }\n\n protected findToolByName(name: string): AnyTool {\n const tool = this.tools.find((t) => t.name === name);\n if (!tool) {\n throw new Error(`Tool '${name}' not found in (${this.tools.map((t) => t.name).join(\", \")}).`);\n }\n return tool;\n }\n\n async createRequest(\n state: RequirementAgentRunState,\n forceTool: boolean,\n extraRules: Rule[] = [],\n ): Promise<RequirementAgentRequest> {\n const hidden: AnyTool[] = [];\n const allowed: AnyTool[] = [];\n const allTools: AnyTool[] = [...this.tools];\n const reasonByTool = new WeakMap<AnyTool, string | undefined>();\n\n let preventStop = false;\n const preventStepRefs: RuleEntry[] = [];\n\n let forced: AnyTool | null = null;\n let forcedLevel = 0;\n const rulesByTool = new Map<string, RuleEntry[]>();\n\n // Initialize rules map\n for (const tool of this.tools) {\n rulesByTool.set(tool.name, []);\n }\n\n // Group rules from requirements\n for (const requirement of this.entries.filter((e) => e.enabled)) {\n const generatedRules = await requirement.run(state);\n for (const rule of generatedRules) {\n const tool = this.findToolByName(rule.target);\n const rules = rulesByTool.get(tool.name) || [];\n rules.push({\n priority: requirement.priority,\n rule,\n requirement,\n });\n rulesByTool.set(tool.name, rules);\n }\n }\n\n // Add extra rules\n for (const rule of extraRules) {\n if (!rulesByTool.has(rule.target)) {\n throw new Error(`Tool '${rule.target}' not found.`);\n }\n\n const rules = rulesByTool.get(rule.target)!;\n const priority = rules.length > 0 ? Math.max(...rules.map((r) => r.priority)) + 1 : 1;\n rules.push({\n priority,\n rule,\n requirement: null,\n });\n }\n\n // Aggregate rules and infer required tool\n for (const [toolName, rules] of rulesByTool.entries()) {\n const tool = this.findToolByName(toolName);\n rules.sort((a, b) => b.priority - a.priority); // DESC\n\n const maxPriority = rules.length > 0 ? rules[0].priority : 1;\n let isAllowed = true;\n let isForced = false;\n let isHidden = false;\n let isPreventStop = false;\n\n for (const ruleEntry of rules) {\n const rule = ruleEntry.rule;\n if (!rule.allowed) {\n isAllowed = false;\n }\n if (rule.hidden) {\n isHidden = true;\n }\n if (rule.forced) {\n isForced = true;\n }\n if (rule.preventStop) {\n isPreventStop = true;\n preventStepRefs.push(ruleEntry);\n }\n if (rule.reason) {\n reasonByTool.set(tool, rule.reason);\n }\n }\n\n if (isAllowed && isHidden) {\n isAllowed = false;\n }\n\n if (isAllowed) {\n if (!allowed.includes(tool)) {\n allowed.push(tool);\n }\n if (isForced && (!forced || forcedLevel < maxPriority)) {\n forced = tool;\n forcedLevel = maxPriority;\n }\n }\n if (isHidden) {\n if (!hidden.includes(tool)) {\n hidden.push(tool);\n }\n }\n if (isPreventStop) {\n preventStop = true;\n }\n }\n\n // If forced tool is set, only allow it and final answer\n if (forced) {\n allowed.length = 0;\n if (!allowed.includes(forced)) {\n allowed.push(forced);\n }\n if (!allowed.includes(this.finalAnswer as any)) {\n allowed.push(this.finalAnswer as any);\n }\n }\n\n // If prevent stop is set and forced is not final answer, remove final answer\n if (preventStop && forced !== this.finalAnswer) {\n const finalAnswerIndex = allowed.indexOf(this.finalAnswer);\n if (finalAnswerIndex !== -1) {\n allowed.splice(finalAnswerIndex, 1);\n }\n }\n\n if (allowed.length === 0) {\n throw new AgentError(\n \"One of the generated rules is preventing the agent from continuing. \" +\n \"This indicates that the provided requirements may conflict with each other. \" +\n \"See the following rules and their attached requirements that are preventing the agent from continuing.\\n\" +\n JSON.stringify(preventStepRefs, null, 2),\n );\n }\n\n let toolChoice: ChatModelToolChoice = forced || \"required\";\n if (allowed.length === 1) {\n toolChoice = allowed[0];\n }\n\n // Override to auto if not forcing and not preventing stop\n if (!(toolChoice instanceof Tool) && !forceTool && !preventStop) {\n toolChoice = \"auto\";\n }\n\n return {\n tools: allTools,\n allowedTools: allowed,\n reasonByTool,\n toolChoice,\n finalAnswer: this.finalAnswer,\n hiddenTools: hidden,\n canStop: !preventStop,\n };\n }\n}\n\n/**\n * Create system message from template and request\n */\nexport async function createSystemMessage(\n template: PromptTemplate<typeof RequirementAgentSystemPromptInputSchema>,\n request: RequirementAgentRequest,\n): Promise<SystemMessage> {\n return new SystemMessage(\n template.render({\n tools: await Promise.all(\n request.tools\n .filter((tool) => !request.hiddenTools.includes(tool))\n .map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: JSON.stringify(await tool.inputSchema(), null, 2),\n allowed: String(request.allowedTools.includes(tool)),\n reason: request.reasonByTool.get(tool),\n })),\n ),\n finalAnswerName: request.finalAnswer.name,\n finalAnswerSchema: request.finalAnswer.customSchema\n ? JSON.stringify(request.finalAnswer.inputSchema, null, 2)\n : undefined,\n finalAnswerInstructions: request.finalAnswer.instructions, // default\n role: undefined, // default\n instructions: undefined, // default\n notes: undefined, // default\n }),\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/agents/requirement/utils/tool.ts"],"names":["runTool","tools","msg","context","isToolCallValid","ChatModelToolCallError","toolName","generatedContent","JSON","stringify","name","parameters","input","generatedError","result","tool","output","StringToolOutput","error","find","ToolError","run","toolCallMsg","Tool","contextKeys","Memory","state","memory","e","FrameworkError","ensure","FinalAnswerToolSchema","z","object","response","string","describe","FinalAnswerTool","description","instructions","customSchema","emitter","expectedOutput","undefined","ZodSchema","Emitter","root","child","namespace","creator","inputSchema","_run","_options","_ctx","answer","AssistantMessage"],"mappings":"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","file":"tool.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AnyTool,\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolError,\n ToolOutput,\n} from \"@/tools/base.js\";\nimport { ToolCallPart } from \"ai\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { AssistantMessage } from \"@/backend/message.js\";\nimport { RunContext } from \"@/context.js\";\nimport { isToolCallValid } from \"@/adapters/vercel/backend/utils.js\";\nimport { ChatModelToolCallError } from \"@/backend/errors.js\";\n\n// Tool invocation result\nexport interface ToolInvocationResult {\n msg: ToolCallPart;\n tool: AnyTool | null;\n input: unknown;\n output: ToolOutput;\n error: FrameworkError | null;\n}\n\n/**\n * Run a single tool with error handling\n */\nexport async function runTool(\n tools: AnyTool[],\n msg: ToolCallPart,\n context: Record<string, any>,\n): Promise<ToolInvocationResult> {\n if (!isToolCallValid(msg)) {\n throw new ChatModelToolCallError(`Tool '${msg.toolName}' does not exist!`, [], {\n generatedContent: JSON.stringify({ name: msg.toolName, parameters: msg.input }),\n generatedError: \"The generated tool call is invalid. Cannot parse the args.\",\n });\n }\n\n const result: ToolInvocationResult = {\n msg,\n tool: null,\n input: msg.input,\n output: new StringToolOutput(\"\"),\n error: null,\n };\n\n try {\n result.tool = tools.find((tool) => tool.name === msg.toolName) || null;\n if (!result.tool) {\n throw new ToolError(`Tool '${msg.toolName}' does not exist!`);\n }\n\n result.output = await result.tool.run(result.input).context({\n ...context,\n toolCallMsg: msg,\n [Tool.contextKeys.Memory]: context.state.memory,\n });\n } catch (e) {\n if (e instanceof ToolError) {\n result.error = FrameworkError.ensure(e);\n } else {\n throw e;\n }\n }\n\n return result;\n}\n\n// Final answer tool schema\nconst FinalAnswerToolSchema = z.object({\n response: z.string().describe(\"The final answer to the user\"),\n});\n\n/**\n * Special tool for capturing final answers\n */\nexport class FinalAnswerTool extends Tool {\n public readonly name = \"final_answer\";\n public readonly description = \"Sends the final answer to the user\";\n public instructions?: string;\n public customSchema: boolean;\n public readonly emitter: Emitter<any>;\n\n protected expectedOutput: string | ZodSchema | null;\n protected state: RequirementAgentRunState;\n\n constructor(expectedOutput: string | ZodSchema | null, state: RequirementAgentRunState) {\n super();\n this.expectedOutput = expectedOutput;\n this.state = state;\n this.instructions = typeof expectedOutput === \"string\" ? expectedOutput : undefined;\n this.customSchema = expectedOutput instanceof ZodSchema;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"final_answer\"],\n creator: this,\n });\n }\n\n inputSchema(): ZodSchema {\n const expectedOutput = this.expectedOutput;\n\n if (!expectedOutput) {\n return FinalAnswerToolSchema;\n } else if (expectedOutput instanceof ZodSchema) {\n return expectedOutput;\n } else if (typeof expectedOutput === \"string\") {\n return z.object({\n response: z.string().describe(expectedOutput),\n });\n } else {\n return FinalAnswerToolSchema;\n }\n }\n\n async _run(\n input: any,\n _options: BaseToolRunOptions,\n _ctx: RunContext<typeof this>,\n ): Promise<StringToolOutput> {\n this.state.result = input;\n\n if (this.expectedOutput instanceof ZodSchema) {\n // For custom schemas, serialize the entire input\n this.state.answer = new AssistantMessage(JSON.stringify(input));\n } else {\n // For string schemas, use the response field\n this.state.answer = new AssistantMessage(input.response);\n }\n\n return new StringToolOutput(\"Message has been sent\");\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/agents/requirement/utils/tool.ts"],"names":["runTool","tools","msg","context","isToolCallValid","ChatModelToolCallError","toolName","generatedContent","JSON","stringify","name","parameters","input","generatedError","result","tool","output","StringToolOutput","error","find","ToolError","run","toolCallMsg","Tool","contextKeys","Memory","state","memory","e","FrameworkError","ensure","FinalAnswerToolSchema","z","object","response","string","describe","FinalAnswerTool","description","instructions","customSchema","emitter","expectedOutput","undefined","ZodSchema","Emitter","root","child","namespace","creator","inputSchema","_run","_options","_ctx","answer","AssistantMessage"],"mappings":"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","file":"tool.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AnyTool,\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolError,\n ToolOutput,\n} from \"@/tools/base.js\";\nimport { ToolCallPart } from \"ai\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { AssistantMessage } from \"@/backend/message.js\";\nimport { RunContext } from \"@/context.js\";\nimport { isToolCallValid } from \"@/adapters/vercel/backend/utils.js\";\nimport { ChatModelToolCallError } from \"@/backend/errors.js\";\n\n// Tool invocation result\nexport interface ToolInvocationResult {\n msg: ToolCallPart;\n tool: AnyTool | null;\n input: unknown;\n output: ToolOutput;\n error: FrameworkError | null;\n}\n\n/**\n * Run a single tool with error handling\n */\nexport async function runTool(\n tools: AnyTool[],\n msg: ToolCallPart,\n context: Record<string, any>,\n): Promise<ToolInvocationResult> {\n if (!isToolCallValid(msg)) {\n throw new ChatModelToolCallError(`Tool '${msg.toolName}' does not exist!`, [], {\n generatedContent: JSON.stringify({ name: msg.toolName, parameters: msg.input }),\n generatedError: \"The generated tool call is invalid. Cannot parse the args.\",\n });\n }\n\n const result: ToolInvocationResult = {\n msg,\n tool: null,\n input: msg.input,\n output: new StringToolOutput(\"\"),\n error: null,\n };\n\n try {\n result.tool = tools.find((tool) => tool.name === msg.toolName) || null;\n if (!result.tool) {\n throw new ToolError(`Tool '${msg.toolName}' does not exist!`);\n }\n\n result.output = await result.tool.run(result.input).context({\n ...context,\n toolCallMsg: msg,\n [Tool.contextKeys.Memory]: context.state.memory,\n });\n } catch (e) {\n if (e instanceof ToolError) {\n result.error = FrameworkError.ensure(e);\n } else {\n throw e;\n }\n }\n\n return result;\n}\n\n// Final answer tool schema\nconst FinalAnswerToolSchema = z.object({\n response: z.string().describe(\"The final answer to the user\"),\n});\n\n/**\n * Special tool for capturing final answers\n */\nexport class FinalAnswerTool extends Tool {\n public readonly name = \"final_answer\";\n public readonly description = \"Sends the final answer to the user\";\n public instructions?: string;\n public customSchema: boolean;\n public readonly emitter: Emitter<any>;\n\n protected expectedOutput: string | ZodSchema | null;\n protected state: RequirementAgentRunState;\n\n constructor(expectedOutput: string | ZodSchema | null, state: RequirementAgentRunState) {\n super();\n this.expectedOutput = expectedOutput;\n this.state = state;\n this.instructions = typeof expectedOutput === \"string\" ? expectedOutput : undefined;\n this.customSchema = expectedOutput instanceof ZodSchema;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"final_answer\"],\n creator: this,\n });\n }\n\n inputSchema(): ZodSchema {\n const expectedOutput = this.expectedOutput;\n\n if (!expectedOutput) {\n return FinalAnswerToolSchema;\n } else if (expectedOutput instanceof ZodSchema) {\n return expectedOutput;\n } else if (typeof expectedOutput === \"string\") {\n return z.object({\n response: z.string().describe(expectedOutput),\n });\n } else {\n return FinalAnswerToolSchema;\n }\n }\n\n async _run(\n input: any,\n _options: BaseToolRunOptions,\n _ctx: RunContext<typeof this>,\n ): Promise<StringToolOutput> {\n this.state.result = input;\n\n if (this.expectedOutput instanceof ZodSchema) {\n // For custom schemas, serialize the entire input\n this.state.answer = new AssistantMessage(JSON.stringify(input));\n } else {\n // For string schemas, use the response field\n this.state.answer = new AssistantMessage(input.response);\n }\n\n return new StringToolOutput(\"Message has been sent\");\n }\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  import '../../../tools/base.cjs';
2
2
  import 'ai';
3
3
  import '../../../errors.cjs';
4
- import '../../../emitter-jN55XZZq.cjs';
4
+ import '../../../emitter-D4OcelZ9.cjs';
5
5
  import 'zod';
6
- export { F as FinalAnswerTool, T as ToolInvocationResult, r as runTool } from '../../../types-CkEtV8R9.cjs';
6
+ export { F as FinalAnswerTool, T as ToolInvocationResult, r as runTool } from '../../../types-BNsa3W7Z.cjs';
7
7
  import '../../../context.cjs';
8
8
  import 'ajv';
9
9
  import '../../../internals/serializable.cjs';
@@ -17,8 +17,8 @@ import '../../../internals/helpers/promise.cjs';
17
17
  import '../../../memory/base.cjs';
18
18
  import '../../../backend/message.cjs';
19
19
  import '../../../template.cjs';
20
- import '../../../chat-BFl85cqt.cjs';
20
+ import '../../../chat-C20nYj46.cjs';
21
21
  import '../../../backend/constants.cjs';
22
22
  import '../../../logger/logger.cjs';
23
23
  import 'pino';
24
- import '../../../base-XfWeXQ-S.cjs';
24
+ import '../../../base-s3ioVIE9.cjs';
@@ -1,9 +1,9 @@
1
1
  import '../../../tools/base.js';
2
2
  import 'ai';
3
3
  import '../../../errors.js';
4
- import '../../../emitter-36-9MnvA.js';
4
+ import '../../../emitter-kHxkUxco.js';
5
5
  import 'zod';
6
- export { F as FinalAnswerTool, T as ToolInvocationResult, r as runTool } from '../../../types-BQ-3LdkE.js';
6
+ export { F as FinalAnswerTool, T as ToolInvocationResult, r as runTool } from '../../../types-DYtzF6ya.js';
7
7
  import '../../../context.js';
8
8
  import 'ajv';
9
9
  import '../../../internals/serializable.js';
@@ -17,8 +17,8 @@ import '../../../internals/helpers/promise.js';
17
17
  import '../../../memory/base.js';
18
18
  import '../../../backend/message.js';
19
19
  import '../../../template.js';
20
- import '../../../chat-BRuyDeKR.js';
20
+ import '../../../chat-CfTNfR60.js';
21
21
  import '../../../backend/constants.js';
22
22
  import '../../../logger/logger.js';
23
23
  import 'pino';
24
- import '../../../base-CyFx7BRL.js';
24
+ import '../../../base-BjzyQ8k6.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/agents/requirement/utils/tool.ts"],"names":["runTool","tools","msg","context","isToolCallValid","ChatModelToolCallError","toolName","generatedContent","JSON","stringify","name","parameters","input","generatedError","result","tool","output","StringToolOutput","error","find","ToolError","run","toolCallMsg","Tool","contextKeys","Memory","state","memory","e","FrameworkError","ensure","FinalAnswerToolSchema","z","object","response","string","describe","FinalAnswerTool","description","instructions","customSchema","emitter","expectedOutput","undefined","ZodSchema","Emitter","root","child","namespace","creator","inputSchema","_run","_options","_ctx","answer","AssistantMessage"],"mappings":"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","file":"tool.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AnyTool,\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolError,\n ToolOutput,\n} from \"@/tools/base.js\";\nimport { ToolCallPart } from \"ai\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { AssistantMessage } from \"@/backend/message.js\";\nimport { RunContext } from \"@/context.js\";\nimport { isToolCallValid } from \"@/adapters/vercel/backend/utils.js\";\nimport { ChatModelToolCallError } from \"@/backend/errors.js\";\n\n// Tool invocation result\nexport interface ToolInvocationResult {\n msg: ToolCallPart;\n tool: AnyTool | null;\n input: unknown;\n output: ToolOutput;\n error: FrameworkError | null;\n}\n\n/**\n * Run a single tool with error handling\n */\nexport async function runTool(\n tools: AnyTool[],\n msg: ToolCallPart,\n context: Record<string, any>,\n): Promise<ToolInvocationResult> {\n if (!isToolCallValid(msg)) {\n throw new ChatModelToolCallError(`Tool '${msg.toolName}' does not exist!`, [], {\n generatedContent: JSON.stringify({ name: msg.toolName, parameters: msg.input }),\n generatedError: \"The generated tool call is invalid. Cannot parse the args.\",\n });\n }\n\n const result: ToolInvocationResult = {\n msg,\n tool: null,\n input: msg.input,\n output: new StringToolOutput(\"\"),\n error: null,\n };\n\n try {\n result.tool = tools.find((tool) => tool.name === msg.toolName) || null;\n if (!result.tool) {\n throw new ToolError(`Tool '${msg.toolName}' does not exist!`);\n }\n\n result.output = await result.tool.run(result.input).context({\n ...context,\n toolCallMsg: msg,\n [Tool.contextKeys.Memory]: context.state.memory,\n });\n } catch (e) {\n if (e instanceof ToolError) {\n result.error = FrameworkError.ensure(e);\n } else {\n throw e;\n }\n }\n\n return result;\n}\n\n// Final answer tool schema\nconst FinalAnswerToolSchema = z.object({\n response: z.string().describe(\"The final answer to the user\"),\n});\n\n/**\n * Special tool for capturing final answers\n */\nexport class FinalAnswerTool extends Tool {\n public readonly name = \"final_answer\";\n public readonly description = \"Sends the final answer to the user\";\n public instructions?: string;\n public customSchema: boolean;\n public readonly emitter: Emitter<any>;\n\n protected expectedOutput: string | ZodSchema | null;\n protected state: RequirementAgentRunState;\n\n constructor(expectedOutput: string | ZodSchema | null, state: RequirementAgentRunState) {\n super();\n this.expectedOutput = expectedOutput;\n this.state = state;\n this.instructions = typeof expectedOutput === \"string\" ? expectedOutput : undefined;\n this.customSchema = expectedOutput instanceof ZodSchema;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"final_answer\"],\n creator: this,\n });\n }\n\n inputSchema(): ZodSchema {\n const expectedOutput = this.expectedOutput;\n\n if (!expectedOutput) {\n return FinalAnswerToolSchema;\n } else if (expectedOutput instanceof ZodSchema) {\n return expectedOutput;\n } else if (typeof expectedOutput === \"string\") {\n return z.object({\n response: z.string().describe(expectedOutput),\n });\n } else {\n return FinalAnswerToolSchema;\n }\n }\n\n async _run(\n input: any,\n _options: BaseToolRunOptions,\n _ctx: RunContext<typeof this>,\n ): Promise<StringToolOutput> {\n this.state.result = input;\n\n if (this.expectedOutput instanceof ZodSchema) {\n // For custom schemas, serialize the entire input\n this.state.answer = new AssistantMessage(JSON.stringify(input));\n } else {\n // For string schemas, use the response field\n this.state.answer = new AssistantMessage(input.response);\n }\n\n return new StringToolOutput(\"Message has been sent\");\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/agents/requirement/utils/tool.ts"],"names":["runTool","tools","msg","context","isToolCallValid","ChatModelToolCallError","toolName","generatedContent","JSON","stringify","name","parameters","input","generatedError","result","tool","output","StringToolOutput","error","find","ToolError","run","toolCallMsg","Tool","contextKeys","Memory","state","memory","e","FrameworkError","ensure","FinalAnswerToolSchema","z","object","response","string","describe","FinalAnswerTool","description","instructions","customSchema","emitter","expectedOutput","undefined","ZodSchema","Emitter","root","child","namespace","creator","inputSchema","_run","_options","_ctx","answer","AssistantMessage"],"mappings":"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","file":"tool.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AnyTool,\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolError,\n ToolOutput,\n} from \"@/tools/base.js\";\nimport { ToolCallPart } from \"ai\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { AssistantMessage } from \"@/backend/message.js\";\nimport { RunContext } from \"@/context.js\";\nimport { isToolCallValid } from \"@/adapters/vercel/backend/utils.js\";\nimport { ChatModelToolCallError } from \"@/backend/errors.js\";\n\n// Tool invocation result\nexport interface ToolInvocationResult {\n msg: ToolCallPart;\n tool: AnyTool | null;\n input: unknown;\n output: ToolOutput;\n error: FrameworkError | null;\n}\n\n/**\n * Run a single tool with error handling\n */\nexport async function runTool(\n tools: AnyTool[],\n msg: ToolCallPart,\n context: Record<string, any>,\n): Promise<ToolInvocationResult> {\n if (!isToolCallValid(msg)) {\n throw new ChatModelToolCallError(`Tool '${msg.toolName}' does not exist!`, [], {\n generatedContent: JSON.stringify({ name: msg.toolName, parameters: msg.input }),\n generatedError: \"The generated tool call is invalid. Cannot parse the args.\",\n });\n }\n\n const result: ToolInvocationResult = {\n msg,\n tool: null,\n input: msg.input,\n output: new StringToolOutput(\"\"),\n error: null,\n };\n\n try {\n result.tool = tools.find((tool) => tool.name === msg.toolName) || null;\n if (!result.tool) {\n throw new ToolError(`Tool '${msg.toolName}' does not exist!`);\n }\n\n result.output = await result.tool.run(result.input).context({\n ...context,\n toolCallMsg: msg,\n [Tool.contextKeys.Memory]: context.state.memory,\n });\n } catch (e) {\n if (e instanceof ToolError) {\n result.error = FrameworkError.ensure(e);\n } else {\n throw e;\n }\n }\n\n return result;\n}\n\n// Final answer tool schema\nconst FinalAnswerToolSchema = z.object({\n response: z.string().describe(\"The final answer to the user\"),\n});\n\n/**\n * Special tool for capturing final answers\n */\nexport class FinalAnswerTool extends Tool {\n public readonly name = \"final_answer\";\n public readonly description = \"Sends the final answer to the user\";\n public instructions?: string;\n public customSchema: boolean;\n public readonly emitter: Emitter<any>;\n\n protected expectedOutput: string | ZodSchema | null;\n protected state: RequirementAgentRunState;\n\n constructor(expectedOutput: string | ZodSchema | null, state: RequirementAgentRunState) {\n super();\n this.expectedOutput = expectedOutput;\n this.state = state;\n this.instructions = typeof expectedOutput === \"string\" ? expectedOutput : undefined;\n this.customSchema = expectedOutput instanceof ZodSchema;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"final_answer\"],\n creator: this,\n });\n }\n\n inputSchema(): ZodSchema {\n const expectedOutput = this.expectedOutput;\n\n if (!expectedOutput) {\n return FinalAnswerToolSchema;\n } else if (expectedOutput instanceof ZodSchema) {\n return expectedOutput;\n } else if (typeof expectedOutput === \"string\") {\n return z.object({\n response: z.string().describe(expectedOutput),\n });\n } else {\n return FinalAnswerToolSchema;\n }\n }\n\n async _run(\n input: any,\n _options: BaseToolRunOptions,\n _ctx: RunContext<typeof this>,\n ): Promise<StringToolOutput> {\n this.state.result = input;\n\n if (this.expectedOutput instanceof ZodSchema) {\n // For custom schemas, serialize the entire input\n this.state.answer = new AssistantMessage(JSON.stringify(input));\n } else {\n // For string schemas, use the response field\n this.state.answer = new AssistantMessage(input.response);\n }\n\n return new StringToolOutput(\"Message has been sent\");\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/agents/requirement/utils/toolCallChecker.ts"],"names":["ToolCallChecker","config","strikeHistory","occurrencesHistory","cycleFound","enabled","maxStrikeLength","maxTotalOccurrences","windowSize","register","value","lastCall","at","isSameToolCall","push","length","shift","occurrences","filter","call","reset","current","a","b","toolName","JSON","stringify","input"],"mappings":";;;;AAgBO,MAAMA,eAAAA,CAAAA;EAhBb;;;AAiBYC,EAAAA,MAAAA;AACAC,EAAAA,aAAAA,GAAgC,EAAA;AAChCC,EAAAA,kBAAAA,GAAqC,EAAA;EACxCC,UAAAA,GAAa,KAAA;EACbC,OAAAA,GAAU,IAAA;EAEjB,WAAA,CAAYJ,MAAAA,GAAgC,EAAC,EAAG;AAC9C,IAAA,IAAA,CAAKA,MAAAA,GAAS;AACZK,MAAAA,eAAAA,EAAiBL,OAAOK,eAAAA,IAAmB,CAAA;AAC3CC,MAAAA,mBAAAA,EAAqBN,OAAOM,mBAAAA,IAAuB,CAAA;AACnDC,MAAAA,UAAAA,EAAYP,OAAOO,UAAAA,IAAc;AACnC,KAAA;AACF;AAEAC,EAAAA,QAAAA,CAASC,KAAAA,EAA2B;AAClC,IAAA,IAAI,CAAC,KAAKL,OAAAA,EAAS;AACjB,MAAA;AACF;AAGA,IAAA,MAAMM,QAAAA,GAAW,IAAA,CAAKT,aAAAA,CAAcU,EAAAA,CAAG,EAAC,CAAA;AACxC,IAAA,IAAID,QAAAA,IAAY,IAAA,CAAKE,cAAAA,CAAeF,QAAAA,EAAUD,KAAAA,CAAAA,EAAQ;AACpD,MAAA,IAAA,CAAKR,aAAAA,CAAcY,KAAKJ,KAAAA,CAAAA;AACxB,MAAA,IAAI,IAAA,CAAKR,aAAAA,CAAca,MAAAA,GAAS,IAAA,CAAKd,OAAOK,eAAAA,EAAiB;AAC3D,QAAA,IAAA,CAAKF,UAAAA,GAAa,IAAA;AACpB;KACF,MAAO;AACL,MAAA,IAAA,CAAKF,aAAAA,GAAgB;AAACQ,QAAAA;;AACxB;AAGA,IAAA,IAAA,CAAKP,kBAAAA,CAAmBW,KAAKJ,KAAAA,CAAAA;AAC7B,IAAA,IAAI,IAAA,CAAKP,kBAAAA,CAAmBY,MAAAA,GAAS,IAAA,CAAKd,OAAOO,UAAAA,EAAY;AAC3D,MAAA,IAAA,CAAKL,mBAAmBa,KAAAA,EAAK;AAC/B;AAEA,IAAA,MAAMC,WAAAA,GAAc,IAAA,CAAKd,kBAAAA,CAAmBe,MAAAA,CAAO,CAACC,IAAAA,KAClD,IAAA,CAAKN,cAAAA,CAAeM,IAAAA,EAAMT,KAAAA,CAAAA,CAAAA,CAC1BK,MAAAA;AACF,IAAA,IAAIE,WAAAA,GAAc,IAAA,CAAKhB,MAAAA,CAAOM,mBAAAA,EAAqB;AACjD,MAAA,IAAA,CAAKH,UAAAA,GAAa,IAAA;AACpB;AACF;AAEAgB,EAAAA,KAAAA,CAAMC,OAAAA,EAA8B;AAClC,IAAA,IAAA,CAAKnB,gBAAgBmB,OAAAA,GAAU;AAACA,MAAAA;QAAW,EAAA;AAC3C,IAAA,IAAA,CAAKlB,qBAAqBkB,OAAAA,GAAU;AAACA,MAAAA;QAAW,EAAA;AAChD,IAAA,IAAA,CAAKjB,UAAAA,GAAa,KAAA;AACpB;AAEUS,EAAAA,cAAAA,CAAeS,GAAiBC,CAAAA,EAA0B;AAClE,IAAA,OAAOD,CAAAA,CAAEE,QAAAA,KAAaD,CAAAA,CAAEC,QAAAA,IAAYC,IAAAA,CAAKC,SAAAA,CAAUJ,CAAAA,CAAEK,KAAK,CAAA,KAAMF,IAAAA,CAAKC,SAAAA,CAAUH,CAAAA,CAAEI,KAAK,CAAA;AACxF;AACF","file":"toolCallChecker.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ToolCallPart } from \"ai\";\n\nexport interface ToolCallCheckerConfig {\n maxStrikeLength?: number;\n maxTotalOccurrences?: number;\n windowSize?: number;\n}\n\n/**\n * Detects cycles in tool calls\n */\nexport class ToolCallChecker {\n protected config: Required<ToolCallCheckerConfig>;\n protected strikeHistory: ToolCallPart[] = [];\n protected occurrencesHistory: ToolCallPart[] = [];\n public cycleFound = false;\n public enabled = true;\n\n constructor(config: ToolCallCheckerConfig = {}) {\n this.config = {\n maxStrikeLength: config.maxStrikeLength ?? 1,\n maxTotalOccurrences: config.maxTotalOccurrences ?? 5,\n windowSize: config.windowSize ?? 10,\n };\n }\n\n register(value: ToolCallPart): void {\n if (!this.enabled) {\n return;\n }\n\n // Check for consecutive strikes\n const lastCall = this.strikeHistory.at(-1);\n if (lastCall && this.isSameToolCall(lastCall, value)) {\n this.strikeHistory.push(value);\n if (this.strikeHistory.length > this.config.maxStrikeLength) {\n this.cycleFound = true;\n }\n } else {\n this.strikeHistory = [value];\n }\n\n // Check for total occurrences in window\n this.occurrencesHistory.push(value);\n if (this.occurrencesHistory.length > this.config.windowSize) {\n this.occurrencesHistory.shift();\n }\n\n const occurrences = this.occurrencesHistory.filter((call) =>\n this.isSameToolCall(call, value),\n ).length;\n if (occurrences > this.config.maxTotalOccurrences) {\n this.cycleFound = true;\n }\n }\n\n reset(current?: ToolCallPart): void {\n this.strikeHistory = current ? [current] : [];\n this.occurrencesHistory = current ? [current] : [];\n this.cycleFound = false;\n }\n\n protected isSameToolCall(a: ToolCallPart, b: ToolCallPart): boolean {\n return a.toolName === b.toolName && JSON.stringify(a.input) === JSON.stringify(b.input);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/agents/requirement/utils/toolCallChecker.ts"],"names":["ToolCallChecker","config","strikeHistory","occurrencesHistory","cycleFound","enabled","maxStrikeLength","maxTotalOccurrences","windowSize","register","value","lastCall","at","isSameToolCall","push","length","shift","occurrences","filter","call","reset","current","a","b","toolName","JSON","stringify","input"],"mappings":";;;;AAgBO,MAAMA,eAAAA,CAAAA;EAhBb;;;AAiBYC,EAAAA,MAAAA;AACAC,EAAAA,aAAAA,GAAgC,EAAA;AAChCC,EAAAA,kBAAAA,GAAqC,EAAA;EACxCC,UAAAA,GAAa,KAAA;EACbC,OAAAA,GAAU,IAAA;EAEjB,WAAA,CAAYJ,MAAAA,GAAgC,EAAC,EAAG;AAC9C,IAAA,IAAA,CAAKA,MAAAA,GAAS;AACZK,MAAAA,eAAAA,EAAiBL,OAAOK,eAAAA,IAAmB,CAAA;AAC3CC,MAAAA,mBAAAA,EAAqBN,OAAOM,mBAAAA,IAAuB,CAAA;AACnDC,MAAAA,UAAAA,EAAYP,OAAOO,UAAAA,IAAc;AACnC,KAAA;AACF,EAAA;AAEAC,EAAAA,QAAAA,CAASC,KAAAA,EAA2B;AAClC,IAAA,IAAI,CAAC,KAAKL,OAAAA,EAAS;AACjB,MAAA;AACF,IAAA;AAGA,IAAA,MAAMM,QAAAA,GAAW,IAAA,CAAKT,aAAAA,CAAcU,EAAAA,CAAG,EAAC,CAAA;AACxC,IAAA,IAAID,QAAAA,IAAY,IAAA,CAAKE,cAAAA,CAAeF,QAAAA,EAAUD,KAAAA,CAAAA,EAAQ;AACpD,MAAA,IAAA,CAAKR,aAAAA,CAAcY,KAAKJ,KAAAA,CAAAA;AACxB,MAAA,IAAI,IAAA,CAAKR,aAAAA,CAAca,MAAAA,GAAS,IAAA,CAAKd,OAAOK,eAAAA,EAAiB;AAC3D,QAAA,IAAA,CAAKF,UAAAA,GAAa,IAAA;AACpB,MAAA;IACF,CAAA,MAAO;AACL,MAAA,IAAA,CAAKF,aAAAA,GAAgB;AAACQ,QAAAA;;AACxB,IAAA;AAGA,IAAA,IAAA,CAAKP,kBAAAA,CAAmBW,KAAKJ,KAAAA,CAAAA;AAC7B,IAAA,IAAI,IAAA,CAAKP,kBAAAA,CAAmBY,MAAAA,GAAS,IAAA,CAAKd,OAAOO,UAAAA,EAAY;AAC3D,MAAA,IAAA,CAAKL,mBAAmBa,KAAAA,EAAK;AAC/B,IAAA;AAEA,IAAA,MAAMC,WAAAA,GAAc,IAAA,CAAKd,kBAAAA,CAAmBe,MAAAA,CAAO,CAACC,IAAAA,KAClD,IAAA,CAAKN,cAAAA,CAAeM,IAAAA,EAAMT,KAAAA,CAAAA,CAAAA,CAC1BK,MAAAA;AACF,IAAA,IAAIE,WAAAA,GAAc,IAAA,CAAKhB,MAAAA,CAAOM,mBAAAA,EAAqB;AACjD,MAAA,IAAA,CAAKH,UAAAA,GAAa,IAAA;AACpB,IAAA;AACF,EAAA;AAEAgB,EAAAA,KAAAA,CAAMC,OAAAA,EAA8B;AAClC,IAAA,IAAA,CAAKnB,gBAAgBmB,OAAAA,GAAU;AAACA,MAAAA;QAAW,EAAA;AAC3C,IAAA,IAAA,CAAKlB,qBAAqBkB,OAAAA,GAAU;AAACA,MAAAA;QAAW,EAAA;AAChD,IAAA,IAAA,CAAKjB,UAAAA,GAAa,KAAA;AACpB,EAAA;AAEUS,EAAAA,cAAAA,CAAeS,GAAiBC,CAAAA,EAA0B;AAClE,IAAA,OAAOD,CAAAA,CAAEE,QAAAA,KAAaD,CAAAA,CAAEC,QAAAA,IAAYC,IAAAA,CAAKC,SAAAA,CAAUJ,CAAAA,CAAEK,KAAK,CAAA,KAAMF,IAAAA,CAAKC,SAAAA,CAAUH,CAAAA,CAAEI,KAAK,CAAA;AACxF,EAAA;AACF","file":"toolCallChecker.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ToolCallPart } from \"ai\";\n\nexport interface ToolCallCheckerConfig {\n maxStrikeLength?: number;\n maxTotalOccurrences?: number;\n windowSize?: number;\n}\n\n/**\n * Detects cycles in tool calls\n */\nexport class ToolCallChecker {\n protected config: Required<ToolCallCheckerConfig>;\n protected strikeHistory: ToolCallPart[] = [];\n protected occurrencesHistory: ToolCallPart[] = [];\n public cycleFound = false;\n public enabled = true;\n\n constructor(config: ToolCallCheckerConfig = {}) {\n this.config = {\n maxStrikeLength: config.maxStrikeLength ?? 1,\n maxTotalOccurrences: config.maxTotalOccurrences ?? 5,\n windowSize: config.windowSize ?? 10,\n };\n }\n\n register(value: ToolCallPart): void {\n if (!this.enabled) {\n return;\n }\n\n // Check for consecutive strikes\n const lastCall = this.strikeHistory.at(-1);\n if (lastCall && this.isSameToolCall(lastCall, value)) {\n this.strikeHistory.push(value);\n if (this.strikeHistory.length > this.config.maxStrikeLength) {\n this.cycleFound = true;\n }\n } else {\n this.strikeHistory = [value];\n }\n\n // Check for total occurrences in window\n this.occurrencesHistory.push(value);\n if (this.occurrencesHistory.length > this.config.windowSize) {\n this.occurrencesHistory.shift();\n }\n\n const occurrences = this.occurrencesHistory.filter((call) =>\n this.isSameToolCall(call, value),\n ).length;\n if (occurrences > this.config.maxTotalOccurrences) {\n this.cycleFound = true;\n }\n }\n\n reset(current?: ToolCallPart): void {\n this.strikeHistory = current ? [current] : [];\n this.occurrencesHistory = current ? [current] : [];\n this.cycleFound = false;\n }\n\n protected isSameToolCall(a: ToolCallPart, b: ToolCallPart): boolean {\n return a.toolName === b.toolName && JSON.stringify(a.input) === JSON.stringify(b.input);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/agents/requirement/utils/toolCallChecker.ts"],"names":["ToolCallChecker","config","strikeHistory","occurrencesHistory","cycleFound","enabled","maxStrikeLength","maxTotalOccurrences","windowSize","register","value","lastCall","at","isSameToolCall","push","length","shift","occurrences","filter","call","reset","current","a","b","toolName","JSON","stringify","input"],"mappings":";;AAgBO,MAAMA,eAAAA,CAAAA;EAhBb;;;AAiBYC,EAAAA,MAAAA;AACAC,EAAAA,aAAAA,GAAgC,EAAA;AAChCC,EAAAA,kBAAAA,GAAqC,EAAA;EACxCC,UAAAA,GAAa,KAAA;EACbC,OAAAA,GAAU,IAAA;EAEjB,WAAA,CAAYJ,MAAAA,GAAgC,EAAC,EAAG;AAC9C,IAAA,IAAA,CAAKA,MAAAA,GAAS;AACZK,MAAAA,eAAAA,EAAiBL,OAAOK,eAAAA,IAAmB,CAAA;AAC3CC,MAAAA,mBAAAA,EAAqBN,OAAOM,mBAAAA,IAAuB,CAAA;AACnDC,MAAAA,UAAAA,EAAYP,OAAOO,UAAAA,IAAc;AACnC,KAAA;AACF;AAEAC,EAAAA,QAAAA,CAASC,KAAAA,EAA2B;AAClC,IAAA,IAAI,CAAC,KAAKL,OAAAA,EAAS;AACjB,MAAA;AACF;AAGA,IAAA,MAAMM,QAAAA,GAAW,IAAA,CAAKT,aAAAA,CAAcU,EAAAA,CAAG,EAAC,CAAA;AACxC,IAAA,IAAID,QAAAA,IAAY,IAAA,CAAKE,cAAAA,CAAeF,QAAAA,EAAUD,KAAAA,CAAAA,EAAQ;AACpD,MAAA,IAAA,CAAKR,aAAAA,CAAcY,KAAKJ,KAAAA,CAAAA;AACxB,MAAA,IAAI,IAAA,CAAKR,aAAAA,CAAca,MAAAA,GAAS,IAAA,CAAKd,OAAOK,eAAAA,EAAiB;AAC3D,QAAA,IAAA,CAAKF,UAAAA,GAAa,IAAA;AACpB;KACF,MAAO;AACL,MAAA,IAAA,CAAKF,aAAAA,GAAgB;AAACQ,QAAAA;;AACxB;AAGA,IAAA,IAAA,CAAKP,kBAAAA,CAAmBW,KAAKJ,KAAAA,CAAAA;AAC7B,IAAA,IAAI,IAAA,CAAKP,kBAAAA,CAAmBY,MAAAA,GAAS,IAAA,CAAKd,OAAOO,UAAAA,EAAY;AAC3D,MAAA,IAAA,CAAKL,mBAAmBa,KAAAA,EAAK;AAC/B;AAEA,IAAA,MAAMC,WAAAA,GAAc,IAAA,CAAKd,kBAAAA,CAAmBe,MAAAA,CAAO,CAACC,IAAAA,KAClD,IAAA,CAAKN,cAAAA,CAAeM,IAAAA,EAAMT,KAAAA,CAAAA,CAAAA,CAC1BK,MAAAA;AACF,IAAA,IAAIE,WAAAA,GAAc,IAAA,CAAKhB,MAAAA,CAAOM,mBAAAA,EAAqB;AACjD,MAAA,IAAA,CAAKH,UAAAA,GAAa,IAAA;AACpB;AACF;AAEAgB,EAAAA,KAAAA,CAAMC,OAAAA,EAA8B;AAClC,IAAA,IAAA,CAAKnB,gBAAgBmB,OAAAA,GAAU;AAACA,MAAAA;QAAW,EAAA;AAC3C,IAAA,IAAA,CAAKlB,qBAAqBkB,OAAAA,GAAU;AAACA,MAAAA;QAAW,EAAA;AAChD,IAAA,IAAA,CAAKjB,UAAAA,GAAa,KAAA;AACpB;AAEUS,EAAAA,cAAAA,CAAeS,GAAiBC,CAAAA,EAA0B;AAClE,IAAA,OAAOD,CAAAA,CAAEE,QAAAA,KAAaD,CAAAA,CAAEC,QAAAA,IAAYC,IAAAA,CAAKC,SAAAA,CAAUJ,CAAAA,CAAEK,KAAK,CAAA,KAAMF,IAAAA,CAAKC,SAAAA,CAAUH,CAAAA,CAAEI,KAAK,CAAA;AACxF;AACF","file":"toolCallChecker.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ToolCallPart } from \"ai\";\n\nexport interface ToolCallCheckerConfig {\n maxStrikeLength?: number;\n maxTotalOccurrences?: number;\n windowSize?: number;\n}\n\n/**\n * Detects cycles in tool calls\n */\nexport class ToolCallChecker {\n protected config: Required<ToolCallCheckerConfig>;\n protected strikeHistory: ToolCallPart[] = [];\n protected occurrencesHistory: ToolCallPart[] = [];\n public cycleFound = false;\n public enabled = true;\n\n constructor(config: ToolCallCheckerConfig = {}) {\n this.config = {\n maxStrikeLength: config.maxStrikeLength ?? 1,\n maxTotalOccurrences: config.maxTotalOccurrences ?? 5,\n windowSize: config.windowSize ?? 10,\n };\n }\n\n register(value: ToolCallPart): void {\n if (!this.enabled) {\n return;\n }\n\n // Check for consecutive strikes\n const lastCall = this.strikeHistory.at(-1);\n if (lastCall && this.isSameToolCall(lastCall, value)) {\n this.strikeHistory.push(value);\n if (this.strikeHistory.length > this.config.maxStrikeLength) {\n this.cycleFound = true;\n }\n } else {\n this.strikeHistory = [value];\n }\n\n // Check for total occurrences in window\n this.occurrencesHistory.push(value);\n if (this.occurrencesHistory.length > this.config.windowSize) {\n this.occurrencesHistory.shift();\n }\n\n const occurrences = this.occurrencesHistory.filter((call) =>\n this.isSameToolCall(call, value),\n ).length;\n if (occurrences > this.config.maxTotalOccurrences) {\n this.cycleFound = true;\n }\n }\n\n reset(current?: ToolCallPart): void {\n this.strikeHistory = current ? [current] : [];\n this.occurrencesHistory = current ? [current] : [];\n this.cycleFound = false;\n }\n\n protected isSameToolCall(a: ToolCallPart, b: ToolCallPart): boolean {\n return a.toolName === b.toolName && JSON.stringify(a.input) === JSON.stringify(b.input);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/agents/requirement/utils/toolCallChecker.ts"],"names":["ToolCallChecker","config","strikeHistory","occurrencesHistory","cycleFound","enabled","maxStrikeLength","maxTotalOccurrences","windowSize","register","value","lastCall","at","isSameToolCall","push","length","shift","occurrences","filter","call","reset","current","a","b","toolName","JSON","stringify","input"],"mappings":";;AAgBO,MAAMA,eAAAA,CAAAA;EAhBb;;;AAiBYC,EAAAA,MAAAA;AACAC,EAAAA,aAAAA,GAAgC,EAAA;AAChCC,EAAAA,kBAAAA,GAAqC,EAAA;EACxCC,UAAAA,GAAa,KAAA;EACbC,OAAAA,GAAU,IAAA;EAEjB,WAAA,CAAYJ,MAAAA,GAAgC,EAAC,EAAG;AAC9C,IAAA,IAAA,CAAKA,MAAAA,GAAS;AACZK,MAAAA,eAAAA,EAAiBL,OAAOK,eAAAA,IAAmB,CAAA;AAC3CC,MAAAA,mBAAAA,EAAqBN,OAAOM,mBAAAA,IAAuB,CAAA;AACnDC,MAAAA,UAAAA,EAAYP,OAAOO,UAAAA,IAAc;AACnC,KAAA;AACF,EAAA;AAEAC,EAAAA,QAAAA,CAASC,KAAAA,EAA2B;AAClC,IAAA,IAAI,CAAC,KAAKL,OAAAA,EAAS;AACjB,MAAA;AACF,IAAA;AAGA,IAAA,MAAMM,QAAAA,GAAW,IAAA,CAAKT,aAAAA,CAAcU,EAAAA,CAAG,EAAC,CAAA;AACxC,IAAA,IAAID,QAAAA,IAAY,IAAA,CAAKE,cAAAA,CAAeF,QAAAA,EAAUD,KAAAA,CAAAA,EAAQ;AACpD,MAAA,IAAA,CAAKR,aAAAA,CAAcY,KAAKJ,KAAAA,CAAAA;AACxB,MAAA,IAAI,IAAA,CAAKR,aAAAA,CAAca,MAAAA,GAAS,IAAA,CAAKd,OAAOK,eAAAA,EAAiB;AAC3D,QAAA,IAAA,CAAKF,UAAAA,GAAa,IAAA;AACpB,MAAA;IACF,CAAA,MAAO;AACL,MAAA,IAAA,CAAKF,aAAAA,GAAgB;AAACQ,QAAAA;;AACxB,IAAA;AAGA,IAAA,IAAA,CAAKP,kBAAAA,CAAmBW,KAAKJ,KAAAA,CAAAA;AAC7B,IAAA,IAAI,IAAA,CAAKP,kBAAAA,CAAmBY,MAAAA,GAAS,IAAA,CAAKd,OAAOO,UAAAA,EAAY;AAC3D,MAAA,IAAA,CAAKL,mBAAmBa,KAAAA,EAAK;AAC/B,IAAA;AAEA,IAAA,MAAMC,WAAAA,GAAc,IAAA,CAAKd,kBAAAA,CAAmBe,MAAAA,CAAO,CAACC,IAAAA,KAClD,IAAA,CAAKN,cAAAA,CAAeM,IAAAA,EAAMT,KAAAA,CAAAA,CAAAA,CAC1BK,MAAAA;AACF,IAAA,IAAIE,WAAAA,GAAc,IAAA,CAAKhB,MAAAA,CAAOM,mBAAAA,EAAqB;AACjD,MAAA,IAAA,CAAKH,UAAAA,GAAa,IAAA;AACpB,IAAA;AACF,EAAA;AAEAgB,EAAAA,KAAAA,CAAMC,OAAAA,EAA8B;AAClC,IAAA,IAAA,CAAKnB,gBAAgBmB,OAAAA,GAAU;AAACA,MAAAA;QAAW,EAAA;AAC3C,IAAA,IAAA,CAAKlB,qBAAqBkB,OAAAA,GAAU;AAACA,MAAAA;QAAW,EAAA;AAChD,IAAA,IAAA,CAAKjB,UAAAA,GAAa,KAAA;AACpB,EAAA;AAEUS,EAAAA,cAAAA,CAAeS,GAAiBC,CAAAA,EAA0B;AAClE,IAAA,OAAOD,CAAAA,CAAEE,QAAAA,KAAaD,CAAAA,CAAEC,QAAAA,IAAYC,IAAAA,CAAKC,SAAAA,CAAUJ,CAAAA,CAAEK,KAAK,CAAA,KAAMF,IAAAA,CAAKC,SAAAA,CAAUH,CAAAA,CAAEI,KAAK,CAAA;AACxF,EAAA;AACF","file":"toolCallChecker.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ToolCallPart } from \"ai\";\n\nexport interface ToolCallCheckerConfig {\n maxStrikeLength?: number;\n maxTotalOccurrences?: number;\n windowSize?: number;\n}\n\n/**\n * Detects cycles in tool calls\n */\nexport class ToolCallChecker {\n protected config: Required<ToolCallCheckerConfig>;\n protected strikeHistory: ToolCallPart[] = [];\n protected occurrencesHistory: ToolCallPart[] = [];\n public cycleFound = false;\n public enabled = true;\n\n constructor(config: ToolCallCheckerConfig = {}) {\n this.config = {\n maxStrikeLength: config.maxStrikeLength ?? 1,\n maxTotalOccurrences: config.maxTotalOccurrences ?? 5,\n windowSize: config.windowSize ?? 10,\n };\n }\n\n register(value: ToolCallPart): void {\n if (!this.enabled) {\n return;\n }\n\n // Check for consecutive strikes\n const lastCall = this.strikeHistory.at(-1);\n if (lastCall && this.isSameToolCall(lastCall, value)) {\n this.strikeHistory.push(value);\n if (this.strikeHistory.length > this.config.maxStrikeLength) {\n this.cycleFound = true;\n }\n } else {\n this.strikeHistory = [value];\n }\n\n // Check for total occurrences in window\n this.occurrencesHistory.push(value);\n if (this.occurrencesHistory.length > this.config.windowSize) {\n this.occurrencesHistory.shift();\n }\n\n const occurrences = this.occurrencesHistory.filter((call) =>\n this.isSameToolCall(call, value),\n ).length;\n if (occurrences > this.config.maxTotalOccurrences) {\n this.cycleFound = true;\n }\n }\n\n reset(current?: ToolCallPart): void {\n this.strikeHistory = current ? [current] : [];\n this.occurrencesHistory = current ? [current] : [];\n this.cycleFound = false;\n }\n\n protected isSameToolCall(a: ToolCallPart, b: ToolCallPart): boolean {\n return a.toolName === b.toolName && JSON.stringify(a.input) === JSON.stringify(b.input);\n }\n}\n"]}