beeai-framework 0.1.22 → 0.1.23

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 (267) hide show
  1. package/dist/adapters/a2a/agents/agent.d.cts +2 -2
  2. package/dist/adapters/a2a/agents/agent.d.ts +2 -2
  3. package/dist/adapters/a2a/agents/events.d.cts +1 -1
  4. package/dist/adapters/a2a/agents/events.d.ts +1 -1
  5. package/dist/adapters/a2a/agents/types.d.cts +2 -2
  6. package/dist/adapters/a2a/agents/types.d.ts +2 -2
  7. package/dist/adapters/a2a/serve/agent_executor.d.cts +3 -3
  8. package/dist/adapters/a2a/serve/agent_executor.d.ts +3 -3
  9. package/dist/adapters/a2a/serve/server.d.cts +2 -2
  10. package/dist/adapters/a2a/serve/server.d.ts +2 -2
  11. package/dist/adapters/acp/agents/agent.d.cts +2 -2
  12. package/dist/adapters/acp/agents/agent.d.ts +2 -2
  13. package/dist/adapters/acp/agents/events.d.cts +1 -1
  14. package/dist/adapters/acp/agents/events.d.ts +1 -1
  15. package/dist/adapters/agentstack/agents/agent.d.cts +2 -2
  16. package/dist/adapters/agentstack/agents/agent.d.ts +2 -2
  17. package/dist/adapters/agentstack/agents/events.d.cts +1 -1
  18. package/dist/adapters/agentstack/agents/events.d.ts +1 -1
  19. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +2 -2
  20. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +2 -2
  21. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +2 -2
  22. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +2 -2
  23. package/dist/adapters/anthropic/backend/chat.d.cts +2 -2
  24. package/dist/adapters/anthropic/backend/chat.d.ts +2 -2
  25. package/dist/adapters/anthropic/backend/embedding.d.cts +2 -2
  26. package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
  27. package/dist/adapters/azure-openai/backend/chat.d.cts +2 -2
  28. package/dist/adapters/azure-openai/backend/chat.d.ts +2 -2
  29. package/dist/adapters/azure-openai/backend/embedding.d.cts +2 -2
  30. package/dist/adapters/azure-openai/backend/embedding.d.ts +2 -2
  31. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  32. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  33. package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
  34. package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
  35. package/dist/adapters/google-vertex/backend/chat.d.cts +2 -2
  36. package/dist/adapters/google-vertex/backend/chat.d.ts +2 -2
  37. package/dist/adapters/google-vertex/backend/embedding.d.cts +2 -2
  38. package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
  39. package/dist/adapters/groq/backend/chat.d.cts +2 -2
  40. package/dist/adapters/groq/backend/chat.d.ts +2 -2
  41. package/dist/adapters/groq/backend/embedding.d.cts +2 -2
  42. package/dist/adapters/groq/backend/embedding.d.ts +2 -2
  43. package/dist/adapters/langchain/backend/chat.d.cts +2 -2
  44. package/dist/adapters/langchain/backend/chat.d.ts +2 -2
  45. package/dist/adapters/langchain/backend/embedding.d.cts +2 -2
  46. package/dist/adapters/langchain/backend/embedding.d.ts +2 -2
  47. package/dist/adapters/langchain/tools.d.cts +1 -1
  48. package/dist/adapters/langchain/tools.d.ts +1 -1
  49. package/dist/adapters/ollama/backend/chat.cjs +1 -2
  50. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  51. package/dist/adapters/ollama/backend/chat.d.cts +2 -3
  52. package/dist/adapters/ollama/backend/chat.d.ts +2 -3
  53. package/dist/adapters/ollama/backend/chat.js +1 -2
  54. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  55. package/dist/adapters/ollama/backend/embedding.d.cts +2 -2
  56. package/dist/adapters/ollama/backend/embedding.d.ts +2 -2
  57. package/dist/adapters/openai/backend/chat.d.cts +2 -2
  58. package/dist/adapters/openai/backend/chat.d.ts +2 -2
  59. package/dist/adapters/openai/backend/embedding.d.cts +2 -2
  60. package/dist/adapters/openai/backend/embedding.d.ts +2 -2
  61. package/dist/adapters/vercel/backend/chat.cjs +77 -17
  62. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  63. package/dist/adapters/vercel/backend/chat.d.cts +2 -2
  64. package/dist/adapters/vercel/backend/chat.d.ts +2 -2
  65. package/dist/adapters/vercel/backend/chat.js +77 -17
  66. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  67. package/dist/adapters/vercel/backend/embedding.d.cts +2 -2
  68. package/dist/adapters/vercel/backend/embedding.d.ts +2 -2
  69. package/dist/adapters/vercel/backend/utils.cjs +17 -0
  70. package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
  71. package/dist/adapters/vercel/backend/utils.d.cts +5 -4
  72. package/dist/adapters/vercel/backend/utils.d.ts +5 -4
  73. package/dist/adapters/vercel/backend/utils.js +17 -1
  74. package/dist/adapters/vercel/backend/utils.js.map +1 -1
  75. package/dist/adapters/watsonx/backend/chat.cjs +7 -8
  76. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  77. package/dist/adapters/watsonx/backend/chat.d.cts +4 -4
  78. package/dist/adapters/watsonx/backend/chat.d.ts +4 -4
  79. package/dist/adapters/watsonx/backend/chat.js +7 -8
  80. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  81. package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
  82. package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
  83. package/dist/adapters/xai/backend/chat.d.cts +2 -2
  84. package/dist/adapters/xai/backend/chat.d.ts +2 -2
  85. package/dist/{agent-BMfyig7X.d.cts → agent-BVuc9Nfn.d.cts} +3 -3
  86. package/dist/{agent-Dxw8AGWb.d.ts → agent-Cuy8Q4gw.d.ts} +3 -3
  87. package/dist/agents/base.d.cts +2 -2
  88. package/dist/agents/base.d.ts +2 -2
  89. package/dist/agents/experimental/replan/agent.d.cts +3 -3
  90. package/dist/agents/experimental/replan/agent.d.ts +3 -3
  91. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  92. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  93. package/dist/agents/experimental/streamlit/agent.d.cts +3 -3
  94. package/dist/agents/experimental/streamlit/agent.d.ts +3 -3
  95. package/dist/agents/react/agent.d.cts +4 -4
  96. package/dist/agents/react/agent.d.ts +4 -4
  97. package/dist/agents/react/prompts.d.cts +1 -1
  98. package/dist/agents/react/prompts.d.ts +1 -1
  99. package/dist/agents/react/runners/base.d.cts +4 -4
  100. package/dist/agents/react/runners/base.d.ts +4 -4
  101. package/dist/agents/react/runners/deep-think/prompts.d.cts +1 -1
  102. package/dist/agents/react/runners/deep-think/prompts.d.ts +1 -1
  103. package/dist/agents/react/runners/deep-think/runner.d.cts +5 -5
  104. package/dist/agents/react/runners/deep-think/runner.d.ts +5 -5
  105. package/dist/agents/react/runners/default/runner.d.cts +6 -6
  106. package/dist/agents/react/runners/default/runner.d.ts +6 -6
  107. package/dist/agents/react/runners/granite/prompts.d.cts +1 -1
  108. package/dist/agents/react/runners/granite/prompts.d.ts +1 -1
  109. package/dist/agents/react/runners/granite/runner.d.cts +5 -5
  110. package/dist/agents/react/runners/granite/runner.d.ts +5 -5
  111. package/dist/agents/react/types.d.cts +2 -2
  112. package/dist/agents/react/types.d.ts +2 -2
  113. package/dist/agents/requirement/agent.cjs +1 -1
  114. package/dist/agents/requirement/agent.cjs.map +1 -1
  115. package/dist/agents/requirement/agent.d.cts +4 -4
  116. package/dist/agents/requirement/agent.d.ts +4 -4
  117. package/dist/agents/requirement/agent.js +1 -1
  118. package/dist/agents/requirement/agent.js.map +1 -1
  119. package/dist/agents/requirement/prompts.d.cts +2 -2
  120. package/dist/agents/requirement/prompts.d.ts +2 -2
  121. package/dist/agents/requirement/requirements/conditional.d.cts +4 -4
  122. package/dist/agents/requirement/requirements/conditional.d.ts +4 -4
  123. package/dist/agents/requirement/requirements/requirement.d.cts +4 -4
  124. package/dist/agents/requirement/requirements/requirement.d.ts +4 -4
  125. package/dist/agents/requirement/requirements/utils.d.cts +1 -1
  126. package/dist/agents/requirement/requirements/utils.d.ts +1 -1
  127. package/dist/agents/requirement/runner.cjs +31 -15
  128. package/dist/agents/requirement/runner.cjs.map +1 -1
  129. package/dist/agents/requirement/runner.d.cts +13 -15
  130. package/dist/agents/requirement/runner.d.ts +13 -15
  131. package/dist/agents/requirement/runner.js +31 -15
  132. package/dist/agents/requirement/runner.js.map +1 -1
  133. package/dist/agents/requirement/types.d.cts +4 -4
  134. package/dist/agents/requirement/types.d.ts +4 -4
  135. package/dist/agents/requirement/utils/llm.d.cts +4 -4
  136. package/dist/agents/requirement/utils/llm.d.ts +4 -4
  137. package/dist/agents/requirement/utils/tool.cjs +2 -1
  138. package/dist/agents/requirement/utils/tool.cjs.map +1 -1
  139. package/dist/agents/requirement/utils/tool.d.cts +4 -4
  140. package/dist/agents/requirement/utils/tool.d.ts +4 -4
  141. package/dist/agents/requirement/utils/tool.js +2 -1
  142. package/dist/agents/requirement/utils/tool.js.map +1 -1
  143. package/dist/agents/toolCalling/agent.cjs +4 -1
  144. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  145. package/dist/agents/toolCalling/agent.d.cts +6 -3
  146. package/dist/agents/toolCalling/agent.d.ts +6 -3
  147. package/dist/agents/toolCalling/agent.js +5 -2
  148. package/dist/agents/toolCalling/agent.js.map +1 -1
  149. package/dist/agents/toolCalling/types.d.cts +1 -1
  150. package/dist/agents/toolCalling/types.d.ts +1 -1
  151. package/dist/agents/types.d.cts +2 -2
  152. package/dist/agents/types.d.ts +2 -2
  153. package/dist/backend/backend.d.cts +2 -2
  154. package/dist/backend/backend.d.ts +2 -2
  155. package/dist/backend/chat.cjs +122 -4
  156. package/dist/backend/chat.cjs.map +1 -1
  157. package/dist/backend/chat.d.cts +3 -3
  158. package/dist/backend/chat.d.ts +3 -3
  159. package/dist/backend/chat.js +123 -5
  160. package/dist/backend/chat.js.map +1 -1
  161. package/dist/backend/core.d.cts +3 -3
  162. package/dist/backend/core.d.ts +3 -3
  163. package/dist/backend/embedding.d.cts +2 -2
  164. package/dist/backend/embedding.d.ts +2 -2
  165. package/dist/backend/message.cjs +20 -13
  166. package/dist/backend/message.cjs.map +1 -1
  167. package/dist/backend/message.d.cts +7 -3
  168. package/dist/backend/message.d.ts +7 -3
  169. package/dist/backend/message.js +20 -13
  170. package/dist/backend/message.js.map +1 -1
  171. package/dist/backend/utils.d.cts +2 -2
  172. package/dist/backend/utils.d.ts +2 -2
  173. package/dist/{base-BurRTBA7.d.ts → base-CyFx7BRL.d.ts} +2 -2
  174. package/dist/{base-v-PYIq5G.d.cts → base-XfWeXQ-S.d.cts} +2 -2
  175. package/dist/{chat-DB_cf15S.d.cts → chat-BOb9n7AJ.d.cts} +7 -8
  176. package/dist/{chat-BbCYMAdE.d.ts → chat-DrqwUgD8.d.ts} +7 -8
  177. package/dist/context.d.cts +1 -1
  178. package/dist/context.d.ts +1 -1
  179. package/dist/emitter/emitter.cjs +2 -1
  180. package/dist/emitter/emitter.cjs.map +1 -1
  181. package/dist/emitter/emitter.d.cts +1 -1
  182. package/dist/emitter/emitter.d.ts +1 -1
  183. package/dist/emitter/emitter.js +2 -1
  184. package/dist/emitter/emitter.js.map +1 -1
  185. package/dist/emitter/types.d.cts +1 -1
  186. package/dist/emitter/types.d.ts +1 -1
  187. package/dist/{emitter-CN7I4uSV.d.ts → emitter-36-9MnvA.d.ts} +2 -2
  188. package/dist/{emitter-CGKd_-kK.d.cts → emitter-jN55XZZq.d.cts} +2 -2
  189. package/dist/index.d.cts +3 -3
  190. package/dist/index.d.ts +3 -3
  191. package/dist/internals/fetcher.d.cts +1 -1
  192. package/dist/internals/fetcher.d.ts +1 -1
  193. package/dist/memory/summarizeMemory.d.cts +2 -2
  194. package/dist/memory/summarizeMemory.d.ts +2 -2
  195. package/dist/middleware/streamToolCall.cjs +132 -0
  196. package/dist/middleware/streamToolCall.cjs.map +1 -0
  197. package/dist/middleware/streamToolCall.d.cts +94 -0
  198. package/dist/middleware/streamToolCall.d.ts +94 -0
  199. package/dist/middleware/streamToolCall.js +130 -0
  200. package/dist/middleware/streamToolCall.js.map +1 -0
  201. package/dist/middleware/trajectory.cjs +14 -5
  202. package/dist/middleware/trajectory.cjs.map +1 -1
  203. package/dist/middleware/trajectory.d.cts +1 -1
  204. package/dist/middleware/trajectory.d.ts +1 -1
  205. package/dist/middleware/trajectory.js +13 -4
  206. package/dist/middleware/trajectory.js.map +1 -1
  207. package/dist/parsers/linePrefix.d.cts +1 -1
  208. package/dist/parsers/linePrefix.d.ts +1 -1
  209. package/dist/tools/arxiv.d.cts +1 -1
  210. package/dist/tools/arxiv.d.ts +1 -1
  211. package/dist/tools/base.d.cts +1 -1
  212. package/dist/tools/base.d.ts +1 -1
  213. package/dist/tools/calculator.d.cts +1 -1
  214. package/dist/tools/calculator.d.ts +1 -1
  215. package/dist/tools/custom.d.cts +2 -2
  216. package/dist/tools/custom.d.ts +2 -2
  217. package/dist/tools/database/elasticsearch.d.cts +1 -1
  218. package/dist/tools/database/elasticsearch.d.ts +1 -1
  219. package/dist/tools/database/milvus.d.cts +3 -3
  220. package/dist/tools/database/milvus.d.ts +3 -3
  221. package/dist/tools/database/qdrant.d.cts +1 -1
  222. package/dist/tools/database/qdrant.d.ts +1 -1
  223. package/dist/tools/database/sql.d.cts +1 -1
  224. package/dist/tools/database/sql.d.ts +1 -1
  225. package/dist/tools/handoff.cjs +68 -0
  226. package/dist/tools/handoff.cjs.map +1 -0
  227. package/dist/tools/handoff.d.cts +47 -0
  228. package/dist/tools/handoff.d.ts +47 -0
  229. package/dist/tools/handoff.js +66 -0
  230. package/dist/tools/handoff.js.map +1 -0
  231. package/dist/tools/llm.d.cts +2 -2
  232. package/dist/tools/llm.d.ts +2 -2
  233. package/dist/tools/mcp.d.cts +1 -1
  234. package/dist/tools/mcp.d.ts +1 -1
  235. package/dist/tools/openapi.d.cts +1 -1
  236. package/dist/tools/openapi.d.ts +1 -1
  237. package/dist/tools/python/output.d.cts +1 -1
  238. package/dist/tools/python/output.d.ts +1 -1
  239. package/dist/tools/python/python.d.cts +2 -2
  240. package/dist/tools/python/python.d.ts +2 -2
  241. package/dist/tools/search/base.d.cts +1 -1
  242. package/dist/tools/search/base.d.ts +1 -1
  243. package/dist/tools/search/duckDuckGoSearch.d.cts +1 -1
  244. package/dist/tools/search/duckDuckGoSearch.d.ts +1 -1
  245. package/dist/tools/search/googleSearch.d.cts +1 -1
  246. package/dist/tools/search/googleSearch.d.ts +1 -1
  247. package/dist/tools/search/searXNGSearch.d.cts +1 -1
  248. package/dist/tools/search/searXNGSearch.d.ts +1 -1
  249. package/dist/tools/search/wikipedia.d.cts +1 -1
  250. package/dist/tools/search/wikipedia.d.ts +1 -1
  251. package/dist/tools/similarity.d.cts +1 -1
  252. package/dist/tools/similarity.d.ts +1 -1
  253. package/dist/tools/think.d.cts +1 -1
  254. package/dist/tools/think.d.ts +1 -1
  255. package/dist/tools/weather/openMeteo.d.cts +1 -1
  256. package/dist/tools/weather/openMeteo.d.ts +1 -1
  257. package/dist/tools/web/webCrawler.d.cts +1 -1
  258. package/dist/tools/web/webCrawler.d.ts +1 -1
  259. package/dist/{types-BXkkbABd.d.ts → types-CJwiMH3u.d.ts} +11 -11
  260. package/dist/{types-Cx6f43du.d.cts → types-W0QttuP_.d.cts} +11 -11
  261. package/dist/version.cjs +1 -1
  262. package/dist/version.js +1 -1
  263. package/dist/workflows/agent.d.cts +3 -3
  264. package/dist/workflows/agent.d.ts +3 -3
  265. package/dist/workflows/workflow.d.cts +1 -1
  266. package/dist/workflows/workflow.d.ts +1 -1
  267. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/agents/requirement/runner.ts"],"names":["TEMP_MESSAGE_KEY","RequirementAgentRunner","state","reasoner","iterationErrorCounter","globalErrorCounter","llm","runConfig","tools","requirements","expectedOutput","toolCallCycleChecker","ctx","forceFinalAnswerAsTool","templates","answer","result","memory","UnconstrainedMemory","steps","iteration","usage","totalTokens","promptTokens","completionTokens","reasoningTokens","cachedPromptTokens","undefined","finalAnswer","FinalAnswerTool","RequirementsReasoner","maxRetriesPerIteration","maxRetriesPerStep","RetryCounter","AgentError","maxRetries","Math","max","totalMaxRetries","incrementIteration","maxIterations","runLLM","request","messages","options","prepareLLMRequest","response","create","mergeTokenUsage","createSystemMessage","system","allowedTools","toolChoice","stream","createFinalAnswerToolCall","fullText","parsed","parseBrokenJson","pair","customSchema","AssistantMessage","type","toolCallId","uuidv4","substring","toolName","name","input","inputSchema","parse","createRequest","extraRules","invokeToolCalls","toolCalls","toolResults","results","Promise","all","map","msg","runTool","toolCall","push","id","output","tool","error","toolError","render","reason","explain","isEmpty","getTextContent","toolNoResult","ToolMessage","value","use","addMessages","addMany","run","update","emitter","emit","runIteration","getToolCalls","length","textMessages","getTextMessages","text","m","join","canStop","finalAnswerToolCall","err","updatedRequest","target","allowed","hidden","forced","preventStop","add","toolCallMsg","register","cycleFound","reset","tempMessages","filter","meta","deleteMany"],"mappings":"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","file":"runner.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { v4 as uuidv4 } from \"uuid\";\nimport { AgentError } from \"@/agents/base.js\";\nimport { ChatModel, ChatModelOutput } from \"@/backend/chat.js\";\nimport { AssistantMessage, Message, ToolMessage } from \"@/backend/message.js\";\nimport { ToolCallPart } from \"ai\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { RetryCounter } from \"@/internals/helpers/counter.js\";\nimport { RunContext } from \"@/context.js\";\nimport {\n RequirementAgentExecutionConfig,\n RequirementAgentRequest,\n RequirementAgentRunState,\n RequirementAgentTemplates,\n} from \"./types.js\";\nimport { Requirement, Rule } from \"./requirements/requirement.js\";\nimport { RequirementsReasoner, createSystemMessage } from \"./utils/llm.js\";\nimport { FinalAnswerTool, runTool } from \"./utils/tool.js\";\nimport { ToolCallChecker } from \"./utils/toolCallChecker.js\";\nimport { z } from \"zod\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { RequirementAgent } from \"@/agents/requirement/agent.js\";\nimport { mergeTokenUsage } from \"@/adapters/vercel/backend/utils.js\";\n\nconst TEMP_MESSAGE_KEY = \"tempMessage\";\n\n/**\n * Runner for RequirementAgent execution\n */\nexport class RequirementAgentRunner {\n protected readonly state: RequirementAgentRunState;\n protected readonly reasoner: RequirementsReasoner;\n protected readonly iterationErrorCounter: RetryCounter;\n protected readonly globalErrorCounter: RetryCounter;\n\n constructor(\n protected readonly llm: ChatModel,\n protected readonly runConfig: RequirementAgentExecutionConfig,\n tools: AnyTool[],\n protected readonly requirements: Requirement[],\n expectedOutput: string | z.ZodSchema | null,\n protected readonly toolCallCycleChecker: ToolCallChecker,\n protected readonly ctx: RunContext<RequirementAgent>,\n protected forceFinalAnswerAsTool: boolean,\n protected readonly templates: RequirementAgentTemplates,\n ) {\n this.state = {\n answer: null,\n result: null,\n memory: new UnconstrainedMemory(),\n steps: [],\n iteration: 0,\n usage: {\n totalTokens: 0,\n promptTokens: 0,\n completionTokens: 0,\n reasoningTokens: 0,\n cachedPromptTokens: undefined,\n },\n };\n\n this.requirements = requirements;\n const finalAnswer = new FinalAnswerTool(expectedOutput, this.state);\n this.reasoner = new RequirementsReasoner(tools, finalAnswer, ctx);\n\n const maxRetriesPerIteration = runConfig.maxRetriesPerStep ?? 0;\n this.iterationErrorCounter = new RetryCounter(maxRetriesPerIteration, AgentError);\n\n const maxRetries = Math.max(maxRetriesPerIteration, runConfig.totalMaxRetries ?? 0);\n this.globalErrorCounter = new RetryCounter(maxRetries, AgentError);\n }\n\n protected incrementIteration(): void {\n this.state.iteration++;\n\n if (this.runConfig.maxIterations && this.state.iteration > this.runConfig.maxIterations) {\n throw new AgentError(\n `Agent was not able to resolve the task in ${this.state.iteration} iterations.`,\n );\n }\n }\n\n protected async runLLM(request: RequirementAgentRequest): Promise<ChatModelOutput> {\n const { messages, options } = await this.prepareLLMRequest(request);\n const response = await this.llm.create({ ...options, messages });\n\n if (response.usage) {\n mergeTokenUsage(this.state.usage, response.usage);\n }\n\n return response;\n }\n\n protected async prepareLLMRequest(request: RequirementAgentRequest) {\n const messages: Message[] = [\n await createSystemMessage(this.templates.system, request),\n ...this.state.memory.messages,\n ];\n\n const options = {\n maxRetries: this.runConfig.maxRetriesPerStep,\n tools: request.allowedTools,\n toolChoice: request.toolChoice,\n stream: false,\n };\n\n return { messages, options };\n }\n\n protected async createFinalAnswerToolCall(fullText: string): Promise<AssistantMessage | null> {\n // Try to extract JSON from text\n const parsed = parseBrokenJson(fullText, { pair: [\"{\", \"}\"] });\n if (!parsed) {\n // If no JSON and no custom schema, wrap in default schema\n if (!this.reasoner.finalAnswer.customSchema) {\n return new AssistantMessage([\n {\n type: \"tool-call\",\n toolCallId: `call_${uuidv4().substring(0, 8)}`,\n toolName: this.reasoner.finalAnswer.name,\n input: this.reasoner.finalAnswer.inputSchema().parse({ response: fullText }),\n },\n ]);\n }\n return null;\n }\n\n return new AssistantMessage([\n {\n type: \"tool-call\",\n toolCallId: `call_${uuidv4().substring(0, 8)}`,\n toolName: this.reasoner.finalAnswer.name,\n input: parsed,\n },\n ]);\n }\n\n protected async createRequest(extraRules: Rule[] = []): Promise<RequirementAgentRequest> {\n return await this.reasoner.createRequest(this.state, this.forceFinalAnswerAsTool, extraRules);\n }\n\n protected async invokeToolCalls(\n tools: AnyTool[],\n toolCalls: ToolCallPart[],\n ): Promise<ToolMessage[]> {\n const toolResults: ToolMessage[] = [];\n\n const results = await Promise.all(\n toolCalls.map((msg) => runTool(tools, msg, { state: this.state })),\n );\n\n for (const toolCall of results) {\n this.state.steps.push({\n id: uuidv4(),\n iteration: this.state.iteration,\n input: toolCall.input,\n output: toolCall.output,\n tool: toolCall.tool,\n error: toolCall.error,\n });\n\n let result: string;\n if (toolCall.error) {\n result = this.templates.toolError.render({\n reason: toolCall.error.explain(),\n });\n } else {\n result = !toolCall.output.isEmpty()\n ? toolCall.output.getTextContent()\n : this.templates.toolNoResult.render({\n toolCall: { tool: toolCall.tool, input: toolCall.input },\n });\n }\n\n toolResults.push(\n new ToolMessage({\n type: \"tool-result\",\n toolName: toolCall.tool?.name || toolCall.msg.toolName,\n toolCallId: toolCall.msg.toolCallId,\n output: { type: \"text\", value: result },\n }),\n );\n\n if (toolCall.error) {\n this.iterationErrorCounter.use(toolCall.error);\n this.globalErrorCounter.use(toolCall.error);\n }\n }\n\n return toolResults;\n }\n\n async addMessages(messages: Message[]): Promise<void> {\n await this.state.memory.addMany(messages);\n }\n\n async run(): Promise<RequirementAgentRunState> {\n if (this.state.answer) {\n return this.state;\n }\n\n // Initialize requirements\n await this.reasoner.update(this.requirements);\n\n while (!this.state.answer) {\n this.incrementIteration();\n\n const request = await this.createRequest();\n await this.ctx.emitter.emit(\"start\", { state: this.state, request });\n const response = await this.runIteration(request);\n await this.ctx.emitter.emit(\"success\", { state: this.state, response });\n }\n\n return this.state;\n }\n\n protected async runIteration(request: RequirementAgentRequest): Promise<ChatModelOutput> {\n const response = await this.runLLM(request);\n\n // Try to cast text message to final answer tool call if allowed\n const toolCalls = response.getToolCalls();\n if (toolCalls.length === 0) {\n const textMessages = response.getTextMessages();\n const text = textMessages.map((m) => m.text).join(\"\\n\");\n\n if (!text || request.canStop) {\n throw new AgentError(\"Model produced an empty response.\");\n }\n\n const finalAnswerToolCall = await this.createFinalAnswerToolCall(text);\n if (!finalAnswerToolCall) {\n const err = new AgentError(\"Model produced an invalid final answer tool call.\");\n this.iterationErrorCounter.use(err);\n this.globalErrorCounter.use(err);\n\n await this.reasoner.update([]);\n const updatedRequest = await this.createRequest([\n {\n target: this.reasoner.finalAnswer.name,\n allowed: true,\n hidden: false,\n forced: false,\n preventStop: false,\n },\n ]);\n this.forceFinalAnswerAsTool = true;\n return await this.runIteration(updatedRequest);\n }\n\n await this.state.memory.add(finalAnswerToolCall);\n toolCalls.push(...finalAnswerToolCall.getToolCalls());\n } else {\n await this.state.memory.addMany(response.messages);\n }\n\n // Check for cycles\n for (const toolCallMsg of toolCalls) {\n this.toolCallCycleChecker.register(toolCallMsg);\n if (this.toolCallCycleChecker.cycleFound) {\n this.toolCallCycleChecker.reset();\n const updatedRequest = await this.createRequest([\n {\n target: toolCallMsg.toolName,\n allowed: false,\n hidden: false,\n forced: true,\n preventStop: false,\n },\n ]);\n return await this.runIteration(updatedRequest);\n }\n }\n\n const toolResults = await this.invokeToolCalls(request.allowedTools, toolCalls);\n await this.state.memory.addMany(toolResults);\n\n // Delete temporary messages\n const tempMessages = this.state.memory.messages.filter((msg) => msg.meta[TEMP_MESSAGE_KEY]);\n await this.state.memory.deleteMany(tempMessages);\n\n return response;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/agents/requirement/runner.ts"],"names":["TEMP_MESSAGE_KEY","RequirementAgentRunner","state","reasoner","iterationErrorCounter","globalErrorCounter","llm","runConfig","tools","requirements","expectedOutput","toolCallCycleChecker","ctx","forceFinalAnswerAsTool","templates","answer","result","memory","UnconstrainedMemory","steps","iteration","usage","totalTokens","promptTokens","completionTokens","reasoningTokens","cachedPromptTokens","undefined","finalAnswer","FinalAnswerTool","RequirementsReasoner","maxRetriesPerIteration","maxRetriesPerStep","RetryCounter","AgentError","maxRetries","Math","max","totalMaxRetries","incrementIteration","maxIterations","runLLM","request","streamMiddleware","createFinalAnswerStream","input","prepareLLMRequest","response","create","middleware","mergeTokenUsage","unbind","messages","createSystemMessage","system","allowedTools","toolChoice","streamPartialToolCalls","createFinalAnswerToolCall","fullText","parsed","parseBrokenJson","pair","customSchema","AssistantMessage","type","toolCallId","uuidv4","substring","toolName","name","inputSchema","parse","createRequest","extraRules","invokeToolCalls","toolCalls","toolResults","results","Promise","all","map","msg","runTool","toolCall","push","id","output","tool","error","toolError","render","reason","explain","isEmpty","getTextContent","toolNoResult","ToolMessage","value","use","addMessages","addMany","run","update","emitter","emit","runIteration","getToolCalls","length","textMessages","getTextMessages","text","m","join","canStop","finalAnswerToolCall","err","updatedRequest","target","allowed","hidden","forced","preventStop","add","toolCallMsg","register","cycleFound","reset","tempMessages","filter","meta","deleteMany","StreamToolCallMiddleware","forceStreaming","key","matchNested","on","data","_","delta","outputStructured"],"mappings":"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","file":"runner.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { v4 as uuidv4 } from \"uuid\";\nimport { AgentError } from \"@/agents/base.js\";\nimport { ChatModel, ChatModelInput, ChatModelOutput } from \"@/backend/chat.js\";\nimport { AssistantMessage, Message, ToolMessage } from \"@/backend/message.js\";\nimport { ToolCallPart } from \"ai\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { RetryCounter } from \"@/internals/helpers/counter.js\";\nimport { RunContext } from \"@/context.js\";\nimport {\n RequirementAgentExecutionConfig,\n RequirementAgentRequest,\n RequirementAgentRunState,\n RequirementAgentTemplates,\n} from \"./types.js\";\nimport { Requirement, Rule } from \"./requirements/requirement.js\";\nimport { RequirementsReasoner, createSystemMessage } from \"./utils/llm.js\";\nimport { FinalAnswerTool, runTool } from \"./utils/tool.js\";\nimport { ToolCallChecker } from \"./utils/toolCallChecker.js\";\nimport { z } from \"zod\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { RequirementAgent } from \"@/agents/requirement/agent.js\";\nimport { mergeTokenUsage } from \"@/adapters/vercel/backend/utils.js\";\nimport { StreamToolCallMiddleware } from \"@/middleware/streamToolCall.js\";\n\nconst TEMP_MESSAGE_KEY = \"tempMessage\";\n\n/**\n * Runner for RequirementAgent execution\n */\nexport class RequirementAgentRunner {\n protected readonly state: RequirementAgentRunState;\n protected readonly reasoner: RequirementsReasoner;\n protected readonly iterationErrorCounter: RetryCounter;\n protected readonly globalErrorCounter: RetryCounter;\n\n constructor(\n protected readonly llm: ChatModel,\n protected readonly runConfig: RequirementAgentExecutionConfig,\n tools: AnyTool[],\n protected readonly requirements: Requirement[],\n expectedOutput: string | z.ZodSchema | null,\n protected readonly toolCallCycleChecker: ToolCallChecker,\n protected readonly ctx: RunContext<RequirementAgent>,\n protected forceFinalAnswerAsTool: boolean,\n protected readonly templates: RequirementAgentTemplates,\n ) {\n this.state = {\n answer: null,\n result: null,\n memory: new UnconstrainedMemory(),\n steps: [],\n iteration: 0,\n usage: {\n totalTokens: 0,\n promptTokens: 0,\n completionTokens: 0,\n reasoningTokens: 0,\n cachedPromptTokens: undefined,\n },\n };\n\n this.requirements = requirements;\n const finalAnswer = new FinalAnswerTool(expectedOutput, this.state);\n this.reasoner = new RequirementsReasoner(tools, finalAnswer, ctx);\n\n const maxRetriesPerIteration = runConfig.maxRetriesPerStep ?? 0;\n this.iterationErrorCounter = new RetryCounter(maxRetriesPerIteration, AgentError);\n\n const maxRetries = Math.max(maxRetriesPerIteration, runConfig.totalMaxRetries ?? 0);\n this.globalErrorCounter = new RetryCounter(maxRetries, AgentError);\n }\n\n protected incrementIteration(): void {\n this.state.iteration++;\n\n if (this.runConfig.maxIterations && this.state.iteration > this.runConfig.maxIterations) {\n throw new AgentError(\n `Agent was not able to resolve the task in ${this.state.iteration} iterations.`,\n );\n }\n }\n\n protected async runLLM(request: RequirementAgentRequest): Promise<ChatModelOutput> {\n const streamMiddleware = this.createFinalAnswerStream(request.finalAnswer);\n try {\n const input = await this.prepareLLMRequest(request);\n const response = await this.llm.create(input).middleware(streamMiddleware);\n\n if (response.usage) {\n mergeTokenUsage(this.state.usage, response.usage);\n }\n\n return response;\n } finally {\n streamMiddleware.unbind();\n }\n }\n\n protected async prepareLLMRequest(request: RequirementAgentRequest): Promise<ChatModelInput> {\n const messages: Message[] = [\n await createSystemMessage(this.templates.system, request),\n ...this.state.memory.messages,\n ];\n\n return {\n messages,\n tools: request.allowedTools,\n toolChoice: request.toolChoice,\n streamPartialToolCalls: true,\n };\n }\n\n protected async createFinalAnswerToolCall(fullText: string): Promise<AssistantMessage | null> {\n // Try to extract JSON from text\n const parsed = parseBrokenJson(fullText, { pair: [\"{\", \"}\"] });\n if (!parsed) {\n // If no JSON and no custom schema, wrap in default schema\n if (!this.reasoner.finalAnswer.customSchema) {\n return new AssistantMessage([\n {\n type: \"tool-call\",\n toolCallId: `call_${uuidv4().substring(0, 8)}`,\n toolName: this.reasoner.finalAnswer.name,\n input: this.reasoner.finalAnswer.inputSchema().parse({ response: fullText }),\n },\n ]);\n }\n return null;\n }\n\n return new AssistantMessage([\n {\n type: \"tool-call\",\n toolCallId: `call_${uuidv4().substring(0, 8)}`,\n toolName: this.reasoner.finalAnswer.name,\n input: parsed,\n },\n ]);\n }\n\n protected async createRequest(extraRules: Rule[] = []): Promise<RequirementAgentRequest> {\n return await this.reasoner.createRequest(this.state, this.forceFinalAnswerAsTool, extraRules);\n }\n\n protected async invokeToolCalls(\n tools: AnyTool[],\n toolCalls: ToolCallPart[],\n ): Promise<ToolMessage[]> {\n const toolResults: ToolMessage[] = [];\n\n const results = await Promise.all(\n toolCalls.map((msg) => runTool(tools, msg, { state: this.state })),\n );\n\n for (const toolCall of results) {\n this.state.steps.push({\n id: uuidv4(),\n iteration: this.state.iteration,\n input: toolCall.input,\n output: toolCall.output,\n tool: toolCall.tool,\n error: toolCall.error,\n });\n\n let result: string;\n if (toolCall.error) {\n result = this.templates.toolError.render({\n reason: toolCall.error.explain(),\n });\n } else {\n result = !toolCall.output.isEmpty()\n ? toolCall.output.getTextContent()\n : this.templates.toolNoResult.render({\n toolCall: { tool: toolCall.tool, input: toolCall.input },\n });\n }\n toolResults.push(\n new ToolMessage({\n type: \"tool-result\",\n toolName: toolCall.tool?.name || toolCall.msg.toolName,\n toolCallId: toolCall.msg.toolCallId,\n output: { type: \"text\", value: result },\n }),\n );\n\n if (toolCall.error) {\n this.iterationErrorCounter.use(toolCall.error);\n this.globalErrorCounter.use(toolCall.error);\n }\n }\n\n return toolResults;\n }\n\n async addMessages(messages: Message[]): Promise<void> {\n await this.state.memory.addMany(messages);\n }\n\n async run(): Promise<RequirementAgentRunState> {\n if (this.state.answer) {\n return this.state;\n }\n\n // Initialize requirements\n await this.reasoner.update(this.requirements);\n\n while (!this.state.answer) {\n this.incrementIteration();\n\n const request = await this.createRequest();\n await this.ctx.emitter.emit(\"start\", { state: this.state, request });\n const response = await this.runIteration(request);\n await this.ctx.emitter.emit(\"success\", { state: this.state, response });\n }\n\n return this.state;\n }\n\n protected async runIteration(request: RequirementAgentRequest): Promise<ChatModelOutput> {\n const response = await this.runLLM(request);\n\n // Try to cast text message to final answer tool call if allowed\n const toolCalls = response.getToolCalls();\n if (toolCalls.length === 0) {\n const textMessages = response.getTextMessages();\n const text = textMessages.map((m) => m.text).join(\"\\n\");\n\n if (!text || request.canStop) {\n throw new AgentError(\"Model produced an empty response.\");\n }\n\n const finalAnswerToolCall = await this.createFinalAnswerToolCall(text);\n if (!finalAnswerToolCall) {\n const err = new AgentError(\"Model produced an invalid final answer tool call.\");\n this.iterationErrorCounter.use(err);\n this.globalErrorCounter.use(err);\n\n await this.reasoner.update([]);\n const updatedRequest = await this.createRequest([\n {\n target: this.reasoner.finalAnswer.name,\n allowed: true,\n hidden: false,\n forced: false,\n preventStop: false,\n },\n ]);\n this.forceFinalAnswerAsTool = true;\n return await this.runIteration(updatedRequest);\n }\n\n await this.state.memory.add(finalAnswerToolCall);\n toolCalls.push(...finalAnswerToolCall.getToolCalls());\n } else {\n await this.state.memory.addMany(response.messages);\n }\n\n // Check for cycles\n for (const toolCallMsg of toolCalls) {\n this.toolCallCycleChecker.register(toolCallMsg);\n if (this.toolCallCycleChecker.cycleFound) {\n this.toolCallCycleChecker.reset();\n const updatedRequest = await this.createRequest([\n {\n target: toolCallMsg.toolName,\n allowed: false,\n hidden: false,\n forced: true,\n preventStop: false,\n },\n ]);\n return await this.runIteration(updatedRequest);\n }\n }\n\n const toolResults = await this.invokeToolCalls(request.allowedTools, toolCalls);\n await this.state.memory.addMany(toolResults);\n\n // Delete temporary messages\n const tempMessages = this.state.memory.messages.filter((msg) => msg.meta[TEMP_MESSAGE_KEY]);\n await this.state.memory.deleteMany(tempMessages);\n\n return response;\n }\n\n private createFinalAnswerStream(finalAnswer: FinalAnswerTool) {\n const middleware = new StreamToolCallMiddleware({\n target: finalAnswer,\n forceStreaming: false,\n key: \"response\",\n matchNested: false,\n });\n middleware.emitter.on(\"update\", async (data, _) => {\n await this.ctx.emitter.emit(\"finalAnswer\", {\n state: this.state,\n output: data.output,\n delta: data.delta,\n outputStructured: undefined,\n });\n });\n return middleware;\n }\n}\n"]}
