@falai/agent 0.1.0-alpha2

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 (499) hide show
  1. package/README.md +797 -0
  2. package/dist/cjs/package.json +1 -0
  3. package/dist/cjs/src/adapters/MemoryAdapter.d.ts +47 -0
  4. package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +1 -0
  5. package/dist/cjs/src/adapters/MemoryAdapter.js +202 -0
  6. package/dist/cjs/src/adapters/MemoryAdapter.js.map +1 -0
  7. package/dist/cjs/src/adapters/MongoAdapter.d.ts +97 -0
  8. package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +1 -0
  9. package/dist/cjs/src/adapters/MongoAdapter.js +168 -0
  10. package/dist/cjs/src/adapters/MongoAdapter.js.map +1 -0
  11. package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts +169 -0
  12. package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
  13. package/dist/cjs/src/adapters/OpenSearchAdapter.js +458 -0
  14. package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +1 -0
  15. package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts +71 -0
  16. package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  17. package/dist/cjs/src/adapters/PostgreSQLAdapter.js +260 -0
  18. package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +1 -0
  19. package/dist/cjs/src/adapters/PrismaAdapter.d.ts +115 -0
  20. package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +1 -0
  21. package/dist/cjs/src/adapters/PrismaAdapter.js +366 -0
  22. package/dist/cjs/src/adapters/PrismaAdapter.js.map +1 -0
  23. package/dist/cjs/src/adapters/RedisAdapter.d.ts +71 -0
  24. package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +1 -0
  25. package/dist/cjs/src/adapters/RedisAdapter.js +231 -0
  26. package/dist/cjs/src/adapters/RedisAdapter.js.map +1 -0
  27. package/dist/cjs/src/adapters/SQLiteAdapter.d.ts +69 -0
  28. package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +1 -0
  29. package/dist/cjs/src/adapters/SQLiteAdapter.js +312 -0
  30. package/dist/cjs/src/adapters/SQLiteAdapter.js.map +1 -0
  31. package/dist/cjs/src/adapters/index.d.ts +17 -0
  32. package/dist/cjs/src/adapters/index.d.ts.map +1 -0
  33. package/dist/cjs/src/adapters/index.js +21 -0
  34. package/dist/cjs/src/adapters/index.js.map +1 -0
  35. package/dist/cjs/src/constants/index.d.ts +10 -0
  36. package/dist/cjs/src/constants/index.d.ts.map +1 -0
  37. package/dist/cjs/src/constants/index.js +13 -0
  38. package/dist/cjs/src/constants/index.js.map +1 -0
  39. package/dist/cjs/src/core/Agent.d.ts +232 -0
  40. package/dist/cjs/src/core/Agent.d.ts.map +1 -0
  41. package/dist/cjs/src/core/Agent.js +741 -0
  42. package/dist/cjs/src/core/Agent.js.map +1 -0
  43. package/dist/cjs/src/core/Events.d.ts +26 -0
  44. package/dist/cjs/src/core/Events.d.ts.map +1 -0
  45. package/dist/cjs/src/core/Events.js +144 -0
  46. package/dist/cjs/src/core/Events.js.map +1 -0
  47. package/dist/cjs/src/core/PersistenceManager.d.ts +98 -0
  48. package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
  49. package/dist/cjs/src/core/PersistenceManager.js +261 -0
  50. package/dist/cjs/src/core/PersistenceManager.js.map +1 -0
  51. package/dist/cjs/src/core/PromptComposer.d.ts +27 -0
  52. package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -0
  53. package/dist/cjs/src/core/PromptComposer.js +194 -0
  54. package/dist/cjs/src/core/PromptComposer.js.map +1 -0
  55. package/dist/cjs/src/core/ResponseEngine.d.ts +32 -0
  56. package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -0
  57. package/dist/cjs/src/core/ResponseEngine.js +202 -0
  58. package/dist/cjs/src/core/ResponseEngine.js.map +1 -0
  59. package/dist/cjs/src/core/ResponseModal.d.ts +222 -0
  60. package/dist/cjs/src/core/ResponseModal.d.ts.map +1 -0
  61. package/dist/cjs/src/core/ResponseModal.js +1588 -0
  62. package/dist/cjs/src/core/ResponseModal.js.map +1 -0
  63. package/dist/cjs/src/core/ResponsePipeline.d.ts +175 -0
  64. package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
  65. package/dist/cjs/src/core/ResponsePipeline.js +549 -0
  66. package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
  67. package/dist/cjs/src/core/Route.d.ts +181 -0
  68. package/dist/cjs/src/core/Route.d.ts.map +1 -0
  69. package/dist/cjs/src/core/Route.js +541 -0
  70. package/dist/cjs/src/core/Route.js.map +1 -0
  71. package/dist/cjs/src/core/RoutingEngine.d.ts +159 -0
  72. package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
  73. package/dist/cjs/src/core/RoutingEngine.js +961 -0
  74. package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
  75. package/dist/cjs/src/core/SessionManager.d.ts +94 -0
  76. package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
  77. package/dist/cjs/src/core/SessionManager.js +239 -0
  78. package/dist/cjs/src/core/SessionManager.js.map +1 -0
  79. package/dist/cjs/src/core/Step.d.ts +170 -0
  80. package/dist/cjs/src/core/Step.d.ts.map +1 -0
  81. package/dist/cjs/src/core/Step.js +448 -0
  82. package/dist/cjs/src/core/Step.js.map +1 -0
  83. package/dist/cjs/src/core/ToolManager.d.ts +234 -0
  84. package/dist/cjs/src/core/ToolManager.d.ts.map +1 -0
  85. package/dist/cjs/src/core/ToolManager.js +1117 -0
  86. package/dist/cjs/src/core/ToolManager.js.map +1 -0
  87. package/dist/cjs/src/index.d.ts +44 -0
  88. package/dist/cjs/src/index.d.ts.map +1 -0
  89. package/dist/cjs/src/index.js +88 -0
  90. package/dist/cjs/src/index.js.map +1 -0
  91. package/dist/cjs/src/providers/AnthropicProvider.d.ts +43 -0
  92. package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +1 -0
  93. package/dist/cjs/src/providers/AnthropicProvider.js +377 -0
  94. package/dist/cjs/src/providers/AnthropicProvider.js.map +1 -0
  95. package/dist/cjs/src/providers/GeminiProvider.d.ts +58 -0
  96. package/dist/cjs/src/providers/GeminiProvider.d.ts.map +1 -0
  97. package/dist/cjs/src/providers/GeminiProvider.js +489 -0
  98. package/dist/cjs/src/providers/GeminiProvider.js.map +1 -0
  99. package/dist/cjs/src/providers/OpenAIProvider.d.ts +52 -0
  100. package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +1 -0
  101. package/dist/cjs/src/providers/OpenAIProvider.js +395 -0
  102. package/dist/cjs/src/providers/OpenAIProvider.js.map +1 -0
  103. package/dist/cjs/src/providers/OpenRouterProvider.d.ts +56 -0
  104. package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +1 -0
  105. package/dist/cjs/src/providers/OpenRouterProvider.js +409 -0
  106. package/dist/cjs/src/providers/OpenRouterProvider.js.map +1 -0
  107. package/dist/cjs/src/providers/index.d.ts +13 -0
  108. package/dist/cjs/src/providers/index.d.ts.map +1 -0
  109. package/dist/cjs/src/providers/index.js +16 -0
  110. package/dist/cjs/src/providers/index.js.map +1 -0
  111. package/dist/cjs/src/types/agent.d.ts +181 -0
  112. package/dist/cjs/src/types/agent.d.ts.map +1 -0
  113. package/dist/cjs/src/types/agent.js +21 -0
  114. package/dist/cjs/src/types/agent.js.map +1 -0
  115. package/dist/cjs/src/types/ai.d.ts +143 -0
  116. package/dist/cjs/src/types/ai.d.ts.map +1 -0
  117. package/dist/cjs/src/types/ai.js +6 -0
  118. package/dist/cjs/src/types/ai.js.map +1 -0
  119. package/dist/cjs/src/types/history.d.ts +178 -0
  120. package/dist/cjs/src/types/history.d.ts.map +1 -0
  121. package/dist/cjs/src/types/history.js +33 -0
  122. package/dist/cjs/src/types/history.js.map +1 -0
  123. package/dist/cjs/src/types/index.d.ts +22 -0
  124. package/dist/cjs/src/types/index.d.ts.map +1 -0
  125. package/dist/cjs/src/types/index.js +37 -0
  126. package/dist/cjs/src/types/index.js.map +1 -0
  127. package/dist/cjs/src/types/persistence.d.ts +209 -0
  128. package/dist/cjs/src/types/persistence.d.ts.map +1 -0
  129. package/dist/cjs/src/types/persistence.js +7 -0
  130. package/dist/cjs/src/types/persistence.js.map +1 -0
  131. package/dist/cjs/src/types/route.d.ts +238 -0
  132. package/dist/cjs/src/types/route.d.ts.map +1 -0
  133. package/dist/cjs/src/types/route.js +6 -0
  134. package/dist/cjs/src/types/route.js.map +1 -0
  135. package/dist/cjs/src/types/routing.d.ts +16 -0
  136. package/dist/cjs/src/types/routing.d.ts.map +1 -0
  137. package/dist/cjs/src/types/routing.js +3 -0
  138. package/dist/cjs/src/types/routing.js.map +1 -0
  139. package/dist/cjs/src/types/schema.d.ts +22 -0
  140. package/dist/cjs/src/types/schema.d.ts.map +1 -0
  141. package/dist/cjs/src/types/schema.js +3 -0
  142. package/dist/cjs/src/types/schema.js.map +1 -0
  143. package/dist/cjs/src/types/session.d.ts +65 -0
  144. package/dist/cjs/src/types/session.d.ts.map +1 -0
  145. package/dist/cjs/src/types/session.js +6 -0
  146. package/dist/cjs/src/types/session.js.map +1 -0
  147. package/dist/cjs/src/types/template.d.ts +88 -0
  148. package/dist/cjs/src/types/template.d.ts.map +1 -0
  149. package/dist/cjs/src/types/template.js +3 -0
  150. package/dist/cjs/src/types/template.js.map +1 -0
  151. package/dist/cjs/src/types/tool.d.ts +130 -0
  152. package/dist/cjs/src/types/tool.d.ts.map +1 -0
  153. package/dist/cjs/src/types/tool.js +19 -0
  154. package/dist/cjs/src/types/tool.js.map +1 -0
  155. package/dist/cjs/src/utils/clone.d.ts +8 -0
  156. package/dist/cjs/src/utils/clone.d.ts.map +1 -0
  157. package/dist/cjs/src/utils/clone.js +32 -0
  158. package/dist/cjs/src/utils/clone.js.map +1 -0
  159. package/dist/cjs/src/utils/condition.d.ts +38 -0
  160. package/dist/cjs/src/utils/condition.d.ts.map +1 -0
  161. package/dist/cjs/src/utils/condition.js +168 -0
  162. package/dist/cjs/src/utils/condition.js.map +1 -0
  163. package/dist/cjs/src/utils/event.d.ts +6 -0
  164. package/dist/cjs/src/utils/event.d.ts.map +1 -0
  165. package/dist/cjs/src/utils/event.js +20 -0
  166. package/dist/cjs/src/utils/event.js.map +1 -0
  167. package/dist/cjs/src/utils/history.d.ts +60 -0
  168. package/dist/cjs/src/utils/history.d.ts.map +1 -0
  169. package/dist/cjs/src/utils/history.js +274 -0
  170. package/dist/cjs/src/utils/history.js.map +1 -0
  171. package/dist/cjs/src/utils/id.d.ts +25 -0
  172. package/dist/cjs/src/utils/id.d.ts.map +1 -0
  173. package/dist/cjs/src/utils/id.js +70 -0
  174. package/dist/cjs/src/utils/id.js.map +1 -0
  175. package/dist/cjs/src/utils/index.d.ts +15 -0
  176. package/dist/cjs/src/utils/index.d.ts.map +1 -0
  177. package/dist/cjs/src/utils/index.js +64 -0
  178. package/dist/cjs/src/utils/index.js.map +1 -0
  179. package/dist/cjs/src/utils/json.d.ts +16 -0
  180. package/dist/cjs/src/utils/json.d.ts.map +1 -0
  181. package/dist/cjs/src/utils/json.js +47 -0
  182. package/dist/cjs/src/utils/json.js.map +1 -0
  183. package/dist/cjs/src/utils/logger.d.ts +10 -0
  184. package/dist/cjs/src/utils/logger.d.ts.map +1 -0
  185. package/dist/cjs/src/utils/logger.js +23 -0
  186. package/dist/cjs/src/utils/logger.js.map +1 -0
  187. package/dist/cjs/src/utils/retry.d.ts +10 -0
  188. package/dist/cjs/src/utils/retry.d.ts.map +1 -0
  189. package/dist/cjs/src/utils/retry.js +76 -0
  190. package/dist/cjs/src/utils/retry.js.map +1 -0
  191. package/dist/cjs/src/utils/session.d.ts +51 -0
  192. package/dist/cjs/src/utils/session.d.ts.map +1 -0
  193. package/dist/cjs/src/utils/session.js +170 -0
  194. package/dist/cjs/src/utils/session.js.map +1 -0
  195. package/dist/cjs/src/utils/template.d.ts +155 -0
  196. package/dist/cjs/src/utils/template.d.ts.map +1 -0
  197. package/dist/cjs/src/utils/template.js +383 -0
  198. package/dist/cjs/src/utils/template.js.map +1 -0
  199. package/dist/src/adapters/MemoryAdapter.d.ts +47 -0
  200. package/dist/src/adapters/MemoryAdapter.d.ts.map +1 -0
  201. package/dist/src/adapters/MemoryAdapter.js +198 -0
  202. package/dist/src/adapters/MemoryAdapter.js.map +1 -0
  203. package/dist/src/adapters/MongoAdapter.d.ts +97 -0
  204. package/dist/src/adapters/MongoAdapter.d.ts.map +1 -0
  205. package/dist/src/adapters/MongoAdapter.js +164 -0
  206. package/dist/src/adapters/MongoAdapter.js.map +1 -0
  207. package/dist/src/adapters/OpenSearchAdapter.d.ts +169 -0
  208. package/dist/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
  209. package/dist/src/adapters/OpenSearchAdapter.js +454 -0
  210. package/dist/src/adapters/OpenSearchAdapter.js.map +1 -0
  211. package/dist/src/adapters/PostgreSQLAdapter.d.ts +71 -0
  212. package/dist/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  213. package/dist/src/adapters/PostgreSQLAdapter.js +256 -0
  214. package/dist/src/adapters/PostgreSQLAdapter.js.map +1 -0
  215. package/dist/src/adapters/PrismaAdapter.d.ts +115 -0
  216. package/dist/src/adapters/PrismaAdapter.d.ts.map +1 -0
  217. package/dist/src/adapters/PrismaAdapter.js +362 -0
  218. package/dist/src/adapters/PrismaAdapter.js.map +1 -0
  219. package/dist/src/adapters/RedisAdapter.d.ts +71 -0
  220. package/dist/src/adapters/RedisAdapter.d.ts.map +1 -0
  221. package/dist/src/adapters/RedisAdapter.js +227 -0
  222. package/dist/src/adapters/RedisAdapter.js.map +1 -0
  223. package/dist/src/adapters/SQLiteAdapter.d.ts +69 -0
  224. package/dist/src/adapters/SQLiteAdapter.d.ts.map +1 -0
  225. package/dist/src/adapters/SQLiteAdapter.js +308 -0
  226. package/dist/src/adapters/SQLiteAdapter.js.map +1 -0
  227. package/dist/src/adapters/index.d.ts +17 -0
  228. package/dist/src/adapters/index.d.ts.map +1 -0
  229. package/dist/src/adapters/index.js +11 -0
  230. package/dist/src/adapters/index.js.map +1 -0
  231. package/dist/src/constants/index.d.ts +10 -0
  232. package/dist/src/constants/index.d.ts.map +1 -0
  233. package/dist/src/constants/index.js +10 -0
  234. package/dist/src/constants/index.js.map +1 -0
  235. package/dist/src/core/Agent.d.ts +232 -0
  236. package/dist/src/core/Agent.d.ts.map +1 -0
  237. package/dist/src/core/Agent.js +737 -0
  238. package/dist/src/core/Agent.js.map +1 -0
  239. package/dist/src/core/Events.d.ts +26 -0
  240. package/dist/src/core/Events.d.ts.map +1 -0
  241. package/dist/src/core/Events.js +137 -0
  242. package/dist/src/core/Events.js.map +1 -0
  243. package/dist/src/core/PersistenceManager.d.ts +98 -0
  244. package/dist/src/core/PersistenceManager.d.ts.map +1 -0
  245. package/dist/src/core/PersistenceManager.js +257 -0
  246. package/dist/src/core/PersistenceManager.js.map +1 -0
  247. package/dist/src/core/PromptComposer.d.ts +27 -0
  248. package/dist/src/core/PromptComposer.d.ts.map +1 -0
  249. package/dist/src/core/PromptComposer.js +190 -0
  250. package/dist/src/core/PromptComposer.js.map +1 -0
  251. package/dist/src/core/ResponseEngine.d.ts +32 -0
  252. package/dist/src/core/ResponseEngine.d.ts.map +1 -0
  253. package/dist/src/core/ResponseEngine.js +198 -0
  254. package/dist/src/core/ResponseEngine.js.map +1 -0
  255. package/dist/src/core/ResponseModal.d.ts +222 -0
  256. package/dist/src/core/ResponseModal.d.ts.map +1 -0
  257. package/dist/src/core/ResponseModal.js +1583 -0
  258. package/dist/src/core/ResponseModal.js.map +1 -0
  259. package/dist/src/core/ResponsePipeline.d.ts +175 -0
  260. package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
  261. package/dist/src/core/ResponsePipeline.js +545 -0
  262. package/dist/src/core/ResponsePipeline.js.map +1 -0
  263. package/dist/src/core/Route.d.ts +181 -0
  264. package/dist/src/core/Route.d.ts.map +1 -0
  265. package/dist/src/core/Route.js +537 -0
  266. package/dist/src/core/Route.js.map +1 -0
  267. package/dist/src/core/RoutingEngine.d.ts +159 -0
  268. package/dist/src/core/RoutingEngine.d.ts.map +1 -0
  269. package/dist/src/core/RoutingEngine.js +957 -0
  270. package/dist/src/core/RoutingEngine.js.map +1 -0
  271. package/dist/src/core/SessionManager.d.ts +94 -0
  272. package/dist/src/core/SessionManager.d.ts.map +1 -0
  273. package/dist/src/core/SessionManager.js +235 -0
  274. package/dist/src/core/SessionManager.js.map +1 -0
  275. package/dist/src/core/Step.d.ts +170 -0
  276. package/dist/src/core/Step.d.ts.map +1 -0
  277. package/dist/src/core/Step.js +444 -0
  278. package/dist/src/core/Step.js.map +1 -0
  279. package/dist/src/core/ToolManager.d.ts +234 -0
  280. package/dist/src/core/ToolManager.d.ts.map +1 -0
  281. package/dist/src/core/ToolManager.js +1111 -0
  282. package/dist/src/core/ToolManager.js.map +1 -0
  283. package/dist/src/index.d.ts +44 -0
  284. package/dist/src/index.d.ts.map +1 -0
  285. package/dist/src/index.js +37 -0
  286. package/dist/src/index.js.map +1 -0
  287. package/dist/src/providers/AnthropicProvider.d.ts +43 -0
  288. package/dist/src/providers/AnthropicProvider.d.ts.map +1 -0
  289. package/dist/src/providers/AnthropicProvider.js +370 -0
  290. package/dist/src/providers/AnthropicProvider.js.map +1 -0
  291. package/dist/src/providers/GeminiProvider.d.ts +58 -0
  292. package/dist/src/providers/GeminiProvider.d.ts.map +1 -0
  293. package/dist/src/providers/GeminiProvider.js +485 -0
  294. package/dist/src/providers/GeminiProvider.js.map +1 -0
  295. package/dist/src/providers/OpenAIProvider.d.ts +52 -0
  296. package/dist/src/providers/OpenAIProvider.d.ts.map +1 -0
  297. package/dist/src/providers/OpenAIProvider.js +388 -0
  298. package/dist/src/providers/OpenAIProvider.js.map +1 -0
  299. package/dist/src/providers/OpenRouterProvider.d.ts +56 -0
  300. package/dist/src/providers/OpenRouterProvider.d.ts.map +1 -0
  301. package/dist/src/providers/OpenRouterProvider.js +402 -0
  302. package/dist/src/providers/OpenRouterProvider.js.map +1 -0
  303. package/dist/src/providers/index.d.ts +13 -0
  304. package/dist/src/providers/index.d.ts.map +1 -0
  305. package/dist/src/providers/index.js +9 -0
  306. package/dist/src/providers/index.js.map +1 -0
  307. package/dist/src/types/agent.d.ts +181 -0
  308. package/dist/src/types/agent.d.ts.map +1 -0
  309. package/dist/src/types/agent.js +18 -0
  310. package/dist/src/types/agent.js.map +1 -0
  311. package/dist/src/types/ai.d.ts +143 -0
  312. package/dist/src/types/ai.d.ts.map +1 -0
  313. package/dist/src/types/ai.js +5 -0
  314. package/dist/src/types/ai.js.map +1 -0
  315. package/dist/src/types/history.d.ts +178 -0
  316. package/dist/src/types/history.d.ts.map +1 -0
  317. package/dist/src/types/history.js +30 -0
  318. package/dist/src/types/history.js.map +1 -0
  319. package/dist/src/types/index.d.ts +22 -0
  320. package/dist/src/types/index.d.ts.map +1 -0
  321. package/dist/src/types/index.js +12 -0
  322. package/dist/src/types/index.js.map +1 -0
  323. package/dist/src/types/persistence.d.ts +209 -0
  324. package/dist/src/types/persistence.d.ts.map +1 -0
  325. package/dist/src/types/persistence.js +6 -0
  326. package/dist/src/types/persistence.js.map +1 -0
  327. package/dist/src/types/route.d.ts +238 -0
  328. package/dist/src/types/route.d.ts.map +1 -0
  329. package/dist/src/types/route.js +5 -0
  330. package/dist/src/types/route.js.map +1 -0
  331. package/dist/src/types/routing.d.ts +16 -0
  332. package/dist/src/types/routing.d.ts.map +1 -0
  333. package/dist/src/types/routing.js +2 -0
  334. package/dist/src/types/routing.js.map +1 -0
  335. package/dist/src/types/schema.d.ts +22 -0
  336. package/dist/src/types/schema.d.ts.map +1 -0
  337. package/dist/src/types/schema.js +2 -0
  338. package/dist/src/types/schema.js.map +1 -0
  339. package/dist/src/types/session.d.ts +65 -0
  340. package/dist/src/types/session.d.ts.map +1 -0
  341. package/dist/src/types/session.js +5 -0
  342. package/dist/src/types/session.js.map +1 -0
  343. package/dist/src/types/template.d.ts +88 -0
  344. package/dist/src/types/template.d.ts.map +1 -0
  345. package/dist/src/types/template.js +2 -0
  346. package/dist/src/types/template.js.map +1 -0
  347. package/dist/src/types/tool.d.ts +130 -0
  348. package/dist/src/types/tool.d.ts.map +1 -0
  349. package/dist/src/types/tool.js +16 -0
  350. package/dist/src/types/tool.js.map +1 -0
  351. package/dist/src/utils/clone.d.ts +8 -0
  352. package/dist/src/utils/clone.d.ts.map +1 -0
  353. package/dist/src/utils/clone.js +29 -0
  354. package/dist/src/utils/clone.js.map +1 -0
  355. package/dist/src/utils/condition.d.ts +38 -0
  356. package/dist/src/utils/condition.d.ts.map +1 -0
  357. package/dist/src/utils/condition.js +161 -0
  358. package/dist/src/utils/condition.js.map +1 -0
  359. package/dist/src/utils/event.d.ts +6 -0
  360. package/dist/src/utils/event.d.ts.map +1 -0
  361. package/dist/src/utils/event.js +17 -0
  362. package/dist/src/utils/event.js.map +1 -0
  363. package/dist/src/utils/history.d.ts +60 -0
  364. package/dist/src/utils/history.d.ts.map +1 -0
  365. package/dist/src/utils/history.js +263 -0
  366. package/dist/src/utils/history.js.map +1 -0
  367. package/dist/src/utils/id.d.ts +25 -0
  368. package/dist/src/utils/id.d.ts.map +1 -0
  369. package/dist/src/utils/id.js +64 -0
  370. package/dist/src/utils/id.js.map +1 -0
  371. package/dist/src/utils/index.d.ts +15 -0
  372. package/dist/src/utils/index.d.ts.map +1 -0
  373. package/dist/src/utils/index.js +23 -0
  374. package/dist/src/utils/index.js.map +1 -0
  375. package/dist/src/utils/json.d.ts +16 -0
  376. package/dist/src/utils/json.d.ts.map +1 -0
  377. package/dist/src/utils/json.js +43 -0
  378. package/dist/src/utils/json.js.map +1 -0
  379. package/dist/src/utils/logger.d.ts +10 -0
  380. package/dist/src/utils/logger.d.ts.map +1 -0
  381. package/dist/src/utils/logger.js +17 -0
  382. package/dist/src/utils/logger.js.map +1 -0
  383. package/dist/src/utils/retry.d.ts +10 -0
  384. package/dist/src/utils/retry.d.ts.map +1 -0
  385. package/dist/src/utils/retry.js +71 -0
  386. package/dist/src/utils/retry.js.map +1 -0
  387. package/dist/src/utils/session.d.ts +51 -0
  388. package/dist/src/utils/session.d.ts.map +1 -0
  389. package/dist/src/utils/session.js +160 -0
  390. package/dist/src/utils/session.js.map +1 -0
  391. package/dist/src/utils/template.d.ts +155 -0
  392. package/dist/src/utils/template.d.ts.map +1 -0
  393. package/dist/src/utils/template.js +374 -0
  394. package/dist/src/utils/template.js.map +1 -0
  395. package/docs/CONTRIBUTING.md +521 -0
  396. package/docs/README.md +228 -0
  397. package/docs/api/README.md +3258 -0
  398. package/docs/api/overview.md +1134 -0
  399. package/docs/architecture/data-extraction-flow.md +363 -0
  400. package/docs/core/agent/README.md +902 -0
  401. package/docs/core/agent/context-management.md +796 -0
  402. package/docs/core/agent/session-management.md +641 -0
  403. package/docs/core/ai-integration/prompt-composition.md +220 -0
  404. package/docs/core/ai-integration/providers.md +515 -0
  405. package/docs/core/ai-integration/response-processing.md +287 -0
  406. package/docs/core/conversation-flows/data-collection.md +623 -0
  407. package/docs/core/conversation-flows/route-dsl.md +502 -0
  408. package/docs/core/conversation-flows/routes.md +247 -0
  409. package/docs/core/conversation-flows/step-transitions.md +595 -0
  410. package/docs/core/conversation-flows/steps.md +154 -0
  411. package/docs/core/error-handling.md +638 -0
  412. package/docs/core/persistence/adapters.md +255 -0
  413. package/docs/core/persistence/session-storage.md +644 -0
  414. package/docs/core/routing/intelligent-routing.md +466 -0
  415. package/docs/core/tools/tool-definition.md +970 -0
  416. package/docs/core/tools/tool-scoping.md +819 -0
  417. package/docs/guides/advanced-patterns/publishing.md +186 -0
  418. package/docs/guides/error-handling-patterns.md +578 -0
  419. package/docs/guides/getting-started/README.md +696 -0
  420. package/docs/guides/migration/README.md +72 -0
  421. package/docs/guides/migration/flexible-routing-conditions.md +375 -0
  422. package/docs/guides/migration/response-modal-refactor.md +518 -0
  423. package/examples/advanced-patterns/knowledge-based-agent.ts +735 -0
  424. package/examples/advanced-patterns/persistent-onboarding.ts +728 -0
  425. package/examples/advanced-patterns/route-lifecycle-hooks.ts +556 -0
  426. package/examples/advanced-patterns/streaming-responses.ts +578 -0
  427. package/examples/ai-providers/anthropic-integration.ts +388 -0
  428. package/examples/ai-providers/openai-integration.ts +228 -0
  429. package/examples/condition-patterns/function-only-conditions.ts +365 -0
  430. package/examples/condition-patterns/mixed-array-conditions.ts +477 -0
  431. package/examples/condition-patterns/route-skipif-patterns.ts +468 -0
  432. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  433. package/examples/condition-patterns/string-only-conditions.ts +296 -0
  434. package/examples/conversation-flows/completion-transitions.ts +318 -0
  435. package/examples/core-concepts/basic-agent.ts +503 -0
  436. package/examples/core-concepts/modern-streaming-api.ts +309 -0
  437. package/examples/core-concepts/schema-driven-extraction.ts +332 -0
  438. package/examples/core-concepts/session-management.ts +494 -0
  439. package/examples/integrations/database-integration.ts +630 -0
  440. package/examples/integrations/healthcare-integration.ts +595 -0
  441. package/examples/integrations/search-integration.ts +530 -0
  442. package/examples/integrations/server-session-management.ts +307 -0
  443. package/examples/persistence/custom-adapter.ts +529 -0
  444. package/examples/persistence/database-persistence.ts +583 -0
  445. package/examples/persistence/memory-sessions.ts +495 -0
  446. package/examples/persistence/prisma-schema.example.prisma +74 -0
  447. package/examples/persistence/redis-persistence.ts +488 -0
  448. package/examples/tools/basic-tools.ts +765 -0
  449. package/examples/tools/data-enrichment-tools.ts +593 -0
  450. package/package.json +125 -0
  451. package/src/adapters/MemoryAdapter.ts +273 -0
  452. package/src/adapters/MongoAdapter.ts +304 -0
  453. package/src/adapters/OpenSearchAdapter.ts +670 -0
  454. package/src/adapters/PostgreSQLAdapter.ts +428 -0
  455. package/src/adapters/PrismaAdapter.ts +553 -0
  456. package/src/adapters/RedisAdapter.ts +377 -0
  457. package/src/adapters/SQLiteAdapter.ts +459 -0
  458. package/src/adapters/index.ts +43 -0
  459. package/src/constants/index.ts +10 -0
  460. package/src/core/Agent.ts +970 -0
  461. package/src/core/Events.ts +164 -0
  462. package/src/core/PersistenceManager.ts +353 -0
  463. package/src/core/PromptComposer.ts +253 -0
  464. package/src/core/ResponseEngine.ts +306 -0
  465. package/src/core/ResponseModal.ts +2050 -0
  466. package/src/core/ResponsePipeline.ts +864 -0
  467. package/src/core/Route.ts +677 -0
  468. package/src/core/RoutingEngine.ts +1396 -0
  469. package/src/core/SessionManager.ts +297 -0
  470. package/src/core/Step.ts +593 -0
  471. package/src/core/ToolManager.ts +1394 -0
  472. package/src/index.ts +155 -0
  473. package/src/providers/AnthropicProvider.ts +560 -0
  474. package/src/providers/GeminiProvider.ts +683 -0
  475. package/src/providers/OpenAIProvider.ts +602 -0
  476. package/src/providers/OpenRouterProvider.ts +613 -0
  477. package/src/providers/index.ts +16 -0
  478. package/src/types/agent.ts +196 -0
  479. package/src/types/ai.ts +158 -0
  480. package/src/types/history.ts +206 -0
  481. package/src/types/index.ts +119 -0
  482. package/src/types/persistence.ts +251 -0
  483. package/src/types/route.ts +272 -0
  484. package/src/types/routing.ts +18 -0
  485. package/src/types/schema.ts +23 -0
  486. package/src/types/session.ts +74 -0
  487. package/src/types/template.ts +104 -0
  488. package/src/types/tool.ts +174 -0
  489. package/src/utils/clone.ts +34 -0
  490. package/src/utils/condition.ts +190 -0
  491. package/src/utils/event.ts +16 -0
  492. package/src/utils/history.ts +306 -0
  493. package/src/utils/id.ts +73 -0
  494. package/src/utils/index.ts +69 -0
  495. package/src/utils/json.ts +46 -0
  496. package/src/utils/logger.ts +19 -0
  497. package/src/utils/retry.ts +97 -0
  498. package/src/utils/session.ts +204 -0
  499. package/src/utils/template.ts +444 -0
