@falai/agent 2.2.4 → 2.4.1

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 (390) hide show
  1. package/README.md +2 -2
  2. package/dist/adapters/MemoryAdapter.d.ts.map +1 -1
  3. package/dist/adapters/MemoryAdapter.js +10 -1
  4. package/dist/adapters/MemoryAdapter.js.map +1 -1
  5. package/dist/adapters/MongoAdapter.d.ts.map +1 -1
  6. package/dist/adapters/MongoAdapter.js +33 -2
  7. package/dist/adapters/MongoAdapter.js.map +1 -1
  8. package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
  9. package/dist/adapters/OpenSearchAdapter.js +15 -1
  10. package/dist/adapters/OpenSearchAdapter.js.map +1 -1
  11. package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  12. package/dist/adapters/PostgreSQLAdapter.js +35 -5
  13. package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
  14. package/dist/adapters/PrismaAdapter.d.ts.map +1 -1
  15. package/dist/adapters/PrismaAdapter.js +58 -15
  16. package/dist/adapters/PrismaAdapter.js.map +1 -1
  17. package/dist/adapters/RedisAdapter.d.ts.map +1 -1
  18. package/dist/adapters/RedisAdapter.js +10 -1
  19. package/dist/adapters/RedisAdapter.js.map +1 -1
  20. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
  21. package/dist/adapters/SQLiteAdapter.js +38 -6
  22. package/dist/adapters/SQLiteAdapter.js.map +1 -1
  23. package/dist/cjs/adapters/MemoryAdapter.d.ts.map +1 -1
  24. package/dist/cjs/adapters/MemoryAdapter.js +10 -1
  25. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  26. package/dist/cjs/adapters/MongoAdapter.d.ts.map +1 -1
  27. package/dist/cjs/adapters/MongoAdapter.js +33 -2
  28. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  29. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
  30. package/dist/cjs/adapters/OpenSearchAdapter.js +15 -1
  31. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  32. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  33. package/dist/cjs/adapters/PostgreSQLAdapter.js +35 -5
  34. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  35. package/dist/cjs/adapters/PrismaAdapter.d.ts.map +1 -1
  36. package/dist/cjs/adapters/PrismaAdapter.js +58 -15
  37. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  38. package/dist/cjs/adapters/RedisAdapter.d.ts.map +1 -1
  39. package/dist/cjs/adapters/RedisAdapter.js +10 -1
  40. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  41. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  42. package/dist/cjs/adapters/SQLiteAdapter.js +38 -6
  43. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  44. package/dist/cjs/core/Agent.d.ts +28 -18
  45. package/dist/cjs/core/Agent.d.ts.map +1 -1
  46. package/dist/cjs/core/Agent.js +58 -68
  47. package/dist/cjs/core/Agent.js.map +1 -1
  48. package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -1
  49. package/dist/cjs/core/AutoChainExecutor.js +14 -20
  50. package/dist/cjs/core/AutoChainExecutor.js.map +1 -1
  51. package/dist/cjs/core/BranchEvaluator.d.ts +4 -3
  52. package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -1
  53. package/dist/cjs/core/BranchEvaluator.js +18 -23
  54. package/dist/cjs/core/BranchEvaluator.js.map +1 -1
  55. package/dist/cjs/core/Flow.d.ts +2 -1
  56. package/dist/cjs/core/Flow.d.ts.map +1 -1
  57. package/dist/cjs/core/Flow.js +10 -3
  58. package/dist/cjs/core/Flow.js.map +1 -1
  59. package/dist/cjs/core/FlowRouter.d.ts +1 -0
  60. package/dist/cjs/core/FlowRouter.d.ts.map +1 -1
  61. package/dist/cjs/core/FlowRouter.js +28 -5
  62. package/dist/cjs/core/FlowRouter.js.map +1 -1
  63. package/dist/cjs/core/PersistenceManager.d.ts +3 -0
  64. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  65. package/dist/cjs/core/PersistenceManager.js +57 -5
  66. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  67. package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
  68. package/dist/cjs/core/PromptComposer.js +24 -10
  69. package/dist/cjs/core/PromptComposer.js.map +1 -1
  70. package/dist/cjs/core/ResponseGenerationError.d.ts +30 -0
  71. package/dist/cjs/core/ResponseGenerationError.d.ts.map +1 -0
  72. package/dist/cjs/core/ResponseGenerationError.js +37 -0
  73. package/dist/cjs/core/ResponseGenerationError.js.map +1 -0
  74. package/dist/cjs/core/ResponseModal.d.ts +43 -102
  75. package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
  76. package/dist/cjs/core/ResponseModal.js +178 -1194
  77. package/dist/cjs/core/ResponseModal.js.map +1 -1
  78. package/dist/cjs/core/ResponsePipeline.d.ts +58 -152
  79. package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
  80. package/dist/cjs/core/ResponsePipeline.js +408 -457
  81. package/dist/cjs/core/ResponsePipeline.js.map +1 -1
  82. package/dist/cjs/core/SessionFinalizer.d.ts +34 -0
  83. package/dist/cjs/core/SessionFinalizer.d.ts.map +1 -0
  84. package/dist/cjs/core/SessionFinalizer.js +61 -0
  85. package/dist/cjs/core/SessionFinalizer.js.map +1 -0
  86. package/dist/cjs/core/SessionManager.d.ts +1 -1
  87. package/dist/cjs/core/SessionManager.d.ts.map +1 -1
  88. package/dist/cjs/core/SessionManager.js +18 -7
  89. package/dist/cjs/core/SessionManager.js.map +1 -1
  90. package/dist/cjs/core/SignalCoordinator.d.ts +103 -0
  91. package/dist/cjs/core/SignalCoordinator.d.ts.map +1 -0
  92. package/dist/cjs/core/SignalCoordinator.js +207 -0
  93. package/dist/cjs/core/SignalCoordinator.js.map +1 -0
  94. package/dist/cjs/core/SignalEvaluator.d.ts +2 -2
  95. package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -1
  96. package/dist/cjs/core/SignalEvaluator.js +11 -26
  97. package/dist/cjs/core/SignalEvaluator.js.map +1 -1
  98. package/dist/cjs/core/Step.d.ts +3 -1
  99. package/dist/cjs/core/Step.d.ts.map +1 -1
  100. package/dist/cjs/core/Step.js +10 -3
  101. package/dist/cjs/core/Step.js.map +1 -1
  102. package/dist/cjs/core/StepLifecycle.d.ts +33 -0
  103. package/dist/cjs/core/StepLifecycle.d.ts.map +1 -0
  104. package/dist/cjs/core/StepLifecycle.js +97 -0
  105. package/dist/cjs/core/StepLifecycle.js.map +1 -0
  106. package/dist/cjs/core/ToolLoopExecutor.d.ts +104 -0
  107. package/dist/cjs/core/ToolLoopExecutor.d.ts.map +1 -0
  108. package/dist/cjs/core/ToolLoopExecutor.js +391 -0
  109. package/dist/cjs/core/ToolLoopExecutor.js.map +1 -0
  110. package/dist/cjs/core/ToolManager.d.ts +1 -1
  111. package/dist/cjs/core/ToolManager.d.ts.map +1 -1
  112. package/dist/cjs/core/ToolManager.js.map +1 -1
  113. package/dist/cjs/index.d.ts +4 -5
  114. package/dist/cjs/index.d.ts.map +1 -1
  115. package/dist/cjs/index.js +7 -6
  116. package/dist/cjs/index.js.map +1 -1
  117. package/dist/cjs/providers/AnthropicProvider.d.ts +2 -0
  118. package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -1
  119. package/dist/cjs/providers/AnthropicProvider.js +28 -56
  120. package/dist/cjs/providers/AnthropicProvider.js.map +1 -1
  121. package/dist/cjs/providers/DeepSeekProvider.d.ts +25 -21
  122. package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -1
  123. package/dist/cjs/providers/DeepSeekProvider.js +48 -407
  124. package/dist/cjs/providers/DeepSeekProvider.js.map +1 -1
  125. package/dist/cjs/providers/GeminiProvider.d.ts +2 -0
  126. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  127. package/dist/cjs/providers/GeminiProvider.js +27 -56
  128. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  129. package/dist/cjs/providers/OpenAICompatibleProvider.d.ts +129 -0
  130. package/dist/cjs/providers/OpenAICompatibleProvider.d.ts.map +1 -0
  131. package/dist/cjs/providers/OpenAICompatibleProvider.js +485 -0
  132. package/dist/cjs/providers/OpenAICompatibleProvider.js.map +1 -0
  133. package/dist/cjs/providers/OpenAIProvider.d.ts +9 -28
  134. package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
  135. package/dist/cjs/providers/OpenAIProvider.js +23 -417
  136. package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
  137. package/dist/cjs/providers/OpenRouterProvider.d.ts +10 -27
  138. package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
  139. package/dist/cjs/providers/OpenRouterProvider.js +28 -417
  140. package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
  141. package/dist/cjs/providers/errorClassification.d.ts +61 -0
  142. package/dist/cjs/providers/errorClassification.d.ts.map +1 -0
  143. package/dist/cjs/providers/errorClassification.js +123 -0
  144. package/dist/cjs/providers/errorClassification.js.map +1 -0
  145. package/dist/cjs/providers/index.d.ts +4 -0
  146. package/dist/cjs/providers/index.d.ts.map +1 -1
  147. package/dist/cjs/providers/index.js +7 -1
  148. package/dist/cjs/providers/index.js.map +1 -1
  149. package/dist/cjs/types/agent.d.ts +2 -1
  150. package/dist/cjs/types/agent.d.ts.map +1 -1
  151. package/dist/cjs/types/ai.d.ts +20 -0
  152. package/dist/cjs/types/ai.d.ts.map +1 -1
  153. package/dist/cjs/types/errors.d.ts +33 -0
  154. package/dist/cjs/types/errors.d.ts.map +1 -1
  155. package/dist/cjs/types/errors.js +37 -1
  156. package/dist/cjs/types/errors.js.map +1 -1
  157. package/dist/cjs/types/flow.d.ts +10 -5
  158. package/dist/cjs/types/flow.d.ts.map +1 -1
  159. package/dist/cjs/types/history.d.ts +1 -1
  160. package/dist/cjs/types/history.d.ts.map +1 -1
  161. package/dist/cjs/types/index.d.ts +5 -4
  162. package/dist/cjs/types/index.d.ts.map +1 -1
  163. package/dist/cjs/types/index.js +3 -1
  164. package/dist/cjs/types/index.js.map +1 -1
  165. package/dist/cjs/types/persistence.d.ts +43 -2
  166. package/dist/cjs/types/persistence.d.ts.map +1 -1
  167. package/dist/cjs/types/session.d.ts +8 -0
  168. package/dist/cjs/types/session.d.ts.map +1 -1
  169. package/dist/cjs/types/signals.d.ts +12 -2
  170. package/dist/cjs/types/signals.d.ts.map +1 -1
  171. package/dist/cjs/types/template.d.ts +3 -1
  172. package/dist/cjs/types/template.d.ts.map +1 -1
  173. package/dist/cjs/types/tool.d.ts +4 -4
  174. package/dist/cjs/types/tool.d.ts.map +1 -1
  175. package/dist/cjs/utils/condition.d.ts +19 -0
  176. package/dist/cjs/utils/condition.d.ts.map +1 -1
  177. package/dist/cjs/utils/condition.js +86 -15
  178. package/dist/cjs/utils/condition.js.map +1 -1
  179. package/dist/cjs/utils/session.d.ts +1 -0
  180. package/dist/cjs/utils/session.d.ts.map +1 -1
  181. package/dist/cjs/utils/session.js +1 -0
  182. package/dist/cjs/utils/session.js.map +1 -1
  183. package/dist/core/Agent.d.ts +28 -18
  184. package/dist/core/Agent.d.ts.map +1 -1
  185. package/dist/core/Agent.js +58 -68
  186. package/dist/core/Agent.js.map +1 -1
  187. package/dist/core/AutoChainExecutor.d.ts.map +1 -1
  188. package/dist/core/AutoChainExecutor.js +14 -20
  189. package/dist/core/AutoChainExecutor.js.map +1 -1
  190. package/dist/core/BranchEvaluator.d.ts +4 -3
  191. package/dist/core/BranchEvaluator.d.ts.map +1 -1
  192. package/dist/core/BranchEvaluator.js +18 -23
  193. package/dist/core/BranchEvaluator.js.map +1 -1
  194. package/dist/core/Flow.d.ts +2 -1
  195. package/dist/core/Flow.d.ts.map +1 -1
  196. package/dist/core/Flow.js +10 -3
  197. package/dist/core/Flow.js.map +1 -1
  198. package/dist/core/FlowRouter.d.ts +1 -0
  199. package/dist/core/FlowRouter.d.ts.map +1 -1
  200. package/dist/core/FlowRouter.js +28 -5
  201. package/dist/core/FlowRouter.js.map +1 -1
  202. package/dist/core/PersistenceManager.d.ts +3 -0
  203. package/dist/core/PersistenceManager.d.ts.map +1 -1
  204. package/dist/core/PersistenceManager.js +58 -6
  205. package/dist/core/PersistenceManager.js.map +1 -1
  206. package/dist/core/PromptComposer.d.ts.map +1 -1
  207. package/dist/core/PromptComposer.js +24 -10
  208. package/dist/core/PromptComposer.js.map +1 -1
  209. package/dist/core/ResponseGenerationError.d.ts +30 -0
  210. package/dist/core/ResponseGenerationError.d.ts.map +1 -0
  211. package/dist/core/ResponseGenerationError.js +33 -0
  212. package/dist/core/ResponseGenerationError.js.map +1 -0
  213. package/dist/core/ResponseModal.d.ts +43 -102
  214. package/dist/core/ResponseModal.d.ts.map +1 -1
  215. package/dist/core/ResponseModal.js +171 -1186
  216. package/dist/core/ResponseModal.js.map +1 -1
  217. package/dist/core/ResponsePipeline.d.ts +58 -152
  218. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  219. package/dist/core/ResponsePipeline.js +409 -458
  220. package/dist/core/ResponsePipeline.js.map +1 -1
  221. package/dist/core/SessionFinalizer.d.ts +34 -0
  222. package/dist/core/SessionFinalizer.d.ts.map +1 -0
  223. package/dist/core/SessionFinalizer.js +57 -0
  224. package/dist/core/SessionFinalizer.js.map +1 -0
  225. package/dist/core/SessionManager.d.ts +1 -1
  226. package/dist/core/SessionManager.d.ts.map +1 -1
  227. package/dist/core/SessionManager.js +18 -7
  228. package/dist/core/SessionManager.js.map +1 -1
  229. package/dist/core/SignalCoordinator.d.ts +103 -0
  230. package/dist/core/SignalCoordinator.d.ts.map +1 -0
  231. package/dist/core/SignalCoordinator.js +203 -0
  232. package/dist/core/SignalCoordinator.js.map +1 -0
  233. package/dist/core/SignalEvaluator.d.ts +2 -2
  234. package/dist/core/SignalEvaluator.d.ts.map +1 -1
  235. package/dist/core/SignalEvaluator.js +11 -26
  236. package/dist/core/SignalEvaluator.js.map +1 -1
  237. package/dist/core/Step.d.ts +3 -1
  238. package/dist/core/Step.d.ts.map +1 -1
  239. package/dist/core/Step.js +10 -3
  240. package/dist/core/Step.js.map +1 -1
  241. package/dist/core/StepLifecycle.d.ts +33 -0
  242. package/dist/core/StepLifecycle.d.ts.map +1 -0
  243. package/dist/core/StepLifecycle.js +93 -0
  244. package/dist/core/StepLifecycle.js.map +1 -0
  245. package/dist/core/ToolLoopExecutor.d.ts +104 -0
  246. package/dist/core/ToolLoopExecutor.d.ts.map +1 -0
  247. package/dist/core/ToolLoopExecutor.js +387 -0
  248. package/dist/core/ToolLoopExecutor.js.map +1 -0
  249. package/dist/core/ToolManager.d.ts +1 -1
  250. package/dist/core/ToolManager.d.ts.map +1 -1
  251. package/dist/core/ToolManager.js.map +1 -1
  252. package/dist/index.d.ts +4 -5
  253. package/dist/index.d.ts.map +1 -1
  254. package/dist/index.js +3 -3
  255. package/dist/index.js.map +1 -1
  256. package/dist/providers/AnthropicProvider.d.ts +2 -0
  257. package/dist/providers/AnthropicProvider.d.ts.map +1 -1
  258. package/dist/providers/AnthropicProvider.js +22 -50
  259. package/dist/providers/AnthropicProvider.js.map +1 -1
  260. package/dist/providers/DeepSeekProvider.d.ts +25 -21
  261. package/dist/providers/DeepSeekProvider.d.ts.map +1 -1
  262. package/dist/providers/DeepSeekProvider.js +49 -408
  263. package/dist/providers/DeepSeekProvider.js.map +1 -1
  264. package/dist/providers/GeminiProvider.d.ts +2 -0
  265. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  266. package/dist/providers/GeminiProvider.js +21 -50
  267. package/dist/providers/GeminiProvider.js.map +1 -1
  268. package/dist/providers/OpenAICompatibleProvider.d.ts +129 -0
  269. package/dist/providers/OpenAICompatibleProvider.d.ts.map +1 -0
  270. package/dist/providers/OpenAICompatibleProvider.js +481 -0
  271. package/dist/providers/OpenAICompatibleProvider.js.map +1 -0
  272. package/dist/providers/OpenAIProvider.d.ts +9 -28
  273. package/dist/providers/OpenAIProvider.d.ts.map +1 -1
  274. package/dist/providers/OpenAIProvider.js +23 -417
  275. package/dist/providers/OpenAIProvider.js.map +1 -1
  276. package/dist/providers/OpenRouterProvider.d.ts +10 -27
  277. package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
  278. package/dist/providers/OpenRouterProvider.js +28 -417
  279. package/dist/providers/OpenRouterProvider.js.map +1 -1
  280. package/dist/providers/errorClassification.d.ts +61 -0
  281. package/dist/providers/errorClassification.d.ts.map +1 -0
  282. package/dist/providers/errorClassification.js +116 -0
  283. package/dist/providers/errorClassification.js.map +1 -0
  284. package/dist/providers/index.d.ts +4 -0
  285. package/dist/providers/index.d.ts.map +1 -1
  286. package/dist/providers/index.js +2 -0
  287. package/dist/providers/index.js.map +1 -1
  288. package/dist/types/agent.d.ts +2 -1
  289. package/dist/types/agent.d.ts.map +1 -1
  290. package/dist/types/ai.d.ts +20 -0
  291. package/dist/types/ai.d.ts.map +1 -1
  292. package/dist/types/errors.d.ts +33 -0
  293. package/dist/types/errors.d.ts.map +1 -1
  294. package/dist/types/errors.js +34 -0
  295. package/dist/types/errors.js.map +1 -1
  296. package/dist/types/flow.d.ts +10 -5
  297. package/dist/types/flow.d.ts.map +1 -1
  298. package/dist/types/history.d.ts +1 -1
  299. package/dist/types/history.d.ts.map +1 -1
  300. package/dist/types/index.d.ts +5 -4
  301. package/dist/types/index.d.ts.map +1 -1
  302. package/dist/types/index.js +1 -1
  303. package/dist/types/index.js.map +1 -1
  304. package/dist/types/persistence.d.ts +43 -2
  305. package/dist/types/persistence.d.ts.map +1 -1
  306. package/dist/types/session.d.ts +8 -0
  307. package/dist/types/session.d.ts.map +1 -1
  308. package/dist/types/signals.d.ts +12 -2
  309. package/dist/types/signals.d.ts.map +1 -1
  310. package/dist/types/template.d.ts +3 -1
  311. package/dist/types/template.d.ts.map +1 -1
  312. package/dist/types/tool.d.ts +4 -4
  313. package/dist/types/tool.d.ts.map +1 -1
  314. package/dist/utils/condition.d.ts +19 -0
  315. package/dist/utils/condition.d.ts.map +1 -1
  316. package/dist/utils/condition.js +84 -15
  317. package/dist/utils/condition.js.map +1 -1
  318. package/dist/utils/session.d.ts +1 -0
  319. package/dist/utils/session.d.ts.map +1 -1
  320. package/dist/utils/session.js +1 -0
  321. package/dist/utils/session.js.map +1 -1
  322. package/docs/README.md +1 -1
  323. package/docs/guides/branching.md +1 -1
  324. package/docs/guides/compaction.md +12 -5
  325. package/docs/guides/conditions.md +15 -2
  326. package/docs/guides/error-handling.md +59 -9
  327. package/docs/guides/instructions.md +2 -2
  328. package/docs/guides/persistence.md +69 -2
  329. package/docs/guides/streaming.md +2 -0
  330. package/docs/migration/README.md +5 -1
  331. package/docs/migration/v2-3-to-v2-4.md +316 -0
  332. package/docs/reference/adapters.md +55 -7
  333. package/docs/reference/branches.md +2 -2
  334. package/docs/reference/create-agent.md +3 -3
  335. package/docs/reference/errors.md +66 -1
  336. package/docs/reference/flow.md +1 -1
  337. package/docs/reference/instruction.md +4 -4
  338. package/docs/reference/providers.md +100 -3
  339. package/docs/reference/signals.md +11 -3
  340. package/docs/reference/step.md +2 -2
  341. package/docs/reference/tool.md +3 -1
  342. package/docs/start/05-go-to-production.md +3 -0
  343. package/package.json +1 -1
  344. package/src/adapters/MemoryAdapter.ts +15 -1
  345. package/src/adapters/MongoAdapter.ts +41 -2
  346. package/src/adapters/OpenSearchAdapter.ts +24 -1
  347. package/src/adapters/PostgreSQLAdapter.ts +45 -5
  348. package/src/adapters/PrismaAdapter.ts +82 -16
  349. package/src/adapters/RedisAdapter.ts +19 -1
  350. package/src/adapters/SQLiteAdapter.ts +47 -5
  351. package/src/core/Agent.ts +70 -85
  352. package/src/core/AutoChainExecutor.ts +27 -57
  353. package/src/core/BranchEvaluator.ts +24 -30
  354. package/src/core/Flow.ts +10 -3
  355. package/src/core/FlowRouter.ts +36 -4
  356. package/src/core/PersistenceManager.ts +79 -10
  357. package/src/core/PromptComposer.ts +25 -12
  358. package/src/core/ResponseGenerationError.ts +56 -0
  359. package/src/core/ResponseModal.ts +233 -1482
  360. package/src/core/ResponsePipeline.ts +492 -662
  361. package/src/core/SessionFinalizer.ts +78 -0
  362. package/src/core/SessionManager.ts +21 -9
  363. package/src/core/SignalCoordinator.ts +263 -0
  364. package/src/core/SignalEvaluator.ts +12 -29
  365. package/src/core/Step.ts +11 -3
  366. package/src/core/StepLifecycle.ts +139 -0
  367. package/src/core/ToolLoopExecutor.ts +492 -0
  368. package/src/core/ToolManager.ts +2 -1
  369. package/src/index.ts +7 -5
  370. package/src/providers/AnthropicProvider.ts +30 -72
  371. package/src/providers/DeepSeekProvider.ts +74 -586
  372. package/src/providers/GeminiProvider.ts +29 -70
  373. package/src/providers/OpenAICompatibleProvider.ts +738 -0
  374. package/src/providers/OpenAIProvider.ts +29 -602
  375. package/src/providers/OpenRouterProvider.ts +38 -596
  376. package/src/providers/errorClassification.ts +172 -0
  377. package/src/providers/index.ts +13 -0
  378. package/src/types/agent.ts +2 -1
  379. package/src/types/ai.ts +22 -0
  380. package/src/types/errors.ts +57 -0
  381. package/src/types/flow.ts +10 -5
  382. package/src/types/history.ts +1 -2
  383. package/src/types/index.ts +5 -1
  384. package/src/types/persistence.ts +50 -2
  385. package/src/types/session.ts +9 -0
  386. package/src/types/signals.ts +14 -2
  387. package/src/types/template.ts +3 -1
  388. package/src/types/tool.ts +10 -10
  389. package/src/utils/condition.ts +115 -18
  390. package/src/utils/session.ts +2 -0