@@ -3,17 +3,17 @@ import '../../backend/message.cjs';
3
3
  import '../../tools/base.cjs';
4
4
  import '../../errors.cjs';
5
5
  import '../../template.cjs';
6
- import '../../chat-DB_cf15S.cjs';
7
- import '../../base-v-PYIq5G.cjs';
6
+ import '../../chat-BOb9n7AJ.cjs';
7
+ import '../../base-XfWeXQ-S.cjs';
8
8
  import 'zod';
9
- export { h as RequirementAgentCallbacks, c as RequirementAgentExecutionConfig, f as RequirementAgentOutput, a as RequirementAgentRequest, e as RequirementAgentRunInput, g as RequirementAgentRunOptions, R as RequirementAgentRunState, l as RequirementAgentRunStateStep, b as RequirementAgentSystemPromptInputSchema, i as RequirementAgentTaskPromptInputSchema, d as RequirementAgentTemplates, j as RequirementAgentToolErrorPromptInputSchema, k as RequirementAgentToolNoResultPromptInputSchema } from '../../types-Cx6f43du.cjs';
9
+ export { h as RequirementAgentCallbacks, c as RequirementAgentExecutionConfig, f as RequirementAgentOutput, a as RequirementAgentRequest, e as RequirementAgentRunInput, g as RequirementAgentRunOptions, R as RequirementAgentRunState, l as RequirementAgentRunStateStep, b as RequirementAgentSystemPromptInputSchema, i as RequirementAgentTaskPromptInputSchema, d as RequirementAgentTemplates, j as RequirementAgentToolErrorPromptInputSchema, k as RequirementAgentToolNoResultPromptInputSchema } from '../../types-W0QttuP_.cjs';
10
10
  import '../../internals/serializable.cjs';
