beeai-framework 0.1.28 → 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 (564) 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 +3 -3
  45. package/dist/adapters/anthropic/backend/chat.d.ts +3 -3
  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-BAVf6-xf.d.ts → agent-s3uhvAba.d.ts} +5 -5
  181. package/dist/{agent-DHO-oJQf.d.cts → agent-zfT__iq9.d.cts} +5 -5
  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.d.cts +1 -1
  209. package/dist/agents/react/prompts.d.ts +1 -1
  210. package/dist/agents/react/prompts.js.map +1 -1
  211. package/dist/agents/react/runners/base.cjs.map +1 -1
  212. package/dist/agents/react/runners/base.d.cts +4 -4
  213. package/dist/agents/react/runners/base.d.ts +4 -4
  214. package/dist/agents/react/runners/base.js.map +1 -1
  215. package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
  216. package/dist/agents/react/runners/deep-think/prompts.d.cts +1 -1
  217. package/dist/agents/react/runners/deep-think/prompts.d.ts +1 -1
  218. package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
  219. package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
  220. package/dist/agents/react/runners/deep-think/runner.d.cts +5 -5
  221. package/dist/agents/react/runners/deep-think/runner.d.ts +5 -5
  222. package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
  223. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  224. package/dist/agents/react/runners/default/runner.d.cts +5 -5
  225. package/dist/agents/react/runners/default/runner.d.ts +5 -5
  226. package/dist/agents/react/runners/default/runner.js.map +1 -1
  227. package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
  228. package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
  229. package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
  230. package/dist/agents/react/runners/granite/prompts.d.cts +1 -1
  231. package/dist/agents/react/runners/granite/prompts.d.ts +1 -1
  232. package/dist/agents/react/runners/granite/prompts.js.map +1 -1
  233. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  234. package/dist/agents/react/runners/granite/runner.d.cts +5 -5
  235. package/dist/agents/react/runners/granite/runner.d.ts +5 -5
  236. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  237. package/dist/agents/react/types.d.cts +2 -2
  238. package/dist/agents/react/types.d.ts +2 -2
  239. package/dist/agents/requirement/agent.cjs.map +1 -1
  240. package/dist/agents/requirement/agent.d.cts +5 -5
  241. package/dist/agents/requirement/agent.d.ts +5 -5
  242. package/dist/agents/requirement/agent.js.map +1 -1
  243. package/dist/agents/requirement/prompts.d.cts +2 -2
  244. package/dist/agents/requirement/prompts.d.ts +2 -2
  245. package/dist/agents/requirement/requirements/conditional.cjs.map +1 -1
  246. package/dist/agents/requirement/requirements/conditional.d.cts +5 -5
  247. package/dist/agents/requirement/requirements/conditional.d.ts +5 -5
  248. package/dist/agents/requirement/requirements/conditional.js.map +1 -1
  249. package/dist/agents/requirement/requirements/requirement.cjs.map +1 -1
  250. package/dist/agents/requirement/requirements/requirement.d.cts +4 -4
  251. package/dist/agents/requirement/requirements/requirement.d.ts +4 -4
  252. package/dist/agents/requirement/requirements/requirement.js.map +1 -1
  253. package/dist/agents/requirement/requirements/utils.cjs.map +1 -1
  254. package/dist/agents/requirement/requirements/utils.d.cts +1 -1
  255. package/dist/agents/requirement/requirements/utils.d.ts +1 -1
  256. package/dist/agents/requirement/requirements/utils.js.map +1 -1
  257. package/dist/agents/requirement/runner.cjs.map +1 -1
  258. package/dist/agents/requirement/runner.d.cts +5 -5
  259. package/dist/agents/requirement/runner.d.ts +5 -5
  260. package/dist/agents/requirement/runner.js.map +1 -1
  261. package/dist/agents/requirement/types.d.cts +4 -4
  262. package/dist/agents/requirement/types.d.ts +4 -4
  263. package/dist/agents/requirement/utils/llm.cjs.map +1 -1
  264. package/dist/agents/requirement/utils/llm.d.cts +4 -4
  265. package/dist/agents/requirement/utils/llm.d.ts +4 -4
  266. package/dist/agents/requirement/utils/llm.js.map +1 -1
  267. package/dist/agents/requirement/utils/tool.cjs.map +1 -1
  268. package/dist/agents/requirement/utils/tool.d.cts +4 -4
  269. package/dist/agents/requirement/utils/tool.d.ts +4 -4
  270. package/dist/agents/requirement/utils/tool.js.map +1 -1
  271. package/dist/agents/requirement/utils/toolCallChecker.cjs.map +1 -1
  272. package/dist/agents/requirement/utils/toolCallChecker.js.map +1 -1
  273. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  274. package/dist/agents/toolCalling/agent.d.cts +4 -4
  275. package/dist/agents/toolCalling/agent.d.ts +4 -4
  276. package/dist/agents/toolCalling/agent.js.map +1 -1
  277. package/dist/agents/toolCalling/prompts.cjs.map +1 -1
  278. package/dist/agents/toolCalling/prompts.js.map +1 -1
  279. package/dist/agents/toolCalling/types.d.cts +1 -1
  280. package/dist/agents/toolCalling/types.d.ts +1 -1
  281. package/dist/agents/types.d.cts +2 -2
  282. package/dist/agents/types.d.ts +2 -2
  283. package/dist/backend/backend.cjs.map +1 -1
  284. package/dist/backend/backend.d.cts +3 -3
  285. package/dist/backend/backend.d.ts +3 -3
  286. package/dist/backend/backend.js.map +1 -1
  287. package/dist/backend/chat.cjs.map +1 -1
  288. package/dist/backend/chat.d.cts +2 -2
  289. package/dist/backend/chat.d.ts +2 -2
  290. package/dist/backend/chat.js.map +1 -1
  291. package/dist/backend/client.cjs.map +1 -1
  292. package/dist/backend/client.js.map +1 -1
  293. package/dist/backend/constants.cjs +7 -0
  294. package/dist/backend/constants.cjs.map +1 -1
  295. package/dist/backend/constants.d.cts +5 -0
  296. package/dist/backend/constants.d.ts +5 -0
  297. package/dist/backend/constants.js +7 -0
  298. package/dist/backend/constants.js.map +1 -1
  299. package/dist/backend/core.d.cts +2 -2
  300. package/dist/backend/core.d.ts +2 -2
  301. package/dist/backend/embedding.cjs.map +1 -1
  302. package/dist/backend/embedding.d.cts +2 -2
  303. package/dist/backend/embedding.d.ts +2 -2
  304. package/dist/backend/embedding.js.map +1 -1
  305. package/dist/backend/errors.cjs.map +1 -1
  306. package/dist/backend/errors.d.cts +2 -2
  307. package/dist/backend/errors.d.ts +2 -2
  308. package/dist/backend/errors.js.map +1 -1
  309. package/dist/backend/message.cjs.map +1 -1
  310. package/dist/backend/message.js.map +1 -1
  311. package/dist/backend/utils.cjs.map +1 -1
  312. package/dist/backend/utils.d.cts +2 -2
  313. package/dist/backend/utils.d.ts +2 -2
  314. package/dist/backend/utils.js.map +1 -1
  315. package/dist/{base-BfhNzUYf.d.ts → base-BjzyQ8k6.d.ts} +2 -2
  316. package/dist/{base-BqzN2QwB.d.cts → base-s3ioVIE9.d.cts} +2 -2
  317. package/dist/cache/decoratorCache.cjs.map +1 -1
  318. package/dist/cache/decoratorCache.js.map +1 -1
  319. package/dist/cache/fileCache.cjs.map +1 -1
  320. package/dist/cache/fileCache.js.map +1 -1
  321. package/dist/cache/nullCache.cjs.map +1 -1
  322. package/dist/cache/nullCache.js.map +1 -1
  323. package/dist/cache/slidingCache.cjs.map +1 -1
  324. package/dist/cache/slidingCache.js.map +1 -1
  325. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  326. package/dist/cache/unconstrainedCache.js.map +1 -1
  327. package/dist/{chat-DaqV3woF.d.cts → chat-C20nYj46.d.cts} +3 -3
  328. package/dist/{chat-DTxmaKP0.d.ts → chat-CfTNfR60.d.ts} +3 -3
  329. package/dist/context.cjs.map +1 -1
  330. package/dist/context.d.cts +1 -1
  331. package/dist/context.d.ts +1 -1
  332. package/dist/context.js.map +1 -1
  333. package/dist/emitter/emitter.cjs.map +1 -1
  334. package/dist/emitter/emitter.d.cts +1 -1
  335. package/dist/emitter/emitter.d.ts +1 -1
  336. package/dist/emitter/emitter.js.map +1 -1
  337. package/dist/emitter/types.d.cts +1 -1
  338. package/dist/emitter/types.d.ts +1 -1
  339. package/dist/emitter/utils.cjs.map +1 -1
  340. package/dist/emitter/utils.js.map +1 -1
  341. package/dist/{emitter-UkIkNrek.d.cts → emitter-D4OcelZ9.d.cts} +2 -2
  342. package/dist/{emitter-CL56qab4.d.ts → emitter-kHxkUxco.d.ts} +2 -2
  343. package/dist/errors.cjs.map +1 -1
  344. package/dist/errors.js.map +1 -1
  345. package/dist/index.d.cts +4 -4
  346. package/dist/index.d.ts +4 -4
  347. package/dist/internals/env.cjs.map +1 -1
  348. package/dist/internals/env.js.map +1 -1
  349. package/dist/internals/fetcher.cjs.map +1 -1
  350. package/dist/internals/fetcher.d.cts +1 -1
  351. package/dist/internals/fetcher.d.ts +1 -1
  352. package/dist/internals/fetcher.js.map +1 -1
  353. package/dist/internals/helpers/array.cjs.map +1 -1
  354. package/dist/internals/helpers/array.js.map +1 -1
  355. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  356. package/dist/internals/helpers/cancellation.js.map +1 -1
  357. package/dist/internals/helpers/counter.cjs.map +1 -1
  358. package/dist/internals/helpers/counter.js.map +1 -1
  359. package/dist/internals/helpers/general.cjs.map +1 -1
  360. package/dist/internals/helpers/general.js.map +1 -1
  361. package/dist/internals/helpers/hash.cjs.map +1 -1
  362. package/dist/internals/helpers/hash.js.map +1 -1
  363. package/dist/internals/helpers/map.cjs.map +1 -1
  364. package/dist/internals/helpers/map.js.map +1 -1
  365. package/dist/internals/helpers/math.cjs.map +1 -1
  366. package/dist/internals/helpers/math.js.map +1 -1
  367. package/dist/internals/helpers/object.cjs +7 -1
  368. package/dist/internals/helpers/object.cjs.map +1 -1
  369. package/dist/internals/helpers/object.js +7 -1
  370. package/dist/internals/helpers/object.js.map +1 -1
  371. package/dist/internals/helpers/paginate.cjs.map +1 -1
  372. package/dist/internals/helpers/paginate.js.map +1 -1
  373. package/dist/internals/helpers/promise.cjs.map +1 -1
  374. package/dist/internals/helpers/promise.js.map +1 -1
  375. package/dist/internals/helpers/prototype.cjs.map +1 -1
  376. package/dist/internals/helpers/prototype.js.map +1 -1
  377. package/dist/internals/helpers/retry.cjs.map +1 -1
  378. package/dist/internals/helpers/retry.js.map +1 -1
  379. package/dist/internals/helpers/retryable.cjs.map +1 -1
  380. package/dist/internals/helpers/retryable.js.map +1 -1
  381. package/dist/internals/helpers/schema.cjs.map +1 -1
  382. package/dist/internals/helpers/schema.d.cts +4 -4
  383. package/dist/internals/helpers/schema.d.ts +4 -4
  384. package/dist/internals/helpers/schema.js.map +1 -1
  385. package/dist/internals/helpers/stream.cjs.map +1 -1
  386. package/dist/internals/helpers/stream.js.map +1 -1
  387. package/dist/internals/helpers/string.cjs.map +1 -1
  388. package/dist/internals/helpers/string.js.map +1 -1
  389. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  390. package/dist/internals/helpers/weakRef.js.map +1 -1
  391. package/dist/internals/serializable.cjs +3 -1
  392. package/dist/internals/serializable.cjs.map +1 -1
  393. package/dist/internals/serializable.d.cts +6 -0
  394. package/dist/internals/serializable.d.ts +6 -0
  395. package/dist/internals/serializable.js +3 -1
  396. package/dist/internals/serializable.js.map +1 -1
  397. package/dist/internals/types.cjs.map +1 -1
  398. package/dist/internals/types.js.map +1 -1
  399. package/dist/logger/logger.cjs.map +1 -1
  400. package/dist/logger/logger.d.cts +2 -2
  401. package/dist/logger/logger.d.ts +2 -2
  402. package/dist/logger/logger.js +2 -2
  403. package/dist/logger/logger.js.map +1 -1
  404. package/dist/logger/pretty.cjs.map +1 -1
  405. package/dist/logger/pretty.js.map +1 -1
  406. package/dist/memory/base.cjs.map +1 -1
  407. package/dist/memory/base.js.map +1 -1
  408. package/dist/memory/slidingMemory.cjs.map +1 -1
  409. package/dist/memory/slidingMemory.js.map +1 -1
  410. package/dist/memory/summarizeMemory.cjs.map +1 -1
  411. package/dist/memory/summarizeMemory.d.cts +2 -2
  412. package/dist/memory/summarizeMemory.d.ts +2 -2
  413. package/dist/memory/summarizeMemory.js.map +1 -1
  414. package/dist/memory/tokenMemory.cjs.map +1 -1
  415. package/dist/memory/tokenMemory.js.map +1 -1
  416. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  417. package/dist/memory/unconstrainedMemory.js.map +1 -1
  418. package/dist/middleware/streamToolCall.cjs.map +1 -1
  419. package/dist/middleware/streamToolCall.d.cts +2 -2
  420. package/dist/middleware/streamToolCall.d.ts +2 -2
  421. package/dist/middleware/streamToolCall.js.map +1 -1
  422. package/dist/middleware/trajectory.cjs.map +1 -1
  423. package/dist/middleware/trajectory.d.cts +2 -2
  424. package/dist/middleware/trajectory.d.ts +2 -2
  425. package/dist/middleware/trajectory.js.map +1 -1
  426. package/dist/parsers/errors.cjs.map +1 -1
  427. package/dist/parsers/errors.js.map +1 -1
  428. package/dist/parsers/field.cjs.map +1 -1
  429. package/dist/parsers/field.js.map +1 -1
  430. package/dist/parsers/linePrefix.cjs.map +1 -1
  431. package/dist/parsers/linePrefix.d.cts +1 -1
  432. package/dist/parsers/linePrefix.d.ts +1 -1
  433. package/dist/parsers/linePrefix.js.map +1 -1
  434. package/dist/serializer/error.cjs.map +1 -1
  435. package/dist/serializer/error.js.map +1 -1
  436. package/dist/serializer/serializer.cjs +16 -3
  437. package/dist/serializer/serializer.cjs.map +1 -1
  438. package/dist/serializer/serializer.d.cts +1 -1
  439. package/dist/serializer/serializer.d.ts +1 -1
  440. package/dist/serializer/serializer.js +16 -4
  441. package/dist/serializer/serializer.js.map +1 -1
  442. package/dist/serializer/utils.cjs.map +1 -1
  443. package/dist/serializer/utils.d.cts +1 -1
  444. package/dist/serializer/utils.d.ts +1 -1
  445. package/dist/serializer/utils.js.map +1 -1
  446. package/dist/{serializer-53t8gGQa.d.ts → serializer-BafOT48s.d.ts} +10 -4
  447. package/dist/{serializer-c51B2z6d.d.cts → serializer-CFDWYUco.d.cts} +10 -4
  448. package/dist/serve/server.cjs.map +1 -1
  449. package/dist/serve/server.js.map +1 -1
  450. package/dist/template.cjs.map +1 -1
  451. package/dist/template.js.map +1 -1
  452. package/dist/tools/arxiv.cjs.map +1 -1
  453. package/dist/tools/arxiv.d.cts +2 -2
  454. package/dist/tools/arxiv.d.ts +2 -2
  455. package/dist/tools/arxiv.js.map +1 -1
  456. package/dist/tools/base.cjs.map +1 -1
  457. package/dist/tools/base.d.cts +1 -1
  458. package/dist/tools/base.d.ts +1 -1
  459. package/dist/tools/base.js.map +1 -1
  460. package/dist/tools/calculator.cjs.map +1 -1
  461. package/dist/tools/calculator.d.cts +3 -3
  462. package/dist/tools/calculator.d.ts +3 -3
  463. package/dist/tools/calculator.js.map +1 -1
  464. package/dist/tools/custom.cjs.map +1 -1
  465. package/dist/tools/custom.d.cts +3 -3
  466. package/dist/tools/custom.d.ts +3 -3
  467. package/dist/tools/custom.js.map +1 -1
  468. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  469. package/dist/tools/database/elasticsearch.d.cts +3 -3
  470. package/dist/tools/database/elasticsearch.d.ts +3 -3
  471. package/dist/tools/database/elasticsearch.js.map +1 -1
  472. package/dist/tools/database/metadata.cjs.map +1 -1
  473. package/dist/tools/database/metadata.js.map +1 -1
  474. package/dist/tools/database/milvus.cjs.map +1 -1
  475. package/dist/tools/database/milvus.d.cts +3 -3
  476. package/dist/tools/database/milvus.d.ts +3 -3
  477. package/dist/tools/database/milvus.js.map +1 -1
  478. package/dist/tools/database/qdrant.cjs.map +1 -1
  479. package/dist/tools/database/qdrant.d.cts +2 -2
  480. package/dist/tools/database/qdrant.d.ts +2 -2
  481. package/dist/tools/database/qdrant.js.map +1 -1
  482. package/dist/tools/database/sql.cjs.map +1 -1
  483. package/dist/tools/database/sql.d.cts +2 -2
  484. package/dist/tools/database/sql.d.ts +2 -2
  485. package/dist/tools/database/sql.js.map +1 -1
  486. package/dist/tools/handoff.cjs.map +1 -1
  487. package/dist/tools/handoff.d.cts +2 -2
  488. package/dist/tools/handoff.d.ts +2 -2
  489. package/dist/tools/handoff.js.map +1 -1
  490. package/dist/tools/llm.cjs +1 -1
  491. package/dist/tools/llm.cjs.map +1 -1
  492. package/dist/tools/llm.d.cts +3 -3
  493. package/dist/tools/llm.d.ts +3 -3
  494. package/dist/tools/llm.js +1 -1
  495. package/dist/tools/llm.js.map +1 -1
  496. package/dist/tools/mcp.cjs.map +1 -1
  497. package/dist/tools/mcp.d.cts +2 -2
  498. package/dist/tools/mcp.d.ts +2 -2
  499. package/dist/tools/mcp.js.map +1 -1
  500. package/dist/tools/openapi.cjs.map +1 -1
  501. package/dist/tools/openapi.d.cts +2 -2
  502. package/dist/tools/openapi.d.ts +2 -2
  503. package/dist/tools/openapi.js.map +1 -1
  504. package/dist/tools/python/output.cjs.map +1 -1
  505. package/dist/tools/python/output.d.cts +1 -1
  506. package/dist/tools/python/output.d.ts +1 -1
  507. package/dist/tools/python/output.js.map +1 -1
  508. package/dist/tools/python/python.cjs +5 -2
  509. package/dist/tools/python/python.cjs.map +1 -1
  510. package/dist/tools/python/python.d.cts +3 -3
  511. package/dist/tools/python/python.d.ts +3 -3
  512. package/dist/tools/python/python.js +5 -2
  513. package/dist/tools/python/python.js.map +1 -1
  514. package/dist/tools/python/storage.cjs.map +1 -1
  515. package/dist/tools/python/storage.js.map +1 -1
  516. package/dist/tools/search/base.cjs.map +1 -1
  517. package/dist/tools/search/base.d.cts +2 -2
  518. package/dist/tools/search/base.d.ts +2 -2
  519. package/dist/tools/search/base.js.map +1 -1
  520. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  521. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -2
  522. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -2
  523. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  524. package/dist/tools/search/googleSearch.cjs.map +1 -1
  525. package/dist/tools/search/googleSearch.d.cts +2 -2
  526. package/dist/tools/search/googleSearch.d.ts +2 -2
  527. package/dist/tools/search/googleSearch.js.map +1 -1
  528. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  529. package/dist/tools/search/searXNGSearch.d.cts +2 -2
  530. package/dist/tools/search/searXNGSearch.d.ts +2 -2
  531. package/dist/tools/search/searXNGSearch.js.map +1 -1
  532. package/dist/tools/search/wikipedia.cjs.map +1 -1
  533. package/dist/tools/search/wikipedia.d.cts +3 -3
  534. package/dist/tools/search/wikipedia.d.ts +3 -3
  535. package/dist/tools/search/wikipedia.js.map +1 -1
  536. package/dist/tools/similarity.cjs.map +1 -1
  537. package/dist/tools/similarity.d.cts +2 -2
  538. package/dist/tools/similarity.d.ts +2 -2
  539. package/dist/tools/similarity.js.map +1 -1
  540. package/dist/tools/think.cjs.map +1 -1
  541. package/dist/tools/think.d.cts +2 -2
  542. package/dist/tools/think.d.ts +2 -2
  543. package/dist/tools/think.js.map +1 -1
  544. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  545. package/dist/tools/weather/openMeteo.d.cts +2 -2
  546. package/dist/tools/weather/openMeteo.d.ts +2 -2
  547. package/dist/tools/weather/openMeteo.js.map +1 -1
  548. package/dist/tools/web/webCrawler.cjs.map +1 -1
  549. package/dist/tools/web/webCrawler.d.cts +2 -2
  550. package/dist/tools/web/webCrawler.d.ts +2 -2
  551. package/dist/tools/web/webCrawler.js.map +1 -1
  552. package/dist/{types-YoNQSxQH.d.cts → types-BNsa3W7Z.d.cts} +4 -4
  553. package/dist/{types-YT-WdK3m.d.ts → types-DYtzF6ya.d.ts} +4 -4
  554. package/dist/version.cjs +1 -1
  555. package/dist/version.js +1 -1
  556. package/dist/workflows/agent.cjs.map +1 -1
  557. package/dist/workflows/agent.d.cts +40 -40
  558. package/dist/workflows/agent.d.ts +40 -40
  559. package/dist/workflows/agent.js.map +1 -1
  560. package/dist/workflows/workflow.cjs.map +1 -1
  561. package/dist/workflows/workflow.d.cts +1 -1
  562. package/dist/workflows/workflow.d.ts +1 -1
  563. package/dist/workflows/workflow.js.map +1 -1
  564. package/package.json +38 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/agents/requirement/agent.ts"],"names":["RequirementAgent","BaseAgent","emitter","Emitter","root","child","namespace","creator","input","runner","RequirementAgentRunner","memory","UnconstrainedMemory","tools","requirements","saveIntermediateSteps","finalAnswerAsTool","toolCallChecker","middlewares","push","register","_run","options","run","execution","maxRetriesPerStep","totalMaxRetries","maxIterations","createToolCallChecker","llm","expectedOutput","templates","newMessages","processInput","addMessages","messages","finalState","reset","addMany","lastPair","slice","answer","Error","result","state","prompt","userMessage","UserMessage","task","render","context","undefined","config","Object","assign","checker","ToolCallChecker","enabled","meta","name","description","length","extraDescription","map","tool","join","overrides","finalized","mapObj","system","RequirementAgentSystemPrompt","RequirementAgentTaskPrompt","toolError","RequirementAgentToolErrorPrompt","toolNoResult","RequirementAgentToolNoResultPrompt","key","defaultTemplate","override","PromptTemplate","role","instructions","notes","update","defaults","pickBy","isEmptyish","castArray","v","isDefined","createSnapshot","shallowCopy"],"mappings":"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","file":"agent.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseAgent } from \"@/agents/base.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport type { GetRunContext, MiddlewareType } from \"@/context.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { Message, UserMessage } from \"@/backend/message.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { mapObj } from \"@/internals/helpers/object.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n RequirementAgentCallbacks,\n RequirementAgentExecutionConfig,\n RequirementAgentOutput,\n RequirementAgentRunInput,\n RequirementAgentRunOptions,\n RequirementAgentTemplates,\n} from \"./types.js\";\nimport {\n RequirementAgentSystemPrompt,\n RequirementAgentTaskPrompt,\n RequirementAgentToolErrorPrompt,\n RequirementAgentToolNoResultPrompt,\n} from \"./prompts.js\";\nimport { Requirement } from \"./requirements/requirement.js\";\nimport { RequirementAgentRunner } from \"./runner.js\";\nimport { ToolCallChecker, ToolCallCheckerConfig } from \"./utils/toolCallChecker.js\";\nimport { isDefined, isEmptyish, pickBy } from \"remeda\";\nimport { castArray } from \"@/internals/helpers/array.js\";\nimport type { RequiredExcept } from \"@/internals/types.js\";\n\nexport type RequirementAgentTemplateFactory<K extends keyof RequirementAgentTemplates> = (\n template: RequirementAgentTemplates[K],\n) => RequirementAgentTemplates[K];\n\nexport interface RequirementAgentInput {\n llm: ChatModel;\n memory?: BaseMemory;\n tools?: AnyTool[];\n requirements?: Requirement[];\n name?: string;\n description?: string;\n role?: string;\n instructions?: string | string[];\n notes?: string | string[];\n toolCallChecker?: boolean | ToolCallCheckerConfig;\n finalAnswerAsTool?: boolean;\n saveIntermediateSteps?: boolean;\n execution?: RequirementAgentExecutionConfig;\n templates?: Partial<{\n [K in keyof RequirementAgentTemplates]:\n | RequirementAgentTemplates[K]\n | RequirementAgentTemplateFactory<K>;\n }>;\n middlewares?: MiddlewareType<RequirementAgent>[];\n}\n\ntype InternalRequirementAgentInput = RequiredExcept<\n RequirementAgentInput,\n | \"role\"\n | \"instructions\"\n | \"name\"\n | \"description\"\n | \"templates\"\n | \"notes\"\n | \"execution\"\n | \"middlewares\"\n>;\n\n/**\n * RequirementAgent - A declarative AI agent with rule-based constraints\n *\n * The RequirementAgent provides predictable, controlled execution behavior across\n * different language models through rule-based constraints (Requirements).\n * Requirements can be configured as strict or flexible as necessary, adapting to\n * task requirements while ensuring consistent execution regardless of the underlying\n * model's reasoning or tool-calling capabilities.\n */\nexport class RequirementAgent extends BaseAgent<\n RequirementAgentRunInput,\n RequirementAgentOutput,\n RequirementAgentRunOptions\n> {\n public readonly emitter = Emitter.root.child<RequirementAgentCallbacks>({\n namespace: [\"agent\", \"requirement\"],\n creator: this,\n });\n\n protected readonly input: InternalRequirementAgentInput;\n\n protected runner: new (\n ...args: ConstructorParameters<typeof RequirementAgentRunner>\n ) => RequirementAgentRunner = RequirementAgentRunner;\n\n constructor(input: RequirementAgentInput) {\n super();\n this.input = {\n ...input,\n memory: input.memory || new UnconstrainedMemory(),\n tools: input.tools || [],\n requirements: input.requirements || [],\n saveIntermediateSteps: input.saveIntermediateSteps ?? true,\n finalAnswerAsTool: input.finalAnswerAsTool ?? true,\n toolCallChecker: input.toolCallChecker ?? true,\n };\n if (input.middlewares) {\n this.middlewares.push(...input.middlewares);\n }\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n input: RequirementAgentRunInput,\n options: RequirementAgentRunOptions = {},\n run: GetRunContext<typeof this>,\n ): Promise<RequirementAgentOutput> {\n const execution: RequirementAgentExecutionConfig = {\n maxRetriesPerStep: 3,\n totalMaxRetries: 20,\n maxIterations: 20,\n ...this.input.execution,\n ...options.execution,\n };\n\n const toolCallChecker = this.createToolCallChecker();\n\n const runner = new this.runner(\n this.input.llm,\n execution,\n this.input.tools || [],\n this.input.requirements || [],\n input.expectedOutput || null,\n toolCallChecker,\n run,\n this.input.finalAnswerAsTool,\n this.templates,\n );\n\n // Process input messages\n const newMessages = this.processInput(input);\n await runner.addMessages([...this.memory.messages]);\n await runner.addMessages(newMessages);\n\n // Run the agent\n const finalState = await runner.run();\n\n // Update memory\n if (this.input.saveIntermediateSteps) {\n this.memory.reset();\n await this.memory.addMany(finalState.memory.messages);\n } else {\n await this.memory.addMany(newMessages);\n // Add last tool call pair\n const messages = finalState.memory.messages;\n const lastPair = messages.slice(-2);\n await this.memory.addMany(lastPair);\n }\n\n if (!finalState.answer) {\n throw new Error(\"Agent did not produce a final answer\");\n }\n\n return {\n result: finalState.answer,\n memory: finalState.memory,\n state: finalState,\n };\n }\n\n protected processInput(input: RequirementAgentRunInput): Message[] {\n if (!input.prompt) {\n return [];\n }\n\n const userMessage = new UserMessage(\n this.templates.task.render({\n prompt: input.prompt,\n context: input.context,\n expectedOutput: typeof input.expectedOutput === \"string\" ? input.expectedOutput : undefined,\n }),\n );\n\n return [userMessage];\n }\n\n protected createToolCallChecker(): ToolCallChecker {\n const config: ToolCallCheckerConfig = {};\n\n if (typeof this.input.toolCallChecker === \"object\") {\n Object.assign(config, this.input.toolCallChecker);\n }\n\n const checker = new ToolCallChecker(config);\n checker.enabled = this.input.toolCallChecker !== false;\n return checker;\n }\n\n get meta(): AgentMeta {\n const tools = this.input.tools || [];\n\n return {\n name: this.input.name ?? \"Requirement\",\n tools,\n description:\n this.input.description ??\n \"The RequirementAgent is a declarative AI agent implementation that provides predictable, \" +\n \"controlled execution behavior across different language models through rule-based constraints.\",\n ...(tools.length > 0 && {\n extraDescription: [\n `Tools that I can use to accomplish given task.`,\n ...tools.map((tool) => `Tool '${tool.name}': ${tool.description}.`),\n ].join(\"\\n\"),\n }),\n };\n }\n\n protected get templates(): RequirementAgentTemplates {\n const overrides = this.input.templates || {};\n const finalized = mapObj({\n system: RequirementAgentSystemPrompt,\n task: RequirementAgentTaskPrompt,\n toolError: RequirementAgentToolErrorPrompt,\n toolNoResult: RequirementAgentToolNoResultPrompt,\n } as RequirementAgentTemplates)((\n key,\n defaultTemplate: RequirementAgentTemplates[typeof key],\n ) => {\n const override = overrides[key] ?? defaultTemplate;\n if (override instanceof PromptTemplate) {\n return override;\n }\n return override(defaultTemplate) ?? defaultTemplate;\n });\n\n if (this.input.role || this.input.instructions || this.input.notes) {\n finalized.system.update({\n defaults: pickBy(\n {\n role: this.input.role,\n instructions: isEmptyish(this.input.instructions)\n ? undefined\n : castArray(this.input.instructions)\n .map((v) => `- ${v}`)\n .join(\"\\n\"),\n notes: isEmptyish(this.input.notes)\n ? undefined\n : castArray(this.input.notes)\n .map((v) => `- ${v}`)\n .join(\"\\n\"),\n },\n isDefined,\n ),\n });\n }\n\n return finalized;\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n input: shallowCopy(this.input),\n emitter: this.emitter,\n runner: this.runner,\n };\n }\n\n set memory(memory: BaseMemory) {\n this.input.memory = memory;\n }\n\n get memory(): BaseMemory {\n return this.input.memory!;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/agents/requirement/agent.ts"],"names":["RequirementAgent","BaseAgent","emitter","Emitter","root","child","namespace","creator","input","runner","RequirementAgentRunner","memory","UnconstrainedMemory","tools","requirements","saveIntermediateSteps","finalAnswerAsTool","toolCallChecker","middlewares","push","register","_run","options","run","execution","maxRetriesPerStep","totalMaxRetries","maxIterations","createToolCallChecker","llm","expectedOutput","templates","newMessages","processInput","addMessages","messages","finalState","reset","addMany","lastPair","slice","answer","Error","result","state","prompt","userMessage","UserMessage","task","render","context","undefined","config","Object","assign","checker","ToolCallChecker","enabled","meta","name","description","length","extraDescription","map","tool","join","overrides","finalized","mapObj","system","RequirementAgentSystemPrompt","RequirementAgentTaskPrompt","toolError","RequirementAgentToolErrorPrompt","toolNoResult","RequirementAgentToolNoResultPrompt","key","defaultTemplate","override","PromptTemplate","role","instructions","notes","update","defaults","pickBy","isEmptyish","castArray","v","isDefined","createSnapshot","shallowCopy"],"mappings":"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","file":"agent.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseAgent } from \"@/agents/base.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport type { GetRunContext, MiddlewareType } from \"@/context.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { Message, UserMessage } from \"@/backend/message.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { mapObj } from \"@/internals/helpers/object.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n RequirementAgentCallbacks,\n RequirementAgentExecutionConfig,\n RequirementAgentOutput,\n RequirementAgentRunInput,\n RequirementAgentRunOptions,\n RequirementAgentTemplates,\n} from \"./types.js\";\nimport {\n RequirementAgentSystemPrompt,\n RequirementAgentTaskPrompt,\n RequirementAgentToolErrorPrompt,\n RequirementAgentToolNoResultPrompt,\n} from \"./prompts.js\";\nimport { Requirement } from \"./requirements/requirement.js\";\nimport { RequirementAgentRunner } from \"./runner.js\";\nimport { ToolCallChecker, ToolCallCheckerConfig } from \"./utils/toolCallChecker.js\";\nimport { isDefined, isEmptyish, pickBy } from \"remeda\";\nimport { castArray } from \"@/internals/helpers/array.js\";\nimport type { RequiredExcept } from \"@/internals/types.js\";\n\nexport type RequirementAgentTemplateFactory<K extends keyof RequirementAgentTemplates> = (\n template: RequirementAgentTemplates[K],\n) => RequirementAgentTemplates[K];\n\nexport interface RequirementAgentInput {\n llm: ChatModel;\n memory?: BaseMemory;\n tools?: AnyTool[];\n requirements?: Requirement[];\n name?: string;\n description?: string;\n role?: string;\n instructions?: string | string[];\n notes?: string | string[];\n toolCallChecker?: boolean | ToolCallCheckerConfig;\n finalAnswerAsTool?: boolean;\n saveIntermediateSteps?: boolean;\n execution?: RequirementAgentExecutionConfig;\n templates?: Partial<{\n [K in keyof RequirementAgentTemplates]:\n | RequirementAgentTemplates[K]\n | RequirementAgentTemplateFactory<K>;\n }>;\n middlewares?: MiddlewareType<RequirementAgent>[];\n}\n\ntype InternalRequirementAgentInput = RequiredExcept<\n RequirementAgentInput,\n | \"role\"\n | \"instructions\"\n | \"name\"\n | \"description\"\n | \"templates\"\n | \"notes\"\n | \"execution\"\n | \"middlewares\"\n>;\n\n/**\n * RequirementAgent - A declarative AI agent with rule-based constraints\n *\n * The RequirementAgent provides predictable, controlled execution behavior across\n * different language models through rule-based constraints (Requirements).\n * Requirements can be configured as strict or flexible as necessary, adapting to\n * task requirements while ensuring consistent execution regardless of the underlying\n * model's reasoning or tool-calling capabilities.\n */\nexport class RequirementAgent extends BaseAgent<\n RequirementAgentRunInput,\n RequirementAgentOutput,\n RequirementAgentRunOptions\n> {\n public readonly emitter = Emitter.root.child<RequirementAgentCallbacks>({\n namespace: [\"agent\", \"requirement\"],\n creator: this,\n });\n\n protected readonly input: InternalRequirementAgentInput;\n\n protected runner: new (\n ...args: ConstructorParameters<typeof RequirementAgentRunner>\n ) => RequirementAgentRunner = RequirementAgentRunner;\n\n constructor(input: RequirementAgentInput) {\n super();\n this.input = {\n ...input,\n memory: input.memory || new UnconstrainedMemory(),\n tools: input.tools || [],\n requirements: input.requirements || [],\n saveIntermediateSteps: input.saveIntermediateSteps ?? true,\n finalAnswerAsTool: input.finalAnswerAsTool ?? true,\n toolCallChecker: input.toolCallChecker ?? true,\n };\n if (input.middlewares) {\n this.middlewares.push(...input.middlewares);\n }\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n input: RequirementAgentRunInput,\n options: RequirementAgentRunOptions = {},\n run: GetRunContext<typeof this>,\n ): Promise<RequirementAgentOutput> {\n const execution: RequirementAgentExecutionConfig = {\n maxRetriesPerStep: 3,\n totalMaxRetries: 20,\n maxIterations: 20,\n ...this.input.execution,\n ...options.execution,\n };\n\n const toolCallChecker = this.createToolCallChecker();\n\n const runner = new this.runner(\n this.input.llm,\n execution,\n this.input.tools || [],\n this.input.requirements || [],\n input.expectedOutput || null,\n toolCallChecker,\n run,\n this.input.finalAnswerAsTool,\n this.templates,\n );\n\n // Process input messages\n const newMessages = this.processInput(input);\n await runner.addMessages([...this.memory.messages]);\n await runner.addMessages(newMessages);\n\n // Run the agent\n const finalState = await runner.run();\n\n // Update memory\n if (this.input.saveIntermediateSteps) {\n this.memory.reset();\n await this.memory.addMany(finalState.memory.messages);\n } else {\n await this.memory.addMany(newMessages);\n // Add last tool call pair\n const messages = finalState.memory.messages;\n const lastPair = messages.slice(-2);\n await this.memory.addMany(lastPair);\n }\n\n if (!finalState.answer) {\n throw new Error(\"Agent did not produce a final answer\");\n }\n\n return {\n result: finalState.answer,\n memory: finalState.memory,\n state: finalState,\n };\n }\n\n protected processInput(input: RequirementAgentRunInput): Message[] {\n if (!input.prompt) {\n return [];\n }\n\n const userMessage = new UserMessage(\n this.templates.task.render({\n prompt: input.prompt,\n context: input.context,\n expectedOutput: typeof input.expectedOutput === \"string\" ? input.expectedOutput : undefined,\n }),\n );\n\n return [userMessage];\n }\n\n protected createToolCallChecker(): ToolCallChecker {\n const config: ToolCallCheckerConfig = {};\n\n if (typeof this.input.toolCallChecker === \"object\") {\n Object.assign(config, this.input.toolCallChecker);\n }\n\n const checker = new ToolCallChecker(config);\n checker.enabled = this.input.toolCallChecker !== false;\n return checker;\n }\n\n get meta(): AgentMeta {\n const tools = this.input.tools || [];\n\n return {\n name: this.input.name ?? \"Requirement\",\n tools,\n description:\n this.input.description ??\n \"The RequirementAgent is a declarative AI agent implementation that provides predictable, \" +\n \"controlled execution behavior across different language models through rule-based constraints.\",\n ...(tools.length > 0 && {\n extraDescription: [\n `Tools that I can use to accomplish given task.`,\n ...tools.map((tool) => `Tool '${tool.name}': ${tool.description}.`),\n ].join(\"\\n\"),\n }),\n };\n }\n\n protected get templates(): RequirementAgentTemplates {\n const overrides = this.input.templates || {};\n const finalized = mapObj({\n system: RequirementAgentSystemPrompt,\n task: RequirementAgentTaskPrompt,\n toolError: RequirementAgentToolErrorPrompt,\n toolNoResult: RequirementAgentToolNoResultPrompt,\n } as RequirementAgentTemplates)((\n key,\n defaultTemplate: RequirementAgentTemplates[typeof key],\n ) => {\n const override = overrides[key] ?? defaultTemplate;\n if (override instanceof PromptTemplate) {\n return override;\n }\n return override(defaultTemplate) ?? defaultTemplate;\n });\n\n if (this.input.role || this.input.instructions || this.input.notes) {\n finalized.system.update({\n defaults: pickBy(\n {\n role: this.input.role,\n instructions: isEmptyish(this.input.instructions)\n ? undefined\n : castArray(this.input.instructions)\n .map((v) => `- ${v}`)\n .join(\"\\n\"),\n notes: isEmptyish(this.input.notes)\n ? undefined\n : castArray(this.input.notes)\n .map((v) => `- ${v}`)\n .join(\"\\n\"),\n },\n isDefined,\n ),\n });\n }\n\n return finalized;\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n input: shallowCopy(this.input),\n emitter: this.emitter,\n runner: this.runner,\n };\n }\n\n set memory(memory: BaseMemory) {\n this.input.memory = memory;\n }\n\n get memory(): BaseMemory {\n return this.input.memory!;\n }\n}\n"]}