@@ -0,0 +1,93 @@
1
+ /**
2
+ * StepLifecycle executes step `prepare` and `finalize` handlers.
3
+ *
4
+ * A handler may be a function, a registered tool id, or an inline tool.
5
+ * Used by the response prepare phase (prepare) and by SessionFinalizer
6
+ * (finalize).
7
+ */
8
+ import { logger } from "../utils";
9
+ export class StepLifecycle {
10
+ constructor(deps) {
11
+ this.deps = deps;
12
+ }
13
+ /**
14
+ * Execute prepare function for the session's current step if available.
15
+ * Auto-steps are skipped — their prepare is handled by AutoChainExecutor.
16
+ */
17
+ async runPrepare(session, context) {
18
+ if (session.currentFlow && session.currentStep) {
19
+ const currentFlow = this.deps.getFlows().find((r) => r.id === session.currentFlow?.id);
20
+ if (currentFlow) {
21
+ const currentStep = currentFlow.getStep(session.currentStep.id);
22
+ // Skip auto-steps — their prepare is handled by AutoChainExecutor
23
+ if (currentStep?.auto) {
24
+ logger.debug(`[StepLifecycle] Skipping pre-routing prepare for auto-step: ${currentStep.id}`);
25
+ return;
26
+ }
27
+ if (currentStep?.prepare) {
28
+ logger.debug(`[StepLifecycle] Executing prepare for step: ${currentStep.id}`);
29
+ await this.executePrepareFinalize(currentStep.prepare, context, session.data, currentFlow, currentStep);
30
+ }
31
+ }
32
+ }
33
+ }
34
+ /**
35
+ * Execute finalize function for the session's current step if available.
36
+ */
37
+ async runFinalize(session, context) {
38
+ if (session.currentFlow && session.currentStep) {
39
+ const currentFlow = this.deps.getFlows().find((r) => r.id === session.currentFlow?.id);
40
+ if (currentFlow) {
41
+ const currentStep = currentFlow.getStep(session.currentStep.id);
42
+ if (currentStep?.finalize) {
43
+ logger.debug(`[StepLifecycle] Executing finalize for step: ${currentStep.id}`);
44
+ await this.executePrepareFinalize(currentStep.finalize, context, session.data, currentFlow, currentStep);
45
+ }
46
+ }
47
+ }
48
+ }
49
+ /**
50
+ * Execute a prepare or finalize function/tool.
51
+ */
52
+ async executePrepareFinalize(prepareOrFinalize, context, data, flow, step) {
53
+ if (!prepareOrFinalize)
54
+ return;
55
+ if (typeof prepareOrFinalize === "function") {
56
+ // It's a function - call it directly
57
+ await prepareOrFinalize(context, data);
58
+ }
59
+ else {
60
+ // It's a tool reference - find and execute the tool
61
+ let tool;
62
+ if (typeof prepareOrFinalize === "string") {
63
+ // Tool ID - use ToolManager for unified resolution
64
+ tool = this.deps.toolManager.find(prepareOrFinalize, undefined, step, flow);
65
+ }
66
+ else {
67
+ // Tool object - use directly
68
+ tool = prepareOrFinalize;
69
+ }
70
+ if (tool) {
71
+ // Use ToolManager for unified tool execution
72
+ const result = await this.deps.toolManager.executeTool({
73
+ tool,
74
+ context,
75
+ updateContext: this.deps.updateContext,
76
+ updateData: this.deps.updateData,
77
+ history: [], // Empty history for prepare/finalize
78
+ data,
79
+ });
80
+ if (!result.success) {
81
+ logger.error(`[StepLifecycle] Tool execution failed in prepare/finalize: ${result.error}`);
82
+ throw new Error(`Tool execution failed: ${result.error}`);
83
+ }
84
+ }
85
+ else {
86
+ logger.warn(`[StepLifecycle] Tool not found for prepare/finalize: ${typeof prepareOrFinalize === "string"
87
+ ? prepareOrFinalize
88
+ : "inline tool"}`);
89
+ }
90
+ }
91
+ }
92
+ }
93
+ //# sourceMappingURL=StepLifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepLifecycle.js","sourceRoot":"","sources":["../../src/core/StepLifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,OAAO,aAAa;IACtB,YACqB,IAKhB;QALgB,SAAI,GAAJ,IAAI,CAKpB;IACD,CAAC;IAEL;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,OAA4B,EAAE,OAAiB;QAC5D,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,EAAE,CAC1C,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAChE,kEAAkE;gBAClE,IAAI,WAAW,EAAE,IAAI,EAAE,CAAC;oBACpB,MAAM,CAAC,KAAK,CAAC,+DAA+D,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC9F,OAAO;gBACX,CAAC;gBACD,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;oBACvB,MAAM,CAAC,KAAK,CAAC,+CAA+C,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC9E,MAAM,IAAI,CAAC,sBAAsB,CAC7B,WAAW,CAAC,OAAO,EACnB,OAAO,EACP,OAAO,CAAC,IAAI,EACZ,WAAW,EACX,WAAW,CACd,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAA4B,EAAE,OAAiB;QAC7D,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,EAAE,CAC1C,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAChE,IAAI,WAAW,EAAE,QAAQ,EAAE,CAAC;oBACxB,MAAM,CAAC,KAAK,CACR,gDAAgD,WAAW,CAAC,EAAE,EAAE,CACnE,CAAC;oBACF,MAAM,IAAI,CAAC,sBAAsB,CAC7B,WAAW,CAAC,QAAQ,EACpB,OAAO,EACP,OAAO,CAAC,IAAI,EACZ,WAAW,EACX,WAAW,CACd,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB,CAChC,iBAIe,EACf,OAAiB,EACjB,IAAqB,EACrB,IAA4B,EAC5B,IAA4B;QAE5B,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAE/B,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE,CAAC;YAC1C,qCAAqC;YACrC,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACJ,oDAAoD;YACpD,IAAI,IAAuC,CAAC;YAE5C,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;gBACxC,mDAAmD;gBACnD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAChF,CAAC;iBAAM,CAAC;gBACJ,6BAA6B;gBAC7B,IAAI,GAAG,iBAAiB,CAAC;YAC7B,CAAC;YAED,IAAI,IAAI,EAAE,CAAC;gBACP,6CAA6C;gBAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;oBACnD,IAAI;oBACJ,OAAO;oBACP,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa;oBACtC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;oBAChC,OAAO,EAAE,EAAE,EAAE,qCAAqC;oBAClD,IAAI;iBACP,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAClB,MAAM,CAAC,KAAK,CACR,8DAA8D,MAAM,CAAC,KAAK,EAAE,CAC/E,CAAC;oBACF,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC9D,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,IAAI,CACP,wDAAwD,OAAO,iBAAiB,KAAK,QAAQ;oBACzF,CAAC,CAAC,iBAAiB;oBACnB,CAAC,CAAC,aACN,EAAE,CACL,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;CACJ"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * ToolLoopExecutor owns dynamic tool execution during response generation:
3
+ *
4
+ * - `runLoop()` — the run-tools-then-ask-LLM-again follow-up loop used by the
5
+ * non-streaming path (and as the streaming fallback): executes the initial
6
+ * tool calls sequentially, asks the provider whether more tools are needed,
7
+ * reconstructs tool-result history items, and forces a final text response
8
+ * when tools ran but no message was produced.
9
+ * - `runStreamingBatch()` — the streaming path's initial batch execution via
10
+ * ToolManager.executeWithConcurrency (StreamingToolExecutor concurrency
11
+ * rules), yielding tool-progress chunks; falls back to `runLoop()` when
12
+ * concurrent execution fails.
13
+ *
14
+ * ToolManager remains the registry/resolver and single-tool executor.
15
+ */
16
+ import type { AgentOptions, AgentResponseStreamChunk, AgentStructuredResponse, HistoryItem, SessionState } from "../types";
17
+ import type { Flow } from "./Flow";
18
+ import type { Step } from "./Step";
19
+ import type { ToolManager } from "./ToolManager";
20
+ export declare class ToolLoopExecutor<TContext = unknown, TData = unknown> {
21
+ private readonly deps;
22
+ constructor(deps: {
23
+ toolManager: ToolManager<TContext, TData>;
24
+ getAgentOptions: () => AgentOptions<TContext, TData>;
25
+ updateContext: (updates: Partial<TContext>) => Promise<void>;
26
+ updateCollectedData: (updates: Partial<TData>) => Promise<void>;
27
+ updateSessionData: (session: SessionState<TData>, dataUpdate: Partial<TData>) => Promise<SessionState<TData>>;
28
+ /** Maximum number of tool loops (defaults to 5). */
29
+ maxToolLoops?: number;
30
+ });
31
+ /**
32
+ * Unified tool execution logic with loop handling.
33
+ * Consolidates the complex tool execution logic from both streaming and
34
+ * non-streaming responses.
35
+ */
36
+ runLoop(params: {
37
+ toolCalls?: Array<{
38
+ toolName: string;
39
+ arguments: Record<string, unknown>;
40
+ }>;
41
+ context: TContext;
42
+ session: SessionState<TData>;
43
+ history: HistoryItem[];
44
+ selectedFlow?: Flow<TContext, TData>;
45
+ responsePrompt: string;
46
+ availableTools: Array<{
47
+ id: string;
48
+ name: string;
49
+ description?: string;
50
+ parameters?: unknown;
51
+ }>;
52
+ responseSchema?: Record<string, unknown>;
53
+ signal?: AbortSignal;
54
+ }): Promise<{
55
+ session: SessionState<TData>;
56
+ finalToolCalls?: Array<{
57
+ toolName: string;
58
+ arguments: Record<string, unknown>;
59
+ }>;
60
+ finalMessage?: string;
61
+ structured?: AgentStructuredResponse;
62
+ }>;
63
+ /**
64
+ * Execute the streaming path's initial batch of tool calls concurrently
65
+ * via ToolManager.executeWithConcurrency, yielding tool-progress chunks.
66
+ * Falls back to `runLoop()` when concurrent execution fails.
67
+ *
68
+ * Returns the updated session and the final tool calls.
69
+ */
70
+ runStreamingBatch(params: {
71
+ toolCalls: Array<{
72
+ toolName: string;
73
+ arguments: Record<string, unknown>;
74
+ }>;
75
+ context: TContext;
76
+ session: SessionState<TData>;
77
+ history: HistoryItem[];
78
+ selectedFlow: Flow<TContext, TData>;
79
+ step: Step<TContext, TData>;
80
+ /** Accumulated text of the LLM's final chunk, echoed on progress chunks. */
81
+ accumulated: string;
82
+ responsePrompt: string;
83
+ availableTools: Array<{
84
+ id: string;
85
+ name: string;
86
+ description?: string;
87
+ parameters?: unknown;
88
+ }>;
89
+ responseSchema?: Record<string, unknown>;
90
+ signal?: AbortSignal;
91
+ }): AsyncGenerator<AgentResponseStreamChunk<TData>, {
92
+ session: SessionState<TData>;
93
+ toolCalls: Array<{
94
+ toolName: string;
95
+ arguments: Record<string, unknown>;
96
+ }> | undefined;
97
+ }>;
98
+ /**
99
+ * Find an available tool by name for the given flow.
100
+ * Delegates to ToolManager for unified tool resolution.
101
+ */
102
+ private findAvailableTool;
103
+ }
104
+ //# sourceMappingURL=ToolLoopExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolLoopExecutor.d.ts","sourceRoot":"","sources":["../../src/core/ToolLoopExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,387 @@
1
+ /**
2
+ * ToolLoopExecutor owns dynamic tool execution during response generation:
3
+ *
4
+ * - `runLoop()` — the run-tools-then-ask-LLM-again follow-up loop used by the
5
+ * non-streaming path (and as the streaming fallback): executes the initial
6
+ * tool calls sequentially, asks the provider whether more tools are needed,
7
+ * reconstructs tool-result history items, and forces a final text response
8
+ * when tools ran but no message was produced.
9
+ * - `runStreamingBatch()` — the streaming path's initial batch execution via
10
+ * ToolManager.executeWithConcurrency (StreamingToolExecutor concurrency
11
+ * rules), yielding tool-progress chunks; falls back to `runLoop()` when
12
+ * concurrent execution fails.
13
+ *
14
+ * ToolManager remains the registry/resolver and single-tool executor.
15
+ */
16
+ import { ResponseGenerationError } from "./ResponseGenerationError";
17
+ import { historyToEvents, logger, serializeToolResult } from "../utils";
18
+ export class ToolLoopExecutor {
19
+ constructor(deps) {
20
+ this.deps = deps;
21
+ }
22
+ /**
23
+ * Unified tool execution logic with loop handling.
24
+ * Consolidates the complex tool execution logic from both streaming and
25
+ * non-streaming responses.
26
+ */
27
+ async runLoop(params) {
28
+ try {
29
+ const { context, history, selectedFlow, responsePrompt, availableTools, responseSchema, signal } = params;
30
+ let { toolCalls, session } = params;
31
+ // Convert HistoryItem[] to Event[] for internal processing
32
+ const historyEvents = historyToEvents(history);
33
+ // Map to store tool execution results for history
34
+ const toolResultsMap = new Map();
35
+ // Map to store tool call arguments for history reconstruction
36
+ const toolArgsMap = new Map();
37
+ // Execute initial dynamic tool calls
38
+ if (toolCalls && toolCalls.length > 0) {
39
+ logger.debug(`[ToolLoopExecutor] Executing ${toolCalls.length} dynamic tool calls:`, toolCalls.map(tc => tc.toolName));
40
+ for (const toolCall of toolCalls) {
41
+ const tool = this.findAvailableTool(toolCall.toolName, selectedFlow);
42
+ if (!tool) {
43
+ logger.warn(`[ToolExecutionError] Tool not found: "${toolCall.toolName}" is not registered in any scope. Skipping this tool call. Register the tool or check the tool name.`);
44
+ continue;
45
+ }
46
+ try {
47
+ // Use ToolManager for unified tool execution
48
+ const toolResult = await this.deps.toolManager.executeTool({
49
+ tool,
50
+ context,
51
+ updateContext: this.deps.updateContext,
52
+ updateData: this.deps.updateCollectedData,
53
+ history: historyEvents, // Use Event[] for tool execution
54
+ data: session.data,
55
+ toolArguments: toolCall.arguments,
56
+ });
57
+ // Store the actual tool result data for history
58
+ toolResultsMap.set(toolCall.toolName, serializeToolResult(toolResult));
59
+ toolArgsMap.set(toolCall.toolName, toolCall.arguments);
60
+ // Check if tool execution was successful
61
+ if (!toolResult.success) {
62
+ logger.error(`[ToolLoopExecutor] Tool execution failed: ${toolCall.toolName} - ${toolResult.error}`);
63
+ // Continue with other tools rather than failing completely
64
+ continue;
65
+ }
66
+ // Update context with tool results
67
+ if (toolResult.contextUpdate) {
68
+ try {
69
+ await this.deps.updateContext(toolResult.contextUpdate);
70
+ }
71
+ catch (error) {
72
+ logger.error(`[ToolLoopExecutor] Failed to update context from tool ${toolCall.toolName}:`, error);
73
+ // Continue execution but log the error
74
+ }
75
+ }
76
+ // Update collected data with tool results
77
+ if (toolResult.dataUpdate) {
78
+ try {
79
+ session = await this.deps.updateSessionData(session, toolResult.dataUpdate);
80
+ logger.debug(`[ToolLoopExecutor] Tool updated collected data:`, toolResult.dataUpdate);
81
+ }
82
+ catch (error) {
83
+ logger.error(`[ToolLoopExecutor] Failed to update data from tool ${toolCall.toolName}:`, error);
84
+ // Continue execution but log the error
85
+ }
86
+ }
87
+ logger.debug(`[ToolLoopExecutor] Executed dynamic tool: ${toolCall.toolName} (success: ${toolResult.success})`);
88
+ }
89
+ catch (error) {
90
+ logger.error(`[ToolLoopExecutor] Tool execution error for ${toolCall.toolName}:`, error);
91
+ // Continue with other tools rather than failing the entire response
92
+ continue;
93
+ }
94
+ }
95
+ }
96
+ // TOOL LOOP: Allow AI to make follow-up tool calls after initial tool execution
97
+ const MAX_TOOL_LOOPS = this.deps.maxToolLoops || 5;
98
+ let toolLoopCount = 0;
99
+ let hasToolCalls = toolCalls && toolCalls.length > 0;
100
+ let finalMessage;
101
+ let followUpStructured;
102
+ while (hasToolCalls && toolLoopCount < MAX_TOOL_LOOPS) {
103
+ toolLoopCount++;
104
+ logger.debug(`[ToolLoopExecutor] Starting tool loop ${toolLoopCount}/${MAX_TOOL_LOOPS} with ${toolCalls?.length || 0} tool calls`);
105
+ // Create tool result history items
106
+ const toolResultHistoryItems = [];
107
+ for (const toolCall of toolCalls || []) {
108
+ const tool = this.findAvailableTool(toolCall.toolName, selectedFlow);
109
+ if (tool) {
110
+ // Create HistoryItem format for tool results
111
+ // Add assistant message with tool_calls
112
+ toolResultHistoryItems.push({
113
+ role: "assistant",
114
+ content: null,
115
+ tool_calls: [{
116
+ id: toolCall.toolName,
117
+ name: toolCall.toolName,
118
+ arguments: toolCall.arguments,
119
+ }],
120
+ });
121
+ // Add tool result
122
+ toolResultHistoryItems.push({
123
+ role: "tool",
124
+ tool_call_id: toolCall.toolName,
125
+ name: toolCall.toolName,
126
+ content: toolResultsMap.get(toolCall.toolName) || "Tool executed successfully",
127
+ });
128
+ }
129
+ }
130
+ // Create updated history with tool results
131
+ const updatedHistory = [...history, ...toolResultHistoryItems];
132
+ // Make follow-up AI call to see if more tools are needed
133
+ // After first iteration, don't provide tools to force a text response
134
+ const agentOptions = this.deps.getAgentOptions();
135
+ const shouldProvideTools = toolLoopCount === 1;
136
+ logger.debug(`[ToolLoopExecutor] Making follow-up AI call (loop ${toolLoopCount}):`, {
137
+ providingTools: shouldProvideTools,
138
+ toolsCount: shouldProvideTools ? availableTools.length : 0,
139
+ addingTextInstruction: toolLoopCount > 1,
140
+ });
141
+ const followUpResult = await agentOptions.provider.generateMessage({
142
+ prompt: responsePrompt + (toolLoopCount > 1 ? "\n\nProvide a text response to the user based on the tool results." : ""),
143
+ history: updatedHistory, // Use HistoryItem[] for AI provider
144
+ context,
145
+ tools: shouldProvideTools ? availableTools : [], // Only provide tools on first iteration
146
+ parameters: responseSchema ? {
147
+ jsonSchema: responseSchema,
148
+ schemaName: "tool_followup",
149
+ } : undefined,
150
+ signal,
151
+ });
152
+ // Check if follow-up call has more tool calls
153
+ const followUpToolCalls = followUpResult.structured?.toolCalls;
154
+ hasToolCalls = followUpToolCalls && followUpToolCalls.length > 0;
155
+ logger.debug(`[ToolLoopExecutor] Follow-up AI response (loop ${toolLoopCount}):`, {
156
+ hasMessage: !!followUpResult.message,
157
+ messageLength: followUpResult.message?.length || 0,
158
+ hasToolCalls,
159
+ toolCallsCount: followUpToolCalls?.length || 0,
160
+ toolNames: followUpToolCalls?.map(tc => tc.toolName) || [],
161
+ });
162
+ if (hasToolCalls) {
163
+ logger.debug(`[ToolLoopExecutor] Follow-up call produced ${followUpToolCalls.length} additional tool calls`);
164
+ // Execute the follow-up tool calls
165
+ for (const toolCall of followUpToolCalls) {
166
+ const tool = this.findAvailableTool(toolCall.toolName, selectedFlow);
167
+ if (!tool) {
168
+ logger.warn(`[ToolExecutionError] Tool not found in follow-up: "${toolCall.toolName}" is not registered in any scope. Skipping this tool call. Register the tool or check the tool name.`);
169
+ continue;
170
+ }
171
+ try {
172
+ // Use ToolManager for unified tool execution
173
+ const toolResult = await this.deps.toolManager.executeTool({
174
+ tool,
175
+ context,
176
+ updateContext: this.deps.updateContext,
177
+ updateData: this.deps.updateCollectedData,
178
+ history: historyToEvents(updatedHistory), // Convert to Event[] for tool execution
179
+ data: session.data,
180
+ toolArguments: toolCall.arguments,
181
+ });
182
+ // Check if tool execution was successful
183
+ if (!toolResult.success) {
184
+ logger.error(`[ToolLoopExecutor] Follow-up tool execution failed: ${toolCall.toolName} - ${toolResult.error}`);
185
+ continue;
186
+ }
187
+ // Update context with follow-up tool results
188
+ if (toolResult.contextUpdate) {
189
+ try {
190
+ await this.deps.updateContext(toolResult.contextUpdate);
191
+ }
192
+ catch (error) {
193
+ logger.error(`[ToolLoopExecutor] Failed to update context from follow-up tool ${toolCall.toolName}:`, error);
194
+ }
195
+ }
196
+ if (toolResult.dataUpdate) {
197
+ try {
198
+ session = await this.deps.updateSessionData(session, toolResult.dataUpdate);
199
+ logger.debug(`[ToolLoopExecutor] Follow-up tool updated collected data:`, toolResult.dataUpdate);
200
+ }
201
+ catch (error) {
202
+ logger.error(`[ToolLoopExecutor] Failed to update data from follow-up tool ${toolCall.toolName}:`, error);
203
+ }
204
+ }
205
+ // Store the follow-up tool result for potential next loop iteration
206
+ toolResultsMap.set(toolCall.toolName, serializeToolResult(toolResult));
207
+ toolArgsMap.set(toolCall.toolName, toolCall.arguments);
208
+ logger.debug(`[ToolLoopExecutor] Executed follow-up tool: ${toolCall.toolName} (success: ${toolResult.success})`);
209
+ }
210
+ catch (error) {
211
+ logger.error(`[ToolLoopExecutor] Follow-up tool execution error for ${toolCall.toolName}:`, error);
212
+ continue;
213
+ }
214
+ }
215
+ // Update toolCalls for next iteration or final response
216
+ toolCalls = followUpToolCalls;
217
+ }
218
+ else {
219
+ logger.debug(`[ToolLoopExecutor] Tool loop completed after ${toolLoopCount} iterations`);
220
+ // Update final message and toolCalls from follow-up result if no more tools
221
+ finalMessage = followUpResult.structured?.message || followUpResult.message;
222
+ followUpStructured = followUpResult.structured;
223
+ toolCalls = followUpToolCalls || [];
224
+ break;
225
+ }
226
+ }
227
+ if (toolLoopCount >= MAX_TOOL_LOOPS) {
228
+ logger.warn(`[ResponseGenerationError] Tool loop limit reached: ${toolLoopCount} iterations hit the cap (${MAX_TOOL_LOOPS}). Stopping tool execution. Increase MAX_TOOL_LOOPS or reduce recursive tool calls.`);
229
+ }
230
+ // If tools were executed but no final text message was produced,
231
+ // make one more LLM call to generate a proper text response from tool results.
232
+ // This prevents the original tool-invocation message (e.g. "Let me check...")
233
+ // from being returned as the final user-facing response.
234
+ if (!finalMessage && toolLoopCount > 0) {
235
+ logger.debug(`[ToolLoopExecutor] No final message after tool loop, making additional LLM call for text response`);
236
+ // Build tool result history from toolResultsMap which contains ALL
237
+ // tool executions (initial + follow-up). We can't use `toolCalls` here
238
+ // because it was reassigned to the (empty) follow-up tool calls when
239
+ // the while loop broke out.
240
+ const finalToolResultHistoryItems = [];
241
+ for (const [toolName, toolResult] of toolResultsMap) {
242
+ finalToolResultHistoryItems.push({
243
+ role: "assistant",
244
+ content: null,
245
+ tool_calls: [{
246
+ id: toolName,
247
+ name: toolName,
248
+ arguments: toolArgsMap.get(toolName) || {},
249
+ }],
250
+ });
251
+ finalToolResultHistoryItems.push({
252
+ role: "tool",
253
+ tool_call_id: toolName,
254
+ name: toolName,
255
+ content: toolResult,
256
+ });
257
+ }
258
+ const finalHistory = [...history, ...finalToolResultHistoryItems];
259
+ const agentOptions = this.deps.getAgentOptions();
260
+ try {
261
+ const textResult = await agentOptions.provider.generateMessage({
262
+ prompt: responsePrompt + "\n\nProvide a text response to the user based on the tool results. Do not call any tools.",
263
+ history: finalHistory,
264
+ context,
265
+ tools: [], // No tools - force text response
266
+ parameters: responseSchema ? {
267
+ jsonSchema: responseSchema,
268
+ schemaName: "tool_final_text",
269
+ } : undefined,
270
+ signal,
271
+ });
272
+ finalMessage = textResult.structured?.message || textResult.message;
273
+ if (textResult.structured) {
274
+ followUpStructured = textResult.structured;
275
+ }
276
+ logger.debug(`[ToolLoopExecutor] Generated final text response after tool loop:`, {
277
+ hasMessage: !!finalMessage,
278
+ messageLength: finalMessage?.length || 0,
279
+ });
280
+ }
281
+ catch (error) {
282
+ logger.error(`[ToolLoopExecutor] Failed to generate final text response after tool loop:`, error);
283
+ // finalMessage remains undefined; caller will use original message as fallback
284
+ }
285
+ }
286
+ logger.debug(`[ToolLoopExecutor] Tool loop completed:`, {
287
+ totalIterations: toolLoopCount,
288
+ hasFinalMessage: !!finalMessage,
289
+ finalMessageLength: finalMessage?.length || 0,
290
+ finalToolCallsCount: toolCalls?.length || 0,
291
+ });
292
+ return {
293
+ session,
294
+ finalToolCalls: toolCalls,
295
+ finalMessage,
296
+ structured: followUpStructured,
297
+ };
298
+ }
299
+ catch (error) {
300
+ throw ResponseGenerationError.fromError(error, 'tool_execution', params, {
301
+ toolCallsCount: params.toolCalls?.length || 0,
302
+ availableToolsCount: params.availableTools.length
303
+ });
304
+ }
305
+ }
306
+ /**
307
+ * Execute the streaming path's initial batch of tool calls concurrently
308
+ * via ToolManager.executeWithConcurrency, yielding tool-progress chunks.
309
+ * Falls back to `runLoop()` when concurrent execution fails.
310
+ *
311
+ * Returns the updated session and the final tool calls.
312
+ */
313
+ async *runStreamingBatch(params) {
314
+ const { context, history, selectedFlow, step, accumulated, responsePrompt, availableTools, responseSchema, signal } = params;
315
+ let { session } = params;
316
+ let toolCalls = params.toolCalls;
317
+ // Use concurrent execution for the initial batch of tool calls
318
+ const toolCallRequests = params.toolCalls.map((tc, i) => ({
319
+ id: `${tc.toolName}-${i}-${Date.now()}`,
320
+ toolName: tc.toolName,
321
+ arguments: tc.arguments,
322
+ }));
323
+ const historyEvents = historyToEvents(history);
324
+ try {
325
+ for await (const update of this.deps.toolManager.executeWithConcurrency({
326
+ toolCalls: toolCallRequests,
327
+ context,
328
+ data: session.data,
329
+ history: historyEvents,
330
+ signal,
331
+ flow: selectedFlow,
332
+ step,
333
+ })) {
334
+ // Apply context updates
335
+ if (update.contextUpdate) {
336
+ try {
337
+ await this.deps.updateContext(update.contextUpdate);
338
+ }
339
+ catch (error) {
340
+ logger.error(`[ToolLoopExecutor] Failed to update context from concurrent tool:`, error);
341
+ }
342
+ }
343
+ // Apply data updates
344
+ if (update.dataUpdate) {
345
+ try {
346
+ session = await this.deps.updateSessionData(session, update.dataUpdate);
347
+ }
348
+ catch (error) {
349
+ logger.error(`[ToolLoopExecutor] Failed to update data from concurrent tool:`, error);
350
+ }
351
+ }
352
+ // Yield progress updates immediately
353
+ if (update.progress) {
354
+ yield {
355
+ delta: '',
356
+ accumulated,
357
+ done: false,
358
+ session,
359
+ toolCalls: undefined,
360
+ isFlowComplete: false,
361
+ metadata: { toolProgress: update.progress, toolCallId: update.toolCallId },
362
+ };
363
+ }
364
+ }
365
+ logger.debug(`[ToolLoopExecutor] Concurrent tool execution completed for ${toolCallRequests.length} tools`);
366
+ }
367
+ catch (error) {
368
+ logger.error(`[ToolLoopExecutor] Concurrent tool execution failed, falling back to sequential:`, error);
369
+ // Fall back to the unified tool loop on failure
370
+ const toolResult = await this.runLoop({
371
+ toolCalls, context, session, history, selectedFlow,
372
+ responsePrompt, availableTools, responseSchema, signal,
373
+ });
374
+ session = toolResult.session;
375
+ toolCalls = toolResult.finalToolCalls;
376
+ }
377
+ return { session, toolCalls };
378
+ }
379
+ /**
380
+ * Find an available tool by name for the given flow.
381
+ * Delegates to ToolManager for unified tool resolution.
382
+ */
383
+ findAvailableTool(toolName, flow) {
384
+ return this.deps.toolManager.find(toolName, undefined, undefined, flow);
385
+ }
386
+ }
387
+ //# sourceMappingURL=ToolLoopExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolLoopExecutor.js","sourceRoot":"","sources":["../../src/core/ToolLoopExecutor.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import type { Tool, ToolExecutionResult, DataEnrichmentConfig, ValidationConfig, ValidationResult, ApiCallConfig, ComputationConfig, ToolCallRequest, ToolExecutionUpdate, Event } from "../types";
5
5
  import { ToolScope } from "../types";
6
- import { Agent } from "./Agent";
6
+ import type { Agent } from "./Agent";
7
7
  import { Flow } from "./Flow";
8
8
  import { Step } from "./Step";
9
9
  /**