11
11
  import '../../internals/types.cjs';
12
12
  import '../../internals/helpers/guards.cjs';
13
13
  import 'ai';
14
14
  import 'ajv';
15
15
  import '../../context.cjs';
16
- import '../../emitter-CGKd_-kK.cjs';
16
+ import '../../emitter-jN55XZZq.cjs';
17
17
  import '../../internals/helpers/promise.cjs';
18
18
  import 'promise-based-task';
19
19
  import '../../cache/base.cjs';
@@ -3,17 +3,17 @@ import '../../backend/message.js';
3
3
  import '../../tools/base.js';
4
4
  import '../../errors.js';
5
5
  import '../../template.js';
6
- import '../../chat-BbCYMAdE.js';
7
- import '../../base-BurRTBA7.js';
6
+ import '../../chat-DrqwUgD8.js';
7
+ import '../../base-CyFx7BRL.js';
8
8
  import 'zod';
9
- export { h as RequirementAgentCallbacks, c as RequirementAgentExecutionConfig, f as RequirementAgentOutput, a as RequirementAgentRequest, e as RequirementAgentRunInput, g as RequirementAgentRunOptions, R as RequirementAgentRunState, l as RequirementAgentRunStateStep, b as RequirementAgentSystemPromptInputSchema, i as RequirementAgentTaskPromptInputSchema, d as RequirementAgentTemplates, j as RequirementAgentToolErrorPromptInputSchema, k as RequirementAgentToolNoResultPromptInputSchema } from '../../types-BXkkbABd.js';
9
+ export { h as RequirementAgentCallbacks, c as RequirementAgentExecutionConfig, f as RequirementAgentOutput, a as RequirementAgentRequest, e as RequirementAgentRunInput, g as RequirementAgentRunOptions, R as RequirementAgentRunState, l as RequirementAgentRunStateStep, b as RequirementAgentSystemPromptInputSchema, i as RequirementAgentTaskPromptInputSchema, d as RequirementAgentTemplates, j as RequirementAgentToolErrorPromptInputSchema, k as RequirementAgentToolNoResultPromptInputSchema } from '../../types-CJwiMH3u.js';
10
10
  import '../../internals/serializable.js';