@@ -0,0 +1,545 @@
1
+ /**
2
+ * Response processing utilities shared between respond() and respondStream() methods
3
+ */
4
+ import { EventKind, MessageRole } from "../types/history";
5
+ import { createSession, enterRoute, enterStep, mergeCollected, logger, render, } from "../utils";
6
+ import { createTemplateContext } from "../utils/template";
7
+ import { END_ROUTE_ID } from "../constants";
8
+ /**
9
+ * Shared response processing logic between respond() and respondStream() methods
10
+ */
11
+ export class ResponsePipeline {
12
+ constructor(options, getRoutes, tools, routingEngine, updateContext, updateData, updateCollectedData, toolManager) {
13
+ this.options = options;
14
+ this.getRoutes = getRoutes;
15
+ this.tools = tools;
16
+ this.routingEngine = routingEngine;
17
+ this.updateContext = updateContext;
18
+ this.updateData = updateData;
19
+ this.updateCollectedData = updateCollectedData;
20
+ this.toolManager = toolManager;
21
+ }
22
+ /**
23
+ * Prepare context and session for response generation
24
+ */
25
+ async prepareResponseContext(params) {
26
+ const { contextOverride, session } = params;
27
+ // Get current context (may fetch from provider)
28
+ let currentContext = await this.getContext();
29
+ // Call beforeRespond hook if configured
30
+ if (this.options.hooks?.beforeRespond && currentContext !== undefined) {
31
+ currentContext = await this.options.hooks.beforeRespond(currentContext);
32
+ // Update stored context with the result from beforeRespond
33
+ this.context = currentContext;
34
+ }
35
+ // Merge context with override
36
+ const effectiveContext = {
37
+ ...currentContext,
38
+ ...contextOverride,
39
+ };
40
+ // Initialize or get session (use current session if available)
41
+ const targetSession = session || this.currentSession || createSession();
42
+ return {
43
+ effectiveContext,
44
+ session: targetSession,
45
+ };
46
+ }
47
+ /**
48
+ * Handle routing and step selection logic
49
+ */
50
+ async handleRoutingAndStepSelection(params) {
51
+ const { session, history, context, signal } = params;
52
+ // PHASE 2: ROUTING + STEP SELECTION - Determine which route and step to use (combined)
53
+ let selectedRoute;
54
+ let responseDirectives;
55
+ let selectedStep;
56
+ let isRouteComplete = false;
57
+ let completedRoutes = [];
58
+ let targetSession = session;
59
+ // Get routes early since we need them for pending transitions
60
+ const routes = this.getRoutes();
61
+ // Check for pending transition from previous route completion
62
+ if (targetSession.pendingTransition) {
63
+ const targetRoute = routes.find((r) => r.id === targetSession.pendingTransition?.targetRouteId);
64
+ if (targetRoute) {
65
+ logger.debug(`[ResponseHandler] Auto-transitioning from pending transition to route: ${targetRoute.title}`);
66
+ // Clear pending transition and enter new route
67
+ targetSession = {
68
+ ...targetSession,
69
+ pendingTransition: undefined,
70
+ };
71
+ targetSession = enterRoute(targetSession, targetRoute.id, targetRoute.title);
72
+ // Merge initial data if available
73
+ if (targetRoute.initialData) {
74
+ targetSession = mergeCollected(targetSession, targetRoute.initialData);
75
+ }
76
+ selectedRoute = targetRoute;
77
+ }
78
+ else {
79
+ logger.warn(`[ResponseHandler] Pending transition target route not found: ${targetSession.pendingTransition.targetRouteId}`);
80
+ // Clear invalid transition
81
+ targetSession = {
82
+ ...targetSession,
83
+ pendingTransition: undefined,
84
+ };
85
+ }
86
+ }
87
+ // If no pending transition or transition handled, do normal routing
88
+ if (routes.length > 0 && !selectedRoute) {
89
+ const orchestration = await this.routingEngine.decideRouteAndStep({
90
+ routes: routes,
91
+ session: targetSession,
92
+ history,
93
+ agentOptions: this.options,
94
+ provider: this.options.provider,
95
+ context,
96
+ signal,
97
+ });
98
+ selectedRoute = orchestration.selectedRoute;
99
+ selectedStep = orchestration.selectedStep;
100
+ responseDirectives = orchestration.responseDirectives;
101
+ targetSession = orchestration.session;
102
+ isRouteComplete = orchestration.isRouteComplete || false;
103
+ completedRoutes = orchestration.completedRoutes || [];
104
+ // Log if route is complete
105
+ if (isRouteComplete) {
106
+ logger.debug(`[ResponseHandler] Route complete: all required data collected, END_ROUTE reached`);
107
+ }
108
+ }
109
+ return {
110
+ selectedRoute,
111
+ selectedStep,
112
+ responseDirectives,
113
+ session: targetSession,
114
+ isRouteComplete,
115
+ completedRoutes,
116
+ };
117
+ }
118
+ /**
119
+ * Determine next step and update session
120
+ */
121
+ async determineNextStep(params) {
122
+ const { selectedRoute, selectedStep, session, isRouteComplete } = params;
123
+ if (!selectedRoute || isRouteComplete) {
124
+ return { nextStep: undefined, session };
125
+ }
126
+ let nextStep;
127
+ // If we have a selected step from the combined routing decision, use it
128
+ if (selectedStep) {
129
+ nextStep = selectedStep;
130
+ }
131
+ else {
132
+ // Determine current step from session if we're already in this route
133
+ const currentStep = session.currentRoute?.id === selectedRoute.id && session.currentStep
134
+ ? selectedRoute.getStep(session.currentStep.id)
135
+ : undefined;
136
+ const contextToUse = this.getStoredContext();
137
+ // Get candidate steps based on current position in the route
138
+ const candidates = await this.routingEngine.getCandidateStepsWithConditions(selectedRoute, currentStep, // Pass current step instead of undefined to maintain progression
139
+ createTemplateContext({ data: session.data, session, context: contextToUse }));
140
+ if (candidates.length > 0) {
141
+ nextStep = candidates[0].step;
142
+ logger.debug(`[ResponseHandler] Using first valid step: ${nextStep.id}${currentStep ? ' (progressing from ' + currentStep.id + ')' : ' for new route'}`);
143
+ }
144
+ else {
145
+ // Fallback to initial step even if it should be skipped
146
+ nextStep = selectedRoute.initialStep;
147
+ logger.warn(`[ResponseHandler] No valid steps found, using initial step: ${nextStep.id}`);
148
+ }
149
+ }
150
+ // Update session with next step
151
+ const updatedSession = enterStep(session, nextStep.id, nextStep.description);
152
+ logger.debug(`[ResponseHandler] Entered step: ${nextStep.id}`);
153
+ return { nextStep, session: updatedSession };
154
+ }
155
+ /**
156
+ * Execute tool calls and handle results
157
+ */
158
+ async executeToolCalls(params) {
159
+ const { toolCalls, selectedRoute, context, session, history, isStreaming = false, } = params;
160
+ if (toolCalls.length === 0) {
161
+ return { session, toolCalls: undefined };
162
+ }
163
+ logger.debug(`[ResponseHandler] Executing ${toolCalls.length} ${isStreaming ? "streaming " : ""}tool calls`);
164
+ let updatedSession = session;
165
+ const executedToolCalls = [];
166
+ for (const toolCall of toolCalls) {
167
+ const tool = this.findAvailableTool(toolCall.toolName, selectedRoute);
168
+ if (!tool) {
169
+ logger.warn(`[ResponseHandler] Tool not found: ${toolCall.toolName}`);
170
+ continue;
171
+ }
172
+ // Use ToolManager for unified tool execution
173
+ let result;
174
+ if (this.toolManager) {
175
+ result = await this.toolManager.executeTool({
176
+ tool,
177
+ context,
178
+ updateContext: this.updateContext,
179
+ updateData: this.updateCollectedData || (async () => { }),
180
+ history,
181
+ data: updatedSession.data,
182
+ });
183
+ }
184
+ else {
185
+ // Fallback: execute tool directly if ToolManager not available
186
+ throw new Error(`ToolManager not available for tool execution: ${toolCall.toolName}`);
187
+ }
188
+ executedToolCalls.push(toolCall);
189
+ // Update context with tool results
190
+ if (result.contextUpdate) {
191
+ await this.updateContext(result.contextUpdate);
192
+ }
193
+ // Update collected data with tool results
194
+ if (result.dataUpdate) {
195
+ updatedSession = await this.updateData(updatedSession, result.dataUpdate);
196
+ logger.debug(`[ResponseHandler] ${isStreaming ? "Streaming " : ""}Tool updated collected data:`, result.dataUpdate);
197
+ }
198
+ logger.debug(`[ResponseHandler] Executed ${isStreaming ? "streaming " : ""}tool: ${String(tool.id || tool.name || 'unknown')} (success: ${result.success})`);
199
+ }
200
+ return {
201
+ session: updatedSession,
202
+ toolCalls: executedToolCalls.length > 0 ? executedToolCalls : undefined,
203
+ };
204
+ }
205
+ /**
206
+ * Execute tool loop for follow-up tool calls
207
+ */
208
+ async executeToolLoop(params) {
209
+ const { initialToolCalls, selectedRoute, nextStep, responsePrompt, history, context, session, responseSchema, isStreaming = false, } = params;
210
+ const MAX_TOOL_LOOPS = 5;
211
+ let toolLoopCount = 0;
212
+ let currentToolCalls = initialToolCalls;
213
+ let hasToolCalls = currentToolCalls && currentToolCalls.length > 0;
214
+ let currentSession = session;
215
+ while (hasToolCalls && toolLoopCount < MAX_TOOL_LOOPS) {
216
+ toolLoopCount++;
217
+ logger.debug(`[ResponseHandler] Starting ${isStreaming ? "streaming " : ""}tool loop ${toolLoopCount}/${MAX_TOOL_LOOPS}`);
218
+ // Add tool execution results to history so AI knows what happened
219
+ const toolResultsEvents = [];
220
+ for (const toolCall of currentToolCalls || []) {
221
+ const tool = this.findAvailableTool(toolCall.toolName, selectedRoute);
222
+ if (tool) {
223
+ toolResultsEvents.push({
224
+ kind: EventKind.TOOL,
225
+ source: MessageRole.AGENT,
226
+ timestamp: new Date().toISOString(),
227
+ data: {
228
+ tool_calls: [
229
+ {
230
+ tool_id: toolCall.toolName,
231
+ arguments: toolCall.arguments,
232
+ result: {
233
+ data: "Tool executed successfully",
234
+ },
235
+ },
236
+ ],
237
+ },
238
+ });
239
+ }
240
+ }
241
+ // Create updated history with tool results
242
+ const updatedHistory = [...history, ...toolResultsEvents];
243
+ // Make follow-up AI call to see if more tools are needed
244
+ const followUpResult = await this.options.provider.generateMessage({
245
+ prompt: responsePrompt,
246
+ history: updatedHistory,
247
+ context,
248
+ tools: this.collectAvailableTools(selectedRoute, nextStep),
249
+ parameters: {
250
+ jsonSchema: responseSchema,
251
+ schemaName: isStreaming ? "tool_followup_streaming" : "tool_followup",
252
+ },
253
+ });
254
+ // Check if follow-up call has more tool calls
255
+ const followUpToolCalls = followUpResult.structured?.toolCalls;
256
+ hasToolCalls = followUpToolCalls && followUpToolCalls.length > 0;
257
+ if (hasToolCalls) {
258
+ logger.debug(`[ResponseHandler] Follow-up call produced ${followUpToolCalls.length} additional tool calls`);
259
+ // Execute the follow-up tool calls
260
+ const toolResult = await this.executeToolCalls({
261
+ toolCalls: followUpToolCalls,
262
+ selectedRoute,
263
+ context,
264
+ session: currentSession,
265
+ history: updatedHistory,
266
+ isStreaming,
267
+ });
268
+ currentSession = toolResult.session;
269
+ currentToolCalls = followUpToolCalls;
270
+ }
271
+ else {
272
+ logger.debug(`[ResponseHandler] ${isStreaming ? "Streaming " : ""}Tool loop completed after ${toolLoopCount} iterations`);
273
+ // Update final toolCalls from follow-up result if no more tools
274
+ currentToolCalls = followUpToolCalls || [];
275
+ break;
276
+ }
277
+ }
278
+ if (toolLoopCount >= MAX_TOOL_LOOPS) {
279
+ logger.warn(`[ResponseHandler] ${isStreaming ? "Streaming " : ""}Tool loop limit reached (${MAX_TOOL_LOOPS}), stopping`);
280
+ }
281
+ return {
282
+ session: currentSession,
283
+ toolCalls: currentToolCalls,
284
+ };
285
+ }
286
+ /**
287
+ * Handle data collection from structured response
288
+ */
289
+ async handleDataCollection(params) {
290
+ const { structured, nextStep, session } = params;
291
+ if (!structured || !nextStep.collect) {
292
+ return { session };
293
+ }
294
+ const collectedData = {};
295
+ // The structured response includes both base fields and collected extraction fields
296
+ const structuredData = structured;
297
+ for (const field of nextStep.collect) {
298
+ const fieldKey = field;
299
+ if (fieldKey in structuredData) {
300
+ collectedData[fieldKey] = structuredData[fieldKey];
301
+ }
302
+ }
303
+ let updatedSession = session;
304
+ if (Object.keys(collectedData).length > 0) {
305
+ // Update agent-level collected data with validation if available
306
+ if (this.updateCollectedData) {
307
+ await this.updateCollectedData(collectedData);
308
+ }
309
+ // Update session with validated data
310
+ updatedSession = await this.updateData(session, collectedData);
311
+ logger.debug(`[ResponseHandler] Collected data:`, collectedData);
312
+ }
313
+ return {
314
+ session: updatedSession,
315
+ collectedData,
316
+ };
317
+ }
318
+ /**
319
+ * Handle context updates from structured response
320
+ */
321
+ async handleContextUpdate(structured) {
322
+ if (structured &&
323
+ typeof structured === "object" &&
324
+ "contextUpdate" in structured) {
325
+ await this.updateContext(structured
326
+ .contextUpdate);
327
+ }
328
+ }
329
+ /**
330
+ * Handle route completion logic
331
+ */
332
+ async handleRouteCompletion(params) {
333
+ const { selectedRoute, session, context, history } = params;
334
+ // Check for onComplete transition
335
+ const transitionConfig = await selectedRoute.evaluateOnComplete({ data: session.data }, context);
336
+ if (transitionConfig) {
337
+ // Find target route by ID or title
338
+ const targetRoute = this.getRoutes().find((r) => r.id === transitionConfig.nextStep ||
339
+ r.title === transitionConfig.nextStep);
340
+ if (targetRoute) {
341
+ const templateContext = createTemplateContext({
342
+ context,
343
+ session,
344
+ history,
345
+ });
346
+ const renderedCondition = (await render(transitionConfig.condition, templateContext)) ||
347
+ (typeof transitionConfig.condition === "string"
348
+ ? transitionConfig.condition
349
+ : "");
350
+ // Set pending transition in session
351
+ const updatedSession = {
352
+ ...session,
353
+ pendingTransition: {
354
+ targetRouteId: targetRoute.id,
355
+ condition: renderedCondition,
356
+ reason: "route_complete",
357
+ },
358
+ };
359
+ logger.debug(`[ResponseHandler] Route ${selectedRoute.title} completed with pending transition to: ${targetRoute.title}`);
360
+ return { session: updatedSession, hasTransition: true };
361
+ }
362
+ else {
363
+ logger.warn(`[ResponseHandler] Route ${selectedRoute.title} completed but target route not found: ${transitionConfig.nextStep}`);
364
+ }
365
+ }
366
+ // Set step to END_ROUTE marker
367
+ const updatedSession = enterStep(session, END_ROUTE_ID, "Route completed");
368
+ logger.debug(`[ResponseHandler] Route ${selectedRoute.title} completed. Entered END_ROUTE step.`);
369
+ return { session: updatedSession, hasTransition: false };
370
+ }
371
+ /**
372
+ * Find an available tool by name for the given route using ToolManager
373
+ * Delegates to ToolManager for unified tool resolution
374
+ */
375
+ findAvailableTool(toolName, route) {
376
+ // Use ToolManager for unified tool resolution if available
377
+ if (this.toolManager) {
378
+ return this.toolManager.find(toolName, undefined, undefined, route);
379
+ }
380
+ // Fallback to legacy resolution if ToolManager not available
381
+ logger.warn(`[ResponsePipeline] ToolManager not available, using legacy tool resolution for: ${toolName}`);
382
+ // Check route-level tools first (if route provided)
383
+ if (route) {
384
+ const routeTool = route
385
+ .getTools()
386
+ .find((tool) => tool.id === toolName || tool.name === toolName);
387
+ if (routeTool)
388
+ return routeTool;
389
+ }
390
+ // Fall back to agent-level tools
391
+ return this.tools.find((tool) => tool.id === toolName || tool.name === toolName);
392
+ }
393
+ /**
394
+ * Collect all available tools for the given route and step context using ToolManager
395
+ * Delegates to ToolManager for unified tool resolution and deduplication
396
+ */
397
+ collectAvailableTools(route, step) {
398
+ // Use ToolManager for unified tool collection if available
399
+ if (this.toolManager) {
400
+ const availableTools = this.toolManager.getAvailable(undefined, step, route);
401
+ return availableTools.map((tool) => ({
402
+ id: tool.id,
403
+ description: tool.description,
404
+ parameters: tool.parameters,
405
+ }));
406
+ }
407
+ // Fallback to legacy collection logic if ToolManager not available
408
+ logger.warn(`[ResponsePipeline] ToolManager not available, using legacy tool collection`);
409
+ const availableTools = new Map();
410
+ // Add agent-level tools
411
+ this.tools.forEach((tool) => {
412
+ availableTools.set(tool.id, tool);
413
+ });
414
+ // Add route-level tools (these take precedence)
415
+ if (route) {
416
+ route.getTools().forEach((tool) => {
417
+ availableTools.set(tool.id, tool);
418
+ });
419
+ }
420
+ // Filter by step-level allowed tools if specified
421
+ if (step?.tools) {
422
+ const allowedToolIds = new Set();
423
+ const stepTools = [];
424
+ for (const toolRef of step.tools) {
425
+ if (typeof toolRef === "string") {
426
+ // Reference to registered tool
427
+ allowedToolIds.add(toolRef);
428
+ }
429
+ else {
430
+ // Inline tool definition
431
+ if (toolRef.id) {
432
+ allowedToolIds.add(toolRef.id);
433
+ stepTools.push(toolRef);
434
+ }
435
+ }
436
+ }
437
+ // If step specifies tools, only include those
438
+ if (allowedToolIds.size > 0) {
439
+ const filteredTools = new Map();
440
+ for (const toolId of Array.from(allowedToolIds)) {
441
+ const tool = availableTools.get(toolId);
442
+ if (tool) {
443
+ filteredTools.set(toolId, tool);
444
+ }
445
+ }
446
+ // Add inline tools
447
+ stepTools.forEach((tool) => {
448
+ if (tool.id) {
449
+ filteredTools.set(tool.id, tool);
450
+ }
451
+ });
452
+ availableTools.clear();
453
+ filteredTools.forEach((tool, id) => availableTools.set(id, tool));
454
+ }
455
+ }
456
+ // Convert to the format expected by AI providers
457
+ return Array.from(availableTools.values()).map((tool) => ({
458
+ id: tool.id,
459
+ description: tool.description,
460
+ parameters: tool.parameters,
461
+ }));
462
+ }
463
+ /**
464
+ * Get current context (fetches from provider if configured)
465
+ */
466
+ async getContext() {
467
+ // If context provider is configured, use it to fetch fresh context
468
+ if (this.options.contextProvider) {
469
+ return await this.options.contextProvider();
470
+ }
471
+ // Otherwise return the stored context
472
+ return this.context;
473
+ }
474
+ // Setters for context and current session (needed for beforeRespond hook)
475
+ setContext(context) {
476
+ this.context = context;
477
+ }
478
+ setCurrentSession(session) {
479
+ this.currentSession = session;
480
+ }
481
+ getStoredContext() {
482
+ return this.context;
483
+ }
484
+ getCurrentSession() {
485
+ return this.currentSession;
486
+ }
487
+ /**
488
+ * Handle cross-route completion evaluation and notifications
489
+ * This method evaluates all routes for completion and can trigger completion handlers
490
+ */
491
+ async handleCrossRouteCompletion(params) {
492
+ const { routes, session, context } = params;
493
+ // Evaluate all routes for completion
494
+ const completedRoutes = [];
495
+ const pendingTransitions = [];
496
+ for (const route of routes) {
497
+ if (route.isComplete(session.data || {})) {
498
+ completedRoutes.push(route);
499
+ // Check for onComplete transitions
500
+ const transitionConfig = await route.evaluateOnComplete({ data: session.data }, context);
501
+ if (transitionConfig) {
502
+ pendingTransitions.push({ route, transitionConfig });
503
+ }
504
+ logger.debug(`[ResponsePipeline] Route completed: ${route.title} ` +
505
+ `(${Math.round(route.getCompletionProgress(session.data || {}) * 100)}%)`);
506
+ }
507
+ }
508
+ // Log completion status for all routes
509
+ if (completedRoutes.length > 0) {
510
+ logger.debug(`[ResponsePipeline] Cross-route completion evaluation: ` +
511
+ `${completedRoutes.length}/${routes.length} routes complete`);
512
+ }
513
+ return {
514
+ session,
515
+ completedRoutes,
516
+ pendingTransitions,
517
+ };
518
+ }
519
+ /**
520
+ * Update data flow to ensure agent-level data consistency
521
+ * This method ensures that data updates are properly validated and propagated
522
+ */
523
+ async updateDataFlow(params) {
524
+ const { session, dataUpdate, routes } = params;
525
+ // Update session data
526
+ const updatedSession = await this.updateData(session, dataUpdate);
527
+ // Update agent-level data if handler is available
528
+ if (this.updateCollectedData) {
529
+ await this.updateCollectedData(dataUpdate);
530
+ }
531
+ // Evaluate route completions after data update
532
+ const completionResults = await this.handleCrossRouteCompletion({
533
+ routes,
534
+ session: updatedSession,
535
+ context: this.context,
536
+ history: [],
537
+ });
538
+ // Log any newly completed routes
539
+ if (completionResults.completedRoutes.length > 0) {
540
+ logger.debug(`[ResponsePipeline] Data update resulted in ${completionResults.completedRoutes.length} completed routes`);
541
+ }
542
+ return completionResults.session;
543
+ }
544
+ }
545
+ //# sourceMappingURL=ResponsePipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponsePipeline.js","sourceRoot":"","sources":["../../../src/core/ResponsePipeline.ts"],"names":[],"mappings":"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"}