@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
@@ -1,468 +0,0 @@
1
- /**
2
- * Route skipIf Patterns Example
3
- *
4
- * This example demonstrates using skipIf conditions on routes for dynamic
5
- * route exclusion. Route skipIf allows you to prevent entire routes from
6
- * being considered based on context, data, or business logic.
7
- *
8
- * Key concepts:
9
- * - Route skipIf prevents routes from being activated
10
- * - Uses OR logic (skip if ANY condition is true)
11
- * - Can use strings, functions, or mixed arrays
12
- * - Perfect for business rules and access control
13
- * - Evaluated before route when conditions
14
- */
15
-
16
- import {
17
- Agent,
18
- GeminiProvider,
19
- } from "../../src/index";
20
-
21
- // Context for a banking system
22
- interface BankingContext {
23
- customerId: string;
24
- accountType: "basic" | "premium" | "business" | "private";
25
- accountStatus: "active" | "suspended" | "closed" | "pending";
26
- creditScore: number;
27
- accountBalance: number;
28
- hasActiveLoans: boolean;
29
- region: string;
30
- kycVerified: boolean;
31
- }
32
-
33
- // Banking transaction data
34
- interface BankingData {
35
- transactionType?: "transfer" | "loan" | "investment" | "card" | "mortgage";
36
- amount?: number;
37
- recipientAccount?: string;
38
- loanAmount?: number;
39
- investmentType?: string;
40
- approved?: boolean;
41
- requiresApproval?: boolean;
42
- }
43
-
44
- const bankingSchema = {
45
- type: "object",
46
- properties: {
47
- transactionType: { type: "string", enum: ["transfer", "loan", "investment", "card", "mortgage"] },
48
- amount: { type: "number", minimum: 0 },
49
- recipientAccount: { type: "string" },
50
- loanAmount: { type: "number", minimum: 0 },
51
- investmentType: { type: "string" },
52
- approved: { type: "boolean" },
53
- requiresApproval: { type: "boolean" },
54
- },
55
- };
56
-
57
- // Create agent with route skipIf examples
58
- const agent = new Agent<BankingContext, BankingData>({
59
- name: "BankingBot",
60
- description: "A banking bot demonstrating route skipIf patterns",
61
- provider: new GeminiProvider({
62
- apiKey: process.env.GEMINI_API_KEY || "demo-key",
63
- model: "models/gemini-2.5-flash",
64
- }),
65
- context: {
66
- customerId: "cust_12345",
67
- accountType: "premium",
68
- accountStatus: "active",
69
- creditScore: 750,
70
- accountBalance: 15000,
71
- hasActiveLoans: false,
72
- region: "US",
73
- kycVerified: true,
74
- },
75
- schema: bankingSchema,
76
- });
77
-
78
- // Route 1: Premium Services - String-only skipIf
79
- agent.createRoute({
80
- title: "Premium Banking Services",
81
- description: "Exclusive services for premium customers",
82
- when: "Customer asks about premium services, investment options, or wealth management",
83
- // String-only skipIf - AI understands account restrictions
84
- skipIf: "Customer account is not premium or has restrictions that prevent premium services",
85
- steps: [
86
- {
87
- id: "premium_welcome",
88
- description: "Welcome premium customer",
89
- prompt: "Welcome to our premium banking services! I can help you with investments, wealth management, and exclusive products.",
90
- },
91
- ],
92
- });
93
-
94
- // Route 2: Loan Services - Function-only skipIf
95
- agent.createRoute({
96
- title: "Loan Services",
97
- description: "Handle loan applications and inquiries",
98
- when: "Customer wants to apply for a loan or asks about lending options",
99
- // Function-only skipIf - programmatic eligibility check
100
- skipIf: (ctx) => {
101
- // Skip if account is not active, credit score too low, or already has active loans
102
- return ctx.context?.accountStatus !== "active" ||
103
- (ctx.context?.creditScore || 0) < 600 ||
104
- ctx.context?.hasActiveLoans === true;
105
- },
106
- requiredFields: ["loanAmount"],
107
- steps: [
108
- {
109
- id: "loan_application",
110
- description: "Process loan application",
111
- prompt: "I'd be happy to help you with a loan application. What amount are you looking to borrow?",
112
- collect: ["loanAmount"],
113
- },
114
- ],
115
- });
116
-
117
- // Route 3: Investment Services - Mixed array skipIf
118
- agent.createRoute({
119
- title: "Investment Services",
120
- description: "Investment and wealth management services",
121
- when: [
122
- "Customer asks about investments, stocks, bonds, or portfolio management",
123
- (ctx) => ctx.context?.accountType === "premium" || ctx.context?.accountType === "private"
124
- ],
125
- // Mixed array skipIf - AI context + multiple programmatic checks
126
- skipIf: [
127
- "Customer account has restrictions or insufficient funds for investments",
128
- (ctx) => ctx.context?.accountStatus !== "active",
129
- (ctx) => (ctx.context?.accountBalance || 0) < 10000,
130
- (ctx) => ctx.context?.kycVerified !== true
131
- ],
132
- optionalFields: ["investmentType", "amount"],
133
- steps: [
134
- {
135
- id: "investment_consultation",
136
- description: "Provide investment consultation",
137
- prompt: "I can help you explore investment opportunities. What type of investments interest you?",
138
- collect: ["investmentType"],
139
- },
140
- ],
141
- });
142
-
143
- // Route 4: Large Transfers - Complex mixed skipIf
144
- agent.createRoute({
145
- title: "Large Money Transfers",
146
- description: "Handle large money transfers with enhanced security",
147
- when: [
148
- "Customer wants to make a large money transfer",
149
- (ctx) => (ctx.data?.amount || 0) > 10000
150
- ],
151
- // Complex mixed skipIf with multiple business rules
152
- skipIf: [
153
- "Account has restrictions, insufficient funds, or compliance issues",
154
- (ctx) => ctx.context?.accountStatus === "suspended" || ctx.context?.accountStatus === "closed",
155
- (ctx) => (ctx.context?.accountBalance || 0) < (ctx.data?.amount || 0),
156
- (ctx) => ctx.context?.kycVerified !== true,
157
- (ctx) => ctx.context?.region === "restricted_region" // Compliance restriction
158
- ],
159
- requiredFields: ["amount", "recipientAccount"],
160
- steps: [
161
- {
162
- id: "verify_transfer",
163
- description: "Verify large transfer details",
164
- prompt: "For large transfers, I need to verify some details for security. What's the recipient account and transfer amount?",
165
- collect: ["amount", "recipientAccount"],
166
- },
167
- {
168
- id: "security_check",
169
- description: "Perform additional security checks",
170
- prompt: "I'm performing additional security verification for this large transfer. This may take a moment.",
171
- requires: ["amount", "recipientAccount"],
172
- },
173
- ],
174
- });
175
-
176
- // Route 5: Business Banking - Account type skipIf
177
- agent.createRoute({
178
- title: "Business Banking Services",
179
- description: "Services specifically for business accounts",
180
- when: "Customer asks about business banking, commercial loans, or business services",
181
- // Function-only skipIf - account type restriction
182
- skipIf: (ctx) => ctx.context?.accountType !== "business",
183
- steps: [
184
- {
185
- id: "business_services",
186
- description: "Present business banking options",
187
- prompt: "I can help you with business banking services including commercial loans, merchant services, and business accounts.",
188
- },
189
- ],
190
- });
191
-
192
- // Route 6: Credit Card Services - Multiple restriction skipIf
193
- agent.createRoute({
194
- title: "Credit Card Services",
195
- description: "Credit card applications and management",
196
- when: "Customer asks about credit cards, card applications, or card services",
197
- // Mixed skipIf with multiple eligibility criteria
198
- skipIf: [
199
- "Customer not eligible for credit card services due to account or credit restrictions",
200
- (ctx) => ctx.context?.accountStatus !== "active",
201
- (ctx) => (ctx.context?.creditScore || 0) < 650,
202
- (ctx) => ctx.context?.kycVerified !== true,
203
- (ctx) => ctx.context?.hasActiveLoans === true && (ctx.context?.creditScore || 0) < 700
204
- ],
205
- steps: [
206
- {
207
- id: "card_application",
208
- description: "Process credit card application",
209
- prompt: "I can help you apply for a credit card. Based on your account, you're eligible for our premium card options.",
210
- },
211
- ],
212
- });
213
-
214
- // Route 7: Mortgage Services - Complex eligibility skipIf
215
- agent.createRoute({
216
- title: "Mortgage Services",
217
- description: "Mortgage applications and home loan services",
218
- when: [
219
- "Customer asks about mortgages, home loans, or property financing",
220
- (ctx) => ctx.helpers.lastMessageContains(["mortgage", "home loan", "property", "house"])
221
- ],
222
- // Complex skipIf with comprehensive eligibility check
223
- skipIf: [
224
- "Customer not eligible for mortgage services due to various restrictions",
225
- (ctx) => ctx.context?.accountStatus !== "active",
226
- (ctx) => (ctx.context?.creditScore || 0) < 620, // Minimum credit score for mortgages
227
- (ctx) => (ctx.context?.accountBalance || 0) < 50000, // Minimum down payment capability
228
- (ctx) => ctx.context?.hasActiveLoans === true && (ctx.context?.creditScore || 0) < 720,
229
- (ctx) => ctx.context?.kycVerified !== true,
230
- (ctx) => ctx.context?.region === "restricted_mortgage_region"
231
- ],
232
- requiredFields: ["loanAmount"],
233
- steps: [
234
- {
235
- id: "mortgage_consultation",
236
- description: "Provide mortgage consultation",
237
- prompt: "I can help you with mortgage options. What's your target loan amount for your home purchase?",
238
- collect: ["loanAmount"],
239
- },
240
- ],
241
- });
242
-
243
- // Route 8: Account Recovery - Status-based skipIf
244
- agent.createRoute({
245
- title: "Account Recovery",
246
- description: "Help customers recover suspended or restricted accounts",
247
- when: "Customer has account issues, restrictions, or needs account recovery help",
248
- // Function-only skipIf - only for accounts that need recovery
249
- skipIf: (ctx) => ctx.context?.accountStatus === "active" && ctx.context?.kycVerified === true,
250
- steps: [
251
- {
252
- id: "recovery_assistance",
253
- description: "Provide account recovery assistance",
254
- prompt: "I can help you resolve account issues. Let me check what steps are needed to restore full access to your account.",
255
- },
256
- ],
257
- });
258
-
259
- // Route 9: General Banking - Fallback with minimal skipIf
260
- agent.createRoute({
261
- title: "General Banking Support",
262
- description: "General banking questions and support",
263
- when: "Customer has general banking questions or needs basic support",
264
- // Minimal skipIf - only skip if account is completely closed
265
- skipIf: (ctx) => ctx.context?.accountStatus === "closed",
266
- steps: [
267
- {
268
- id: "general_support",
269
- description: "Provide general banking support",
270
- prompt: "I'm here to help with your banking needs. What can I assist you with today?",
271
- },
272
- ],
273
- });
274
-
275
- // Demonstration function
276
- async function demonstrateRouteSkipIfPatterns() {
277
- console.log("=== Route skipIf Patterns Demo ===\n");
278
- console.log("This demo shows how route skipIf conditions prevent routes from being activated.\n");
279
-
280
- const testScenarios = [
281
- {
282
- name: "Premium Customer - Premium Services",
283
- context: {
284
- accountType: "premium" as const,
285
- accountStatus: "active" as const,
286
- creditScore: 800,
287
- kycVerified: true
288
- },
289
- message: "I'm interested in your premium investment services",
290
- expectedRoute: "Premium Banking Services",
291
- shouldSkip: false
292
- },
293
- {
294
- name: "Basic Customer - Premium Services (Should Skip)",
295
- context: {
296
- accountType: "basic" as const,
297
- accountStatus: "active" as const,
298
- creditScore: 700,
299
- kycVerified: true
300
- },
301
- message: "I want premium investment services",
302
- expectedRoute: "General Banking Support", // Should fallback
303
- shouldSkip: true
304
- },
305
- {
306
- name: "Good Credit - Loan Services",
307
- context: {
308
- accountType: "basic" as const,
309
- accountStatus: "active" as const,
310
- creditScore: 750,
311
- hasActiveLoans: false,
312
- kycVerified: true
313
- },
314
- message: "I'd like to apply for a personal loan",
315
- expectedRoute: "Loan Services",
316
- shouldSkip: false
317
- },
318
- {
319
- name: "Poor Credit - Loan Services (Should Skip)",
320
- context: {
321
- accountType: "basic" as const,
322
- accountStatus: "active" as const,
323
- creditScore: 550,
324
- hasActiveLoans: false,
325
- kycVerified: true
326
- },
327
- message: "I need a loan",
328
- expectedRoute: "General Banking Support", // Should fallback
329
- shouldSkip: true
330
- },
331
- {
332
- name: "High Balance - Investment Services",
333
- context: {
334
- accountType: "premium" as const,
335
- accountStatus: "active" as const,
336
- accountBalance: 50000,
337
- kycVerified: true
338
- },
339
- message: "I want to invest in stocks",
340
- expectedRoute: "Investment Services",
341
- shouldSkip: false
342
- },
343
- {
344
- name: "Low Balance - Investment Services (Should Skip)",
345
- context: {
346
- accountType: "premium" as const,
347
- accountStatus: "active" as const,
348
- accountBalance: 5000,
349
- kycVerified: true
350
- },
351
- message: "I want to invest in stocks",
352
- expectedRoute: "General Banking Support", // Should fallback
353
- shouldSkip: true
354
- },
355
- {
356
- name: "Business Account - Business Services",
357
- context: {
358
- accountType: "business" as const,
359
- accountStatus: "active" as const,
360
- kycVerified: true
361
- },
362
- message: "I need business banking services",
363
- expectedRoute: "Business Banking Services",
364
- shouldSkip: false
365
- },
366
- {
367
- name: "Personal Account - Business Services (Should Skip)",
368
- context: {
369
- accountType: "basic" as const,
370
- accountStatus: "active" as const,
371
- kycVerified: true
372
- },
373
- message: "I need business banking services",
374
- expectedRoute: "General Banking Support", // Should fallback
375
- shouldSkip: true
376
- },
377
- {
378
- name: "Suspended Account - Account Recovery",
379
- context: {
380
- accountType: "basic" as const,
381
- accountStatus: "suspended" as const,
382
- kycVerified: false
383
- },
384
- message: "My account is suspended, I need help",
385
- expectedRoute: "Account Recovery",
386
- shouldSkip: false
387
- },
388
- ];
389
-
390
- for (const scenario of testScenarios) {
391
- console.log(`🔍 Testing: ${scenario.name}`);
392
- console.log(`📝 Message: "${scenario.message}"`);
393
- console.log(`🎯 Should Skip Target Route: ${scenario.shouldSkip}`);
394
-
395
- // Create agent with specific context for this scenario
396
- const testAgent = new Agent<BankingContext, BankingData>({
397
- name: "TestBankBot",
398
- description: "Test bot for route skipIf patterns",
399
- provider: new GeminiProvider({
400
- apiKey: process.env.GEMINI_API_KEY || "demo-key",
401
- model: "models/gemini-2.5-flash",
402
- }),
403
- context: {
404
- customerId: "test_customer",
405
- accountBalance: 10000,
406
- hasActiveLoans: false,
407
- region: "US",
408
- ...scenario.context,
409
- } as BankingContext,
410
- schema: bankingSchema,
411
- });
412
-
413
- // Copy routes from main agent using the new toOptions() method
414
- agent.getRoutes().forEach(route => {
415
- testAgent.createRoute(route.toOptions());
416
- });
417
-
418
- try {
419
- const response = await testAgent.respond({
420
- history: [
421
- {
422
- role: "user",
423
- content: scenario.message,
424
- name: "Customer",
425
- },
426
- ],
427
- });
428
-
429
- const actualRoute = response.session?.currentRoute?.title || "No route";
430
- console.log(`🎯 Routed to: ${actualRoute}`);
431
- console.log(`✅ Expected: ${scenario.expectedRoute}`);
432
-
433
- if (scenario.shouldSkip) {
434
- console.log(`✅ Skip Logic: Route was correctly skipped`);
435
- } else {
436
- console.log(`✅ Skip Logic: Route was correctly allowed`);
437
- }
438
-
439
- console.log(`🤖 Response: ${response.message.substring(0, 100)}...`);
440
- console.log();
441
- } catch (error) {
442
- console.log(`❌ Error: ${error}`);
443
- console.log();
444
- }
445
- }
446
-
447
- console.log("💡 Key Benefits of Route skipIf Patterns:");
448
- console.log(" - Dynamic route exclusion based on business rules");
449
- console.log(" - Access control and eligibility enforcement");
450
- console.log(" - Prevents inappropriate routes from being considered");
451
- console.log(" - Supports complex business logic with mixed conditions");
452
- console.log(" - Evaluated before route when conditions for efficiency");
453
- }
454
-
455
- // Run demonstration
456
- async function main() {
457
- try {
458
- await demonstrateRouteSkipIfPatterns();
459
- } catch (error) {
460
- console.error("Error:", error);
461
- }
462
- }
463
-
464
- if (import.meta.url === `file://${process.argv[1]}`) {
465
- main().catch(console.error);
466
- }
467
-
468
- export { agent, demonstrateRouteSkipIfPatterns };