11
11
  import '../../internals/types.js';
12
12
  import '../../internals/helpers/guards.js';
13
13
  import 'ai';
14
14
  import 'ajv';
15
15
  import '../../context.js';
16
- import '../../emitter-CN7I4uSV.js';
16
+ import '../../emitter-36-9MnvA.js';
17
17
  import '../../internals/helpers/promise.js';
18
18
  import 'promise-based-task';
19
19
  import '../../cache/base.js';
@@ -2,7 +2,7 @@ import { AnyTool } from '../../../tools/base.cjs';
2
2
  import { RunContext } from '../../../context.cjs';
3
3
  import { SystemMessage } from '../../../backend/message.cjs';
4
4
  import { PromptTemplate } from '../../../template.cjs';
5
- import { F as FinalAnswerTool, R as RequirementAgentRunState, a as RequirementAgentRequest, b as RequirementAgentSystemPromptInputSchema } from '../../../types-Cx6f43du.cjs';
5
+ import { F as FinalAnswerTool, R as RequirementAgentRunState, a as RequirementAgentRequest, b as RequirementAgentSystemPromptInputSchema } from '../../../types-W0QttuP_.cjs';
6
6
  import { Requirement, Rule } from '../requirements/requirement.cjs';
7
7
  import 'ajv';
8
8
  import '../../../errors.cjs';
@@ -14,15 +14,15 @@ import '../../../cache/base.cjs';
14
14
  import '../../../internals/helpers/schema.cjs';
15
15
  import 'zod';
16
16
  import 'zod-to-json-schema';
17
- import '../../../emitter-CGKd_-kK.cjs';
17
+ import '../../../emitter-jN55XZZq.cjs';
18
18
  import '../../../internals/helpers/promise.cjs';
19
19
  import 'ai';
20
20
  import '../../../memory/base.cjs';