@@ -1,14 +1,14 @@
1
1
  import '../../context.cjs';
2
2
  import 'zod';
3
- import '../../base-BqzN2QwB.cjs';
3
+ import '../../base-s3ioVIE9.cjs';
4
4
  import '../../tools/base.cjs';
5
5
  import '../../memory/base.cjs';
6
- import '../../emitter-UkIkNrek.cjs';
7
- import '../../chat-DaqV3woF.cjs';
6
+ import '../../emitter-D4OcelZ9.cjs';
7
+ import '../../chat-C20nYj46.cjs';
8
8
  import '../../backend/message.cjs';
9
- import '../../types-YoNQSxQH.cjs';
9
+ import '../../types-BNsa3W7Z.cjs';
10
10
  import './requirements/requirement.cjs';
11
- export { b as RequirementAgent, a as RequirementAgentInput, R as RequirementAgentTemplateFactory } from './runner.cjs';
11
+ export { R as RequirementAgent, a as RequirementAgentInput, b as RequirementAgentTemplateFactory } from './runner.cjs';
12
12
  import './utils/toolCallChecker.cjs';
13
13
  import '../../internals/types.cjs';
14
14
  import '../../internals/serializable.cjs';
@@ -1,14 +1,14 @@
1
1
  import '../../context.js';
