@falai/agent 1.2.7 → 2.0.0

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 (508) 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 +1196 -1015
  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 +524 -134
  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/GeminiProvider.d.ts +3 -3
  126. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  127. package/dist/cjs/providers/GeminiProvider.js +16 -14
  128. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  129. package/dist/cjs/types/agent.d.ts +183 -54
  130. package/dist/cjs/types/agent.d.ts.map +1 -1
  131. package/dist/cjs/types/agent.js +0 -6
  132. package/dist/cjs/types/agent.js.map +1 -1
  133. package/dist/cjs/types/ai.d.ts +3 -3
  134. package/dist/cjs/types/ai.d.ts.map +1 -1
  135. package/dist/cjs/types/errors.d.ts +15 -0
  136. package/dist/cjs/types/errors.d.ts.map +1 -0
  137. package/dist/cjs/types/errors.js +22 -0
  138. package/dist/cjs/types/errors.js.map +1 -0
  139. package/dist/cjs/types/flow.d.ts +513 -0
  140. package/dist/cjs/types/flow.d.ts.map +1 -0
  141. package/dist/cjs/types/{route.js → flow.js} +2 -2
  142. package/dist/cjs/types/flow.js.map +1 -0
  143. package/dist/cjs/types/index.d.ts +7 -6
  144. package/dist/cjs/types/index.d.ts.map +1 -1
  145. package/dist/cjs/types/index.js +6 -2
  146. package/dist/cjs/types/index.js.map +1 -1
  147. package/dist/cjs/types/persistence.d.ts +11 -7
  148. package/dist/cjs/types/persistence.d.ts.map +1 -1
  149. package/dist/cjs/types/routing.d.ts +1 -1
  150. package/dist/cjs/types/routing.d.ts.map +1 -1
  151. package/dist/cjs/types/session.d.ts +24 -23
  152. package/dist/cjs/types/session.d.ts.map +1 -1
  153. package/dist/cjs/types/signals.d.ts +248 -0
  154. package/dist/cjs/types/signals.d.ts.map +1 -0
  155. package/dist/cjs/types/signals.js +11 -0
  156. package/dist/cjs/types/signals.js.map +1 -0
  157. package/dist/cjs/types/template.d.ts +2 -8
  158. package/dist/cjs/types/template.d.ts.map +1 -1
  159. package/dist/cjs/types/tool.d.ts +36 -29
  160. package/dist/cjs/types/tool.d.ts.map +1 -1
  161. package/dist/cjs/types/tool.js +1 -1
  162. package/dist/cjs/types/tool.js.map +1 -1
  163. package/dist/cjs/utils/condition.d.ts +7 -1
  164. package/dist/cjs/utils/condition.d.ts.map +1 -1
  165. package/dist/cjs/utils/condition.js.map +1 -1
  166. package/dist/cjs/utils/id.d.ts +13 -5
  167. package/dist/cjs/utils/id.d.ts.map +1 -1
  168. package/dist/cjs/utils/id.js +24 -10
  169. package/dist/cjs/utils/id.js.map +1 -1
  170. package/dist/cjs/utils/index.d.ts +2 -2
  171. package/dist/cjs/utils/index.d.ts.map +1 -1
  172. package/dist/cjs/utils/index.js +7 -3
  173. package/dist/cjs/utils/index.js.map +1 -1
  174. package/dist/cjs/utils/session.d.ts +44 -5
  175. package/dist/cjs/utils/session.d.ts.map +1 -1
  176. package/dist/cjs/utils/session.js +197 -38
  177. package/dist/cjs/utils/session.js.map +1 -1
  178. package/dist/constants/index.d.ts +0 -9
  179. package/dist/constants/index.d.ts.map +1 -1
  180. package/dist/constants/index.js +3 -9
  181. package/dist/constants/index.js.map +1 -1
  182. package/dist/core/Agent.d.ts +119 -153
  183. package/dist/core/Agent.d.ts.map +1 -1
  184. package/dist/core/Agent.js +472 -325
  185. package/dist/core/Agent.js.map +1 -1
  186. package/dist/core/AutoChainExecutor.d.ts +107 -0
  187. package/dist/core/AutoChainExecutor.d.ts.map +1 -0
  188. package/dist/core/AutoChainExecutor.js +293 -0
  189. package/dist/core/AutoChainExecutor.js.map +1 -0
  190. package/dist/core/BranchEvaluator.d.ts +54 -0
  191. package/dist/core/BranchEvaluator.d.ts.map +1 -0
  192. package/dist/core/BranchEvaluator.js +126 -0
  193. package/dist/core/BranchEvaluator.js.map +1 -0
  194. package/dist/core/DirectiveBus.d.ts +88 -0
  195. package/dist/core/DirectiveBus.d.ts.map +1 -0
  196. package/dist/core/DirectiveBus.js +192 -0
  197. package/dist/core/DirectiveBus.js.map +1 -0
  198. package/dist/core/DirectiveChainTracker.d.ts +49 -0
  199. package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
  200. package/dist/core/DirectiveChainTracker.js +117 -0
  201. package/dist/core/DirectiveChainTracker.js.map +1 -0
  202. package/dist/core/Flow.d.ts +186 -0
  203. package/dist/core/Flow.d.ts.map +1 -0
  204. package/dist/core/Flow.js +546 -0
  205. package/dist/core/Flow.js.map +1 -0
  206. package/dist/core/FlowRouter.d.ts +182 -0
  207. package/dist/core/FlowRouter.d.ts.map +1 -0
  208. package/dist/core/{RoutingEngine.js → FlowRouter.js} +322 -305
  209. package/dist/core/FlowRouter.js.map +1 -0
  210. package/dist/core/PersistenceManager.d.ts +2 -2
  211. package/dist/core/PersistenceManager.d.ts.map +1 -1
  212. package/dist/core/PersistenceManager.js +7 -7
  213. package/dist/core/PersistenceManager.js.map +1 -1
  214. package/dist/core/PromptComposer.d.ts +21 -8
  215. package/dist/core/PromptComposer.d.ts.map +1 -1
  216. package/dist/core/PromptComposer.js +183 -106
  217. package/dist/core/PromptComposer.js.map +1 -1
  218. package/dist/core/PromptSectionCache.d.ts +1 -1
  219. package/dist/core/PromptSectionCache.js +1 -1
  220. package/dist/core/ResponseEngine.d.ts +18 -8
  221. package/dist/core/ResponseEngine.d.ts.map +1 -1
  222. package/dist/core/ResponseEngine.js +38 -36
  223. package/dist/core/ResponseEngine.js.map +1 -1
  224. package/dist/core/ResponseModal.d.ts +73 -56
  225. package/dist/core/ResponseModal.d.ts.map +1 -1
  226. package/dist/core/ResponseModal.js +1198 -1017
  227. package/dist/core/ResponseModal.js.map +1 -1
  228. package/dist/core/ResponsePipeline.d.ts +124 -26
  229. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  230. package/dist/core/ResponsePipeline.js +524 -135
  231. package/dist/core/ResponsePipeline.js.map +1 -1
  232. package/dist/core/SignalEvaluator.d.ts +86 -0
  233. package/dist/core/SignalEvaluator.d.ts.map +1 -0
  234. package/dist/core/SignalEvaluator.js +326 -0
  235. package/dist/core/SignalEvaluator.js.map +1 -0
  236. package/dist/core/SignalProcessor.d.ts +152 -0
  237. package/dist/core/SignalProcessor.d.ts.map +1 -0
  238. package/dist/core/SignalProcessor.js +555 -0
  239. package/dist/core/SignalProcessor.js.map +1 -0
  240. package/dist/core/Step.d.ts +43 -32
  241. package/dist/core/Step.d.ts.map +1 -1
  242. package/dist/core/Step.js +220 -126
  243. package/dist/core/Step.js.map +1 -1
  244. package/dist/core/StreamingToolExecutor.d.ts +2 -2
  245. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  246. package/dist/core/StreamingToolExecutor.js.map +1 -1
  247. package/dist/core/ToolManager.d.ts +44 -13
  248. package/dist/core/ToolManager.d.ts.map +1 -1
  249. package/dist/core/ToolManager.js +174 -91
  250. package/dist/core/ToolManager.js.map +1 -1
  251. package/dist/core/createAgent.d.ts +35 -0
  252. package/dist/core/createAgent.d.ts.map +1 -0
  253. package/dist/core/createAgent.js +36 -0
  254. package/dist/core/createAgent.js.map +1 -0
  255. package/dist/core/flow-namespace.d.ts +49 -0
  256. package/dist/core/flow-namespace.d.ts.map +1 -0
  257. package/dist/core/flow-namespace.js +168 -0
  258. package/dist/core/flow-namespace.js.map +1 -0
  259. package/dist/index.d.ts +11 -14
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +9 -12
  262. package/dist/index.js.map +1 -1
  263. package/dist/providers/GeminiProvider.d.ts +3 -3
  264. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  265. package/dist/providers/GeminiProvider.js +16 -14
  266. package/dist/providers/GeminiProvider.js.map +1 -1
  267. package/dist/types/agent.d.ts +183 -54
  268. package/dist/types/agent.d.ts.map +1 -1
  269. package/dist/types/agent.js +0 -6
  270. package/dist/types/agent.js.map +1 -1
  271. package/dist/types/ai.d.ts +3 -3
  272. package/dist/types/ai.d.ts.map +1 -1
  273. package/dist/types/errors.d.ts +15 -0
  274. package/dist/types/errors.d.ts.map +1 -0
  275. package/dist/types/errors.js +18 -0
  276. package/dist/types/errors.js.map +1 -0
  277. package/dist/types/flow.d.ts +513 -0
  278. package/dist/types/flow.d.ts.map +1 -0
  279. package/dist/types/flow.js +5 -0
  280. package/dist/types/flow.js.map +1 -0
  281. package/dist/types/index.d.ts +7 -6
  282. package/dist/types/index.d.ts.map +1 -1
  283. package/dist/types/index.js +4 -1
  284. package/dist/types/index.js.map +1 -1
  285. package/dist/types/persistence.d.ts +11 -7
  286. package/dist/types/persistence.d.ts.map +1 -1
  287. package/dist/types/routing.d.ts +1 -1
  288. package/dist/types/routing.d.ts.map +1 -1
  289. package/dist/types/session.d.ts +24 -23
  290. package/dist/types/session.d.ts.map +1 -1
  291. package/dist/types/signals.d.ts +248 -0
  292. package/dist/types/signals.d.ts.map +1 -0
  293. package/dist/types/signals.js +10 -0
  294. package/dist/types/signals.js.map +1 -0
  295. package/dist/types/template.d.ts +2 -8
  296. package/dist/types/template.d.ts.map +1 -1
  297. package/dist/types/tool.d.ts +36 -29
  298. package/dist/types/tool.d.ts.map +1 -1
  299. package/dist/types/tool.js +1 -1
  300. package/dist/types/tool.js.map +1 -1
  301. package/dist/utils/condition.d.ts +7 -1
  302. package/dist/utils/condition.d.ts.map +1 -1
  303. package/dist/utils/condition.js.map +1 -1
  304. package/dist/utils/id.d.ts +13 -5
  305. package/dist/utils/id.d.ts.map +1 -1
  306. package/dist/utils/id.js +22 -9
  307. package/dist/utils/id.js.map +1 -1
  308. package/dist/utils/index.d.ts +2 -2
  309. package/dist/utils/index.d.ts.map +1 -1
  310. package/dist/utils/index.js +2 -2
  311. package/dist/utils/index.js.map +1 -1
  312. package/dist/utils/session.d.ts +44 -5
  313. package/dist/utils/session.d.ts.map +1 -1
  314. package/dist/utils/session.js +193 -37
  315. package/dist/utils/session.js.map +1 -1
  316. package/docs/README.md +15 -202
  317. package/docs/concepts/architecture.md +281 -0
  318. package/docs/concepts/directives.md +400 -0
  319. package/docs/concepts/pipeline.md +399 -0
  320. package/docs/guides/branching.md +263 -0
  321. package/docs/guides/compaction.md +163 -0
  322. package/docs/guides/conditions.md +167 -0
  323. package/docs/guides/error-handling.md +176 -0
  324. package/docs/guides/flow-control.md +409 -0
  325. package/docs/guides/instructions.md +210 -0
  326. package/docs/guides/persistence.md +182 -0
  327. package/docs/guides/streaming.md +137 -0
  328. package/docs/migration/README.md +15 -0
  329. package/docs/migration/route-to-flow.md +560 -0
  330. package/docs/migration/v1-to-v2.md +909 -0
  331. package/docs/reference/adapters.md +481 -0
  332. package/docs/reference/branches.md +241 -0
  333. package/docs/reference/create-agent.md +186 -0
  334. package/docs/reference/directive.md +243 -0
  335. package/docs/reference/errors.md +122 -0
  336. package/docs/reference/flow.md +238 -0
  337. package/docs/reference/instruction.md +177 -0
  338. package/docs/reference/pre-directive.md +131 -0
  339. package/docs/reference/providers.md +227 -0
  340. package/docs/reference/signals.md +356 -0
  341. package/docs/reference/step.md +339 -0
  342. package/docs/reference/tool.md +269 -0
  343. package/docs/start/01-install.md +81 -0
  344. package/docs/start/02-first-agent.md +196 -0
  345. package/docs/start/03-collect-data.md +222 -0
  346. package/docs/start/04-add-tools.md +276 -0
  347. package/docs/start/05-go-to-production.md +216 -0
  348. package/examples/01-quickstart.ts +20 -0
  349. package/examples/02-data-extraction.ts +90 -0
  350. package/examples/03-tools.ts +136 -0
  351. package/examples/04-instructions.ts +100 -0
  352. package/examples/05-branching.ts +140 -0
  353. package/examples/06-flow-control.ts +103 -0
  354. package/examples/07-streaming.ts +69 -0
  355. package/examples/08-persistence.ts +98 -0
  356. package/examples/09-signals.ts +144 -0
  357. package/examples/tsconfig.json +30 -0
  358. package/package.json +2 -1
  359. package/src/adapters/MemoryAdapter.ts +3 -3
  360. package/src/adapters/MongoAdapter.ts +3 -3
  361. package/src/adapters/OpenSearchAdapter.ts +10 -8
  362. package/src/adapters/PostgreSQLAdapter.ts +26 -10
  363. package/src/adapters/PrismaAdapter.ts +6 -6
  364. package/src/adapters/RedisAdapter.ts +3 -3
  365. package/src/adapters/SQLiteAdapter.ts +31 -12
  366. package/src/constants/index.ts +2 -10
  367. package/src/core/Agent.ts +585 -374
  368. package/src/core/AutoChainExecutor.ts +440 -0
  369. package/src/core/BranchEvaluator.ts +167 -0
  370. package/src/core/DirectiveBus.ts +248 -0
  371. package/src/core/DirectiveChainTracker.ts +144 -0
  372. package/src/core/Flow.ts +666 -0
  373. package/src/core/{RoutingEngine.ts → FlowRouter.ts} +385 -365
  374. package/src/core/PersistenceManager.ts +8 -8
  375. package/src/core/PromptComposer.ts +209 -140
  376. package/src/core/PromptSectionCache.ts +1 -1
  377. package/src/core/ResponseEngine.ts +61 -46
  378. package/src/core/ResponseModal.ts +1458 -1241
  379. package/src/core/ResponsePipeline.ts +675 -173
  380. package/src/core/SignalEvaluator.ts +420 -0
  381. package/src/core/SignalProcessor.ts +723 -0
  382. package/src/core/Step.ts +279 -176
  383. package/src/core/StreamingToolExecutor.ts +4 -4
  384. package/src/core/ToolManager.ts +200 -97
  385. package/src/core/createAgent.ts +40 -0
  386. package/src/core/flow-namespace.ts +219 -0
  387. package/src/index.ts +42 -36
  388. package/src/providers/GeminiProvider.ts +17 -15
  389. package/src/types/agent.ts +182 -53
  390. package/src/types/ai.ts +3 -3
  391. package/src/types/errors.ts +18 -0
  392. package/src/types/flow.ts +590 -0
  393. package/src/types/index.ts +43 -16
  394. package/src/types/persistence.ts +12 -8
  395. package/src/types/routing.ts +1 -1
  396. package/src/types/session.ts +26 -23
  397. package/src/types/signals.ts +321 -0
  398. package/src/types/template.ts +3 -11
  399. package/src/types/tool.ts +50 -42
  400. package/src/utils/condition.ts +13 -4
  401. package/src/utils/id.ts +27 -9
  402. package/src/utils/index.ts +6 -2
  403. package/src/utils/session.ts +238 -42
  404. package/dist/cjs/core/BatchExecutor.d.ts +0 -359
  405. package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
  406. package/dist/cjs/core/BatchExecutor.js +0 -861
  407. package/dist/cjs/core/BatchExecutor.js.map +0 -1
  408. package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
  409. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
  410. package/dist/cjs/core/BatchPromptBuilder.js +0 -223
  411. package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
  412. package/dist/cjs/core/Route.d.ts +0 -180
  413. package/dist/cjs/core/Route.d.ts.map +0 -1
  414. package/dist/cjs/core/Route.js +0 -542
  415. package/dist/cjs/core/Route.js.map +0 -1
  416. package/dist/cjs/core/RoutingEngine.d.ts +0 -185
  417. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  418. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  419. package/dist/cjs/types/route.d.ts +0 -336
  420. package/dist/cjs/types/route.d.ts.map +0 -1
  421. package/dist/cjs/types/route.js.map +0 -1
  422. package/dist/core/BatchExecutor.d.ts +0 -359
  423. package/dist/core/BatchExecutor.d.ts.map +0 -1
  424. package/dist/core/BatchExecutor.js +0 -856
  425. package/dist/core/BatchExecutor.js.map +0 -1
  426. package/dist/core/BatchPromptBuilder.d.ts +0 -89
  427. package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
  428. package/dist/core/BatchPromptBuilder.js +0 -219
  429. package/dist/core/BatchPromptBuilder.js.map +0 -1
  430. package/dist/core/Route.d.ts +0 -180
  431. package/dist/core/Route.d.ts.map +0 -1
  432. package/dist/core/Route.js +0 -538
  433. package/dist/core/Route.js.map +0 -1
  434. package/dist/core/RoutingEngine.d.ts +0 -185
  435. package/dist/core/RoutingEngine.d.ts.map +0 -1
  436. package/dist/core/RoutingEngine.js.map +0 -1
  437. package/dist/types/route.d.ts +0 -336
  438. package/dist/types/route.d.ts.map +0 -1
  439. package/dist/types/route.js +0 -5
  440. package/dist/types/route.js.map +0 -1
  441. package/docs/CONTRIBUTING.md +0 -521
  442. package/docs/api/README.md +0 -3299
  443. package/docs/api/overview.md +0 -1410
  444. package/docs/architecture/data-extraction-flow.md +0 -360
  445. package/docs/architecture/multi-step-execution.md +0 -277
  446. package/docs/core/agent/README.md +0 -938
  447. package/docs/core/agent/context-management.md +0 -796
  448. package/docs/core/agent/rules-and-prohibitions.md +0 -113
  449. package/docs/core/agent/session-management.md +0 -693
  450. package/docs/core/ai-integration/prompt-composition.md +0 -355
  451. package/docs/core/ai-integration/providers.md +0 -515
  452. package/docs/core/ai-integration/response-processing.md +0 -433
  453. package/docs/core/conversation-flows/data-collection.md +0 -772
  454. package/docs/core/conversation-flows/route-dsl.md +0 -509
  455. package/docs/core/conversation-flows/routes.md +0 -249
  456. package/docs/core/conversation-flows/step-transitions.md +0 -731
  457. package/docs/core/conversation-flows/steps.md +0 -268
  458. package/docs/core/error-handling.md +0 -830
  459. package/docs/core/persistence/adapters.md +0 -255
  460. package/docs/core/persistence/session-storage.md +0 -656
  461. package/docs/core/routing/intelligent-routing.md +0 -470
  462. package/docs/core/tools/enhanced-tool.md +0 -186
  463. package/docs/core/tools/streaming-execution.md +0 -161
  464. package/docs/core/tools/tool-definition.md +0 -970
  465. package/docs/core/tools/tool-scoping.md +0 -819
  466. package/docs/guides/advanced-patterns/publishing.md +0 -186
  467. package/docs/guides/context-compaction.md +0 -96
  468. package/docs/guides/error-handling-patterns.md +0 -578
  469. package/docs/guides/getting-started/README.md +0 -795
  470. package/docs/guides/migration/README.md +0 -101
  471. package/docs/guides/migration/flexible-routing-conditions.md +0 -375
  472. package/docs/guides/migration/multi-step-execution.md +0 -393
  473. package/docs/guides/migration/response-modal-refactor.md +0 -518
  474. package/docs/guides/prompt-optimization.md +0 -164
  475. package/examples/advanced-patterns/context-compaction.ts +0 -223
  476. package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
  477. package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
  478. package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
  479. package/examples/advanced-patterns/streaming-responses.ts +0 -656
  480. package/examples/ai-providers/anthropic-integration.ts +0 -388
  481. package/examples/ai-providers/openai-integration.ts +0 -228
  482. package/examples/condition-patterns/function-only-conditions.ts +0 -365
  483. package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
  484. package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
  485. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  486. package/examples/condition-patterns/string-only-conditions.ts +0 -296
  487. package/examples/conversation-flows/completion-transitions.ts +0 -318
  488. package/examples/core-concepts/basic-agent.ts +0 -503
  489. package/examples/core-concepts/modern-streaming-api.ts +0 -309
  490. package/examples/core-concepts/schema-driven-extraction.ts +0 -332
  491. package/examples/core-concepts/session-management.ts +0 -494
  492. package/examples/integrations/database-integration.ts +0 -631
  493. package/examples/integrations/healthcare-integration.ts +0 -595
  494. package/examples/integrations/search-integration.ts +0 -530
  495. package/examples/integrations/server-session-management.ts +0 -307
  496. package/examples/persistence/custom-adapter.ts +0 -526
  497. package/examples/persistence/database-persistence.ts +0 -583
  498. package/examples/persistence/memory-sessions.ts +0 -495
  499. package/examples/persistence/prisma-schema.example.prisma +0 -74
  500. package/examples/persistence/redis-persistence.ts +0 -488
  501. package/examples/tools/basic-tools.ts +0 -765
  502. package/examples/tools/data-enrichment-tools.ts +0 -593
  503. package/examples/tools/enhanced-tool-metadata.ts +0 -268
  504. package/examples/tools/streaming-tool-execution.ts +0 -283
  505. package/src/core/BatchExecutor.ts +0 -1187
  506. package/src/core/BatchPromptBuilder.ts +0 -299
  507. package/src/core/Route.ts +0 -678
  508. 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 };