21
- import '../../../chat-DB_cf15S.cjs';
21
+ import '../../../chat-BOb9n7AJ.cjs';
22
22
  import '../../../backend/constants.cjs';
23
23
  import '../../../logger/logger.cjs';
24
24
  import 'pino';
25
- import '../../../base-v-PYIq5G.cjs';
25
+ import '../../../base-XfWeXQ-S.cjs';
26
26
 
27
27
  /**
28
28
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
@@ -2,7 +2,7 @@ import { AnyTool } from '../../../tools/base.js';
2
2
  import { RunContext } from '../../../context.js';
3
3
  import { SystemMessage } from '../../../backend/message.js';
4
4
  import { PromptTemplate } from '../../../template.js';
5
- import { F as FinalAnswerTool, R as RequirementAgentRunState, a as RequirementAgentRequest, b as RequirementAgentSystemPromptInputSchema } from '../../../types-BXkkbABd.js';
5
+ import { F as FinalAnswerTool, R as RequirementAgentRunState, a as RequirementAgentRequest, b as RequirementAgentSystemPromptInputSchema } from '../../../types-CJwiMH3u.js';
6
6
  import { Requirement, Rule } from '../requirements/requirement.js';
7
7
  import 'ajv';
8
8
  import '../../../errors.js';
@@ -14,15 +14,15 @@ import '../../../cache/base.js';
14
14
  import '../../../internals/helpers/schema.js';
15
15
  import 'zod';
16
16
  import 'zod-to-json-schema';
17
- import '../../../emitter-CN7I4uSV.js';
17
+ import '../../../emitter-36-9MnvA.js';
18
18
  import '../../../internals/helpers/promise.js';
19
19
  import 'ai';
20
20
  import '../../../memory/base.js';
21
- import '../../../chat-BbCYMAdE.js';
21
+ import '../../../chat-DrqwUgD8.js';
22
22
  import '../../../backend/constants.js';
23
23
  import '../../../logger/logger.js';
24
24
  import 'pino';
25
- import '../../../base-BurRTBA7.js';
25
+ import '../../../base-CyFx7BRL.js';
26
26
 
27
27
  /**
28
28
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
@@ -23,7 +23,8 @@ async function runTool(tools, msg, context) {
23
23
  }
24
24
  result.output = await result.tool.run(result.input).context({
25
25
  ...context,
26
- toolCallMsg: msg
26
+ toolCallMsg: msg,
27
+ [base_cjs.Tool.contextKeys.Memory]: context.state.memory
27
28
  });
28
29
  } catch (e) {
29
30
  if (e instanceof base_cjs.ToolError) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/agents/requirement/utils/tool.ts"],"names":["runTool","tools","msg","context","result","tool","input","output","StringToolOutput","error","find","name","toolName","ToolError","run","toolCallMsg","e","FrameworkError","ensure","FinalAnswerToolSchema","z","object","response","string","describe","FinalAnswerTool","Tool","description","instructions","customSchema","emitter","expectedOutput","state","undefined","ZodSchema","Emitter","root","child","namespace","creator","inputSchema","_run","_options","_ctx","answer","AssistantMessage","JSON","stringify"],"mappings":"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","file":"tool.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AnyTool,\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolError,\n ToolOutput,\n} from \"@/tools/base.js\";\nimport { ToolCallPart } from \"ai\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { AssistantMessage } from \"@/backend/message.js\";\nimport { RunContext } from \"@/context.js\";\n\n// Tool invocation result\nexport interface ToolInvocationResult {\n msg: ToolCallPart;\n tool: AnyTool | null;\n input: unknown;\n output: ToolOutput;\n error: FrameworkError | null;\n}\n\n/**\n * Run a single tool with error handling\n */\nexport async function runTool(\n tools: AnyTool[],\n msg: ToolCallPart,\n context: Record<string, any>,\n): Promise<ToolInvocationResult> {\n const result: ToolInvocationResult = {\n msg,\n tool: null,\n input: msg.input,\n output: new StringToolOutput(\"\"),\n error: null,\n };\n\n try {\n result.tool = tools.find((tool) => tool.name === msg.toolName) || null;\n if (!result.tool) {\n throw new ToolError(`Tool '${msg.toolName}' does not exist!`);\n }\n\n result.output = await result.tool.run(result.input).context({\n ...context,\n toolCallMsg: msg,\n });\n } catch (e) {\n if (e instanceof ToolError) {\n result.error = FrameworkError.ensure(e);\n } else {\n throw e;\n }\n }\n\n return result;\n}\n\n// Final answer tool schema\nconst FinalAnswerToolSchema = z.object({\n response: z.string().describe(\"The final answer to the user\"),\n});\n\n/**\n * Special tool for capturing final answers\n */\nexport class FinalAnswerTool extends Tool {\n public readonly name = \"final_answer\";\n public readonly description = \"Sends the final answer to the user\";\n public instructions?: string;\n public customSchema: boolean;\n public readonly emitter: Emitter<any>;\n\n protected expectedOutput: string | ZodSchema | null;\n protected state: RequirementAgentRunState;\n\n constructor(expectedOutput: string | ZodSchema | null, state: RequirementAgentRunState) {\n super();\n this.expectedOutput = expectedOutput;\n this.state = state;\n this.instructions = typeof expectedOutput === \"string\" ? expectedOutput : undefined;\n this.customSchema = expectedOutput instanceof ZodSchema;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"final_answer\"],\n creator: this,\n });\n }\n\n inputSchema(): ZodSchema {\n const expectedOutput = this.expectedOutput;\n\n if (!expectedOutput) {\n return FinalAnswerToolSchema;\n } else if (expectedOutput instanceof ZodSchema) {\n return expectedOutput;\n } else if (typeof expectedOutput === \"string\") {\n return z.object({\n response: z.string().describe(expectedOutput),\n });\n } else {\n return FinalAnswerToolSchema;\n }\n }\n\n async _run(\n input: any,\n _options: BaseToolRunOptions,\n _ctx: RunContext<typeof this>,\n ): Promise<StringToolOutput> {\n this.state.result = input;\n\n if (this.expectedOutput instanceof ZodSchema) {\n // For custom schemas, serialize the entire input\n this.state.answer = new AssistantMessage(JSON.stringify(input));\n } else {\n // For string schemas, use the response field\n this.state.answer = new AssistantMessage(input.response);\n }\n\n return new StringToolOutput(\"Message has been sent\");\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/agents/requirement/utils/tool.ts"],"names":["runTool","tools","msg","context","result","tool","input","output","StringToolOutput","error","find","name","toolName","ToolError","run","toolCallMsg","Tool","contextKeys","Memory","state","memory","e","FrameworkError","ensure","FinalAnswerToolSchema","z","object","response","string","describe","FinalAnswerTool","description","instructions","customSchema","emitter","expectedOutput","undefined","ZodSchema","Emitter","root","child","namespace","creator","inputSchema","_run","_options","_ctx","answer","AssistantMessage","JSON","stringify"],"mappings":"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","file":"tool.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AnyTool,\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolError,\n ToolOutput,\n} from \"@/tools/base.js\";\nimport { ToolCallPart } from \"ai\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { AssistantMessage } from \"@/backend/message.js\";\nimport { RunContext } from \"@/context.js\";\n\n// Tool invocation result\nexport interface ToolInvocationResult {\n msg: ToolCallPart;\n tool: AnyTool | null;\n input: unknown;\n output: ToolOutput;\n error: FrameworkError | null;\n}\n\n/**\n * Run a single tool with error handling\n */\nexport async function runTool(\n tools: AnyTool[],\n msg: ToolCallPart,\n context: Record<string, any>,\n): Promise<ToolInvocationResult> {\n const result: ToolInvocationResult = {\n msg,\n tool: null,\n input: msg.input,\n output: new StringToolOutput(\"\"),\n error: null,\n };\n\n try {\n result.tool = tools.find((tool) => tool.name === msg.toolName) || null;\n if (!result.tool) {\n throw new ToolError(`Tool '${msg.toolName}' does not exist!`);\n }\n\n result.output = await result.tool.run(result.input).context({\n ...context,\n toolCallMsg: msg,\n [Tool.contextKeys.Memory]: context.state.memory,\n });\n } catch (e) {\n if (e instanceof ToolError) {\n result.error = FrameworkError.ensure(e);\n } else {\n throw e;\n }\n }\n\n return result;\n}\n\n// Final answer tool schema\nconst FinalAnswerToolSchema = z.object({\n response: z.string().describe(\"The final answer to the user\"),\n});\n\n/**\n * Special tool for capturing final answers\n */\nexport class FinalAnswerTool extends Tool {\n public readonly name = \"final_answer\";\n public readonly description = \"Sends the final answer to the user\";\n public instructions?: string;\n public customSchema: boolean;\n public readonly emitter: Emitter<any>;\n\n protected expectedOutput: string | ZodSchema | null;\n protected state: RequirementAgentRunState;\n\n constructor(expectedOutput: string | ZodSchema | null, state: RequirementAgentRunState) {\n super();\n this.expectedOutput = expectedOutput;\n this.state = state;\n this.instructions = typeof expectedOutput === \"string\" ? expectedOutput : undefined;\n this.customSchema = expectedOutput instanceof ZodSchema;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"final_answer\"],\n creator: this,\n });\n }\n\n inputSchema(): ZodSchema {\n const expectedOutput = this.expectedOutput;\n\n if (!expectedOutput) {\n return FinalAnswerToolSchema;\n } else if (expectedOutput instanceof ZodSchema) {\n return expectedOutput;\n } else if (typeof expectedOutput === \"string\") {\n return z.object({\n response: z.string().describe(expectedOutput),\n });\n } else {\n return FinalAnswerToolSchema;\n }\n }\n\n async _run(\n input: any,\n _options: BaseToolRunOptions,\n _ctx: RunContext<typeof this>,\n ): Promise<StringToolOutput> {\n this.state.result = input;\n\n if (this.expectedOutput instanceof ZodSchema) {\n // For custom schemas, serialize the entire input\n this.state.answer = new AssistantMessage(JSON.stringify(input));\n } else {\n // For string schemas, use the response field\n this.state.answer = new AssistantMessage(input.response);\n }\n\n return new StringToolOutput(\"Message has been sent\");\n }\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  import '../../../tools/base.cjs';
2
2
  import 'ai';
3
3
  import '../../../errors.cjs';
4
- import '../../../emitter-CGKd_-kK.cjs';
4
+ import '../../../emitter-jN55XZZq.cjs';
5
5
  import 'zod';
6
- export { F as FinalAnswerTool, T as ToolInvocationResult, r as runTool } from '../../../types-Cx6f43du.cjs';
6
+ export { F as FinalAnswerTool, T as ToolInvocationResult, r as runTool } from '../../../types-W0QttuP_.cjs';
7
7
  import '../../../context.cjs';
8
8
  import 'ajv';
9
9
  import '../../../internals/serializable.cjs';
@@ -17,8 +17,8 @@ import '../../../internals/helpers/promise.cjs';
17
17
  import '../../../memory/base.cjs';
18
18
  import '../../../backend/message.cjs';
19
19
  import '../../../template.cjs';
20
- import '../../../chat-DB_cf15S.cjs';
20
+ import '../../../chat-BOb9n7AJ.cjs';
21
21
  import '../../../backend/constants.cjs';
22
22
  import '../../../logger/logger.cjs';
23
23
  import 'pino';
24
- import '../../../base-v-PYIq5G.cjs';
24
+ import '../../../base-XfWeXQ-S.cjs';
@@ -1,9 +1,9 @@
1
1
  import '../../../tools/base.js';
2
2
  import 'ai';
3
3
  import '../../../errors.js';
4
- import '../../../emitter-CN7I4uSV.js';
4
+ import '../../../emitter-36-9MnvA.js';
5
5
  import 'zod';
6
- export { F as FinalAnswerTool, T as ToolInvocationResult, r as runTool } from '../../../types-BXkkbABd.js';
6
+ export { F as FinalAnswerTool, T as ToolInvocationResult, r as runTool } from '../../../types-CJwiMH3u.js';
7
7
  import '../../../context.js';
8
8
  import 'ajv';
9
9
  import '../../../internals/serializable.js';
@@ -17,8 +17,8 @@ import '../../../internals/helpers/promise.js';
17
17
  import '../../../memory/base.js';
18
18
  import '../../../backend/message.js';
19
19
  import '../../../template.js';
20
- import '../../../chat-BbCYMAdE.js';
20
+ import '../../../chat-DrqwUgD8.js';
21
21
  import '../../../backend/constants.js';
22
22
  import '../../../logger/logger.js';
23
23
  import 'pino';
24
- import '../../../base-BurRTBA7.js';
24
+ import '../../../base-CyFx7BRL.js';
@@ -21,7 +21,8 @@ async function runTool(tools, msg, context) {
21
21
  }
22
22
  result.output = await result.tool.run(result.input).context({
23
23
  ...context,
24
- toolCallMsg: msg
24
+ toolCallMsg: msg,
25
+ [Tool.contextKeys.Memory]: context.state.memory
25
26
  });
26
27
  } catch (e) {
27
28
  if (e instanceof ToolError) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/agents/requirement/utils/tool.ts"],"names":["runTool","tools","msg","context","result","tool","input","output","StringToolOutput","error","find","name","toolName","ToolError","run","toolCallMsg","e","FrameworkError","ensure","FinalAnswerToolSchema","z","object","response","string","describe","FinalAnswerTool","Tool","description","instructions","customSchema","emitter","expectedOutput","state","undefined","ZodSchema","Emitter","root","child","namespace","creator","inputSchema","_run","_options","_ctx","answer","AssistantMessage","JSON","stringify"],"mappings":"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","file":"tool.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AnyTool,\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolError,\n ToolOutput,\n} from \"@/tools/base.js\";\nimport { ToolCallPart } from \"ai\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { AssistantMessage } from \"@/backend/message.js\";\nimport { RunContext } from \"@/context.js\";\n\n// Tool invocation result\nexport interface ToolInvocationResult {\n msg: ToolCallPart;\n tool: AnyTool | null;\n input: unknown;\n output: ToolOutput;\n error: FrameworkError | null;\n}\n\n/**\n * Run a single tool with error handling\n */\nexport async function runTool(\n tools: AnyTool[],\n msg: ToolCallPart,\n context: Record<string, any>,\n): Promise<ToolInvocationResult> {\n const result: ToolInvocationResult = {\n msg,\n tool: null,\n input: msg.input,\n output: new StringToolOutput(\"\"),\n error: null,\n };\n\n try {\n result.tool = tools.find((tool) => tool.name === msg.toolName) || null;\n if (!result.tool) {\n throw new ToolError(`Tool '${msg.toolName}' does not exist!`);\n }\n\n result.output = await result.tool.run(result.input).context({\n ...context,\n toolCallMsg: msg,\n });\n } catch (e) {\n if (e instanceof ToolError) {\n result.error = FrameworkError.ensure(e);\n } else {\n throw e;\n }\n }\n\n return result;\n}\n\n// Final answer tool schema\nconst FinalAnswerToolSchema = z.object({\n response: z.string().describe(\"The final answer to the user\"),\n});\n\n/**\n * Special tool for capturing final answers\n */\nexport class FinalAnswerTool extends Tool {\n public readonly name = \"final_answer\";\n public readonly description = \"Sends the final answer to the user\";\n public instructions?: string;\n public customSchema: boolean;\n public readonly emitter: Emitter<any>;\n\n protected expectedOutput: string | ZodSchema | null;\n protected state: RequirementAgentRunState;\n\n constructor(expectedOutput: string | ZodSchema | null, state: RequirementAgentRunState) {\n super();\n this.expectedOutput = expectedOutput;\n this.state = state;\n this.instructions = typeof expectedOutput === \"string\" ? expectedOutput : undefined;\n this.customSchema = expectedOutput instanceof ZodSchema;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"final_answer\"],\n creator: this,\n });\n }\n\n inputSchema(): ZodSchema {\n const expectedOutput = this.expectedOutput;\n\n if (!expectedOutput) {\n return FinalAnswerToolSchema;\n } else if (expectedOutput instanceof ZodSchema) {\n return expectedOutput;\n } else if (typeof expectedOutput === \"string\") {\n return z.object({\n response: z.string().describe(expectedOutput),\n });\n } else {\n return FinalAnswerToolSchema;\n }\n }\n\n async _run(\n input: any,\n _options: BaseToolRunOptions,\n _ctx: RunContext<typeof this>,\n ): Promise<StringToolOutput> {\n this.state.result = input;\n\n if (this.expectedOutput instanceof ZodSchema) {\n // For custom schemas, serialize the entire input\n this.state.answer = new AssistantMessage(JSON.stringify(input));\n } else {\n // For string schemas, use the response field\n this.state.answer = new AssistantMessage(input.response);\n }\n\n return new StringToolOutput(\"Message has been sent\");\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/agents/requirement/utils/tool.ts"],"names":["runTool","tools","msg","context","result","tool","input","output","StringToolOutput","error","find","name","toolName","ToolError","run","toolCallMsg","Tool","contextKeys","Memory","state","memory","e","FrameworkError","ensure","FinalAnswerToolSchema","z","object","response","string","describe","FinalAnswerTool","description","instructions","customSchema","emitter","expectedOutput","undefined","ZodSchema","Emitter","root","child","namespace","creator","inputSchema","_run","_options","_ctx","answer","AssistantMessage","JSON","stringify"],"mappings":"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","file":"tool.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AnyTool,\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolError,\n ToolOutput,\n} from \"@/tools/base.js\";\nimport { ToolCallPart } from \"ai\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { AssistantMessage } from \"@/backend/message.js\";\nimport { RunContext } from \"@/context.js\";\n\n// Tool invocation result\nexport interface ToolInvocationResult {\n msg: ToolCallPart;\n tool: AnyTool | null;\n input: unknown;\n output: ToolOutput;\n error: FrameworkError | null;\n}\n\n/**\n * Run a single tool with error handling\n */\nexport async function runTool(\n tools: AnyTool[],\n msg: ToolCallPart,\n context: Record<string, any>,\n): Promise<ToolInvocationResult> {\n const result: ToolInvocationResult = {\n msg,\n tool: null,\n input: msg.input,\n output: new StringToolOutput(\"\"),\n error: null,\n };\n\n try {\n result.tool = tools.find((tool) => tool.name === msg.toolName) || null;\n if (!result.tool) {\n throw new ToolError(`Tool '${msg.toolName}' does not exist!`);\n }\n\n result.output = await result.tool.run(result.input).context({\n ...context,\n toolCallMsg: msg,\n [Tool.contextKeys.Memory]: context.state.memory,\n });\n } catch (e) {\n if (e instanceof ToolError) {\n result.error = FrameworkError.ensure(e);\n } else {\n throw e;\n }\n }\n\n return result;\n}\n\n// Final answer tool schema\nconst FinalAnswerToolSchema = z.object({\n response: z.string().describe(\"The final answer to the user\"),\n});\n\n/**\n * Special tool for capturing final answers\n */\nexport class FinalAnswerTool extends Tool {\n public readonly name = \"final_answer\";\n public readonly description = \"Sends the final answer to the user\";\n public instructions?: string;\n public customSchema: boolean;\n public readonly emitter: Emitter<any>;\n\n protected expectedOutput: string | ZodSchema | null;\n protected state: RequirementAgentRunState;\n\n constructor(expectedOutput: string | ZodSchema | null, state: RequirementAgentRunState) {\n super();\n this.expectedOutput = expectedOutput;\n this.state = state;\n this.instructions = typeof expectedOutput === \"string\" ? expectedOutput : undefined;\n this.customSchema = expectedOutput instanceof ZodSchema;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"final_answer\"],\n creator: this,\n });\n }\n\n inputSchema(): ZodSchema {\n const expectedOutput = this.expectedOutput;\n\n if (!expectedOutput) {\n return FinalAnswerToolSchema;\n } else if (expectedOutput instanceof ZodSchema) {\n return expectedOutput;\n } else if (typeof expectedOutput === \"string\") {\n return z.object({\n response: z.string().describe(expectedOutput),\n });\n } else {\n return FinalAnswerToolSchema;\n }\n }\n\n async _run(\n input: any,\n _options: BaseToolRunOptions,\n _ctx: RunContext<typeof this>,\n ): Promise<StringToolOutput> {\n this.state.result = input;\n\n if (this.expectedOutput instanceof ZodSchema) {\n // For custom schemas, serialize the entire input\n this.state.answer = new AssistantMessage(JSON.stringify(input));\n } else {\n // For string schemas, use the response field\n this.state.answer = new AssistantMessage(input.response);\n }\n\n return new StringToolOutput(\"Message has been sent\");\n }\n}\n"]}