2
2
  import 'zod';
3
- import '../../base-BfhNzUYf.js';
3
+ import '../../base-BjzyQ8k6.js';
4
4
  import '../../tools/base.js';
5
5
  import '../../memory/base.js';
6
- import '../../emitter-CL56qab4.js';
7
- import '../../chat-DTxmaKP0.js';
6
+ import '../../emitter-kHxkUxco.js';
7
+ import '../../chat-CfTNfR60.js';
8
8
  import '../../backend/message.js';
9
- import '../../types-YT-WdK3m.js';
9
+ import '../../types-DYtzF6ya.js';
10
10
  import './requirements/requirement.js';
11
- export { b as RequirementAgent, a as RequirementAgentInput, R as RequirementAgentTemplateFactory } from './runner.js';
11
+ export { R as RequirementAgent, a as RequirementAgentInput, b as RequirementAgentTemplateFactory } from './runner.js';
12
12
  import './utils/toolCallChecker.js';
13
13
  import '../../internals/types.js';
14
14
  import '../../internals/serializable.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/agents/requirement/agent.ts"],"names":["RequirementAgent","BaseAgent","emitter","Emitter","root","child","namespace","creator","input","runner","RequirementAgentRunner","memory","UnconstrainedMemory","tools","requirements","saveIntermediateSteps","finalAnswerAsTool","toolCallChecker","middlewares","push","register","_run","options","run","execution","maxRetriesPerStep","totalMaxRetries","maxIterations","createToolCallChecker","llm","expectedOutput","templates","newMessages","processInput","addMessages","messages","finalState","reset","addMany","lastPair","slice","answer","Error","result","state","prompt","userMessage","UserMessage","task","render","context","undefined","config","Object","assign","checker","ToolCallChecker","enabled","meta","name","description","length","extraDescription","map","tool","join","overrides","finalized","mapObj","system","RequirementAgentSystemPrompt","RequirementAgentTaskPrompt","toolError","RequirementAgentToolErrorPrompt","toolNoResult","RequirementAgentToolNoResultPrompt","key","defaultTemplate","override","PromptTemplate","role","instructions","notes","update","defaults","pickBy","isEmptyish","castArray","v","isDefined","createSnapshot","shallowCopy"],"mappings":"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","file":"agent.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseAgent } from \"@/agents/base.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport type { GetRunContext, MiddlewareType } from \"@/context.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { Message, UserMessage } from \"@/backend/message.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { mapObj } from \"@/internals/helpers/object.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n RequirementAgentCallbacks,\n RequirementAgentExecutionConfig,\n RequirementAgentOutput,\n RequirementAgentRunInput,\n RequirementAgentRunOptions,\n RequirementAgentTemplates,\n} from \"./types.js\";\nimport {\n RequirementAgentSystemPrompt,\n RequirementAgentTaskPrompt,\n RequirementAgentToolErrorPrompt,\n RequirementAgentToolNoResultPrompt,\n} from \"./prompts.js\";\nimport { Requirement } from \"./requirements/requirement.js\";\nimport { RequirementAgentRunner } from \"./runner.js\";\nimport { ToolCallChecker, ToolCallCheckerConfig } from \"./utils/toolCallChecker.js\";\nimport { isDefined, isEmptyish, pickBy } from \"remeda\";\nimport { castArray } from \"@/internals/helpers/array.js\";\nimport type { RequiredExcept } from \"@/internals/types.js\";\n\nexport type RequirementAgentTemplateFactory<K extends keyof RequirementAgentTemplates> = (\n template: RequirementAgentTemplates[K],\n) => RequirementAgentTemplates[K];\n\nexport interface RequirementAgentInput {\n llm: ChatModel;\n memory?: BaseMemory;\n tools?: AnyTool[];\n requirements?: Requirement[];\n name?: string;\n description?: string;\n role?: string;\n instructions?: string | string[];\n notes?: string | string[];\n toolCallChecker?: boolean | ToolCallCheckerConfig;\n finalAnswerAsTool?: boolean;\n saveIntermediateSteps?: boolean;\n execution?: RequirementAgentExecutionConfig;\n templates?: Partial<{\n [K in keyof RequirementAgentTemplates]:\n | RequirementAgentTemplates[K]\n | RequirementAgentTemplateFactory<K>;\n }>;\n middlewares?: MiddlewareType<RequirementAgent>[];\n}\n\ntype InternalRequirementAgentInput = RequiredExcept<\n RequirementAgentInput,\n | \"role\"\n | \"instructions\"\n | \"name\"\n | \"description\"\n | \"templates\"\n | \"notes\"\n | \"execution\"\n | \"middlewares\"\n>;\n\n/**\n * RequirementAgent - A declarative AI agent with rule-based constraints\n *\n * The RequirementAgent provides predictable, controlled execution behavior across\n * different language models through rule-based constraints (Requirements).\n * Requirements can be configured as strict or flexible as necessary, adapting to\n * task requirements while ensuring consistent execution regardless of the underlying\n * model's reasoning or tool-calling capabilities.\n */\nexport class RequirementAgent extends BaseAgent<\n RequirementAgentRunInput,\n RequirementAgentOutput,\n RequirementAgentRunOptions\n> {\n public readonly emitter = Emitter.root.child<RequirementAgentCallbacks>({\n namespace: [\"agent\", \"requirement\"],\n creator: this,\n });\n\n protected readonly input: InternalRequirementAgentInput;\n\n protected runner: new (\n ...args: ConstructorParameters<typeof RequirementAgentRunner>\n ) => RequirementAgentRunner = RequirementAgentRunner;\n\n constructor(input: RequirementAgentInput) {\n super();\n this.input = {\n ...input,\n memory: input.memory || new UnconstrainedMemory(),\n tools: input.tools || [],\n requirements: input.requirements || [],\n saveIntermediateSteps: input.saveIntermediateSteps ?? true,\n finalAnswerAsTool: input.finalAnswerAsTool ?? true,\n toolCallChecker: input.toolCallChecker ?? true,\n };\n if (input.middlewares) {\n this.middlewares.push(...input.middlewares);\n }\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n input: RequirementAgentRunInput,\n options: RequirementAgentRunOptions = {},\n run: GetRunContext<typeof this>,\n ): Promise<RequirementAgentOutput> {\n const execution: RequirementAgentExecutionConfig = {\n maxRetriesPerStep: 3,\n totalMaxRetries: 20,\n maxIterations: 20,\n ...this.input.execution,\n ...options.execution,\n };\n\n const toolCallChecker = this.createToolCallChecker();\n\n const runner = new this.runner(\n this.input.llm,\n execution,\n this.input.tools || [],\n this.input.requirements || [],\n input.expectedOutput || null,\n toolCallChecker,\n run,\n this.input.finalAnswerAsTool,\n this.templates,\n );\n\n // Process input messages\n const newMessages = this.processInput(input);\n await runner.addMessages([...this.memory.messages]);\n await runner.addMessages(newMessages);\n\n // Run the agent\n const finalState = await runner.run();\n\n // Update memory\n if (this.input.saveIntermediateSteps) {\n this.memory.reset();\n await this.memory.addMany(finalState.memory.messages);\n } else {\n await this.memory.addMany(newMessages);\n // Add last tool call pair\n const messages = finalState.memory.messages;\n const lastPair = messages.slice(-2);\n await this.memory.addMany(lastPair);\n }\n\n if (!finalState.answer) {\n throw new Error(\"Agent did not produce a final answer\");\n }\n\n return {\n result: finalState.answer,\n memory: finalState.memory,\n state: finalState,\n };\n }\n\n protected processInput(input: RequirementAgentRunInput): Message[] {\n if (!input.prompt) {\n return [];\n }\n\n const userMessage = new UserMessage(\n this.templates.task.render({\n prompt: input.prompt,\n context: input.context,\n expectedOutput: typeof input.expectedOutput === \"string\" ? input.expectedOutput : undefined,\n }),\n );\n\n return [userMessage];\n }\n\n protected createToolCallChecker(): ToolCallChecker {\n const config: ToolCallCheckerConfig = {};\n\n if (typeof this.input.toolCallChecker === \"object\") {\n Object.assign(config, this.input.toolCallChecker);\n }\n\n const checker = new ToolCallChecker(config);\n checker.enabled = this.input.toolCallChecker !== false;\n return checker;\n }\n\n get meta(): AgentMeta {\n const tools = this.input.tools || [];\n\n return {\n name: this.input.name ?? \"Requirement\",\n tools,\n description:\n this.input.description ??\n \"The RequirementAgent is a declarative AI agent implementation that provides predictable, \" +\n \"controlled execution behavior across different language models through rule-based constraints.\",\n ...(tools.length > 0 && {\n extraDescription: [\n `Tools that I can use to accomplish given task.`,\n ...tools.map((tool) => `Tool '${tool.name}': ${tool.description}.`),\n ].join(\"\\n\"),\n }),\n };\n }\n\n protected get templates(): RequirementAgentTemplates {\n const overrides = this.input.templates || {};\n const finalized = mapObj({\n system: RequirementAgentSystemPrompt,\n task: RequirementAgentTaskPrompt,\n toolError: RequirementAgentToolErrorPrompt,\n toolNoResult: RequirementAgentToolNoResultPrompt,\n } as RequirementAgentTemplates)((\n key,\n defaultTemplate: RequirementAgentTemplates[typeof key],\n ) => {\n const override = overrides[key] ?? defaultTemplate;\n if (override instanceof PromptTemplate) {\n return override;\n }\n return override(defaultTemplate) ?? defaultTemplate;\n });\n\n if (this.input.role || this.input.instructions || this.input.notes) {\n finalized.system.update({\n defaults: pickBy(\n {\n role: this.input.role,\n instructions: isEmptyish(this.input.instructions)\n ? undefined\n : castArray(this.input.instructions)\n .map((v) => `- ${v}`)\n .join(\"\\n\"),\n notes: isEmptyish(this.input.notes)\n ? undefined\n : castArray(this.input.notes)\n .map((v) => `- ${v}`)\n .join(\"\\n\"),\n },\n isDefined,\n ),\n });\n }\n\n return finalized;\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n input: shallowCopy(this.input),\n emitter: this.emitter,\n runner: this.runner,\n };\n }\n\n set memory(memory: BaseMemory) {\n this.input.memory = memory;\n }\n\n get memory(): BaseMemory {\n return this.input.memory!;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/agents/requirement/agent.ts"],"names":["RequirementAgent","BaseAgent","emitter","Emitter","root","child","namespace","creator","input","runner","RequirementAgentRunner","memory","UnconstrainedMemory","tools","requirements","saveIntermediateSteps","finalAnswerAsTool","toolCallChecker","middlewares","push","register","_run","options","run","execution","maxRetriesPerStep","totalMaxRetries","maxIterations","createToolCallChecker","llm","expectedOutput","templates","newMessages","processInput","addMessages","messages","finalState","reset","addMany","lastPair","slice","answer","Error","result","state","prompt","userMessage","UserMessage","task","render","context","undefined","config","Object","assign","checker","ToolCallChecker","enabled","meta","name","description","length","extraDescription","map","tool","join","overrides","finalized","mapObj","system","RequirementAgentSystemPrompt","RequirementAgentTaskPrompt","toolError","RequirementAgentToolErrorPrompt","toolNoResult","RequirementAgentToolNoResultPrompt","key","defaultTemplate","override","PromptTemplate","role","instructions","notes","update","defaults","pickBy","isEmptyish","castArray","v","isDefined","createSnapshot","shallowCopy"],"mappings":"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","file":"agent.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseAgent } from \"@/agents/base.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport type { GetRunContext, MiddlewareType } from \"@/context.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { Message, UserMessage } from \"@/backend/message.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { mapObj } from \"@/internals/helpers/object.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n RequirementAgentCallbacks,\n RequirementAgentExecutionConfig,\n RequirementAgentOutput,\n RequirementAgentRunInput,\n RequirementAgentRunOptions,\n RequirementAgentTemplates,\n} from \"./types.js\";\nimport {\n RequirementAgentSystemPrompt,\n RequirementAgentTaskPrompt,\n RequirementAgentToolErrorPrompt,\n RequirementAgentToolNoResultPrompt,\n} from \"./prompts.js\";\nimport { Requirement } from \"./requirements/requirement.js\";\nimport { RequirementAgentRunner } from \"./runner.js\";\nimport { ToolCallChecker, ToolCallCheckerConfig } from \"./utils/toolCallChecker.js\";\nimport { isDefined, isEmptyish, pickBy } from \"remeda\";\nimport { castArray } from \"@/internals/helpers/array.js\";\nimport type { RequiredExcept } from \"@/internals/types.js\";\n\nexport type RequirementAgentTemplateFactory<K extends keyof RequirementAgentTemplates> = (\n template: RequirementAgentTemplates[K],\n) => RequirementAgentTemplates[K];\n\nexport interface RequirementAgentInput {\n llm: ChatModel;\n memory?: BaseMemory;\n tools?: AnyTool[];\n requirements?: Requirement[];\n name?: string;\n description?: string;\n role?: string;\n instructions?: string | string[];\n notes?: string | string[];\n toolCallChecker?: boolean | ToolCallCheckerConfig;\n finalAnswerAsTool?: boolean;\n saveIntermediateSteps?: boolean;\n execution?: RequirementAgentExecutionConfig;\n templates?: Partial<{\n [K in keyof RequirementAgentTemplates]:\n | RequirementAgentTemplates[K]\n | RequirementAgentTemplateFactory<K>;\n }>;\n middlewares?: MiddlewareType<RequirementAgent>[];\n}\n\ntype InternalRequirementAgentInput = RequiredExcept<\n RequirementAgentInput,\n | \"role\"\n | \"instructions\"\n | \"name\"\n | \"description\"\n | \"templates\"\n | \"notes\"\n | \"execution\"\n | \"middlewares\"\n>;\n\n/**\n * RequirementAgent - A declarative AI agent with rule-based constraints\n *\n * The RequirementAgent provides predictable, controlled execution behavior across\n * different language models through rule-based constraints (Requirements).\n * Requirements can be configured as strict or flexible as necessary, adapting to\n * task requirements while ensuring consistent execution regardless of the underlying\n * model's reasoning or tool-calling capabilities.\n */\nexport class RequirementAgent extends BaseAgent<\n RequirementAgentRunInput,\n RequirementAgentOutput,\n RequirementAgentRunOptions\n> {\n public readonly emitter = Emitter.root.child<RequirementAgentCallbacks>({\n namespace: [\"agent\", \"requirement\"],\n creator: this,\n });\n\n protected readonly input: InternalRequirementAgentInput;\n\n protected runner: new (\n ...args: ConstructorParameters<typeof RequirementAgentRunner>\n ) => RequirementAgentRunner = RequirementAgentRunner;\n\n constructor(input: RequirementAgentInput) {\n super();\n this.input = {\n ...input,\n memory: input.memory || new UnconstrainedMemory(),\n tools: input.tools || [],\n requirements: input.requirements || [],\n saveIntermediateSteps: input.saveIntermediateSteps ?? true,\n finalAnswerAsTool: input.finalAnswerAsTool ?? true,\n toolCallChecker: input.toolCallChecker ?? true,\n };\n if (input.middlewares) {\n this.middlewares.push(...input.middlewares);\n }\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n input: RequirementAgentRunInput,\n options: RequirementAgentRunOptions = {},\n run: GetRunContext<typeof this>,\n ): Promise<RequirementAgentOutput> {\n const execution: RequirementAgentExecutionConfig = {\n maxRetriesPerStep: 3,\n totalMaxRetries: 20,\n maxIterations: 20,\n ...this.input.execution,\n ...options.execution,\n };\n\n const toolCallChecker = this.createToolCallChecker();\n\n const runner = new this.runner(\n this.input.llm,\n execution,\n this.input.tools || [],\n this.input.requirements || [],\n input.expectedOutput || null,\n toolCallChecker,\n run,\n this.input.finalAnswerAsTool,\n this.templates,\n );\n\n // Process input messages\n const newMessages = this.processInput(input);\n await runner.addMessages([...this.memory.messages]);\n await runner.addMessages(newMessages);\n\n // Run the agent\n const finalState = await runner.run();\n\n // Update memory\n if (this.input.saveIntermediateSteps) {\n this.memory.reset();\n await this.memory.addMany(finalState.memory.messages);\n } else {\n await this.memory.addMany(newMessages);\n // Add last tool call pair\n const messages = finalState.memory.messages;\n const lastPair = messages.slice(-2);\n await this.memory.addMany(lastPair);\n }\n\n if (!finalState.answer) {\n throw new Error(\"Agent did not produce a final answer\");\n }\n\n return {\n result: finalState.answer,\n memory: finalState.memory,\n state: finalState,\n };\n }\n\n protected processInput(input: RequirementAgentRunInput): Message[] {\n if (!input.prompt) {\n return [];\n }\n\n const userMessage = new UserMessage(\n this.templates.task.render({\n prompt: input.prompt,\n context: input.context,\n expectedOutput: typeof input.expectedOutput === \"string\" ? input.expectedOutput : undefined,\n }),\n );\n\n return [userMessage];\n }\n\n protected createToolCallChecker(): ToolCallChecker {\n const config: ToolCallCheckerConfig = {};\n\n if (typeof this.input.toolCallChecker === \"object\") {\n Object.assign(config, this.input.toolCallChecker);\n }\n\n const checker = new ToolCallChecker(config);\n checker.enabled = this.input.toolCallChecker !== false;\n return checker;\n }\n\n get meta(): AgentMeta {\n const tools = this.input.tools || [];\n\n return {\n name: this.input.name ?? \"Requirement\",\n tools,\n description:\n this.input.description ??\n \"The RequirementAgent is a declarative AI agent implementation that provides predictable, \" +\n \"controlled execution behavior across different language models through rule-based constraints.\",\n ...(tools.length > 0 && {\n extraDescription: [\n `Tools that I can use to accomplish given task.`,\n ...tools.map((tool) => `Tool '${tool.name}': ${tool.description}.`),\n ].join(\"\\n\"),\n }),\n };\n }\n\n protected get templates(): RequirementAgentTemplates {\n const overrides = this.input.templates || {};\n const finalized = mapObj({\n system: RequirementAgentSystemPrompt,\n task: RequirementAgentTaskPrompt,\n toolError: RequirementAgentToolErrorPrompt,\n toolNoResult: RequirementAgentToolNoResultPrompt,\n } as RequirementAgentTemplates)((\n key,\n defaultTemplate: RequirementAgentTemplates[typeof key],\n ) => {\n const override = overrides[key] ?? defaultTemplate;\n if (override instanceof PromptTemplate) {\n return override;\n }\n return override(defaultTemplate) ?? defaultTemplate;\n });\n\n if (this.input.role || this.input.instructions || this.input.notes) {\n finalized.system.update({\n defaults: pickBy(\n {\n role: this.input.role,\n instructions: isEmptyish(this.input.instructions)\n ? undefined\n : castArray(this.input.instructions)\n .map((v) => `- ${v}`)\n .join(\"\\n\"),\n notes: isEmptyish(this.input.notes)\n ? undefined\n : castArray(this.input.notes)\n .map((v) => `- ${v}`)\n .join(\"\\n\"),\n },\n isDefined,\n ),\n });\n }\n\n return finalized;\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n input: shallowCopy(this.input),\n emitter: this.emitter,\n runner: this.runner,\n };\n }\n\n set memory(memory: BaseMemory) {\n this.input.memory = memory;\n }\n\n get memory(): BaseMemory {\n return this.input.memory!;\n }\n}\n"]}
@@ -33,6 +33,7 @@ declare const RequirementAgentSystemPrompt: PromptTemplate<zod.ZodObject<{
33
33
  reason?: string | undefined;
34
34
  }>, "many">;
35
35
  }, "strip", zod.ZodTypeAny, {
36
+ finalAnswerName: string;
36
37
  tools: {
37
38
  name: string;
38
39
  description: string;
@@ -40,13 +41,13 @@ declare const RequirementAgentSystemPrompt: PromptTemplate<zod.ZodObject<{
40
41
  allowed: string;
41
42
  reason?: string | undefined;
42
43
  }[];
43
- finalAnswerName: string;
44
44
  role?: string | undefined;
45
45
  instructions?: string | undefined;
46
46
  notes?: string | undefined;
47
47
  finalAnswerSchema?: string | undefined;
48
48
  finalAnswerInstructions?: string | undefined;
49
49
  }, {
50
+ finalAnswerName: string;
50
51
  tools: {
51
52
  name: string;
52
53
  description: string;
@@ -54,7 +55,6 @@ declare const RequirementAgentSystemPrompt: PromptTemplate<zod.ZodObject<{
54
55
  allowed: string;
55
56
  reason?: string | undefined;
56
57
  }[];
57
- finalAnswerName: string;
58
58
  role?: string | undefined;
59
59
  instructions?: string | undefined;
60
60
  notes?: string | undefined;
@@ -33,6 +33,7 @@ declare const RequirementAgentSystemPrompt: PromptTemplate<zod.ZodObject<{
33
33
  reason?: string | undefined;
34
34
  }>, "many">;
35
35
  }, "strip", zod.ZodTypeAny, {
36
+ finalAnswerName: string;
36
37
  tools: {
37
38
  name: string;
38
39
  description: string;
@@ -40,13 +41,13 @@ declare const RequirementAgentSystemPrompt: PromptTemplate<zod.ZodObject<{
40
41
  allowed: string;
41
42
  reason?: string | undefined;
42
43
  }[];
43
- finalAnswerName: string;
44
44
  role?: string | undefined;
45
45
  instructions?: string | undefined;
46
46
  notes?: string | undefined;
47
47
  finalAnswerSchema?: string | undefined;
48
48
  finalAnswerInstructions?: string | undefined;
49
49
  }, {
50
+ finalAnswerName: string;
50
51
  tools: {
51
52
  name: string;
52
53
  description: string;
@@ -54,7 +55,6 @@ declare const RequirementAgentSystemPrompt: PromptTemplate<zod.ZodObject<{
54
55
  allowed: string;
55
56
  reason?: string | undefined;
56
57
  }[];
57
- finalAnswerName: string;
58
58
  role?: string | undefined;
59
59
  instructions?: string | undefined;
60
60
  notes?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/agents/requirement/requirements/conditional.ts"],"names":["ConditionalRequirement","Requirement","source","sourceTool","before","after","forceAfterSet","minInvocations","maxInvocations","forceAtStepValue","onlySuccessInvocations","consecutiveAllowedValue","customChecks","forcePreventStop","reason","target","options","name","extractTargetName","enabled","priority","undefined","extractTargets","onlyBefore","onlyAfter","forceAfter","Infinity","forceAtStep","consecutiveAllowed","checkInvariant","ValueError","sourceName","has","beforeAfterIntersection","Set","filter","x","size","Array","from","join","beforeForceAfterIntersection","init","tools","ctx","allTargets","assertAllRulesFound","tool","targetSeenIn","reset","clear","_run","state","_","RequirementError","steps","step","error","lastStepTool","at","invocations","length","resolve","allowed","currentStep","forced","Boolean","hidden","preventStop","stepsAsToolCalls","map","isTruthy","afterToolsRemaining","stepTool","matcher","delete","check","clone","instance"],"mappings":"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","file":"conditional.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Requirement, RequirementError, Rule } from \"./requirement.js\";\nimport {\n TargetType,\n MultiTargetType,\n extractTargets,\n extractTargetName,\n targetSeenIn,\n assertAllRulesFound,\n} from \"./utils.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { RunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport type { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { isTruthy } from \"remeda\";\n\nexport interface ConditionalRequirementOptions {\n name?: string;\n forceAtStep?: number;\n onlyBefore?: MultiTargetType;\n onlyAfter?: MultiTargetType;\n forceAfter?: MultiTargetType;\n forcePreventStop?: boolean;\n minInvocations?: number;\n maxInvocations?: number;\n onlySuccessInvocations?: boolean;\n consecutiveAllowed?: boolean;\n priority?: number;\n customChecks?: ((state: RequirementAgentRunState) => boolean)[];\n enabled?: boolean;\n reason?: string;\n}\n\nexport class ConditionalRequirement extends Requirement {\n protected source: TargetType;\n protected sourceTool?: AnyTool;\n protected before: Set<TargetType>;\n protected after: Set<TargetType>;\n protected forceAfterSet: Set<TargetType>;\n protected minInvocations: number;\n protected maxInvocations: number;\n protected forceAtStepValue?: number;\n protected onlySuccessInvocations: boolean;\n protected consecutiveAllowedValue: boolean;\n protected customChecks: ((state: RequirementAgentRunState) => boolean)[];\n protected forcePreventStop: boolean;\n protected reason?: string;\n\n constructor(target: TargetType, options: ConditionalRequirementOptions = {}) {\n super(options.name || `Condition${extractTargetName(target)}`);\n\n this.source = target;\n this.enabled = options.enabled ?? true;\n\n if (options.priority !== undefined) {\n this.priority = options.priority;\n }\n\n this.before = extractTargets(options.onlyBefore);\n this.after = extractTargets(options.onlyAfter);\n this.forceAfterSet = extractTargets(options.forceAfter);\n this.minInvocations = options.minInvocations ?? 0;\n this.maxInvocations = options.maxInvocations ?? Infinity;\n this.forceAtStepValue = options.forceAtStep;\n this.onlySuccessInvocations = options.onlySuccessInvocations ?? true;\n this.consecutiveAllowedValue = options.consecutiveAllowed ?? true;\n this.customChecks = options.customChecks ?? [];\n this.forcePreventStop = options.forcePreventStop ?? true;\n this.reason = options.reason;\n\n this.checkInvariant();\n }\n\n protected checkInvariant(): void {\n if (this.minInvocations < 0) {\n throw new ValueError(\"The 'minInvocations' argument must be non negative!\");\n }\n\n if (this.maxInvocations < 0) {\n throw new ValueError(\"The 'maxInvocations' argument must be non negative!\");\n }\n\n if (this.minInvocations > this.maxInvocations) {\n throw new ValueError(\n \"The 'minInvocations' argument must be less than or equal to 'maxInvocations'!\",\n );\n }\n\n const sourceName = extractTargetName(this.source);\n if (this.before.has(this.source)) {\n throw new ValueError(`Referencing self in 'before' is not allowed (${sourceName})!`);\n }\n\n if (this.forceAfterSet.has(this.source)) {\n throw new ValueError(`Referencing self in 'forceAfter' is not allowed (${sourceName})!`);\n }\n\n const beforeAfterIntersection = new Set([...this.before].filter((x) => this.after.has(x)));\n if (beforeAfterIntersection.size > 0) {\n throw new ValueError(\n `Tool specified as 'before' and 'after' at the same time: ${Array.from(beforeAfterIntersection).join(\", \")}!`,\n );\n }\n\n const beforeForceAfterIntersection = new Set(\n [...this.before].filter((x) => this.forceAfterSet.has(x)),\n );\n if (beforeForceAfterIntersection.size > 0) {\n throw new ValueError(\n `Tool specified as 'before' and 'forceAfter' at the same time: ${Array.from(beforeForceAfterIntersection).join(\", \")}!`,\n );\n }\n\n if (this.forceAtStepValue !== undefined && this.forceAtStepValue < 1) {\n throw new ValueError(\"The 'forceAtStep' argument must be >= 1!\");\n }\n }\n\n async init(tools: AnyTool[], ctx: RunContext<any>): Promise<void> {\n await super.init(tools, ctx);\n\n const allTargets = new Set([...this.before, ...this.after, ...this.forceAfterSet, this.source]);\n assertAllRulesFound(allTargets, tools);\n\n for (const tool of tools) {\n if (targetSeenIn(tool, this.source)) {\n if (this.sourceTool && this.sourceTool !== tool) {\n throw new ValueError(\n `More than one occurrence of ${extractTargetName(this.source)} has been found!`,\n );\n }\n this.sourceTool = tool;\n }\n }\n\n if (!this.sourceTool) {\n throw new ValueError(`Source tool ${extractTargetName(this.source)} was not found!`);\n }\n\n if (targetSeenIn(this.sourceTool, this.before)) {\n throw new ValueError(`Referencing self in 'before' is not allowed: ${this.sourceTool.name}!`);\n }\n\n if (this.consecutiveAllowedValue && targetSeenIn(this.sourceTool, this.forceAfterSet)) {\n throw new ValueError(\n `Referencing self in 'forceAfter' is not allowed: ${this.sourceTool.name}. ` +\n `It would prevent an infinite loop. Consider setting 'consecutiveAllowed' to false.`,\n );\n }\n }\n\n reset(): this {\n this.before.clear();\n this.after.clear();\n this.forceAfterSet.clear();\n return this;\n }\n\n async _run(state: RequirementAgentRunState, _: RunContext<typeof this>): Promise<Rule[]> {\n const sourceTool = this.sourceTool;\n if (!sourceTool) {\n throw new RequirementError(\"Source was not found!\", this);\n }\n\n // Get steps from state (assuming state has steps property)\n const steps = this.onlySuccessInvocations\n ? state.steps.filter((step) => !step.error)\n : state.steps;\n\n const lastStepTool = steps.at(-1)?.tool;\n\n const invocations = steps.filter((step) => step.tool === sourceTool).length;\n\n const resolve = (allowed: boolean): Rule[] => {\n const currentStep = steps.length + 1;\n if (!allowed && this.forceAtStepValue === currentStep) {\n throw new RequirementError(\n `Tool '${sourceTool.name}' cannot be executed at step ${this.forceAtStepValue} ` +\n `because it has not met all requirements.`,\n this,\n );\n }\n\n const forced = allowed\n ? Boolean(\n targetSeenIn(lastStepTool, this.forceAfterSet) || this.forceAtStepValue === currentStep,\n )\n : false;\n\n return [\n {\n target: sourceTool.name,\n allowed,\n forced,\n hidden: false,\n preventStop: this.minInvocations > invocations || (forced && this.forcePreventStop),\n reason: !allowed ? this.reason : undefined,\n },\n ];\n };\n\n // Check consecutive constraint\n if (!this.consecutiveAllowedValue && sourceTool === lastStepTool) {\n return resolve(false);\n }\n\n // Check max invocations\n if (invocations >= this.maxInvocations) {\n return resolve(false);\n }\n\n // Check after/before constraints\n if (this.after.size > 0) {\n const stepsAsToolCalls = steps.map((step) => step.tool).filter(isTruthy);\n const afterToolsRemaining = new Set(this.after);\n\n for (const stepTool of stepsAsToolCalls) {\n if (targetSeenIn(stepTool, this.forceAfterSet)) {\n return resolve(false);\n }\n\n const matcher = targetSeenIn(stepTool as any, this.after);\n if (matcher) {\n afterToolsRemaining.delete(matcher);\n }\n }\n\n if (afterToolsRemaining.size > 0) {\n return resolve(false);\n }\n }\n\n // Check custom checks\n for (const check of this.customChecks) {\n if (!check(state)) {\n return resolve(false);\n }\n }\n\n return resolve(true);\n }\n\n async clone(): Promise<this> {\n const instance = await super.clone();\n instance.before = new Set(this.before);\n instance.after = new Set(this.after);\n instance.forceAfterSet = new Set(this.forceAfterSet);\n instance.minInvocations = this.minInvocations;\n instance.maxInvocations = this.maxInvocations;\n instance.customChecks = [...this.customChecks];\n instance.onlySuccessInvocations = this.onlySuccessInvocations;\n instance.forceAtStepValue = this.forceAtStepValue;\n instance.consecutiveAllowedValue = this.consecutiveAllowedValue;\n instance.source = this.source;\n instance.sourceTool = this.sourceTool;\n instance.forcePreventStop = this.forcePreventStop;\n instance.reason = this.reason;\n return instance;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/agents/requirement/requirements/conditional.ts"],"names":["ConditionalRequirement","Requirement","source","sourceTool","before","after","forceAfterSet","minInvocations","maxInvocations","forceAtStepValue","onlySuccessInvocations","consecutiveAllowedValue","customChecks","forcePreventStop","reason","target","options","name","extractTargetName","enabled","priority","undefined","extractTargets","onlyBefore","onlyAfter","forceAfter","Infinity","forceAtStep","consecutiveAllowed","checkInvariant","ValueError","sourceName","has","beforeAfterIntersection","Set","filter","x","size","Array","from","join","beforeForceAfterIntersection","init","tools","ctx","allTargets","assertAllRulesFound","tool","targetSeenIn","reset","clear","_run","state","_","RequirementError","steps","step","error","lastStepTool","at","invocations","length","resolve","allowed","currentStep","forced","Boolean","hidden","preventStop","stepsAsToolCalls","map","isTruthy","afterToolsRemaining","stepTool","matcher","delete","check","clone","instance"],"mappings":"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","file":"conditional.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Requirement, RequirementError, Rule } from \"./requirement.js\";\nimport {\n TargetType,\n MultiTargetType,\n extractTargets,\n extractTargetName,\n targetSeenIn,\n assertAllRulesFound,\n} from \"./utils.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { RunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport type { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { isTruthy } from \"remeda\";\n\nexport interface ConditionalRequirementOptions {\n name?: string;\n forceAtStep?: number;\n onlyBefore?: MultiTargetType;\n onlyAfter?: MultiTargetType;\n forceAfter?: MultiTargetType;\n forcePreventStop?: boolean;\n minInvocations?: number;\n maxInvocations?: number;\n onlySuccessInvocations?: boolean;\n consecutiveAllowed?: boolean;\n priority?: number;\n customChecks?: ((state: RequirementAgentRunState) => boolean)[];\n enabled?: boolean;\n reason?: string;\n}\n\nexport class ConditionalRequirement extends Requirement {\n protected source: TargetType;\n protected sourceTool?: AnyTool;\n protected before: Set<TargetType>;\n protected after: Set<TargetType>;\n protected forceAfterSet: Set<TargetType>;\n protected minInvocations: number;\n protected maxInvocations: number;\n protected forceAtStepValue?: number;\n protected onlySuccessInvocations: boolean;\n protected consecutiveAllowedValue: boolean;\n protected customChecks: ((state: RequirementAgentRunState) => boolean)[];\n protected forcePreventStop: boolean;\n protected reason?: string;\n\n constructor(target: TargetType, options: ConditionalRequirementOptions = {}) {\n super(options.name || `Condition${extractTargetName(target)}`);\n\n this.source = target;\n this.enabled = options.enabled ?? true;\n\n if (options.priority !== undefined) {\n this.priority = options.priority;\n }\n\n this.before = extractTargets(options.onlyBefore);\n this.after = extractTargets(options.onlyAfter);\n this.forceAfterSet = extractTargets(options.forceAfter);\n this.minInvocations = options.minInvocations ?? 0;\n this.maxInvocations = options.maxInvocations ?? Infinity;\n this.forceAtStepValue = options.forceAtStep;\n this.onlySuccessInvocations = options.onlySuccessInvocations ?? true;\n this.consecutiveAllowedValue = options.consecutiveAllowed ?? true;\n this.customChecks = options.customChecks ?? [];\n this.forcePreventStop = options.forcePreventStop ?? true;\n this.reason = options.reason;\n\n this.checkInvariant();\n }\n\n protected checkInvariant(): void {\n if (this.minInvocations < 0) {\n throw new ValueError(\"The 'minInvocations' argument must be non negative!\");\n }\n\n if (this.maxInvocations < 0) {\n throw new ValueError(\"The 'maxInvocations' argument must be non negative!\");\n }\n\n if (this.minInvocations > this.maxInvocations) {\n throw new ValueError(\n \"The 'minInvocations' argument must be less than or equal to 'maxInvocations'!\",\n );\n }\n\n const sourceName = extractTargetName(this.source);\n if (this.before.has(this.source)) {\n throw new ValueError(`Referencing self in 'before' is not allowed (${sourceName})!`);\n }\n\n if (this.forceAfterSet.has(this.source)) {\n throw new ValueError(`Referencing self in 'forceAfter' is not allowed (${sourceName})!`);\n }\n\n const beforeAfterIntersection = new Set([...this.before].filter((x) => this.after.has(x)));\n if (beforeAfterIntersection.size > 0) {\n throw new ValueError(\n `Tool specified as 'before' and 'after' at the same time: ${Array.from(beforeAfterIntersection).join(\", \")}!`,\n );\n }\n\n const beforeForceAfterIntersection = new Set(\n [...this.before].filter((x) => this.forceAfterSet.has(x)),\n );\n if (beforeForceAfterIntersection.size > 0) {\n throw new ValueError(\n `Tool specified as 'before' and 'forceAfter' at the same time: ${Array.from(beforeForceAfterIntersection).join(\", \")}!`,\n );\n }\n\n if (this.forceAtStepValue !== undefined && this.forceAtStepValue < 1) {\n throw new ValueError(\"The 'forceAtStep' argument must be >= 1!\");\n }\n }\n\n async init(tools: AnyTool[], ctx: RunContext<any>): Promise<void> {\n await super.init(tools, ctx);\n\n const allTargets = new Set([...this.before, ...this.after, ...this.forceAfterSet, this.source]);\n assertAllRulesFound(allTargets, tools);\n\n for (const tool of tools) {\n if (targetSeenIn(tool, this.source)) {\n if (this.sourceTool && this.sourceTool !== tool) {\n throw new ValueError(\n `More than one occurrence of ${extractTargetName(this.source)} has been found!`,\n );\n }\n this.sourceTool = tool;\n }\n }\n\n if (!this.sourceTool) {\n throw new ValueError(`Source tool ${extractTargetName(this.source)} was not found!`);\n }\n\n if (targetSeenIn(this.sourceTool, this.before)) {\n throw new ValueError(`Referencing self in 'before' is not allowed: ${this.sourceTool.name}!`);\n }\n\n if (this.consecutiveAllowedValue && targetSeenIn(this.sourceTool, this.forceAfterSet)) {\n throw new ValueError(\n `Referencing self in 'forceAfter' is not allowed: ${this.sourceTool.name}. ` +\n `It would prevent an infinite loop. Consider setting 'consecutiveAllowed' to false.`,\n );\n }\n }\n\n reset(): this {\n this.before.clear();\n this.after.clear();\n this.forceAfterSet.clear();\n return this;\n }\n\n async _run(state: RequirementAgentRunState, _: RunContext<typeof this>): Promise<Rule[]> {\n const sourceTool = this.sourceTool;\n if (!sourceTool) {\n throw new RequirementError(\"Source was not found!\", this);\n }\n\n // Get steps from state (assuming state has steps property)\n const steps = this.onlySuccessInvocations\n ? state.steps.filter((step) => !step.error)\n : state.steps;\n\n const lastStepTool = steps.at(-1)?.tool;\n\n const invocations = steps.filter((step) => step.tool === sourceTool).length;\n\n const resolve = (allowed: boolean): Rule[] => {\n const currentStep = steps.length + 1;\n if (!allowed && this.forceAtStepValue === currentStep) {\n throw new RequirementError(\n `Tool '${sourceTool.name}' cannot be executed at step ${this.forceAtStepValue} ` +\n `because it has not met all requirements.`,\n this,\n );\n }\n\n const forced = allowed\n ? Boolean(\n targetSeenIn(lastStepTool, this.forceAfterSet) || this.forceAtStepValue === currentStep,\n )\n : false;\n\n return [\n {\n target: sourceTool.name,\n allowed,\n forced,\n hidden: false,\n preventStop: this.minInvocations > invocations || (forced && this.forcePreventStop),\n reason: !allowed ? this.reason : undefined,\n },\n ];\n };\n\n // Check consecutive constraint\n if (!this.consecutiveAllowedValue && sourceTool === lastStepTool) {\n return resolve(false);\n }\n\n // Check max invocations\n if (invocations >= this.maxInvocations) {\n return resolve(false);\n }\n\n // Check after/before constraints\n if (this.after.size > 0) {\n const stepsAsToolCalls = steps.map((step) => step.tool).filter(isTruthy);\n const afterToolsRemaining = new Set(this.after);\n\n for (const stepTool of stepsAsToolCalls) {\n if (targetSeenIn(stepTool, this.forceAfterSet)) {\n return resolve(false);\n }\n\n const matcher = targetSeenIn(stepTool as any, this.after);\n if (matcher) {\n afterToolsRemaining.delete(matcher);\n }\n }\n\n if (afterToolsRemaining.size > 0) {\n return resolve(false);\n }\n }\n\n // Check custom checks\n for (const check of this.customChecks) {\n if (!check(state)) {\n return resolve(false);\n }\n }\n\n return resolve(true);\n }\n\n async clone(): Promise<this> {\n const instance = await super.clone();\n instance.before = new Set(this.before);\n instance.after = new Set(this.after);\n instance.forceAfterSet = new Set(this.forceAfterSet);\n instance.minInvocations = this.minInvocations;\n instance.maxInvocations = this.maxInvocations;\n instance.customChecks = [...this.customChecks];\n instance.onlySuccessInvocations = this.onlySuccessInvocations;\n instance.forceAtStepValue = this.forceAtStepValue;\n instance.consecutiveAllowedValue = this.consecutiveAllowedValue;\n instance.source = this.source;\n instance.sourceTool = this.sourceTool;\n instance.forcePreventStop = this.forcePreventStop;\n instance.reason = this.reason;\n return instance;\n }\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  import { Requirement, Rule } from './requirement.cjs';
2
- import { MultiTargetType, TargetType } from './utils.cjs';
2
+ import { TargetType, MultiTargetType } from './utils.cjs';
3
3
  import { AnyTool } from '../../../tools/base.cjs';
4
4
  import { RunContext } from '../../../context.cjs';
5
- import { R as RequirementAgentRunState } from '../../../types-YoNQSxQH.cjs';
6
- import '../../../emitter-UkIkNrek.cjs';
5
+ import { R as RequirementAgentRunState } from '../../../types-BNsa3W7Z.cjs';
6
+ import '../../../emitter-D4OcelZ9.cjs';
7
7
  import '../../../internals/types.cjs';
8
8
  import '../../../internals/helpers/guards.cjs';
9
9
  import '../../../internals/serializable.cjs';
@@ -19,11 +19,11 @@ import '../../../memory/base.cjs';
19
19
  import '../../../backend/message.cjs';
20
20
  import 'ai';
21
21
  import '../../../template.cjs';
22
- import '../../../chat-DaqV3woF.cjs';
22
+ import '../../../chat-C20nYj46.cjs';
23
23
  import '../../../backend/constants.cjs';
24
24
  import '../../../logger/logger.cjs';
25
25
  import 'pino';
26
- import '../../../base-BqzN2QwB.cjs';
26
+ import '../../../base-s3ioVIE9.cjs';
27
27
 
28
28
  /**
29
29
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
@@ -1,9 +1,9 @@
1
1
  import { Requirement, Rule } from './requirement.js';
2
- import { MultiTargetType, TargetType } from './utils.js';
2
+ import { TargetType, MultiTargetType } from './utils.js';
3
3
  import { AnyTool } from '../../../tools/base.js';
4
4
  import { RunContext } from '../../../context.js';
5
- import { R as RequirementAgentRunState } from '../../../types-YT-WdK3m.js';
6
- import '../../../emitter-CL56qab4.js';
5
+ import { R as RequirementAgentRunState } from '../../../types-DYtzF6ya.js';
6
+ import '../../../emitter-kHxkUxco.js';
7
7
  import '../../../internals/types.js';
8
8
  import '../../../internals/helpers/guards.js';
9
9
  import '../../../internals/serializable.js';
@@ -19,11 +19,11 @@ import '../../../memory/base.js';
19
19
  import '../../../backend/message.js';
20
20
  import 'ai';
21
21
  import '../../../template.js';
22
- import '../../../chat-DTxmaKP0.js';
22
+ import '../../../chat-CfTNfR60.js';
23
23
  import '../../../backend/constants.js';
24
24
  import '../../../logger/logger.js';
25
25
  import 'pino';
26
- import '../../../base-BfhNzUYf.js';
26
+ import '../../../base-BjzyQ8k6.js';
27
27
 
28
28
  /**
29
29
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/agents/requirement/requirements/conditional.ts"],"names":["ConditionalRequirement","Requirement","source","sourceTool","before","after","forceAfterSet","minInvocations","maxInvocations","forceAtStepValue","onlySuccessInvocations","consecutiveAllowedValue","customChecks","forcePreventStop","reason","target","options","name","extractTargetName","enabled","priority","undefined","extractTargets","onlyBefore","onlyAfter","forceAfter","Infinity","forceAtStep","consecutiveAllowed","checkInvariant","ValueError","sourceName","has","beforeAfterIntersection","Set","filter","x","size","Array","from","join","beforeForceAfterIntersection","init","tools","ctx","allTargets","assertAllRulesFound","tool","targetSeenIn","reset","clear","_run","state","_","RequirementError","steps","step","error","lastStepTool","at","invocations","length","resolve","allowed","currentStep","forced","Boolean","hidden","preventStop","stepsAsToolCalls","map","isTruthy","afterToolsRemaining","stepTool","matcher","delete","check","clone","instance"],"mappings":"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","file":"conditional.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Requirement, RequirementError, Rule } from \"./requirement.js\";\nimport {\n TargetType,\n MultiTargetType,\n extractTargets,\n extractTargetName,\n targetSeenIn,\n assertAllRulesFound,\n} from \"./utils.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { RunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport type { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { isTruthy } from \"remeda\";\n\nexport interface ConditionalRequirementOptions {\n name?: string;\n forceAtStep?: number;\n onlyBefore?: MultiTargetType;\n onlyAfter?: MultiTargetType;\n forceAfter?: MultiTargetType;\n forcePreventStop?: boolean;\n minInvocations?: number;\n maxInvocations?: number;\n onlySuccessInvocations?: boolean;\n consecutiveAllowed?: boolean;\n priority?: number;\n customChecks?: ((state: RequirementAgentRunState) => boolean)[];\n enabled?: boolean;\n reason?: string;\n}\n\nexport class ConditionalRequirement extends Requirement {\n protected source: TargetType;\n protected sourceTool?: AnyTool;\n protected before: Set<TargetType>;\n protected after: Set<TargetType>;\n protected forceAfterSet: Set<TargetType>;\n protected minInvocations: number;\n protected maxInvocations: number;\n protected forceAtStepValue?: number;\n protected onlySuccessInvocations: boolean;\n protected consecutiveAllowedValue: boolean;\n protected customChecks: ((state: RequirementAgentRunState) => boolean)[];\n protected forcePreventStop: boolean;\n protected reason?: string;\n\n constructor(target: TargetType, options: ConditionalRequirementOptions = {}) {\n super(options.name || `Condition${extractTargetName(target)}`);\n\n this.source = target;\n this.enabled = options.enabled ?? true;\n\n if (options.priority !== undefined) {\n this.priority = options.priority;\n }\n\n this.before = extractTargets(options.onlyBefore);\n this.after = extractTargets(options.onlyAfter);\n this.forceAfterSet = extractTargets(options.forceAfter);\n this.minInvocations = options.minInvocations ?? 0;\n this.maxInvocations = options.maxInvocations ?? Infinity;\n this.forceAtStepValue = options.forceAtStep;\n this.onlySuccessInvocations = options.onlySuccessInvocations ?? true;\n this.consecutiveAllowedValue = options.consecutiveAllowed ?? true;\n this.customChecks = options.customChecks ?? [];\n this.forcePreventStop = options.forcePreventStop ?? true;\n this.reason = options.reason;\n\n this.checkInvariant();\n }\n\n protected checkInvariant(): void {\n if (this.minInvocations < 0) {\n throw new ValueError(\"The 'minInvocations' argument must be non negative!\");\n }\n\n if (this.maxInvocations < 0) {\n throw new ValueError(\"The 'maxInvocations' argument must be non negative!\");\n }\n\n if (this.minInvocations > this.maxInvocations) {\n throw new ValueError(\n \"The 'minInvocations' argument must be less than or equal to 'maxInvocations'!\",\n );\n }\n\n const sourceName = extractTargetName(this.source);\n if (this.before.has(this.source)) {\n throw new ValueError(`Referencing self in 'before' is not allowed (${sourceName})!`);\n }\n\n if (this.forceAfterSet.has(this.source)) {\n throw new ValueError(`Referencing self in 'forceAfter' is not allowed (${sourceName})!`);\n }\n\n const beforeAfterIntersection = new Set([...this.before].filter((x) => this.after.has(x)));\n if (beforeAfterIntersection.size > 0) {\n throw new ValueError(\n `Tool specified as 'before' and 'after' at the same time: ${Array.from(beforeAfterIntersection).join(\", \")}!`,\n );\n }\n\n const beforeForceAfterIntersection = new Set(\n [...this.before].filter((x) => this.forceAfterSet.has(x)),\n );\n if (beforeForceAfterIntersection.size > 0) {\n throw new ValueError(\n `Tool specified as 'before' and 'forceAfter' at the same time: ${Array.from(beforeForceAfterIntersection).join(\", \")}!`,\n );\n }\n\n if (this.forceAtStepValue !== undefined && this.forceAtStepValue < 1) {\n throw new ValueError(\"The 'forceAtStep' argument must be >= 1!\");\n }\n }\n\n async init(tools: AnyTool[], ctx: RunContext<any>): Promise<void> {\n await super.init(tools, ctx);\n\n const allTargets = new Set([...this.before, ...this.after, ...this.forceAfterSet, this.source]);\n assertAllRulesFound(allTargets, tools);\n\n for (const tool of tools) {\n if (targetSeenIn(tool, this.source)) {\n if (this.sourceTool && this.sourceTool !== tool) {\n throw new ValueError(\n `More than one occurrence of ${extractTargetName(this.source)} has been found!`,\n );\n }\n this.sourceTool = tool;\n }\n }\n\n if (!this.sourceTool) {\n throw new ValueError(`Source tool ${extractTargetName(this.source)} was not found!`);\n }\n\n if (targetSeenIn(this.sourceTool, this.before)) {\n throw new ValueError(`Referencing self in 'before' is not allowed: ${this.sourceTool.name}!`);\n }\n\n if (this.consecutiveAllowedValue && targetSeenIn(this.sourceTool, this.forceAfterSet)) {\n throw new ValueError(\n `Referencing self in 'forceAfter' is not allowed: ${this.sourceTool.name}. ` +\n `It would prevent an infinite loop. Consider setting 'consecutiveAllowed' to false.`,\n );\n }\n }\n\n reset(): this {\n this.before.clear();\n this.after.clear();\n this.forceAfterSet.clear();\n return this;\n }\n\n async _run(state: RequirementAgentRunState, _: RunContext<typeof this>): Promise<Rule[]> {\n const sourceTool = this.sourceTool;\n if (!sourceTool) {\n throw new RequirementError(\"Source was not found!\", this);\n }\n\n // Get steps from state (assuming state has steps property)\n const steps = this.onlySuccessInvocations\n ? state.steps.filter((step) => !step.error)\n : state.steps;\n\n const lastStepTool = steps.at(-1)?.tool;\n\n const invocations = steps.filter((step) => step.tool === sourceTool).length;\n\n const resolve = (allowed: boolean): Rule[] => {\n const currentStep = steps.length + 1;\n if (!allowed && this.forceAtStepValue === currentStep) {\n throw new RequirementError(\n `Tool '${sourceTool.name}' cannot be executed at step ${this.forceAtStepValue} ` +\n `because it has not met all requirements.`,\n this,\n );\n }\n\n const forced = allowed\n ? Boolean(\n targetSeenIn(lastStepTool, this.forceAfterSet) || this.forceAtStepValue === currentStep,\n )\n : false;\n\n return [\n {\n target: sourceTool.name,\n allowed,\n forced,\n hidden: false,\n preventStop: this.minInvocations > invocations || (forced && this.forcePreventStop),\n reason: !allowed ? this.reason : undefined,\n },\n ];\n };\n\n // Check consecutive constraint\n if (!this.consecutiveAllowedValue && sourceTool === lastStepTool) {\n return resolve(false);\n }\n\n // Check max invocations\n if (invocations >= this.maxInvocations) {\n return resolve(false);\n }\n\n // Check after/before constraints\n if (this.after.size > 0) {\n const stepsAsToolCalls = steps.map((step) => step.tool).filter(isTruthy);\n const afterToolsRemaining = new Set(this.after);\n\n for (const stepTool of stepsAsToolCalls) {\n if (targetSeenIn(stepTool, this.forceAfterSet)) {\n return resolve(false);\n }\n\n const matcher = targetSeenIn(stepTool as any, this.after);\n if (matcher) {\n afterToolsRemaining.delete(matcher);\n }\n }\n\n if (afterToolsRemaining.size > 0) {\n return resolve(false);\n }\n }\n\n // Check custom checks\n for (const check of this.customChecks) {\n if (!check(state)) {\n return resolve(false);\n }\n }\n\n return resolve(true);\n }\n\n async clone(): Promise<this> {\n const instance = await super.clone();\n instance.before = new Set(this.before);\n instance.after = new Set(this.after);\n instance.forceAfterSet = new Set(this.forceAfterSet);\n instance.minInvocations = this.minInvocations;\n instance.maxInvocations = this.maxInvocations;\n instance.customChecks = [...this.customChecks];\n instance.onlySuccessInvocations = this.onlySuccessInvocations;\n instance.forceAtStepValue = this.forceAtStepValue;\n instance.consecutiveAllowedValue = this.consecutiveAllowedValue;\n instance.source = this.source;\n instance.sourceTool = this.sourceTool;\n instance.forcePreventStop = this.forcePreventStop;\n instance.reason = this.reason;\n return instance;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/agents/requirement/requirements/conditional.ts"],"names":["ConditionalRequirement","Requirement","source","sourceTool","before","after","forceAfterSet","minInvocations","maxInvocations","forceAtStepValue","onlySuccessInvocations","consecutiveAllowedValue","customChecks","forcePreventStop","reason","target","options","name","extractTargetName","enabled","priority","undefined","extractTargets","onlyBefore","onlyAfter","forceAfter","Infinity","forceAtStep","consecutiveAllowed","checkInvariant","ValueError","sourceName","has","beforeAfterIntersection","Set","filter","x","size","Array","from","join","beforeForceAfterIntersection","init","tools","ctx","allTargets","assertAllRulesFound","tool","targetSeenIn","reset","clear","_run","state","_","RequirementError","steps","step","error","lastStepTool","at","invocations","length","resolve","allowed","currentStep","forced","Boolean","hidden","preventStop","stepsAsToolCalls","map","isTruthy","afterToolsRemaining","stepTool","matcher","delete","check","clone","instance"],"mappings":"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","file":"conditional.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Requirement, RequirementError, Rule } from \"./requirement.js\";\nimport {\n TargetType,\n MultiTargetType,\n extractTargets,\n extractTargetName,\n targetSeenIn,\n assertAllRulesFound,\n} from \"./utils.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { RunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport type { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { isTruthy } from \"remeda\";\n\nexport interface ConditionalRequirementOptions {\n name?: string;\n forceAtStep?: number;\n onlyBefore?: MultiTargetType;\n onlyAfter?: MultiTargetType;\n forceAfter?: MultiTargetType;\n forcePreventStop?: boolean;\n minInvocations?: number;\n maxInvocations?: number;\n onlySuccessInvocations?: boolean;\n consecutiveAllowed?: boolean;\n priority?: number;\n customChecks?: ((state: RequirementAgentRunState) => boolean)[];\n enabled?: boolean;\n reason?: string;\n}\n\nexport class ConditionalRequirement extends Requirement {\n protected source: TargetType;\n protected sourceTool?: AnyTool;\n protected before: Set<TargetType>;\n protected after: Set<TargetType>;\n protected forceAfterSet: Set<TargetType>;\n protected minInvocations: number;\n protected maxInvocations: number;\n protected forceAtStepValue?: number;\n protected onlySuccessInvocations: boolean;\n protected consecutiveAllowedValue: boolean;\n protected customChecks: ((state: RequirementAgentRunState) => boolean)[];\n protected forcePreventStop: boolean;\n protected reason?: string;\n\n constructor(target: TargetType, options: ConditionalRequirementOptions = {}) {\n super(options.name || `Condition${extractTargetName(target)}`);\n\n this.source = target;\n this.enabled = options.enabled ?? true;\n\n if (options.priority !== undefined) {\n this.priority = options.priority;\n }\n\n this.before = extractTargets(options.onlyBefore);\n this.after = extractTargets(options.onlyAfter);\n this.forceAfterSet = extractTargets(options.forceAfter);\n this.minInvocations = options.minInvocations ?? 0;\n this.maxInvocations = options.maxInvocations ?? Infinity;\n this.forceAtStepValue = options.forceAtStep;\n this.onlySuccessInvocations = options.onlySuccessInvocations ?? true;\n this.consecutiveAllowedValue = options.consecutiveAllowed ?? true;\n this.customChecks = options.customChecks ?? [];\n this.forcePreventStop = options.forcePreventStop ?? true;\n this.reason = options.reason;\n\n this.checkInvariant();\n }\n\n protected checkInvariant(): void {\n if (this.minInvocations < 0) {\n throw new ValueError(\"The 'minInvocations' argument must be non negative!\");\n }\n\n if (this.maxInvocations < 0) {\n throw new ValueError(\"The 'maxInvocations' argument must be non negative!\");\n }\n\n if (this.minInvocations > this.maxInvocations) {\n throw new ValueError(\n \"The 'minInvocations' argument must be less than or equal to 'maxInvocations'!\",\n );\n }\n\n const sourceName = extractTargetName(this.source);\n if (this.before.has(this.source)) {\n throw new ValueError(`Referencing self in 'before' is not allowed (${sourceName})!`);\n }\n\n if (this.forceAfterSet.has(this.source)) {\n throw new ValueError(`Referencing self in 'forceAfter' is not allowed (${sourceName})!`);\n }\n\n const beforeAfterIntersection = new Set([...this.before].filter((x) => this.after.has(x)));\n if (beforeAfterIntersection.size > 0) {\n throw new ValueError(\n `Tool specified as 'before' and 'after' at the same time: ${Array.from(beforeAfterIntersection).join(\", \")}!`,\n );\n }\n\n const beforeForceAfterIntersection = new Set(\n [...this.before].filter((x) => this.forceAfterSet.has(x)),\n );\n if (beforeForceAfterIntersection.size > 0) {\n throw new ValueError(\n `Tool specified as 'before' and 'forceAfter' at the same time: ${Array.from(beforeForceAfterIntersection).join(\", \")}!`,\n );\n }\n\n if (this.forceAtStepValue !== undefined && this.forceAtStepValue < 1) {\n throw new ValueError(\"The 'forceAtStep' argument must be >= 1!\");\n }\n }\n\n async init(tools: AnyTool[], ctx: RunContext<any>): Promise<void> {\n await super.init(tools, ctx);\n\n const allTargets = new Set([...this.before, ...this.after, ...this.forceAfterSet, this.source]);\n assertAllRulesFound(allTargets, tools);\n\n for (const tool of tools) {\n if (targetSeenIn(tool, this.source)) {\n if (this.sourceTool && this.sourceTool !== tool) {\n throw new ValueError(\n `More than one occurrence of ${extractTargetName(this.source)} has been found!`,\n );\n }\n this.sourceTool = tool;\n }\n }\n\n if (!this.sourceTool) {\n throw new ValueError(`Source tool ${extractTargetName(this.source)} was not found!`);\n }\n\n if (targetSeenIn(this.sourceTool, this.before)) {\n throw new ValueError(`Referencing self in 'before' is not allowed: ${this.sourceTool.name}!`);\n }\n\n if (this.consecutiveAllowedValue && targetSeenIn(this.sourceTool, this.forceAfterSet)) {\n throw new ValueError(\n `Referencing self in 'forceAfter' is not allowed: ${this.sourceTool.name}. ` +\n `It would prevent an infinite loop. Consider setting 'consecutiveAllowed' to false.`,\n );\n }\n }\n\n reset(): this {\n this.before.clear();\n this.after.clear();\n this.forceAfterSet.clear();\n return this;\n }\n\n async _run(state: RequirementAgentRunState, _: RunContext<typeof this>): Promise<Rule[]> {\n const sourceTool = this.sourceTool;\n if (!sourceTool) {\n throw new RequirementError(\"Source was not found!\", this);\n }\n\n // Get steps from state (assuming state has steps property)\n const steps = this.onlySuccessInvocations\n ? state.steps.filter((step) => !step.error)\n : state.steps;\n\n const lastStepTool = steps.at(-1)?.tool;\n\n const invocations = steps.filter((step) => step.tool === sourceTool).length;\n\n const resolve = (allowed: boolean): Rule[] => {\n const currentStep = steps.length + 1;\n if (!allowed && this.forceAtStepValue === currentStep) {\n throw new RequirementError(\n `Tool '${sourceTool.name}' cannot be executed at step ${this.forceAtStepValue} ` +\n `because it has not met all requirements.`,\n this,\n );\n }\n\n const forced = allowed\n ? Boolean(\n targetSeenIn(lastStepTool, this.forceAfterSet) || this.forceAtStepValue === currentStep,\n )\n : false;\n\n return [\n {\n target: sourceTool.name,\n allowed,\n forced,\n hidden: false,\n preventStop: this.minInvocations > invocations || (forced && this.forcePreventStop),\n reason: !allowed ? this.reason : undefined,\n },\n ];\n };\n\n // Check consecutive constraint\n if (!this.consecutiveAllowedValue && sourceTool === lastStepTool) {\n return resolve(false);\n }\n\n // Check max invocations\n if (invocations >= this.maxInvocations) {\n return resolve(false);\n }\n\n // Check after/before constraints\n if (this.after.size > 0) {\n const stepsAsToolCalls = steps.map((step) => step.tool).filter(isTruthy);\n const afterToolsRemaining = new Set(this.after);\n\n for (const stepTool of stepsAsToolCalls) {\n if (targetSeenIn(stepTool, this.forceAfterSet)) {\n return resolve(false);\n }\n\n const matcher = targetSeenIn(stepTool as any, this.after);\n if (matcher) {\n afterToolsRemaining.delete(matcher);\n }\n }\n\n if (afterToolsRemaining.size > 0) {\n return resolve(false);\n }\n }\n\n // Check custom checks\n for (const check of this.customChecks) {\n if (!check(state)) {\n return resolve(false);\n }\n }\n\n return resolve(true);\n }\n\n async clone(): Promise<this> {\n const instance = await super.clone();\n instance.before = new Set(this.before);\n instance.after = new Set(this.after);\n instance.forceAfterSet = new Set(this.forceAfterSet);\n instance.minInvocations = this.minInvocations;\n instance.maxInvocations = this.maxInvocations;\n instance.customChecks = [...this.customChecks];\n instance.onlySuccessInvocations = this.onlySuccessInvocations;\n instance.forceAtStepValue = this.forceAtStepValue;\n instance.consecutiveAllowedValue = this.consecutiveAllowedValue;\n instance.source = this.source;\n instance.sourceTool = this.sourceTool;\n instance.forcePreventStop = this.forcePreventStop;\n instance.reason = this.reason;\n return instance;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/agents/requirement/requirements/requirement.ts"],"names":["Requirement","name","state","enabled","middlewares","_priority","priority","value","ValueError","emitter","Emitter","root","child","namespace","toCamelCase","creator","run","RunContext","enter","signal","undefined","params","context","_run","init","tools","_","emit","clone","instance","Object","create","getPrototypeOf","enumerable","RequirementError","FrameworkError","message","requirement","cause","isFatal","isRetryable"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAwBO,MAAeA,WAAAA,CAAAA;AAAAA,EAAAA;;;AACbC,EAAAA,IAAAA;AACAC,EAAAA,KAAAA,GAA6B,EAAC;EAC9BC,OAAAA,GAAU,IAAA;AACVC,EAAAA,WAAAA,GAA6C,EAAA;EAE1CC,SAAAA,GAAY,EAAA;AAEtB,EAAA,WAAA,CAAYJ,IAAAA,EAAe;AACzB,IAAA,IAAA,CAAKA,IAAAA,GAAOA,IAAAA,IAAQ,IAAA,CAAK,WAAA,CAAYA,IAAAA;AACvC;AAEA,EAAA,IAAIK,QAAAA,GAAmB;AACrB,IAAA,OAAO,IAAA,CAAKD,SAAAA;AACd;AAEA,EAAA,IAAIC,SAASC,KAAAA,EAAe;AAC1B,IAAA,IAAIA,SAAS,CAAA,EAAG;AACd,MAAA,MAAM,IAAIC,sBAAW,sCAAA,CAAA;AACvB;AACA,IAAA,IAAA,CAAKH,SAAAA,GAAYE,KAAAA;AACnB;AAEA,EAAA,IACIE,OAAAA,GAAyC;AAC3C,IAAA,OAAOC,mBAAAA,CAAQC,KAAKC,KAAAA,CAAM;MACxBC,SAAAA,EAAW;AAAC,QAAA,aAAA;AAAeC,QAAAA,kBAAAA,CAAY,KAAKb,IAAI;;MAChDc,OAAAA,EAAS;KACX,CAAA;AACF;AAEAC,EAAAA,GAAAA,CAAId,KAAAA,EAAiC;AACnC,IAAA,OAAOe,sBAAAA,CAAWC,MAChB,IAAA,EACA;MAAEC,MAAAA,EAAQC,MAAAA;MAAWC,MAAAA,EAAQ;AAACnB,QAAAA;;AAAgB,KAAA,EAC9C,OAAOoB,OAAAA,KAAAA;AACL,MAAA,OAAO,MAAM,IAAA,CAAKC,IAAAA,CAAKrB,KAAAA,EAAOoB,OAAAA,CAAAA;KAChC,CAAA;AAEJ;EAIA,MAAME,IAAAA,CAAKC,OAAkBC,CAAAA,EAAmC;AAC9D,IAAA,MAAM,IAAA,CAAKjB,OAAAA,CAAQkB,IAAAA,CAAK,MAAA,EAAQ;AAAEF,MAAAA;KAAM,CAAA;AAC1C;AAEA,EAAA,MAAMG,KAAAA,GAAuB;AAC3B,IAAA,MAAMC,WAAWC,MAAAA,CAAOC,MAAAA,CAAOD,MAAAA,CAAOE,cAAAA,CAAe,IAAI,CAAA,CAAA;AACzDH,IAAAA,QAAAA,CAAS5B,OAAO,IAAA,CAAKA,IAAAA;AACrB4B,IAAAA,QAAAA,CAASvB,WAAW,IAAA,CAAKA,QAAAA;AACzBuB,IAAAA,QAAAA,CAAS1B,UAAU,IAAA,CAAKA,OAAAA;AACxB0B,IAAAA,QAAAA,CAAS3B,KAAAA,GAAQ;AAAE,MAAA,GAAG,IAAA,CAAKA;AAAM,KAAA;AACjC2B,IAAAA,QAAAA,CAASzB,WAAAA,GAAc;SAAI,IAAA,CAAKA;;AAChC,IAAA,OAAOyB,QAAAA;AACT;AACF;;;IAjCWI,UAAAA,EAAY;;;;;AAoChB,MAAMC,yBAAyBC,yBAAAA,CAAAA;AAAAA,EAAAA;;;;EACpC,WAAA,CACEC,OAAAA,EACgBC,WAAAA,EAChBC,KAAAA,EACAhB,OAAAA,EACA;AACA,IAAA,KAAA,CAAMc,SAASE,KAAAA,GAAQ;AAACA,MAAAA;QAASlB,MAAAA,EAAW;MAC1CmB,OAAAA,EAAS,IAAA;MACTC,WAAAA,EAAa,KAAA;AACblB,MAAAA;KACF,CAAA,EAAA,KARgBe,WAAAA,GAAAA,WAAAA;AASlB;AACF","file":"requirement.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AnyTool } from \"@/tools/base.js\";\nimport { MiddlewareType, RunContext } from \"@/context.js\";\nimport { Callback, Emitter } from \"@/emitter/emitter.js\";\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { toCamelCase } from \"remeda\";\nimport type { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\n\n// Rule definition\nexport interface Rule {\n target: string;\n allowed: boolean;\n reason?: string;\n preventStop: boolean;\n forced: boolean;\n hidden: boolean;\n}\n\n// Base Requirement class\nexport abstract class Requirement {\n public name: string;\n public state: Record<string, any> = {};\n public enabled = true;\n public middlewares: MiddlewareType<typeof this>[] = [];\n\n protected _priority = 10;\n\n constructor(name?: string) {\n this.name = name || this.constructor.name;\n }\n\n get priority(): number {\n return this._priority;\n }\n\n set priority(value: number) {\n if (value <= 0) {\n throw new ValueError(\"Priority must be a positive integer.\");\n }\n this._priority = value;\n }\n\n @Cache({ enumerable: false })\n get emitter(): Emitter<RequirementCallbacks> {\n return Emitter.root.child({\n namespace: [\"requirement\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n run(state: RequirementAgentRunState) {\n return RunContext.enter(\n this,\n { signal: undefined, params: [state] as const },\n async (context) => {\n return await this._run(state, context);\n },\n );\n }\n\n abstract _run(state: RequirementAgentRunState, _: RunContext<typeof this>): Promise<Rule[]>;\n\n async init(tools: AnyTool[], _: RunContext<any>): Promise<void> {\n await this.emitter.emit(\"init\", { tools });\n }\n\n async clone(): Promise<this> {\n const instance = Object.create(Object.getPrototypeOf(this));\n instance.name = this.name;\n instance.priority = this.priority;\n instance.enabled = this.enabled;\n instance.state = { ...this.state };\n instance.middlewares = [...this.middlewares];\n return instance;\n }\n}\n\n// Requirement error\nexport class RequirementError extends FrameworkError {\n constructor(\n message: string,\n public readonly requirement?: Requirement,\n cause?: Error,\n context?: Record<string, any>,\n ) {\n super(message, cause ? [cause] : undefined, {\n isFatal: true,\n isRetryable: false,\n context,\n });\n }\n}\n\nexport interface RequirementCallbacks {\n init: Callback<{ tools: AnyTool[] }>;\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/agents/requirement/requirements/requirement.ts"],"names":["Requirement","name","state","enabled","middlewares","_priority","priority","value","ValueError","emitter","Emitter","root","child","namespace","toCamelCase","creator","run","RunContext","enter","signal","undefined","params","context","_run","init","tools","_","emit","clone","instance","Object","create","getPrototypeOf","enumerable","RequirementError","FrameworkError","message","requirement","cause","isFatal","isRetryable"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAwBO,MAAeA,WAAAA,CAAAA;AAAAA,EAAAA;;;AACbC,EAAAA,IAAAA;AACAC,EAAAA,KAAAA,GAA6B,EAAC;EAC9BC,OAAAA,GAAU,IAAA;AACVC,EAAAA,WAAAA,GAA6C,EAAA;EAE1CC,SAAAA,GAAY,EAAA;AAEtB,EAAA,WAAA,CAAYJ,IAAAA,EAAe;AACzB,IAAA,IAAA,CAAKA,IAAAA,GAAOA,IAAAA,IAAQ,IAAA,CAAK,WAAA,CAAYA,IAAAA;AACvC,EAAA;AAEA,EAAA,IAAIK,QAAAA,GAAmB;AACrB,IAAA,OAAO,IAAA,CAAKD,SAAAA;AACd,EAAA;AAEA,EAAA,IAAIC,SAASC,KAAAA,EAAe;AAC1B,IAAA,IAAIA,SAAS,CAAA,EAAG;AACd,MAAA,MAAM,IAAIC,sBAAW,sCAAA,CAAA;AACvB,IAAA;AACA,IAAA,IAAA,CAAKH,SAAAA,GAAYE,KAAAA;AACnB,EAAA;AAEA,EAAA,IACIE,OAAAA,GAAyC;AAC3C,IAAA,OAAOC,mBAAAA,CAAQC,KAAKC,KAAAA,CAAM;MACxBC,SAAAA,EAAW;AAAC,QAAA,aAAA;AAAeC,QAAAA,kBAAAA,CAAY,KAAKb,IAAI;;MAChDc,OAAAA,EAAS;KACX,CAAA;AACF,EAAA;AAEAC,EAAAA,GAAAA,CAAId,KAAAA,EAAiC;AACnC,IAAA,OAAOe,sBAAAA,CAAWC,MAChB,IAAA,EACA;MAAEC,MAAAA,EAAQC,MAAAA;MAAWC,MAAAA,EAAQ;AAACnB,QAAAA;;AAAgB,KAAA,EAC9C,OAAOoB,OAAAA,KAAAA;AACL,MAAA,OAAO,MAAM,IAAA,CAAKC,IAAAA,CAAKrB,KAAAA,EAAOoB,OAAAA,CAAAA;IAChC,CAAA,CAAA;AAEJ,EAAA;EAIA,MAAME,IAAAA,CAAKC,OAAkBC,CAAAA,EAAmC;AAC9D,IAAA,MAAM,IAAA,CAAKjB,OAAAA,CAAQkB,IAAAA,CAAK,MAAA,EAAQ;AAAEF,MAAAA;KAAM,CAAA;AAC1C,EAAA;AAEA,EAAA,MAAMG,KAAAA,GAAuB;AAC3B,IAAA,MAAMC,WAAWC,MAAAA,CAAOC,MAAAA,CAAOD,MAAAA,CAAOE,cAAAA,CAAe,IAAI,CAAA,CAAA;AACzDH,IAAAA,QAAAA,CAAS5B,OAAO,IAAA,CAAKA,IAAAA;AACrB4B,IAAAA,QAAAA,CAASvB,WAAW,IAAA,CAAKA,QAAAA;AACzBuB,IAAAA,QAAAA,CAAS1B,UAAU,IAAA,CAAKA,OAAAA;AACxB0B,IAAAA,QAAAA,CAAS3B,KAAAA,GAAQ;AAAE,MAAA,GAAG,IAAA,CAAKA;AAAM,KAAA;AACjC2B,IAAAA,QAAAA,CAASzB,WAAAA,GAAc;SAAI,IAAA,CAAKA;;AAChC,IAAA,OAAOyB,QAAAA;AACT,EAAA;AACF;;;IAjCWI,UAAAA,EAAY;;;;;AAoChB,MAAMC,yBAAyBC,yBAAAA,CAAAA;AAAAA,EAAAA;;;;EACpC,WAAA,CACEC,OAAAA,EACgBC,WAAAA,EAChBC,KAAAA,EACAhB,OAAAA,EACA;AACA,IAAA,KAAA,CAAMc,SAASE,KAAAA,GAAQ;AAACA,MAAAA;QAASlB,MAAAA,EAAW;MAC1CmB,OAAAA,EAAS,IAAA;MACTC,WAAAA,EAAa,KAAA;AACblB,MAAAA;KACF,CAAA,EAAA,KARgBe,WAAAA,GAAAA,WAAAA;AASlB,EAAA;AACF","file":"requirement.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AnyTool } from \"@/tools/base.js\";\nimport { MiddlewareType, RunContext } from \"@/context.js\";\nimport { Callback, Emitter } from \"@/emitter/emitter.js\";\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { toCamelCase } from \"remeda\";\nimport type { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\n\n// Rule definition\nexport interface Rule {\n target: string;\n allowed: boolean;\n reason?: string;\n preventStop: boolean;\n forced: boolean;\n hidden: boolean;\n}\n\n// Base Requirement class\nexport abstract class Requirement {\n public name: string;\n public state: Record<string, any> = {};\n public enabled = true;\n public middlewares: MiddlewareType<typeof this>[] = [];\n\n protected _priority = 10;\n\n constructor(name?: string) {\n this.name = name || this.constructor.name;\n }\n\n get priority(): number {\n return this._priority;\n }\n\n set priority(value: number) {\n if (value <= 0) {\n throw new ValueError(\"Priority must be a positive integer.\");\n }\n this._priority = value;\n }\n\n @Cache({ enumerable: false })\n get emitter(): Emitter<RequirementCallbacks> {\n return Emitter.root.child({\n namespace: [\"requirement\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n run(state: RequirementAgentRunState) {\n return RunContext.enter(\n this,\n { signal: undefined, params: [state] as const },\n async (context) => {\n return await this._run(state, context);\n },\n );\n }\n\n abstract _run(state: RequirementAgentRunState, _: RunContext<typeof this>): Promise<Rule[]>;\n\n async init(tools: AnyTool[], _: RunContext<any>): Promise<void> {\n await this.emitter.emit(\"init\", { tools });\n }\n\n async clone(): Promise<this> {\n const instance = Object.create(Object.getPrototypeOf(this));\n instance.name = this.name;\n instance.priority = this.priority;\n instance.enabled = this.enabled;\n instance.state = { ...this.state };\n instance.middlewares = [...this.middlewares];\n return instance;\n }\n}\n\n// Requirement error\nexport class RequirementError extends FrameworkError {\n constructor(\n message: string,\n public readonly requirement?: Requirement,\n cause?: Error,\n context?: Record<string, any>,\n ) {\n super(message, cause ? [cause] : undefined, {\n isFatal: true,\n isRetryable: false,\n context,\n });\n }\n}\n\nexport interface RequirementCallbacks {\n init: Callback<{ tools: AnyTool[] }>;\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import { MiddlewareType, Run, RunContext } from '../../../context.cjs';
2
2
  import { AnyTool } from '../../../tools/base.cjs';
3
- import { E as Emitter, C as Callback } from '../../../emitter-UkIkNrek.cjs';
3
+ import { E as Emitter, C as Callback } from '../../../emitter-D4OcelZ9.cjs';
4
4
  import { FrameworkError } from '../../../errors.cjs';
5
- import { R as RequirementAgentRunState } from '../../../types-YoNQSxQH.cjs';
5
+ import { R as RequirementAgentRunState } from '../../../types-BNsa3W7Z.cjs';
6
6
  import '../../../internals/serializable.cjs';
7
7
  import '../../../internals/types.cjs';
8
8
  import '../../../internals/helpers/guards.cjs';
@@ -17,11 +17,11 @@ import '../../../memory/base.cjs';
17
17
  import '../../../backend/message.cjs';
18
18
  import 'ai';
19
19
  import '../../../template.cjs';
20
- import '../../../chat-DaqV3woF.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-BqzN2QwB.cjs';
24
+ import '../../../base-s3ioVIE9.cjs';
25
25
 
26
26
  interface Rule {
27
27
  target: string;
@@ -1,8 +1,8 @@
1
1
  import { MiddlewareType, Run, RunContext } from '../../../context.js';
2
2
  import { AnyTool } from '../../../tools/base.js';
3
- import { E as Emitter, C as Callback } from '../../../emitter-CL56qab4.js';
3
+ import { E as Emitter, C as Callback } from '../../../emitter-kHxkUxco.js';
4
4
  import { FrameworkError } from '../../../errors.js';
5
- import { R as RequirementAgentRunState } from '../../../types-YT-WdK3m.js';
5
+ import { R as RequirementAgentRunState } from '../../../types-DYtzF6ya.js';
6
6
  import '../../../internals/serializable.js';
7
7
  import '../../../internals/types.js';
8
8
  import '../../../internals/helpers/guards.js';
@@ -17,11 +17,11 @@ import '../../../memory/base.js';
17
17
  import '../../../backend/message.js';
18
18
  import 'ai';
19
19
  import '../../../template.js';
20
- import '../../../chat-DTxmaKP0.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-BfhNzUYf.js';
24
+ import '../../../base-BjzyQ8k6.js';
25
25
 
26
26
  interface Rule {
27
27
  target: string;