@falai/agent 1.2.8 → 2.0.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 (522) hide show
  1. package/README.md +40 -886
  2. package/dist/adapters/MemoryAdapter.js +2 -2
  3. package/dist/adapters/MemoryAdapter.js.map +1 -1
  4. package/dist/adapters/MongoAdapter.js +2 -2
  5. package/dist/adapters/MongoAdapter.js.map +1 -1
  6. package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
  7. package/dist/adapters/OpenSearchAdapter.js +9 -7
  8. package/dist/adapters/OpenSearchAdapter.js.map +1 -1
  9. package/dist/adapters/PostgreSQLAdapter.d.ts +14 -0
  10. package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  11. package/dist/adapters/PostgreSQLAdapter.js +25 -9
  12. package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
  13. package/dist/adapters/PrismaAdapter.js +5 -5
  14. package/dist/adapters/PrismaAdapter.js.map +1 -1
  15. package/dist/adapters/RedisAdapter.js +2 -2
  16. package/dist/adapters/RedisAdapter.js.map +1 -1
  17. package/dist/adapters/SQLiteAdapter.d.ts +17 -0
  18. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
  19. package/dist/adapters/SQLiteAdapter.js +30 -11
  20. package/dist/adapters/SQLiteAdapter.js.map +1 -1
  21. package/dist/cjs/adapters/MemoryAdapter.js +2 -2
  22. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  23. package/dist/cjs/adapters/MongoAdapter.js +2 -2
  24. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  25. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
  26. package/dist/cjs/adapters/OpenSearchAdapter.js +9 -7
  27. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  28. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +14 -0
  29. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  30. package/dist/cjs/adapters/PostgreSQLAdapter.js +25 -9
  31. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  32. package/dist/cjs/adapters/PrismaAdapter.js +5 -5
  33. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  34. package/dist/cjs/adapters/RedisAdapter.js +2 -2
  35. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  36. package/dist/cjs/adapters/SQLiteAdapter.d.ts +17 -0
  37. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  38. package/dist/cjs/adapters/SQLiteAdapter.js +30 -11
  39. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  40. package/dist/cjs/constants/index.d.ts +0 -9
  41. package/dist/cjs/constants/index.d.ts.map +1 -1
  42. package/dist/cjs/constants/index.js +2 -11
  43. package/dist/cjs/constants/index.js.map +1 -1
  44. package/dist/cjs/core/Agent.d.ts +119 -153
  45. package/dist/cjs/core/Agent.d.ts.map +1 -1
  46. package/dist/cjs/core/Agent.js +471 -324
  47. package/dist/cjs/core/Agent.js.map +1 -1
  48. package/dist/cjs/core/AutoChainExecutor.d.ts +107 -0
  49. package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -0
  50. package/dist/cjs/core/AutoChainExecutor.js +297 -0
  51. package/dist/cjs/core/AutoChainExecutor.js.map +1 -0
  52. package/dist/cjs/core/BranchEvaluator.d.ts +54 -0
  53. package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -0
  54. package/dist/cjs/core/BranchEvaluator.js +130 -0
  55. package/dist/cjs/core/BranchEvaluator.js.map +1 -0
  56. package/dist/cjs/core/DirectiveBus.d.ts +88 -0
  57. package/dist/cjs/core/DirectiveBus.d.ts.map +1 -0
  58. package/dist/cjs/core/DirectiveBus.js +196 -0
  59. package/dist/cjs/core/DirectiveBus.js.map +1 -0
  60. package/dist/cjs/core/DirectiveChainTracker.d.ts +49 -0
  61. package/dist/cjs/core/DirectiveChainTracker.d.ts.map +1 -0
  62. package/dist/cjs/core/DirectiveChainTracker.js +121 -0
  63. package/dist/cjs/core/DirectiveChainTracker.js.map +1 -0
  64. package/dist/cjs/core/Flow.d.ts +186 -0
  65. package/dist/cjs/core/Flow.d.ts.map +1 -0
  66. package/dist/cjs/core/Flow.js +550 -0
  67. package/dist/cjs/core/Flow.js.map +1 -0
  68. package/dist/cjs/core/FlowRouter.d.ts +182 -0
  69. package/dist/cjs/core/FlowRouter.d.ts.map +1 -0
  70. package/dist/cjs/core/{RoutingEngine.js → FlowRouter.js} +323 -306
  71. package/dist/cjs/core/FlowRouter.js.map +1 -0
  72. package/dist/cjs/core/PersistenceManager.d.ts +2 -2
  73. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  74. package/dist/cjs/core/PersistenceManager.js +7 -7
  75. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  76. package/dist/cjs/core/PromptComposer.d.ts +21 -8
  77. package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
  78. package/dist/cjs/core/PromptComposer.js +182 -105
  79. package/dist/cjs/core/PromptComposer.js.map +1 -1
  80. package/dist/cjs/core/PromptSectionCache.d.ts +1 -1
  81. package/dist/cjs/core/PromptSectionCache.js +1 -1
  82. package/dist/cjs/core/ResponseEngine.d.ts +18 -8
  83. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  84. package/dist/cjs/core/ResponseEngine.js +38 -36
  85. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  86. package/dist/cjs/core/ResponseModal.d.ts +73 -56
  87. package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
  88. package/dist/cjs/core/ResponseModal.js +1191 -1014
  89. package/dist/cjs/core/ResponseModal.js.map +1 -1
  90. package/dist/cjs/core/ResponsePipeline.d.ts +124 -26
  91. package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
  92. package/dist/cjs/core/ResponsePipeline.js +509 -136
  93. package/dist/cjs/core/ResponsePipeline.js.map +1 -1
  94. package/dist/cjs/core/SignalEvaluator.d.ts +86 -0
  95. package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -0
  96. package/dist/cjs/core/SignalEvaluator.js +333 -0
  97. package/dist/cjs/core/SignalEvaluator.js.map +1 -0
  98. package/dist/cjs/core/SignalProcessor.d.ts +152 -0
  99. package/dist/cjs/core/SignalProcessor.d.ts.map +1 -0
  100. package/dist/cjs/core/SignalProcessor.js +562 -0
  101. package/dist/cjs/core/SignalProcessor.js.map +1 -0
  102. package/dist/cjs/core/Step.d.ts +43 -32
  103. package/dist/cjs/core/Step.d.ts.map +1 -1
  104. package/dist/cjs/core/Step.js +221 -126
  105. package/dist/cjs/core/Step.js.map +1 -1
  106. package/dist/cjs/core/StreamingToolExecutor.d.ts +2 -2
  107. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -1
  108. package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
  109. package/dist/cjs/core/ToolManager.d.ts +44 -13
  110. package/dist/cjs/core/ToolManager.d.ts.map +1 -1
  111. package/dist/cjs/core/ToolManager.js +174 -91
  112. package/dist/cjs/core/ToolManager.js.map +1 -1
  113. package/dist/cjs/core/createAgent.d.ts +35 -0
  114. package/dist/cjs/core/createAgent.d.ts.map +1 -0
  115. package/dist/cjs/core/createAgent.js +39 -0
  116. package/dist/cjs/core/createAgent.js.map +1 -0
  117. package/dist/cjs/core/flow-namespace.d.ts +49 -0
  118. package/dist/cjs/core/flow-namespace.d.ts.map +1 -0
  119. package/dist/cjs/core/flow-namespace.js +171 -0
  120. package/dist/cjs/core/flow-namespace.js.map +1 -0
  121. package/dist/cjs/index.d.ts +11 -14
  122. package/dist/cjs/index.d.ts.map +1 -1
  123. package/dist/cjs/index.js +18 -22
  124. package/dist/cjs/index.js.map +1 -1
  125. package/dist/cjs/providers/AnthropicProvider.d.ts +1 -1
  126. package/dist/cjs/providers/AnthropicProvider.js +1 -1
  127. package/dist/cjs/providers/GeminiProvider.d.ts +1 -1
  128. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  129. package/dist/cjs/providers/GeminiProvider.js +1 -1
  130. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  131. package/dist/cjs/providers/OpenAIProvider.d.ts +1 -1
  132. package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
  133. package/dist/cjs/providers/OpenAIProvider.js +1 -1
  134. package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
  135. package/dist/cjs/types/agent.d.ts +183 -54
  136. package/dist/cjs/types/agent.d.ts.map +1 -1
  137. package/dist/cjs/types/agent.js +0 -6
  138. package/dist/cjs/types/agent.js.map +1 -1
  139. package/dist/cjs/types/ai.d.ts +3 -3
  140. package/dist/cjs/types/ai.d.ts.map +1 -1
  141. package/dist/cjs/types/errors.d.ts +15 -0
  142. package/dist/cjs/types/errors.d.ts.map +1 -0
  143. package/dist/cjs/types/errors.js +22 -0
  144. package/dist/cjs/types/errors.js.map +1 -0
  145. package/dist/cjs/types/flow.d.ts +513 -0
  146. package/dist/cjs/types/flow.d.ts.map +1 -0
  147. package/dist/cjs/types/{route.js → flow.js} +2 -2
  148. package/dist/cjs/types/flow.js.map +1 -0
  149. package/dist/cjs/types/index.d.ts +7 -6
  150. package/dist/cjs/types/index.d.ts.map +1 -1
  151. package/dist/cjs/types/index.js +6 -2
  152. package/dist/cjs/types/index.js.map +1 -1
  153. package/dist/cjs/types/persistence.d.ts +11 -7
  154. package/dist/cjs/types/persistence.d.ts.map +1 -1
  155. package/dist/cjs/types/routing.d.ts +1 -1
  156. package/dist/cjs/types/routing.d.ts.map +1 -1
  157. package/dist/cjs/types/session.d.ts +24 -23
  158. package/dist/cjs/types/session.d.ts.map +1 -1
  159. package/dist/cjs/types/signals.d.ts +248 -0
  160. package/dist/cjs/types/signals.d.ts.map +1 -0
  161. package/dist/cjs/types/signals.js +11 -0
  162. package/dist/cjs/types/signals.js.map +1 -0
  163. package/dist/cjs/types/template.d.ts +2 -8
  164. package/dist/cjs/types/template.d.ts.map +1 -1
  165. package/dist/cjs/types/tool.d.ts +36 -29
  166. package/dist/cjs/types/tool.d.ts.map +1 -1
  167. package/dist/cjs/types/tool.js +1 -1
  168. package/dist/cjs/types/tool.js.map +1 -1
  169. package/dist/cjs/utils/condition.d.ts +7 -1
  170. package/dist/cjs/utils/condition.d.ts.map +1 -1
  171. package/dist/cjs/utils/condition.js.map +1 -1
  172. package/dist/cjs/utils/id.d.ts +13 -5
  173. package/dist/cjs/utils/id.d.ts.map +1 -1
  174. package/dist/cjs/utils/id.js +24 -10
  175. package/dist/cjs/utils/id.js.map +1 -1
  176. package/dist/cjs/utils/index.d.ts +2 -2
  177. package/dist/cjs/utils/index.d.ts.map +1 -1
  178. package/dist/cjs/utils/index.js +7 -3
  179. package/dist/cjs/utils/index.js.map +1 -1
  180. package/dist/cjs/utils/session.d.ts +44 -5
  181. package/dist/cjs/utils/session.d.ts.map +1 -1
  182. package/dist/cjs/utils/session.js +197 -38
  183. package/dist/cjs/utils/session.js.map +1 -1
  184. package/dist/constants/index.d.ts +0 -9
  185. package/dist/constants/index.d.ts.map +1 -1
  186. package/dist/constants/index.js +3 -9
  187. package/dist/constants/index.js.map +1 -1
  188. package/dist/core/Agent.d.ts +119 -153
  189. package/dist/core/Agent.d.ts.map +1 -1
  190. package/dist/core/Agent.js +472 -325
  191. package/dist/core/Agent.js.map +1 -1
  192. package/dist/core/AutoChainExecutor.d.ts +107 -0
  193. package/dist/core/AutoChainExecutor.d.ts.map +1 -0
  194. package/dist/core/AutoChainExecutor.js +293 -0
  195. package/dist/core/AutoChainExecutor.js.map +1 -0
  196. package/dist/core/BranchEvaluator.d.ts +54 -0
  197. package/dist/core/BranchEvaluator.d.ts.map +1 -0
  198. package/dist/core/BranchEvaluator.js +126 -0
  199. package/dist/core/BranchEvaluator.js.map +1 -0
  200. package/dist/core/DirectiveBus.d.ts +88 -0
  201. package/dist/core/DirectiveBus.d.ts.map +1 -0
  202. package/dist/core/DirectiveBus.js +192 -0
  203. package/dist/core/DirectiveBus.js.map +1 -0
  204. package/dist/core/DirectiveChainTracker.d.ts +49 -0
  205. package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
  206. package/dist/core/DirectiveChainTracker.js +117 -0
  207. package/dist/core/DirectiveChainTracker.js.map +1 -0
  208. package/dist/core/Flow.d.ts +186 -0
  209. package/dist/core/Flow.d.ts.map +1 -0
  210. package/dist/core/Flow.js +546 -0
  211. package/dist/core/Flow.js.map +1 -0
  212. package/dist/core/FlowRouter.d.ts +182 -0
  213. package/dist/core/FlowRouter.d.ts.map +1 -0
  214. package/dist/core/{RoutingEngine.js → FlowRouter.js} +322 -305
  215. package/dist/core/FlowRouter.js.map +1 -0
  216. package/dist/core/PersistenceManager.d.ts +2 -2
  217. package/dist/core/PersistenceManager.d.ts.map +1 -1
  218. package/dist/core/PersistenceManager.js +7 -7
  219. package/dist/core/PersistenceManager.js.map +1 -1
  220. package/dist/core/PromptComposer.d.ts +21 -8
  221. package/dist/core/PromptComposer.d.ts.map +1 -1
  222. package/dist/core/PromptComposer.js +183 -106
  223. package/dist/core/PromptComposer.js.map +1 -1
  224. package/dist/core/PromptSectionCache.d.ts +1 -1
  225. package/dist/core/PromptSectionCache.js +1 -1
  226. package/dist/core/ResponseEngine.d.ts +18 -8
  227. package/dist/core/ResponseEngine.d.ts.map +1 -1
  228. package/dist/core/ResponseEngine.js +38 -36
  229. package/dist/core/ResponseEngine.js.map +1 -1
  230. package/dist/core/ResponseModal.d.ts +73 -56
  231. package/dist/core/ResponseModal.d.ts.map +1 -1
  232. package/dist/core/ResponseModal.js +1193 -1016
  233. package/dist/core/ResponseModal.js.map +1 -1
  234. package/dist/core/ResponsePipeline.d.ts +124 -26
  235. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  236. package/dist/core/ResponsePipeline.js +509 -137
  237. package/dist/core/ResponsePipeline.js.map +1 -1
  238. package/dist/core/SignalEvaluator.d.ts +86 -0
  239. package/dist/core/SignalEvaluator.d.ts.map +1 -0
  240. package/dist/core/SignalEvaluator.js +326 -0
  241. package/dist/core/SignalEvaluator.js.map +1 -0
  242. package/dist/core/SignalProcessor.d.ts +152 -0
  243. package/dist/core/SignalProcessor.d.ts.map +1 -0
  244. package/dist/core/SignalProcessor.js +555 -0
  245. package/dist/core/SignalProcessor.js.map +1 -0
  246. package/dist/core/Step.d.ts +43 -32
  247. package/dist/core/Step.d.ts.map +1 -1
  248. package/dist/core/Step.js +220 -126
  249. package/dist/core/Step.js.map +1 -1
  250. package/dist/core/StreamingToolExecutor.d.ts +2 -2
  251. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  252. package/dist/core/StreamingToolExecutor.js.map +1 -1
  253. package/dist/core/ToolManager.d.ts +44 -13
  254. package/dist/core/ToolManager.d.ts.map +1 -1
  255. package/dist/core/ToolManager.js +174 -91
  256. package/dist/core/ToolManager.js.map +1 -1
  257. package/dist/core/createAgent.d.ts +35 -0
  258. package/dist/core/createAgent.d.ts.map +1 -0
  259. package/dist/core/createAgent.js +36 -0
  260. package/dist/core/createAgent.js.map +1 -0
  261. package/dist/core/flow-namespace.d.ts +49 -0
  262. package/dist/core/flow-namespace.d.ts.map +1 -0
  263. package/dist/core/flow-namespace.js +168 -0
  264. package/dist/core/flow-namespace.js.map +1 -0
  265. package/dist/index.d.ts +11 -14
  266. package/dist/index.d.ts.map +1 -1
  267. package/dist/index.js +9 -12
  268. package/dist/index.js.map +1 -1
  269. package/dist/providers/AnthropicProvider.d.ts +1 -1
  270. package/dist/providers/AnthropicProvider.js +1 -1
  271. package/dist/providers/GeminiProvider.d.ts +1 -1
  272. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  273. package/dist/providers/GeminiProvider.js +1 -1
  274. package/dist/providers/GeminiProvider.js.map +1 -1
  275. package/dist/providers/OpenAIProvider.d.ts +1 -1
  276. package/dist/providers/OpenAIProvider.d.ts.map +1 -1
  277. package/dist/providers/OpenAIProvider.js +1 -1
  278. package/dist/providers/OpenAIProvider.js.map +1 -1
  279. package/dist/types/agent.d.ts +183 -54
  280. package/dist/types/agent.d.ts.map +1 -1
  281. package/dist/types/agent.js +0 -6
  282. package/dist/types/agent.js.map +1 -1
  283. package/dist/types/ai.d.ts +3 -3
  284. package/dist/types/ai.d.ts.map +1 -1
  285. package/dist/types/errors.d.ts +15 -0
  286. package/dist/types/errors.d.ts.map +1 -0
  287. package/dist/types/errors.js +18 -0
  288. package/dist/types/errors.js.map +1 -0
  289. package/dist/types/flow.d.ts +513 -0
  290. package/dist/types/flow.d.ts.map +1 -0
  291. package/dist/types/flow.js +5 -0
  292. package/dist/types/flow.js.map +1 -0
  293. package/dist/types/index.d.ts +7 -6
  294. package/dist/types/index.d.ts.map +1 -1
  295. package/dist/types/index.js +4 -1
  296. package/dist/types/index.js.map +1 -1
  297. package/dist/types/persistence.d.ts +11 -7
  298. package/dist/types/persistence.d.ts.map +1 -1
  299. package/dist/types/routing.d.ts +1 -1
  300. package/dist/types/routing.d.ts.map +1 -1
  301. package/dist/types/session.d.ts +24 -23
  302. package/dist/types/session.d.ts.map +1 -1
  303. package/dist/types/signals.d.ts +248 -0
  304. package/dist/types/signals.d.ts.map +1 -0
  305. package/dist/types/signals.js +10 -0
  306. package/dist/types/signals.js.map +1 -0
  307. package/dist/types/template.d.ts +2 -8
  308. package/dist/types/template.d.ts.map +1 -1
  309. package/dist/types/tool.d.ts +36 -29
  310. package/dist/types/tool.d.ts.map +1 -1
  311. package/dist/types/tool.js +1 -1
  312. package/dist/types/tool.js.map +1 -1
  313. package/dist/utils/condition.d.ts +7 -1
  314. package/dist/utils/condition.d.ts.map +1 -1
  315. package/dist/utils/condition.js.map +1 -1
  316. package/dist/utils/id.d.ts +13 -5
  317. package/dist/utils/id.d.ts.map +1 -1
  318. package/dist/utils/id.js +22 -9
  319. package/dist/utils/id.js.map +1 -1
  320. package/dist/utils/index.d.ts +2 -2
  321. package/dist/utils/index.d.ts.map +1 -1
  322. package/dist/utils/index.js +2 -2
  323. package/dist/utils/index.js.map +1 -1
  324. package/dist/utils/session.d.ts +44 -5
  325. package/dist/utils/session.d.ts.map +1 -1
  326. package/dist/utils/session.js +193 -37
  327. package/dist/utils/session.js.map +1 -1
  328. package/docs/README.md +22 -200
  329. package/docs/concepts/architecture.md +281 -0
  330. package/docs/concepts/directives.md +400 -0
  331. package/docs/concepts/pipeline.md +399 -0
  332. package/docs/guides/branching.md +263 -0
  333. package/docs/guides/compaction.md +163 -0
  334. package/docs/guides/conditions.md +167 -0
  335. package/docs/guides/error-handling.md +176 -0
  336. package/docs/guides/flow-control.md +409 -0
  337. package/docs/guides/instructions.md +210 -0
  338. package/docs/guides/persistence.md +182 -0
  339. package/docs/guides/streaming.md +137 -0
  340. package/docs/migration/README.md +14 -0
  341. package/docs/migration/route-to-flow.md +561 -0
  342. package/docs/migration/v1-to-v2.md +909 -0
  343. package/docs/reference/adapters.md +481 -0
  344. package/docs/reference/branches.md +241 -0
  345. package/docs/reference/create-agent.md +186 -0
  346. package/docs/reference/directive.md +243 -0
  347. package/docs/reference/errors.md +122 -0
  348. package/docs/reference/flow.md +238 -0
  349. package/docs/reference/instruction.md +177 -0
  350. package/docs/reference/pre-directive.md +131 -0
  351. package/docs/reference/providers.md +227 -0
  352. package/docs/reference/signals.md +356 -0
  353. package/docs/reference/step.md +339 -0
  354. package/docs/reference/tool.md +269 -0
  355. package/docs/start/01-install.md +81 -0
  356. package/docs/start/02-first-agent.md +196 -0
  357. package/docs/start/03-collect-data.md +222 -0
  358. package/docs/start/04-add-tools.md +276 -0
  359. package/docs/start/05-go-to-production.md +216 -0
  360. package/examples/01-quickstart.ts +20 -0
  361. package/examples/02-data-extraction.ts +90 -0
  362. package/examples/03-tools.ts +136 -0
  363. package/examples/04-instructions.ts +100 -0
  364. package/examples/05-branching.ts +140 -0
  365. package/examples/06-flow-control.ts +103 -0
  366. package/examples/07-streaming.ts +69 -0
  367. package/examples/08-persistence.ts +98 -0
  368. package/examples/09-signals.ts +144 -0
  369. package/examples/tsconfig.json +30 -0
  370. package/package.json +2 -1
  371. package/src/adapters/MemoryAdapter.ts +3 -3
  372. package/src/adapters/MongoAdapter.ts +3 -3
  373. package/src/adapters/OpenSearchAdapter.ts +10 -8
  374. package/src/adapters/PostgreSQLAdapter.ts +26 -10
  375. package/src/adapters/PrismaAdapter.ts +6 -6
  376. package/src/adapters/RedisAdapter.ts +3 -3
  377. package/src/adapters/SQLiteAdapter.ts +31 -12
  378. package/src/constants/index.ts +2 -10
  379. package/src/core/Agent.ts +585 -374
  380. package/src/core/AutoChainExecutor.ts +440 -0
  381. package/src/core/BranchEvaluator.ts +167 -0
  382. package/src/core/DirectiveBus.ts +248 -0
  383. package/src/core/DirectiveChainTracker.ts +144 -0
  384. package/src/core/Flow.ts +666 -0
  385. package/src/core/{RoutingEngine.ts → FlowRouter.ts} +385 -365
  386. package/src/core/PersistenceManager.ts +8 -8
  387. package/src/core/PromptComposer.ts +209 -140
  388. package/src/core/PromptSectionCache.ts +1 -1
  389. package/src/core/ResponseEngine.ts +61 -46
  390. package/src/core/ResponseModal.ts +1453 -1240
  391. package/src/core/ResponsePipeline.ts +655 -175
  392. package/src/core/SignalEvaluator.ts +420 -0
  393. package/src/core/SignalProcessor.ts +723 -0
  394. package/src/core/Step.ts +279 -176
  395. package/src/core/StreamingToolExecutor.ts +4 -4
  396. package/src/core/ToolManager.ts +200 -97
  397. package/src/core/createAgent.ts +40 -0
  398. package/src/core/flow-namespace.ts +219 -0
  399. package/src/index.ts +42 -36
  400. package/src/providers/AnthropicProvider.ts +2 -2
  401. package/src/providers/GeminiProvider.ts +2 -2
  402. package/src/providers/OpenAIProvider.ts +2 -2
  403. package/src/types/agent.ts +182 -53
  404. package/src/types/ai.ts +3 -3
  405. package/src/types/errors.ts +18 -0
  406. package/src/types/flow.ts +590 -0
  407. package/src/types/index.ts +43 -16
  408. package/src/types/persistence.ts +12 -8
  409. package/src/types/routing.ts +1 -1
  410. package/src/types/session.ts +26 -23
  411. package/src/types/signals.ts +321 -0
  412. package/src/types/template.ts +3 -11
  413. package/src/types/tool.ts +50 -42
  414. package/src/utils/condition.ts +13 -4
  415. package/src/utils/id.ts +27 -9
  416. package/src/utils/index.ts +6 -2
  417. package/src/utils/session.ts +238 -42
  418. package/dist/cjs/core/BatchExecutor.d.ts +0 -359
  419. package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
  420. package/dist/cjs/core/BatchExecutor.js +0 -861
  421. package/dist/cjs/core/BatchExecutor.js.map +0 -1
  422. package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
  423. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
  424. package/dist/cjs/core/BatchPromptBuilder.js +0 -223
  425. package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
  426. package/dist/cjs/core/Route.d.ts +0 -180
  427. package/dist/cjs/core/Route.d.ts.map +0 -1
  428. package/dist/cjs/core/Route.js +0 -542
  429. package/dist/cjs/core/Route.js.map +0 -1
  430. package/dist/cjs/core/RoutingEngine.d.ts +0 -185
  431. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  432. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  433. package/dist/cjs/types/route.d.ts +0 -336
  434. package/dist/cjs/types/route.d.ts.map +0 -1
  435. package/dist/cjs/types/route.js.map +0 -1
  436. package/dist/core/BatchExecutor.d.ts +0 -359
  437. package/dist/core/BatchExecutor.d.ts.map +0 -1
  438. package/dist/core/BatchExecutor.js +0 -856
  439. package/dist/core/BatchExecutor.js.map +0 -1
  440. package/dist/core/BatchPromptBuilder.d.ts +0 -89
  441. package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
  442. package/dist/core/BatchPromptBuilder.js +0 -219
  443. package/dist/core/BatchPromptBuilder.js.map +0 -1
  444. package/dist/core/Route.d.ts +0 -180
  445. package/dist/core/Route.d.ts.map +0 -1
  446. package/dist/core/Route.js +0 -538
  447. package/dist/core/Route.js.map +0 -1
  448. package/dist/core/RoutingEngine.d.ts +0 -185
  449. package/dist/core/RoutingEngine.d.ts.map +0 -1
  450. package/dist/core/RoutingEngine.js.map +0 -1
  451. package/dist/types/route.d.ts +0 -336
  452. package/dist/types/route.d.ts.map +0 -1
  453. package/dist/types/route.js +0 -5
  454. package/dist/types/route.js.map +0 -1
  455. package/docs/CONTRIBUTING.md +0 -521
  456. package/docs/api/README.md +0 -3299
  457. package/docs/api/overview.md +0 -1410
  458. package/docs/architecture/data-extraction-flow.md +0 -360
  459. package/docs/architecture/multi-step-execution.md +0 -277
  460. package/docs/core/agent/README.md +0 -938
  461. package/docs/core/agent/context-management.md +0 -796
  462. package/docs/core/agent/rules-and-prohibitions.md +0 -113
  463. package/docs/core/agent/session-management.md +0 -693
  464. package/docs/core/ai-integration/prompt-composition.md +0 -355
  465. package/docs/core/ai-integration/providers.md +0 -515
  466. package/docs/core/ai-integration/response-processing.md +0 -433
  467. package/docs/core/conversation-flows/data-collection.md +0 -772
  468. package/docs/core/conversation-flows/route-dsl.md +0 -509
  469. package/docs/core/conversation-flows/routes.md +0 -249
  470. package/docs/core/conversation-flows/step-transitions.md +0 -731
  471. package/docs/core/conversation-flows/steps.md +0 -268
  472. package/docs/core/error-handling.md +0 -830
  473. package/docs/core/persistence/adapters.md +0 -255
  474. package/docs/core/persistence/session-storage.md +0 -656
  475. package/docs/core/routing/intelligent-routing.md +0 -470
  476. package/docs/core/tools/enhanced-tool.md +0 -186
  477. package/docs/core/tools/streaming-execution.md +0 -161
  478. package/docs/core/tools/tool-definition.md +0 -970
  479. package/docs/core/tools/tool-scoping.md +0 -819
  480. package/docs/guides/advanced-patterns/publishing.md +0 -186
  481. package/docs/guides/context-compaction.md +0 -96
  482. package/docs/guides/error-handling-patterns.md +0 -578
  483. package/docs/guides/getting-started/README.md +0 -795
  484. package/docs/guides/migration/README.md +0 -101
  485. package/docs/guides/migration/flexible-routing-conditions.md +0 -375
  486. package/docs/guides/migration/multi-step-execution.md +0 -393
  487. package/docs/guides/migration/response-modal-refactor.md +0 -518
  488. package/docs/guides/prompt-optimization.md +0 -164
  489. package/examples/advanced-patterns/context-compaction.ts +0 -223
  490. package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
  491. package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
  492. package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
  493. package/examples/advanced-patterns/streaming-responses.ts +0 -656
  494. package/examples/ai-providers/anthropic-integration.ts +0 -388
  495. package/examples/ai-providers/openai-integration.ts +0 -228
  496. package/examples/condition-patterns/function-only-conditions.ts +0 -365
  497. package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
  498. package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
  499. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  500. package/examples/condition-patterns/string-only-conditions.ts +0 -296
  501. package/examples/conversation-flows/completion-transitions.ts +0 -318
  502. package/examples/core-concepts/basic-agent.ts +0 -503
  503. package/examples/core-concepts/modern-streaming-api.ts +0 -309
  504. package/examples/core-concepts/schema-driven-extraction.ts +0 -332
  505. package/examples/core-concepts/session-management.ts +0 -494
  506. package/examples/integrations/database-integration.ts +0 -631
  507. package/examples/integrations/healthcare-integration.ts +0 -595
  508. package/examples/integrations/search-integration.ts +0 -530
  509. package/examples/integrations/server-session-management.ts +0 -307
  510. package/examples/persistence/custom-adapter.ts +0 -526
  511. package/examples/persistence/database-persistence.ts +0 -583
  512. package/examples/persistence/memory-sessions.ts +0 -495
  513. package/examples/persistence/prisma-schema.example.prisma +0 -74
  514. package/examples/persistence/redis-persistence.ts +0 -488
  515. package/examples/tools/basic-tools.ts +0 -765
  516. package/examples/tools/data-enrichment-tools.ts +0 -593
  517. package/examples/tools/enhanced-tool-metadata.ts +0 -268
  518. package/examples/tools/streaming-tool-execution.ts +0 -283
  519. package/src/core/BatchExecutor.ts +0 -1187
  520. package/src/core/BatchPromptBuilder.ts +0 -299
  521. package/src/core/Route.ts +0 -678
  522. package/src/types/route.ts +0 -392