@@ -13,6 +13,7 @@ var decoratorCache_cjs = require('../../cache/decoratorCache.cjs');
13
13
  var template_cjs = require('../../template.cjs');
14
14
  var prompts_cjs = require('./prompts.cjs');
15
15
  var zod = require('zod');
16
+ var logger_cjs = require('../../logger/logger.cjs');
16
17
 
17
18
  var __defProp = Object.defineProperty;
18
19
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
@@ -42,6 +43,7 @@ class ToolCallingAgent extends base_cjs.BaseAgent {
42
43
  constructor(input) {
43
44
  super(), this.input = input;
44
45
  this.input.saveIntermediateSteps = this.input.saveIntermediateSteps ?? true;
46
+ logger_cjs.Logger.root.warn("The ToolCallingAgent is deprecated and will be removed soon. Use RequirementAgent instead.");
45
47
  }
46
48
  static {
47
49
  this.register();
@@ -116,7 +118,8 @@ class ToolCallingAgent extends base_cjs.BaseAgent {
116
118
  const toolInput = toolCall.input;
117
119
  const toolResponse = await tool.run(toolInput).context({
118
120
  state,
119
- toolCallMsg: toolCall
121
+ toolCallMsg: toolCall,
122
+ [base_cjs$1.Tool.contextKeys.Memory]: this.memory
120
123
  });
121
124
  await state.memory.add(new message_cjs.ToolMessage({
122
125
  type: "tool-result",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/agents/toolCalling/agent.ts"],"names":["ToolCallingAgent","BaseAgent","emitter","Emitter","root","child","namespace","creator","input","saveIntermediateSteps","register","_run","options","run","tempMessageKey","execution","totalMaxRetries","omitUndefined","state","memory","UnconstrainedMemory","result","undefined","iteration","add","SystemMessage","templates","system","render","role","instructions","addMany","messages","prompt","userMessage","UserMessage","task","context","expectedOutput","isString","globalRetriesCounter","RetryCounter","AgentError","usePlainResponse","ZodSchema","finalAnswerToolSchema","z","object","response","string","describe","String","finalAnswerTool","DynamicTool","name","description","inputSchema","handler","JSON","stringify","AssistantMessage","StringToolOutput","tools","forceFinalAnswer","Infinity","emit","llm","create","slice","toolChoice","length","stream","toolCallMessages","getToolCalls","toolCall","tool","find","toolName","toolInput","toolResponse","toolCallMsg","ToolMessage","type","toolCallId","output","value","getTextContent","e","ToolError","use","explain","textMessages","getTextMessages","isEmpty","deleteMany","filter","msg","meta","push","reset","extraDescription","map","join","overrides","defaultTemplates","ToolCallingAgentSystemPrompt","ToolCallingAgentTaskPrompt","mapObj","key","defaultTemplate","override","PromptTemplate","createSnapshot","shallowCopy","enumerable"],"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 { AgentError, BaseAgent } from \"@/agents/base.js\";\nimport { AnyTool, DynamicTool, StringToolOutput, ToolError, ToolOutput } from \"@/tools/base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport type {\n ToolCallingAgentExecutionConfig,\n ToolCallingAgentTemplates,\n ToolCallingAgentCallbacks,\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOptions,\n ToolCallingAgentRunOutput,\n ToolCallingAgentRunState,\n} from \"@/agents/toolCalling/types.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { AssistantMessage, SystemMessage, ToolMessage, UserMessage } from \"@/backend/message.js\";\nimport { isEmpty, isString } from \"remeda\";\nimport { RetryCounter } from \"@/internals/helpers/counter.js\";\nimport { mapObj, omitUndefined } from \"@/internals/helpers/object.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n ToolCallingAgentSystemPrompt,\n ToolCallingAgentTaskPrompt,\n} from \"@/agents/toolCalling/prompts.js\";\nimport { z, ZodSchema } from \"zod\";\n\nexport type ToolCallingAgentTemplateFactory<K extends keyof ToolCallingAgentTemplates> = (\n template: ToolCallingAgentTemplates[K],\n) => ToolCallingAgentTemplates[K];\n\nexport interface ToolCallingAgentInput {\n llm: ChatModel;\n memory: BaseMemory;\n tools: AnyTool[];\n meta?: Omit<AgentMeta, \"tools\">;\n templates?: Partial<{\n [K in keyof ToolCallingAgentTemplates]:\n | ToolCallingAgentTemplates[K]\n | ToolCallingAgentTemplateFactory<K>;\n }>;\n execution?: ToolCallingAgentExecutionConfig;\n saveIntermediateSteps?: boolean;\n}\n\nexport class ToolCallingAgent extends BaseAgent<\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOutput,\n ToolCallingAgentRunOptions\n> {\n public readonly emitter = Emitter.root.child<ToolCallingAgentCallbacks>({\n namespace: [\"agent\", \"toolCalling\"],\n creator: this,\n });\n\n constructor(public readonly input: ToolCallingAgentInput) {\n super();\n this.input.saveIntermediateSteps = this.input.saveIntermediateSteps ?? true;\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n input: ToolCallingAgentRunInput,\n options: ToolCallingAgentRunOptions = {},\n run: GetRunContext<typeof this>,\n ): Promise<ToolCallingAgentRunOutput> {\n const tempMessageKey = \"tempMessage\" as const;\n const execution = {\n maxRetriesPerStep: 3,\n totalMaxRetries: 20,\n maxIterations: 10,\n ...omitUndefined(this.input.execution ?? {}),\n ...omitUndefined(options.execution ?? {}),\n };\n\n const state: ToolCallingAgentRunState = {\n memory: new UnconstrainedMemory(),\n result: undefined,\n iteration: 0,\n };\n await state.memory.add(\n new SystemMessage(\n this.templates.system.render({\n role: undefined,\n instructions: undefined,\n }),\n ),\n );\n await state.memory.addMany(this.memory.messages);\n\n if (input.prompt) {\n const userMessage = new UserMessage(\n this.templates.task.render({\n prompt: input.prompt,\n context: input.context,\n expectedOutput: isString(input.expectedOutput) ? input.expectedOutput : undefined,\n }),\n );\n await state.memory.add(userMessage);\n }\n\n const globalRetriesCounter = new RetryCounter(execution.totalMaxRetries || 1, AgentError);\n\n const usePlainResponse = !input.expectedOutput || !(input.expectedOutput instanceof ZodSchema);\n const finalAnswerToolSchema = usePlainResponse\n ? z.object({\n response: z.string().describe(String(input.expectedOutput ?? \"\")),\n })\n : (input.expectedOutput as ZodSchema);\n\n const finalAnswerTool = new DynamicTool({\n name: \"final_answer\",\n description: \"Sends the final answer to the user\",\n inputSchema: finalAnswerToolSchema,\n handler: async (input) => {\n const result = usePlainResponse ? input.response : JSON.stringify(input);\n state.result = new AssistantMessage(result);\n return new StringToolOutput(\"Message has been sent\");\n },\n });\n\n const tools = [...this.input.tools, finalAnswerTool];\n let forceFinalAnswer = false;\n\n while (!state.result) {\n state.iteration++;\n if (state.iteration > (execution.totalMaxRetries ?? Infinity)) {\n throw new AgentError(\n `Agent was not able to resolve the task in ${state.iteration} iterations.`,\n );\n }\n\n await run.emitter.emit(\"start\", { state });\n const response = await this.input.llm.create({\n messages: state.memory.messages.slice(),\n tools,\n toolChoice: forceFinalAnswer ? finalAnswerTool : tools.length > 1 ? \"required\" : tools[0],\n stream: false,\n });\n await state.memory.addMany(response.messages);\n\n const toolCallMessages = response.getToolCalls();\n for (const toolCall of toolCallMessages) {\n try {\n const tool = tools.find((tool) => tool.name === toolCall.toolName);\n if (!tool) {\n throw new AgentError(`Tool ${toolCall.toolName} does not exist!`);\n }\n\n const toolInput: any = toolCall.input;\n const toolResponse: ToolOutput = await tool.run(toolInput).context({\n state,\n toolCallMsg: toolCall,\n });\n await state.memory.add(\n new ToolMessage({\n type: \"tool-result\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n output: { type: \"text\", value: toolResponse.getTextContent() },\n }),\n );\n } catch (e) {\n if (e instanceof ToolError) {\n globalRetriesCounter.use(e);\n await state.memory.add(\n new ToolMessage({\n type: \"tool-result\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n output: { type: \"error-text\", value: e.explain() },\n }),\n );\n } else {\n throw e;\n }\n }\n }\n\n // handle empty messages for some models\n const textMessages = response.getTextMessages();\n if (isEmpty(toolCallMessages) && isEmpty(textMessages)) {\n await state.memory.add(new AssistantMessage(\"\\n\", { [tempMessageKey]: true }));\n } else {\n await state.memory.deleteMany(\n state.memory.messages.filter((msg) => msg.meta[tempMessageKey]),\n );\n }\n\n // Fallback for providers that do not support structured outputs\n if (!isEmpty(textMessages) && isEmpty(toolCallMessages)) {\n forceFinalAnswer = true;\n tools.length = 0;\n tools.push(finalAnswerTool);\n }\n\n await run.emitter.emit(\"success\", { state });\n }\n\n if (this.input.saveIntermediateSteps) {\n this.memory.reset();\n await this.memory.addMany(state.memory.messages.slice(1));\n } else {\n await this.memory.addMany(state.memory.messages.slice(-2));\n }\n return { memory: state.memory, result: state.result };\n }\n\n get meta(): AgentMeta {\n const tools = this.input.tools.slice();\n\n if (this.input.meta) {\n return { ...this.input.meta, tools };\n }\n\n return {\n name: \"ToolCalling\",\n tools,\n description: \"ToolCallingAgent that uses tools to accomplish the task.\",\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 @Cache({ enumerable: false })\n protected get templates(): ToolCallingAgentTemplates {\n const overrides = this.input.templates ?? {};\n const defaultTemplates: ToolCallingAgentTemplates = {\n system: ToolCallingAgentSystemPrompt,\n task: ToolCallingAgentTaskPrompt,\n } as const;\n\n return mapObj(defaultTemplates)(\n (key, defaultTemplate: ToolCallingAgentTemplates[typeof key]) => {\n const override = overrides[key] ?? defaultTemplate;\n if (override instanceof PromptTemplate) {\n return override;\n }\n return override(defaultTemplate) ?? defaultTemplate;\n },\n );\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n input: shallowCopy(this.input),\n emitter: this.emitter,\n };\n }\n\n set memory(memory: BaseMemory) {\n this.input.memory = memory;\n }\n\n get memory() {\n return this.input.memory;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/agents/toolCalling/agent.ts"],"names":["ToolCallingAgent","BaseAgent","emitter","Emitter","root","child","namespace","creator","input","saveIntermediateSteps","Logger","warn","register","_run","options","run","tempMessageKey","execution","totalMaxRetries","omitUndefined","state","memory","UnconstrainedMemory","result","undefined","iteration","add","SystemMessage","templates","system","render","role","instructions","addMany","messages","prompt","userMessage","UserMessage","task","context","expectedOutput","isString","globalRetriesCounter","RetryCounter","AgentError","usePlainResponse","ZodSchema","finalAnswerToolSchema","z","object","response","string","describe","String","finalAnswerTool","DynamicTool","name","description","inputSchema","handler","JSON","stringify","AssistantMessage","StringToolOutput","tools","forceFinalAnswer","Infinity","emit","llm","create","slice","toolChoice","length","stream","toolCallMessages","getToolCalls","toolCall","tool","find","toolName","toolInput","toolResponse","toolCallMsg","Tool","contextKeys","Memory","ToolMessage","type","toolCallId","output","value","getTextContent","e","ToolError","use","explain","textMessages","getTextMessages","isEmpty","deleteMany","filter","msg","meta","push","reset","extraDescription","map","join","overrides","defaultTemplates","ToolCallingAgentSystemPrompt","ToolCallingAgentTaskPrompt","mapObj","key","defaultTemplate","override","PromptTemplate","createSnapshot","shallowCopy","enumerable"],"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 { AgentError, BaseAgent } from \"@/agents/base.js\";\nimport {\n AnyTool,\n DynamicTool,\n StringToolOutput,\n Tool,\n ToolError,\n ToolOutput,\n} from \"@/tools/base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport type {\n ToolCallingAgentExecutionConfig,\n ToolCallingAgentTemplates,\n ToolCallingAgentCallbacks,\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOptions,\n ToolCallingAgentRunOutput,\n ToolCallingAgentRunState,\n} from \"@/agents/toolCalling/types.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { AssistantMessage, SystemMessage, ToolMessage, UserMessage } from \"@/backend/message.js\";\nimport { isEmpty, isString } from \"remeda\";\nimport { RetryCounter } from \"@/internals/helpers/counter.js\";\nimport { mapObj, omitUndefined } from \"@/internals/helpers/object.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n ToolCallingAgentSystemPrompt,\n ToolCallingAgentTaskPrompt,\n} from \"@/agents/toolCalling/prompts.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { Logger } from \"@/logger/logger.js\";\n\nexport type ToolCallingAgentTemplateFactory<K extends keyof ToolCallingAgentTemplates> = (\n template: ToolCallingAgentTemplates[K],\n) => ToolCallingAgentTemplates[K];\n\nexport interface ToolCallingAgentInput {\n llm: ChatModel;\n memory: BaseMemory;\n tools: AnyTool[];\n meta?: Omit<AgentMeta, \"tools\">;\n templates?: Partial<{\n [K in keyof ToolCallingAgentTemplates]:\n | ToolCallingAgentTemplates[K]\n | ToolCallingAgentTemplateFactory<K>;\n }>;\n execution?: ToolCallingAgentExecutionConfig;\n saveIntermediateSteps?: boolean;\n}\n\n/**\n * @deprecated Use RequirementAgent instead.\n */\nexport class ToolCallingAgent extends BaseAgent<\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOutput,\n ToolCallingAgentRunOptions\n> {\n public readonly emitter = Emitter.root.child<ToolCallingAgentCallbacks>({\n namespace: [\"agent\", \"toolCalling\"],\n creator: this,\n });\n\n constructor(public readonly input: ToolCallingAgentInput) {\n super();\n this.input.saveIntermediateSteps = this.input.saveIntermediateSteps ?? true;\n Logger.root.warn(\n \"The ToolCallingAgent is deprecated and will be removed soon. Use RequirementAgent instead.\",\n );\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n input: ToolCallingAgentRunInput,\n options: ToolCallingAgentRunOptions = {},\n run: GetRunContext<typeof this>,\n ): Promise<ToolCallingAgentRunOutput> {\n const tempMessageKey = \"tempMessage\" as const;\n const execution = {\n maxRetriesPerStep: 3,\n totalMaxRetries: 20,\n maxIterations: 10,\n ...omitUndefined(this.input.execution ?? {}),\n ...omitUndefined(options.execution ?? {}),\n };\n\n const state: ToolCallingAgentRunState = {\n memory: new UnconstrainedMemory(),\n result: undefined,\n iteration: 0,\n };\n await state.memory.add(\n new SystemMessage(\n this.templates.system.render({\n role: undefined,\n instructions: undefined,\n }),\n ),\n );\n await state.memory.addMany(this.memory.messages);\n\n if (input.prompt) {\n const userMessage = new UserMessage(\n this.templates.task.render({\n prompt: input.prompt,\n context: input.context,\n expectedOutput: isString(input.expectedOutput) ? input.expectedOutput : undefined,\n }),\n );\n await state.memory.add(userMessage);\n }\n\n const globalRetriesCounter = new RetryCounter(execution.totalMaxRetries || 1, AgentError);\n\n const usePlainResponse = !input.expectedOutput || !(input.expectedOutput instanceof ZodSchema);\n const finalAnswerToolSchema = usePlainResponse\n ? z.object({\n response: z.string().describe(String(input.expectedOutput ?? \"\")),\n })\n : (input.expectedOutput as ZodSchema);\n\n const finalAnswerTool = new DynamicTool({\n name: \"final_answer\",\n description: \"Sends the final answer to the user\",\n inputSchema: finalAnswerToolSchema,\n handler: async (input) => {\n const result = usePlainResponse ? input.response : JSON.stringify(input);\n state.result = new AssistantMessage(result);\n return new StringToolOutput(\"Message has been sent\");\n },\n });\n\n const tools = [...this.input.tools, finalAnswerTool];\n let forceFinalAnswer = false;\n\n while (!state.result) {\n state.iteration++;\n if (state.iteration > (execution.totalMaxRetries ?? Infinity)) {\n throw new AgentError(\n `Agent was not able to resolve the task in ${state.iteration} iterations.`,\n );\n }\n\n await run.emitter.emit(\"start\", { state });\n const response = await this.input.llm.create({\n messages: state.memory.messages.slice(),\n tools,\n toolChoice: forceFinalAnswer ? finalAnswerTool : tools.length > 1 ? \"required\" : tools[0],\n stream: false,\n });\n await state.memory.addMany(response.messages);\n\n const toolCallMessages = response.getToolCalls();\n for (const toolCall of toolCallMessages) {\n try {\n const tool = tools.find((tool) => tool.name === toolCall.toolName);\n if (!tool) {\n throw new AgentError(`Tool ${toolCall.toolName} does not exist!`);\n }\n\n const toolInput: any = toolCall.input;\n const toolResponse: ToolOutput = await tool.run(toolInput).context({\n state,\n toolCallMsg: toolCall,\n [Tool.contextKeys.Memory]: this.memory,\n });\n await state.memory.add(\n new ToolMessage({\n type: \"tool-result\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n output: { type: \"text\", value: toolResponse.getTextContent() },\n }),\n );\n } catch (e) {\n if (e instanceof ToolError) {\n globalRetriesCounter.use(e);\n await state.memory.add(\n new ToolMessage({\n type: \"tool-result\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n output: { type: \"error-text\", value: e.explain() },\n }),\n );\n } else {\n throw e;\n }\n }\n }\n\n // handle empty messages for some models\n const textMessages = response.getTextMessages();\n if (isEmpty(toolCallMessages) && isEmpty(textMessages)) {\n await state.memory.add(new AssistantMessage(\"\\n\", { [tempMessageKey]: true }));\n } else {\n await state.memory.deleteMany(\n state.memory.messages.filter((msg) => msg.meta[tempMessageKey]),\n );\n }\n\n // Fallback for providers that do not support structured outputs\n if (!isEmpty(textMessages) && isEmpty(toolCallMessages)) {\n forceFinalAnswer = true;\n tools.length = 0;\n tools.push(finalAnswerTool);\n }\n\n await run.emitter.emit(\"success\", { state });\n }\n\n if (this.input.saveIntermediateSteps) {\n this.memory.reset();\n await this.memory.addMany(state.memory.messages.slice(1));\n } else {\n await this.memory.addMany(state.memory.messages.slice(-2));\n }\n return { memory: state.memory, result: state.result };\n }\n\n get meta(): AgentMeta {\n const tools = this.input.tools.slice();\n\n if (this.input.meta) {\n return { ...this.input.meta, tools };\n }\n\n return {\n name: \"ToolCalling\",\n tools,\n description: \"ToolCallingAgent that uses tools to accomplish the task.\",\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 @Cache({ enumerable: false })\n protected get templates(): ToolCallingAgentTemplates {\n const overrides = this.input.templates ?? {};\n const defaultTemplates: ToolCallingAgentTemplates = {\n system: ToolCallingAgentSystemPrompt,\n task: ToolCallingAgentTaskPrompt,\n } as const;\n\n return mapObj(defaultTemplates)(\n (key, defaultTemplate: ToolCallingAgentTemplates[typeof key]) => {\n const override = overrides[key] ?? defaultTemplate;\n if (override instanceof PromptTemplate) {\n return override;\n }\n return override(defaultTemplate) ?? defaultTemplate;\n },\n );\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n input: shallowCopy(this.input),\n emitter: this.emitter,\n };\n }\n\n set memory(memory: BaseMemory) {\n this.input.memory = memory;\n }\n\n get memory() {\n return this.input.memory;\n }\n}\n"]}
@@ -1,10 +1,10 @@
1
1
  import { GetRunContext, MiddlewareType } from '../../context.cjs';
2
- import { b as AgentMeta, a as BaseAgent } from '../../base-v-PYIq5G.cjs';
2
+ import { c as AgentMeta, a as BaseAgent } from '../../base-XfWeXQ-S.cjs';
3
3
  import { AnyTool } from '../../tools/base.cjs';
4
4
  import { BaseMemory } from '../../memory/base.cjs';
5
- import { E as Emitter } from '../../emitter-CGKd_-kK.cjs';
5
+ import { E as Emitter } from '../../emitter-jN55XZZq.cjs';
6
6
  import { ToolCallingAgentTemplates, ToolCallingAgentExecutionConfig, ToolCallingAgentRunInput, ToolCallingAgentRunOutput, ToolCallingAgentRunOptions, ToolCallingAgentCallbacks } from './types.cjs';
7
- import { m as ChatModel } from '../../chat-DB_cf15S.cjs';
7
+ import { m as ChatModel } from '../../chat-BOb9n7AJ.cjs';
8
8
  import '../../internals/serializable.cjs';
9
9
  import '../../internals/types.cjs';
10
10
  import '../../internals/helpers/guards.cjs';
@@ -36,6 +36,9 @@ interface ToolCallingAgentInput {
36
36
  execution?: ToolCallingAgentExecutionConfig;
37
37
  saveIntermediateSteps?: boolean;
38
38
  }
39
+ /**
40
+ * @deprecated Use RequirementAgent instead.
41
+ */
39
42
  declare class ToolCallingAgent extends BaseAgent<ToolCallingAgentRunInput, ToolCallingAgentRunOutput, ToolCallingAgentRunOptions> {
40
43
  readonly input: ToolCallingAgentInput;
41
44
  readonly emitter: Emitter<ToolCallingAgentCallbacks>;
@@ -1,10 +1,10 @@
1
1
  import { GetRunContext, MiddlewareType } from '../../context.js';
2
- import { b as AgentMeta, a as BaseAgent } from '../../base-BurRTBA7.js';
2
+ import { c as AgentMeta, a as BaseAgent } from '../../base-CyFx7BRL.js';
3
3
  import { AnyTool } from '../../tools/base.js';
4
4
  import { BaseMemory } from '../../memory/base.js';
5
- import { E as Emitter } from '../../emitter-CN7I4uSV.js';
5
+ import { E as Emitter } from '../../emitter-36-9MnvA.js';
6
6
  import { ToolCallingAgentTemplates, ToolCallingAgentExecutionConfig, ToolCallingAgentRunInput, ToolCallingAgentRunOutput, ToolCallingAgentRunOptions, ToolCallingAgentCallbacks } from './types.js';
7
- import { m as ChatModel } from '../../chat-BbCYMAdE.js';
7
+ import { m as ChatModel } from '../../chat-DrqwUgD8.js';
8
8
  import '../../internals/serializable.js';
9
9
  import '../../internals/types.js';
10
10
  import '../../internals/helpers/guards.js';
@@ -36,6 +36,9 @@ interface ToolCallingAgentInput {
36
36
  execution?: ToolCallingAgentExecutionConfig;
37
37
  saveIntermediateSteps?: boolean;
38
38
  }
39
+ /**
40
+ * @deprecated Use RequirementAgent instead.
41
+ */
39
42
  declare class ToolCallingAgent extends BaseAgent<ToolCallingAgentRunInput, ToolCallingAgentRunOutput, ToolCallingAgentRunOptions> {
40
43
  readonly input: ToolCallingAgentInput;
41
44
  readonly emitter: Emitter<ToolCallingAgentCallbacks>;
@@ -1,5 +1,5 @@
1
1
  import { BaseAgent, AgentError } from '../base.js';
2
- import { DynamicTool, ToolError, StringToolOutput } from '../../tools/base.js';
2
+ import { DynamicTool, Tool, ToolError, StringToolOutput } from '../../tools/base.js';
3
3
  import { Emitter } from '../../emitter/emitter.js';
4
4
  import { shallowCopy } from '../../serializer/utils.js';
5
5
  import { UnconstrainedMemory } from '../../memory/unconstrainedMemory.js';
@@ -11,6 +11,7 @@ import { Cache } from '../../cache/decoratorCache.js';
11
11
  import { PromptTemplate } from '../../template.js';
12
12
  import { ToolCallingAgentTaskPrompt, ToolCallingAgentSystemPrompt } from './prompts.js';
13
13
  import { ZodSchema, z } from 'zod';
14
+ import { Logger } from '../../logger/logger.js';
14
15
 
15
16
  var __defProp = Object.defineProperty;
16
17
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
@@ -40,6 +41,7 @@ class ToolCallingAgent extends BaseAgent {
40
41
  constructor(input) {
41
42
  super(), this.input = input;
42
43
  this.input.saveIntermediateSteps = this.input.saveIntermediateSteps ?? true;
44
+ Logger.root.warn("The ToolCallingAgent is deprecated and will be removed soon. Use RequirementAgent instead.");
43
45
  }
44
46
  static {
45
47
  this.register();
@@ -114,7 +116,8 @@ class ToolCallingAgent extends BaseAgent {
114
116
  const toolInput = toolCall.input;
115
117
  const toolResponse = await tool.run(toolInput).context({
116
118
  state,
117
- toolCallMsg: toolCall
119
+ toolCallMsg: toolCall,
120
+ [Tool.contextKeys.Memory]: this.memory
118
121
  });
119
122
  await state.memory.add(new ToolMessage({
120
123
  type: "tool-result",