@@ -0,0 +1,550 @@
1
+ "use strict";
2
+ /**
3
+ * Flow (Journey) DSL implementation
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Flow = void 0;
7
+ const utils_1 = require("../utils");
8
+ const Step_1 = require("./Step");
9
+ /**
10
+ * Represents a conversational flow/journey
11
+ */
12
+ class Flow {
13
+ /** Get the initial (first) step of this flow. */
14
+ get initialStep() {
15
+ return this._initialStep;
16
+ }
17
+ constructor(options, parentAgent) {
18
+ this.instructions = [];
19
+ this.tools = [];
20
+ this.knowledgeBase = {};
21
+ /**
22
+ * Tracks whether this flow has participated in at least one turn.
23
+ * Used to emit a DEBUG warning when `addStep` mutates the graph mid-session.
24
+ * @internal Set by the pipeline after the first turn involving this flow.
25
+ */
26
+ this._hasHandledTurn = false;
27
+ // Use provided ID or generate a deterministic one from the title
28
+ this.id = options.id || (0, utils_1.generateFlowId)(options.title);
29
+ this.title = options.title;
30
+ this.description = options.description;
31
+ this.when = options.when;
32
+ this.if = options.if;
33
+ // Validate when/if split: functions belong on `if`, not `when`
34
+ if (this.when !== undefined) {
35
+ const whenValue = this.when;
36
+ if (typeof whenValue === 'function') {
37
+ throw new Step_1.FlowConfigurationError(`[FlowConfigurationError] Flow "${options.title}" has a function on "when": functions belong on "if" only. Move the function to the "if" field.`);
38
+ }
39
+ if (Array.isArray(whenValue)) {
40
+ for (let i = 0; i < whenValue.length; i++) {
41
+ if (typeof whenValue[i] === 'function') {
42
+ throw new Step_1.FlowConfigurationError(`[FlowConfigurationError] Flow "${options.title}" has a function at "when[${i}]": functions belong on "if" only. Move the function to the "if" field.`);
43
+ }
44
+ }
45
+ }
46
+ }
47
+ // Store reference to parent agent for ToolManager access
48
+ this.parentAgent = parentAgent;
49
+ // Handle steps: use first step as initial
50
+ let stepsToChain = [];
51
+ if (options.steps && options.steps.length > 0) {
52
+ stepsToChain = options.steps.slice(1);
53
+ this._initialStep = new Step_1.Step(this.id, options.steps[0], this.parentAgent);
54
+ }
55
+ else {
56
+ this._initialStep = new Step_1.Step(this.id, undefined, this.parentAgent);
57
+ }
58
+ // Store flow configuration
59
+ this.routingExtrasSchema = options.routingExtrasSchema;
60
+ this.responseOutputSchema = options.responseOutputSchema;
61
+ this.initialData = options.initialData;
62
+ this.requiredFields = options.requiredFields;
63
+ this.optionalFields = options.optionalFields;
64
+ this.onComplete = options.onComplete;
65
+ this.reentrant = options.reentrant ?? false;
66
+ this.hooks = options.hooks;
67
+ // ─── onComplete cleanup: validate no conflict and desugar ─────────────
68
+ // If both top-level `onComplete` and `hooks.onComplete` are set, throw.
69
+ if (this.onComplete !== undefined && this.hooks?.onComplete !== undefined) {
70
+ throw new Step_1.FlowConfigurationError(`[FlowConfigurationError] Flow "${this.title}": both top-level \`onComplete\` and \`hooks.onComplete\` are set. ` +
71
+ `Use one or the other — top-level \`onComplete: string\` is sugar for \`hooks.onComplete = () => ({ goTo: '<id>' })\`.`);
72
+ }
73
+ // Desugar: top-level `onComplete: '<flowId>'` → `hooks.onComplete = () => ({ goTo: '<flowId>' })`
74
+ if (this.onComplete !== undefined && !this.hooks?.onComplete) {
75
+ const targetFlowId = this.onComplete;
76
+ const desugaredHook = () => ({ goTo: targetFlowId });
77
+ if (this.hooks) {
78
+ (this.hooks).onComplete = desugaredHook;
79
+ }
80
+ else {
81
+ this.hooks = { onComplete: desugaredHook };
82
+ }
83
+ }
84
+ // Initialize instructions from options
85
+ if (options.instructions) {
86
+ options.instructions.forEach((instruction) => {
87
+ this.createInstruction(instruction);
88
+ });
89
+ }
90
+ // Initialize tools from options
91
+ if (options.tools) {
92
+ options.tools.forEach((toolRef) => {
93
+ if (typeof toolRef === 'string') {
94
+ // Tool ID - try to resolve from ToolManager
95
+ if (this.parentAgent?.tool) {
96
+ const registeredTool = this.parentAgent.tool.find(toolRef);
97
+ if (registeredTool) {
98
+ this.createTool(registeredTool);
99
+ }
100
+ else {
101
+ // Tool not found - log warning but don't fail
102
+ utils_1.logger.warn(`[Flow] Tool ID '${toolRef}' not found in any scope for flow ${this.title}`);
103
+ }
104
+ }
105
+ else {
106
+ utils_1.logger.warn(`[Flow] No agent available to resolve tool ID '${toolRef}' for flow ${this.title}`);
107
+ }
108
+ }
109
+ else {
110
+ // Inline tool object - validate and use directly
111
+ if (toolRef && toolRef.id && typeof toolRef.handler === 'function') {
112
+ this.createTool(toolRef);
113
+ }
114
+ else {
115
+ utils_1.logger.warn(`[Flow] Invalid inline tool object in flow ${this.title}:`, toolRef);
116
+ }
117
+ }
118
+ });
119
+ }
120
+ // Build sequential steps if provided
121
+ if (stepsToChain.length > 0) {
122
+ this.buildSequentialSteps(stepsToChain);
123
+ }
124
+ }
125
+ /**
126
+ * Build a sequential step machine from an array of steps
127
+ * The last step in the array is the implicit terminus of the flow.
128
+ * @private
129
+ */
130
+ buildSequentialSteps(steps) {
131
+ let currentStepResult = this.initialStep.asStepResult();
132
+ for (const step of steps) {
133
+ currentStepResult = currentStepResult.nextStep(step);
134
+ }
135
+ }
136
+ /**
137
+ * Imperatively add a step to this flow after construction.
138
+ *
139
+ * Applies the same construction-time validations as declarative `steps: [...]`
140
+ * registration (auto-step shape, `reply` exclusivity, `branches` validation,
141
+ * schema lookups). Connects the new step as a successor of the current last
142
+ * step in the flow.
143
+ *
144
+ * When called after the agent has handled a turn, emits a DEBUG-level warning
145
+ * that the flow graph is being mutated mid-session; the operation still succeeds.
146
+ *
147
+ * @param options - Step configuration
148
+ * @returns The newly created and registered Step
149
+ *
150
+ * **Validates: Requirements 8.7, 26.1–26.5**
151
+ */
152
+ addStep(options) {
153
+ // Warn if graph is being mutated mid-session
154
+ if (this._hasHandledTurn) {
155
+ utils_1.logger.debug(`[Flow] Flow "${this.title}" (${this.id}): addStep("${options.id || options.description || 'unnamed'}") called after the agent has handled a turn. ` +
156
+ `The flow graph is being mutated mid-session. The step will still be registered.`);
157
+ }
158
+ // Find the current last step (terminal step with no transitions)
159
+ const lastStep = this.getLastStep();
160
+ // Create the new step via the last step's nextStep chain method.
161
+ // This applies the same Step constructor validations (auto-step shape,
162
+ // branches validation, when/if split checks) and connects the new step
163
+ // as a successor of the last step — identical to declarative chaining.
164
+ lastStep.nextStep(options);
165
+ // Retrieve the newly created Step instance from the last step's transitions
166
+ const transitions = lastStep.getTransitions();
167
+ const newStep = transitions[transitions.length - 1];
168
+ return newStep;
169
+ }
170
+ /**
171
+ * Find the last step in the sequential chain (the terminal step with no transitions).
172
+ * If multiple terminal steps exist (branching), returns the one visited last in BFS order.
173
+ * @private
174
+ */
175
+ getLastStep() {
176
+ const allSteps = this.getAllSteps();
177
+ // Find the last step with no outgoing transitions (terminal)
178
+ for (let i = allSteps.length - 1; i >= 0; i--) {
179
+ if (allSteps[i].getTransitions().length === 0) {
180
+ return allSteps[i];
181
+ }
182
+ }
183
+ // Fallback: if all steps have transitions (cycle), return the last in traversal order
184
+ return allSteps[allSteps.length - 1];
185
+ }
186
+ /**
187
+ * Evaluate when/if conditions using the v2 split logic.
188
+ * `if` (code predicate) evaluates first (free); `when` (AI) evaluates only when `if` passes.
189
+ * Both are combined with AND semantics.
190
+ */
191
+ async evaluateWhen(templateContext) {
192
+ // If neither `when` nor `if` is set, flow is always eligible
193
+ if (!this.when && !this.if) {
194
+ return {
195
+ programmaticResult: true,
196
+ aiContextStrings: [],
197
+ hasProgrammaticConditions: false,
198
+ };
199
+ }
200
+ // Evaluate `if` first (free, code-only)
201
+ if (this.if) {
202
+ const predicates = Array.isArray(this.if) ? this.if : [this.if];
203
+ for (const predicate of predicates) {
204
+ try {
205
+ const result = await predicate({
206
+ data: templateContext.data,
207
+ context: templateContext.context,
208
+ session: templateContext.session,
209
+ history: templateContext.history || [],
210
+ });
211
+ if (!result) {
212
+ // `if` failed — short-circuit, don't evaluate `when`
213
+ return {
214
+ programmaticResult: false,
215
+ aiContextStrings: [],
216
+ hasProgrammaticConditions: true,
217
+ };
218
+ }
219
+ }
220
+ catch (error) {
221
+ utils_1.logger.warn(`[Flow] "if" predicate failed for flow "${this.title}":`, error);
222
+ return {
223
+ programmaticResult: false,
224
+ aiContextStrings: [],
225
+ hasProgrammaticConditions: true,
226
+ };
227
+ }
228
+ }
229
+ }
230
+ // `if` passed (or was absent) — now evaluate `when` (AI-evaluated strings)
231
+ if (this.when) {
232
+ const whenStrings = Array.isArray(this.when) ? this.when : [this.when];
233
+ return {
234
+ programmaticResult: true,
235
+ aiContextStrings: whenStrings,
236
+ hasProgrammaticConditions: !!this.if,
237
+ };
238
+ }
239
+ // Only `if` was set and it passed
240
+ return {
241
+ programmaticResult: true,
242
+ aiContextStrings: [],
243
+ hasProgrammaticConditions: true,
244
+ };
245
+ }
246
+ /**
247
+ * Create an instruction specific to this flow.
248
+ */
249
+ createInstruction(instruction) {
250
+ this.instructions.push({
251
+ ...instruction,
252
+ kind: instruction.kind || 'should',
253
+ id: instruction.id || `instruction_${this.id}_${this.instructions.length}`,
254
+ enabled: instruction.enabled !== false, // Default to true
255
+ });
256
+ return this;
257
+ }
258
+ /**
259
+ * Register a tool for this flow
260
+ */
261
+ createTool(tool) {
262
+ // Validate tool before adding
263
+ if (!tool || !tool.id || !tool.handler) {
264
+ throw new Error(`Invalid tool: must have id and handler properties`);
265
+ }
266
+ this.tools.push(tool);
267
+ return this;
268
+ }
269
+ /**
270
+ * Register multiple tools for this flow
271
+ */
272
+ registerTools(tools) {
273
+ tools.forEach((tool) => this.createTool(tool));
274
+ return this;
275
+ }
276
+ /**
277
+ * Add a tool to this flow using the ToolManager API
278
+ * Creates and adds the tool to flow scope in one operation
279
+ */
280
+ addTool(tool) {
281
+ if (this.parentAgent && this.parentAgent.tool) {
282
+ // Use ToolManager to add to flow scope - no casting needed with unified interface
283
+ this.parentAgent.tool.addToFlow(this, tool);
284
+ }
285
+ else {
286
+ // Fallback: add tool directly to flow tools
287
+ this.createTool(tool);
288
+ }
289
+ return this;
290
+ }
291
+ /**
292
+ * Get all instructions for this flow
293
+ */
294
+ getInstructions() {
295
+ return [...this.instructions];
296
+ }
297
+ /**
298
+ * Get all terms for this flow
299
+ * @deprecated Flow-level terms removed in v2. Always returns empty array.
300
+ */
301
+ getTerms() {
302
+ return [];
303
+ }
304
+ /**
305
+ * Get all tools for this flow
306
+ */
307
+ getTools() {
308
+ return [...this.tools];
309
+ }
310
+ /**
311
+ * Get optional extras schema requested during routing
312
+ */
313
+ getRoutingExtrasSchema() {
314
+ return this.routingExtrasSchema;
315
+ }
316
+ /**
317
+ * Get optional structured response schema for this flow's message
318
+ */
319
+ getResponseOutputSchema() {
320
+ return this.responseOutputSchema;
321
+ }
322
+ getSteps() {
323
+ return this.getAllSteps();
324
+ }
325
+ /**
326
+ * Get flow reference
327
+ */
328
+ getRef() {
329
+ return {
330
+ id: this.id,
331
+ };
332
+ }
333
+ /**
334
+ * Get all steps in this flow (via traversal from initial step)
335
+ */
336
+ getAllSteps() {
337
+ const visited = new Set();
338
+ const steps = [];
339
+ const queue = [this.initialStep];
340
+ while (queue.length > 0) {
341
+ const current = queue.shift();
342
+ if (visited.has(current.id)) {
343
+ continue;
344
+ }
345
+ visited.add(current.id);
346
+ steps.push(current);
347
+ // Add target steps from transitions
348
+ for (const nextStep of current.getTransitions()) {
349
+ if (nextStep && !visited.has(nextStep.id)) {
350
+ queue.push(nextStep);
351
+ }
352
+ }
353
+ }
354
+ return steps;
355
+ }
356
+ /**
357
+ * Get a specific step by ID
358
+ * @param stepId - The step ID to find
359
+ * @returns The step if found, undefined otherwise
360
+ */
361
+ getStep(stepId) {
362
+ const steps = this.getAllSteps();
363
+ return steps.find((step) => step.id === stepId);
364
+ }
365
+ /**
366
+ * Get a description of the flow structure for debugging
367
+ */
368
+ describe() {
369
+ const lines = [
370
+ `Flow: ${this.title}`,
371
+ `ID: ${this.id}`,
372
+ `Description: ${this.description || "N/A"}`,
373
+ `When: ${this.when ? (typeof this.when === 'string' ? this.when : Array.isArray(this.when) ? '[Array]' : '[Function]') : "None"}`,
374
+ `If: ${this.if ? '[Function]' : "None"}`,
375
+ "",
376
+ "Steps:",
377
+ ];
378
+ const steps = this.getAllSteps();
379
+ for (const step of steps) {
380
+ lines.push(` - ${step.id}${step.description ? `: ${step.description}` : ""}`);
381
+ const transitions = step.getTransitions();
382
+ for (const transition of transitions) {
383
+ lines.push(` -> ${transition.id}${transition.description ? `: ${transition.description}` : ""}`);
384
+ }
385
+ }
386
+ return lines.join("\n");
387
+ }
388
+ /**
389
+ * Handle data updates for this flow, calling the onDataUpdate hook if configured
390
+ * @param data - New collected data
391
+ * @param previousCollected - Previously collected data
392
+ * @returns Modified data after hook processing, or original data if no hook
393
+ */
394
+ async handleDataUpdate(data, previousCollected) {
395
+ // Call flow-specific onDataUpdate hook if configured
396
+ if (this.hooks?.onDataUpdate) {
397
+ return await this.hooks.onDataUpdate(data, previousCollected);
398
+ }
399
+ // Return original data if no hook
400
+ return data;
401
+ }
402
+ /**
403
+ * Handle context updates for this flow, calling the onContextUpdate hook if configured
404
+ * @param newContext - New context
405
+ * @param previousContext - Previous context
406
+ */
407
+ async handleContextUpdate(newContext, previousContext) {
408
+ // Call flow-specific onContextUpdate hook if configured
409
+ if (this.hooks?.onContextUpdate) {
410
+ await this.hooks.onContextUpdate(newContext, previousContext);
411
+ }
412
+ }
413
+ /**
414
+ * Export flow configuration as FlowOptions for copying/cloning
415
+ * @returns FlowOptions that can be used to create a new flow with identical configuration
416
+ */
417
+ toOptions() {
418
+ // Convert steps to StepOptions
419
+ const steps = this.getAllSteps()
420
+ .filter(step => step.id !== this.initialStep.id) // Exclude initial step
421
+ .map(step => ({
422
+ id: step.id,
423
+ description: step.description,
424
+ prompt: step.prompt,
425
+ tools: step.tools,
426
+ prepare: step.prepare,
427
+ finalize: step.finalize,
428
+ collect: step.collect,
429
+ skip: step.skip,
430
+ requires: step.requires,
431
+ when: step.when,
432
+ if: step.if,
433
+ instructions: step.getInstructions(),
434
+ }));
435
+ return {
436
+ id: this.id,
437
+ title: this.title,
438
+ description: this.description,
439
+ when: this.when,
440
+ if: this.if,
441
+ instructions: this.getInstructions(),
442
+ tools: this.getTools(),
443
+ routingExtrasSchema: this.routingExtrasSchema,
444
+ responseOutputSchema: this.responseOutputSchema,
445
+ requiredFields: this.requiredFields,
446
+ optionalFields: this.optionalFields,
447
+ initialData: this.initialData,
448
+ steps: steps.length > 0 ? steps : undefined,
449
+ onComplete: this.onComplete,
450
+ reentrant: this.reentrant,
451
+ hooks: this.hooks,
452
+ };
453
+ }
454
+ /**
455
+ * Check if this flow is complete based on the provided data
456
+ * @param data - Currently collected agent-level data
457
+ * @returns true if all required fields are present, false otherwise
458
+ *
459
+ * Note: Flows with no requiredFields (whether they have optionalFields or not)
460
+ * are never complete based on data — they complete when the last step finishes (implicit terminus).
461
+ */
462
+ isComplete(data) {
463
+ // If flow has required fields, check if they're all collected
464
+ if (this.requiredFields && this.requiredFields.length > 0) {
465
+ return this.requiredFields.every(field => {
466
+ const value = data[field];
467
+ return value !== undefined && value !== null && value !== '';
468
+ });
469
+ }
470
+ // If flow has optional fields but no required fields, it's NOT complete
471
+ // Optional-only flows complete when the last step finishes
472
+ if (this.optionalFields && this.optionalFields.length > 0) {
473
+ return false;
474
+ }
475
+ // No required or optional fields - flow doesn't complete based on data
476
+ // It completes when the last step in the flow finishes (implicit terminus)
477
+ return false;
478
+ }
479
+ /**
480
+ * Get the list of missing required fields for this flow
481
+ * @param data - Currently collected agent-level data
482
+ * @returns Array of missing required field keys
483
+ */
484
+ getMissingRequiredFields(data) {
485
+ if (!this.requiredFields || this.requiredFields.length === 0) {
486
+ return [];
487
+ }
488
+ return this.requiredFields.filter(field => {
489
+ const value = data[field];
490
+ return value === undefined || value === null || value === '';
491
+ });
492
+ }
493
+ /**
494
+ * Get the completion progress for this flow as a percentage
495
+ * @param data - Currently collected agent-level data
496
+ * @returns Completion progress as a number between 0 and 1
497
+ *
498
+ * Note: Must be consistent with isComplete() logic
499
+ */
500
+ getCompletionProgress(data) {
501
+ // If flow has required fields, calculate progress
502
+ if (this.requiredFields && this.requiredFields.length > 0) {
503
+ const completedFields = this.requiredFields.filter(field => {
504
+ const value = data[field];
505
+ return value !== undefined && value !== null && value !== '';
506
+ });
507
+ return completedFields.length / this.requiredFields.length;
508
+ }
509
+ // If flow has optional fields but no required fields, it's NOT complete
510
+ // Optional-only flows complete when the last step finishes, progress is 0
511
+ if (this.optionalFields && this.optionalFields.length > 0) {
512
+ return 0;
513
+ }
514
+ // No required or optional fields - flow doesn't complete based on data
515
+ // Progress is 0 (completes when last step finishes)
516
+ return 0;
517
+ }
518
+ /**
519
+ * Evaluate the onComplete handler and return a Directive.
520
+ *
521
+ * In v2, top-level `onComplete` is desugared to `hooks.onComplete` at
522
+ * construction time. This method delegates to `hooks.onComplete` when set.
523
+ *
524
+ * @param session - Current session step
525
+ * @param context - Agent context
526
+ * @returns Directive or undefined if no transition
527
+ */
528
+ async evaluateOnComplete(session, context) {
529
+ if (this.hooks?.onComplete) {
530
+ const hookCtx = {
531
+ context: context,
532
+ data: session.data ?? {},
533
+ session: {},
534
+ history: [],
535
+ dispatch: () => { },
536
+ };
537
+ const result = await this.hooks.onComplete(hookCtx);
538
+ if (!result)
539
+ return undefined;
540
+ return result;
541
+ }
542
+ // Fallback: if somehow onComplete is set but hooks.onComplete is not
543
+ if (this.onComplete) {
544
+ return { goTo: this.onComplete };
545
+ }
546
+ return undefined;
547
+ }
548
+ }
549
+ exports.Flow = Flow;
550
+ //# sourceMappingURL=Flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Flow.js","sourceRoot":"","sources":["../../../src/core/Flow.ts"],"names":[],"mappings":"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"}