@falai/agent 1.2.8 → 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 (499) 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/types/agent.d.ts +183 -54
  126. package/dist/cjs/types/agent.d.ts.map +1 -1
  127. package/dist/cjs/types/agent.js +0 -6
  128. package/dist/cjs/types/agent.js.map +1 -1
  129. package/dist/cjs/types/ai.d.ts +3 -3
  130. package/dist/cjs/types/ai.d.ts.map +1 -1
  131. package/dist/cjs/types/errors.d.ts +15 -0
  132. package/dist/cjs/types/errors.d.ts.map +1 -0
  133. package/dist/cjs/types/errors.js +22 -0
  134. package/dist/cjs/types/errors.js.map +1 -0
  135. package/dist/cjs/types/flow.d.ts +513 -0
  136. package/dist/cjs/types/flow.d.ts.map +1 -0
  137. package/dist/cjs/types/{route.js → flow.js} +2 -2
  138. package/dist/cjs/types/flow.js.map +1 -0
  139. package/dist/cjs/types/index.d.ts +7 -6
  140. package/dist/cjs/types/index.d.ts.map +1 -1
  141. package/dist/cjs/types/index.js +6 -2
  142. package/dist/cjs/types/index.js.map +1 -1
  143. package/dist/cjs/types/persistence.d.ts +11 -7
  144. package/dist/cjs/types/persistence.d.ts.map +1 -1
  145. package/dist/cjs/types/routing.d.ts +1 -1
  146. package/dist/cjs/types/routing.d.ts.map +1 -1
  147. package/dist/cjs/types/session.d.ts +24 -23
  148. package/dist/cjs/types/session.d.ts.map +1 -1
  149. package/dist/cjs/types/signals.d.ts +248 -0
  150. package/dist/cjs/types/signals.d.ts.map +1 -0
  151. package/dist/cjs/types/signals.js +11 -0
  152. package/dist/cjs/types/signals.js.map +1 -0
  153. package/dist/cjs/types/template.d.ts +2 -8
  154. package/dist/cjs/types/template.d.ts.map +1 -1
  155. package/dist/cjs/types/tool.d.ts +36 -29
  156. package/dist/cjs/types/tool.d.ts.map +1 -1
  157. package/dist/cjs/types/tool.js +1 -1
  158. package/dist/cjs/types/tool.js.map +1 -1
  159. package/dist/cjs/utils/condition.d.ts +7 -1
  160. package/dist/cjs/utils/condition.d.ts.map +1 -1
  161. package/dist/cjs/utils/condition.js.map +1 -1
  162. package/dist/cjs/utils/id.d.ts +13 -5
  163. package/dist/cjs/utils/id.d.ts.map +1 -1
  164. package/dist/cjs/utils/id.js +24 -10
  165. package/dist/cjs/utils/id.js.map +1 -1
  166. package/dist/cjs/utils/index.d.ts +2 -2
  167. package/dist/cjs/utils/index.d.ts.map +1 -1
  168. package/dist/cjs/utils/index.js +7 -3
  169. package/dist/cjs/utils/index.js.map +1 -1
  170. package/dist/cjs/utils/session.d.ts +44 -5
  171. package/dist/cjs/utils/session.d.ts.map +1 -1
  172. package/dist/cjs/utils/session.js +197 -38
  173. package/dist/cjs/utils/session.js.map +1 -1
  174. package/dist/constants/index.d.ts +0 -9
  175. package/dist/constants/index.d.ts.map +1 -1
  176. package/dist/constants/index.js +3 -9
  177. package/dist/constants/index.js.map +1 -1
  178. package/dist/core/Agent.d.ts +119 -153
  179. package/dist/core/Agent.d.ts.map +1 -1
  180. package/dist/core/Agent.js +472 -325
  181. package/dist/core/Agent.js.map +1 -1
  182. package/dist/core/AutoChainExecutor.d.ts +107 -0
  183. package/dist/core/AutoChainExecutor.d.ts.map +1 -0
  184. package/dist/core/AutoChainExecutor.js +293 -0
  185. package/dist/core/AutoChainExecutor.js.map +1 -0
  186. package/dist/core/BranchEvaluator.d.ts +54 -0
  187. package/dist/core/BranchEvaluator.d.ts.map +1 -0
  188. package/dist/core/BranchEvaluator.js +126 -0
  189. package/dist/core/BranchEvaluator.js.map +1 -0
  190. package/dist/core/DirectiveBus.d.ts +88 -0
  191. package/dist/core/DirectiveBus.d.ts.map +1 -0
  192. package/dist/core/DirectiveBus.js +192 -0
  193. package/dist/core/DirectiveBus.js.map +1 -0
  194. package/dist/core/DirectiveChainTracker.d.ts +49 -0
  195. package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
  196. package/dist/core/DirectiveChainTracker.js +117 -0
  197. package/dist/core/DirectiveChainTracker.js.map +1 -0
  198. package/dist/core/Flow.d.ts +186 -0
  199. package/dist/core/Flow.d.ts.map +1 -0
  200. package/dist/core/Flow.js +546 -0
  201. package/dist/core/Flow.js.map +1 -0
  202. package/dist/core/FlowRouter.d.ts +182 -0
  203. package/dist/core/FlowRouter.d.ts.map +1 -0
  204. package/dist/core/{RoutingEngine.js → FlowRouter.js} +322 -305
  205. package/dist/core/FlowRouter.js.map +1 -0
  206. package/dist/core/PersistenceManager.d.ts +2 -2
  207. package/dist/core/PersistenceManager.d.ts.map +1 -1
  208. package/dist/core/PersistenceManager.js +7 -7
  209. package/dist/core/PersistenceManager.js.map +1 -1
  210. package/dist/core/PromptComposer.d.ts +21 -8
  211. package/dist/core/PromptComposer.d.ts.map +1 -1
  212. package/dist/core/PromptComposer.js +183 -106
  213. package/dist/core/PromptComposer.js.map +1 -1
  214. package/dist/core/PromptSectionCache.d.ts +1 -1
  215. package/dist/core/PromptSectionCache.js +1 -1
  216. package/dist/core/ResponseEngine.d.ts +18 -8
  217. package/dist/core/ResponseEngine.d.ts.map +1 -1
  218. package/dist/core/ResponseEngine.js +38 -36
  219. package/dist/core/ResponseEngine.js.map +1 -1
  220. package/dist/core/ResponseModal.d.ts +73 -56
  221. package/dist/core/ResponseModal.d.ts.map +1 -1
  222. package/dist/core/ResponseModal.js +1193 -1016
  223. package/dist/core/ResponseModal.js.map +1 -1
  224. package/dist/core/ResponsePipeline.d.ts +124 -26
  225. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  226. package/dist/core/ResponsePipeline.js +509 -137
  227. package/dist/core/ResponsePipeline.js.map +1 -1
  228. package/dist/core/SignalEvaluator.d.ts +86 -0
  229. package/dist/core/SignalEvaluator.d.ts.map +1 -0
  230. package/dist/core/SignalEvaluator.js +326 -0
  231. package/dist/core/SignalEvaluator.js.map +1 -0
  232. package/dist/core/SignalProcessor.d.ts +152 -0
  233. package/dist/core/SignalProcessor.d.ts.map +1 -0
  234. package/dist/core/SignalProcessor.js +555 -0
  235. package/dist/core/SignalProcessor.js.map +1 -0
  236. package/dist/core/Step.d.ts +43 -32
  237. package/dist/core/Step.d.ts.map +1 -1
  238. package/dist/core/Step.js +220 -126
  239. package/dist/core/Step.js.map +1 -1
  240. package/dist/core/StreamingToolExecutor.d.ts +2 -2
  241. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  242. package/dist/core/StreamingToolExecutor.js.map +1 -1
  243. package/dist/core/ToolManager.d.ts +44 -13
  244. package/dist/core/ToolManager.d.ts.map +1 -1
  245. package/dist/core/ToolManager.js +174 -91
  246. package/dist/core/ToolManager.js.map +1 -1
  247. package/dist/core/createAgent.d.ts +35 -0
  248. package/dist/core/createAgent.d.ts.map +1 -0
  249. package/dist/core/createAgent.js +36 -0
  250. package/dist/core/createAgent.js.map +1 -0
  251. package/dist/core/flow-namespace.d.ts +49 -0
  252. package/dist/core/flow-namespace.d.ts.map +1 -0
  253. package/dist/core/flow-namespace.js +168 -0
  254. package/dist/core/flow-namespace.js.map +1 -0
  255. package/dist/index.d.ts +11 -14
  256. package/dist/index.d.ts.map +1 -1
  257. package/dist/index.js +9 -12
  258. package/dist/index.js.map +1 -1
  259. package/dist/types/agent.d.ts +183 -54
  260. package/dist/types/agent.d.ts.map +1 -1
  261. package/dist/types/agent.js +0 -6
  262. package/dist/types/agent.js.map +1 -1
  263. package/dist/types/ai.d.ts +3 -3
  264. package/dist/types/ai.d.ts.map +1 -1
  265. package/dist/types/errors.d.ts +15 -0
  266. package/dist/types/errors.d.ts.map +1 -0
  267. package/dist/types/errors.js +18 -0
  268. package/dist/types/errors.js.map +1 -0
  269. package/dist/types/flow.d.ts +513 -0
  270. package/dist/types/flow.d.ts.map +1 -0
  271. package/dist/types/flow.js +5 -0
  272. package/dist/types/flow.js.map +1 -0
  273. package/dist/types/index.d.ts +7 -6
  274. package/dist/types/index.d.ts.map +1 -1
  275. package/dist/types/index.js +4 -1
  276. package/dist/types/index.js.map +1 -1
  277. package/dist/types/persistence.d.ts +11 -7
  278. package/dist/types/persistence.d.ts.map +1 -1
  279. package/dist/types/routing.d.ts +1 -1
  280. package/dist/types/routing.d.ts.map +1 -1
  281. package/dist/types/session.d.ts +24 -23
  282. package/dist/types/session.d.ts.map +1 -1
  283. package/dist/types/signals.d.ts +248 -0
  284. package/dist/types/signals.d.ts.map +1 -0
  285. package/dist/types/signals.js +10 -0
  286. package/dist/types/signals.js.map +1 -0
  287. package/dist/types/template.d.ts +2 -8
  288. package/dist/types/template.d.ts.map +1 -1
  289. package/dist/types/tool.d.ts +36 -29
  290. package/dist/types/tool.d.ts.map +1 -1
  291. package/dist/types/tool.js +1 -1
  292. package/dist/types/tool.js.map +1 -1
  293. package/dist/utils/condition.d.ts +7 -1
  294. package/dist/utils/condition.d.ts.map +1 -1
  295. package/dist/utils/condition.js.map +1 -1
  296. package/dist/utils/id.d.ts +13 -5
  297. package/dist/utils/id.d.ts.map +1 -1
  298. package/dist/utils/id.js +22 -9
  299. package/dist/utils/id.js.map +1 -1
  300. package/dist/utils/index.d.ts +2 -2
  301. package/dist/utils/index.d.ts.map +1 -1
  302. package/dist/utils/index.js +2 -2
  303. package/dist/utils/index.js.map +1 -1
  304. package/dist/utils/session.d.ts +44 -5
  305. package/dist/utils/session.d.ts.map +1 -1
  306. package/dist/utils/session.js +193 -37
  307. package/dist/utils/session.js.map +1 -1
  308. package/docs/README.md +15 -202
  309. package/docs/concepts/architecture.md +281 -0
  310. package/docs/concepts/directives.md +400 -0
  311. package/docs/concepts/pipeline.md +399 -0
  312. package/docs/guides/branching.md +263 -0
  313. package/docs/guides/compaction.md +163 -0
  314. package/docs/guides/conditions.md +167 -0
  315. package/docs/guides/error-handling.md +176 -0
  316. package/docs/guides/flow-control.md +409 -0
  317. package/docs/guides/instructions.md +210 -0
  318. package/docs/guides/persistence.md +182 -0
  319. package/docs/guides/streaming.md +137 -0
  320. package/docs/migration/README.md +15 -0
  321. package/docs/migration/route-to-flow.md +560 -0
  322. package/docs/migration/v1-to-v2.md +909 -0
  323. package/docs/reference/adapters.md +481 -0
  324. package/docs/reference/branches.md +241 -0
  325. package/docs/reference/create-agent.md +186 -0
  326. package/docs/reference/directive.md +243 -0
  327. package/docs/reference/errors.md +122 -0
  328. package/docs/reference/flow.md +238 -0
  329. package/docs/reference/instruction.md +177 -0
  330. package/docs/reference/pre-directive.md +131 -0
  331. package/docs/reference/providers.md +227 -0
  332. package/docs/reference/signals.md +356 -0
  333. package/docs/reference/step.md +339 -0
  334. package/docs/reference/tool.md +269 -0
  335. package/docs/start/01-install.md +81 -0
  336. package/docs/start/02-first-agent.md +196 -0
  337. package/docs/start/03-collect-data.md +222 -0
  338. package/docs/start/04-add-tools.md +276 -0
  339. package/docs/start/05-go-to-production.md +216 -0
  340. package/examples/01-quickstart.ts +20 -0
  341. package/examples/02-data-extraction.ts +90 -0
  342. package/examples/03-tools.ts +136 -0
  343. package/examples/04-instructions.ts +100 -0
  344. package/examples/05-branching.ts +140 -0
  345. package/examples/06-flow-control.ts +103 -0
  346. package/examples/07-streaming.ts +69 -0
  347. package/examples/08-persistence.ts +98 -0
  348. package/examples/09-signals.ts +144 -0
  349. package/examples/tsconfig.json +30 -0
  350. package/package.json +2 -1
  351. package/src/adapters/MemoryAdapter.ts +3 -3
  352. package/src/adapters/MongoAdapter.ts +3 -3
  353. package/src/adapters/OpenSearchAdapter.ts +10 -8
  354. package/src/adapters/PostgreSQLAdapter.ts +26 -10
  355. package/src/adapters/PrismaAdapter.ts +6 -6
  356. package/src/adapters/RedisAdapter.ts +3 -3
  357. package/src/adapters/SQLiteAdapter.ts +31 -12
  358. package/src/constants/index.ts +2 -10
  359. package/src/core/Agent.ts +585 -374
  360. package/src/core/AutoChainExecutor.ts +440 -0
  361. package/src/core/BranchEvaluator.ts +167 -0
  362. package/src/core/DirectiveBus.ts +248 -0
  363. package/src/core/DirectiveChainTracker.ts +144 -0
  364. package/src/core/Flow.ts +666 -0
  365. package/src/core/{RoutingEngine.ts → FlowRouter.ts} +385 -365
  366. package/src/core/PersistenceManager.ts +8 -8
  367. package/src/core/PromptComposer.ts +209 -140
  368. package/src/core/PromptSectionCache.ts +1 -1
  369. package/src/core/ResponseEngine.ts +61 -46
  370. package/src/core/ResponseModal.ts +1453 -1240
  371. package/src/core/ResponsePipeline.ts +655 -175
  372. package/src/core/SignalEvaluator.ts +420 -0
  373. package/src/core/SignalProcessor.ts +723 -0
  374. package/src/core/Step.ts +279 -176
  375. package/src/core/StreamingToolExecutor.ts +4 -4
  376. package/src/core/ToolManager.ts +200 -97
  377. package/src/core/createAgent.ts +40 -0
  378. package/src/core/flow-namespace.ts +219 -0
  379. package/src/index.ts +42 -36
  380. package/src/types/agent.ts +182 -53
  381. package/src/types/ai.ts +3 -3
  382. package/src/types/errors.ts +18 -0
  383. package/src/types/flow.ts +590 -0
  384. package/src/types/index.ts +43 -16
  385. package/src/types/persistence.ts +12 -8
  386. package/src/types/routing.ts +1 -1
  387. package/src/types/session.ts +26 -23
  388. package/src/types/signals.ts +321 -0
  389. package/src/types/template.ts +3 -11
  390. package/src/types/tool.ts +50 -42
  391. package/src/utils/condition.ts +13 -4
  392. package/src/utils/id.ts +27 -9
  393. package/src/utils/index.ts +6 -2
  394. package/src/utils/session.ts +238 -42
  395. package/dist/cjs/core/BatchExecutor.d.ts +0 -359
  396. package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
  397. package/dist/cjs/core/BatchExecutor.js +0 -861
  398. package/dist/cjs/core/BatchExecutor.js.map +0 -1
  399. package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
  400. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
  401. package/dist/cjs/core/BatchPromptBuilder.js +0 -223
  402. package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
  403. package/dist/cjs/core/Route.d.ts +0 -180
  404. package/dist/cjs/core/Route.d.ts.map +0 -1
  405. package/dist/cjs/core/Route.js +0 -542
  406. package/dist/cjs/core/Route.js.map +0 -1
  407. package/dist/cjs/core/RoutingEngine.d.ts +0 -185
  408. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  409. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  410. package/dist/cjs/types/route.d.ts +0 -336
  411. package/dist/cjs/types/route.d.ts.map +0 -1
  412. package/dist/cjs/types/route.js.map +0 -1
  413. package/dist/core/BatchExecutor.d.ts +0 -359
  414. package/dist/core/BatchExecutor.d.ts.map +0 -1
  415. package/dist/core/BatchExecutor.js +0 -856
  416. package/dist/core/BatchExecutor.js.map +0 -1
  417. package/dist/core/BatchPromptBuilder.d.ts +0 -89
  418. package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
  419. package/dist/core/BatchPromptBuilder.js +0 -219
  420. package/dist/core/BatchPromptBuilder.js.map +0 -1
  421. package/dist/core/Route.d.ts +0 -180
  422. package/dist/core/Route.d.ts.map +0 -1
  423. package/dist/core/Route.js +0 -538
  424. package/dist/core/Route.js.map +0 -1
  425. package/dist/core/RoutingEngine.d.ts +0 -185
  426. package/dist/core/RoutingEngine.d.ts.map +0 -1
  427. package/dist/core/RoutingEngine.js.map +0 -1
  428. package/dist/types/route.d.ts +0 -336
  429. package/dist/types/route.d.ts.map +0 -1
  430. package/dist/types/route.js +0 -5
  431. package/dist/types/route.js.map +0 -1
  432. package/docs/CONTRIBUTING.md +0 -521
  433. package/docs/api/README.md +0 -3299
  434. package/docs/api/overview.md +0 -1410
  435. package/docs/architecture/data-extraction-flow.md +0 -360
  436. package/docs/architecture/multi-step-execution.md +0 -277
  437. package/docs/core/agent/README.md +0 -938
  438. package/docs/core/agent/context-management.md +0 -796
  439. package/docs/core/agent/rules-and-prohibitions.md +0 -113
  440. package/docs/core/agent/session-management.md +0 -693
  441. package/docs/core/ai-integration/prompt-composition.md +0 -355
  442. package/docs/core/ai-integration/providers.md +0 -515
  443. package/docs/core/ai-integration/response-processing.md +0 -433
  444. package/docs/core/conversation-flows/data-collection.md +0 -772
  445. package/docs/core/conversation-flows/route-dsl.md +0 -509
  446. package/docs/core/conversation-flows/routes.md +0 -249
  447. package/docs/core/conversation-flows/step-transitions.md +0 -731
  448. package/docs/core/conversation-flows/steps.md +0 -268
  449. package/docs/core/error-handling.md +0 -830
  450. package/docs/core/persistence/adapters.md +0 -255
  451. package/docs/core/persistence/session-storage.md +0 -656
  452. package/docs/core/routing/intelligent-routing.md +0 -470
  453. package/docs/core/tools/enhanced-tool.md +0 -186
  454. package/docs/core/tools/streaming-execution.md +0 -161
  455. package/docs/core/tools/tool-definition.md +0 -970
  456. package/docs/core/tools/tool-scoping.md +0 -819
  457. package/docs/guides/advanced-patterns/publishing.md +0 -186
  458. package/docs/guides/context-compaction.md +0 -96
  459. package/docs/guides/error-handling-patterns.md +0 -578
  460. package/docs/guides/getting-started/README.md +0 -795
  461. package/docs/guides/migration/README.md +0 -101
  462. package/docs/guides/migration/flexible-routing-conditions.md +0 -375
  463. package/docs/guides/migration/multi-step-execution.md +0 -393
  464. package/docs/guides/migration/response-modal-refactor.md +0 -518
  465. package/docs/guides/prompt-optimization.md +0 -164
  466. package/examples/advanced-patterns/context-compaction.ts +0 -223
  467. package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
  468. package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
  469. package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
  470. package/examples/advanced-patterns/streaming-responses.ts +0 -656
  471. package/examples/ai-providers/anthropic-integration.ts +0 -388
  472. package/examples/ai-providers/openai-integration.ts +0 -228
  473. package/examples/condition-patterns/function-only-conditions.ts +0 -365
  474. package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
  475. package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
  476. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  477. package/examples/condition-patterns/string-only-conditions.ts +0 -296
  478. package/examples/conversation-flows/completion-transitions.ts +0 -318
  479. package/examples/core-concepts/basic-agent.ts +0 -503
  480. package/examples/core-concepts/modern-streaming-api.ts +0 -309
  481. package/examples/core-concepts/schema-driven-extraction.ts +0 -332
  482. package/examples/core-concepts/session-management.ts +0 -494
  483. package/examples/integrations/database-integration.ts +0 -631
  484. package/examples/integrations/healthcare-integration.ts +0 -595
  485. package/examples/integrations/search-integration.ts +0 -530
  486. package/examples/integrations/server-session-management.ts +0 -307
  487. package/examples/persistence/custom-adapter.ts +0 -526
  488. package/examples/persistence/database-persistence.ts +0 -583
  489. package/examples/persistence/memory-sessions.ts +0 -495
  490. package/examples/persistence/prisma-schema.example.prisma +0 -74
  491. package/examples/persistence/redis-persistence.ts +0 -488
  492. package/examples/tools/basic-tools.ts +0 -765
  493. package/examples/tools/data-enrichment-tools.ts +0 -593
  494. package/examples/tools/enhanced-tool-metadata.ts +0 -268
  495. package/examples/tools/streaming-tool-execution.ts +0 -283
  496. package/src/core/BatchExecutor.ts +0 -1187
  497. package/src/core/BatchPromptBuilder.ts +0 -299
  498. package/src/core/Route.ts +0 -678
  499. package/src/types/route.ts +0 -392
@@ -1,509 +0,0 @@
1
- # Route DSL (Domain Specific Language)
2
-
3
- The Route DSL provides a fluent, declarative API for designing complex conversation flows. Unlike traditional chatbot frameworks that use rigid state machines, the Route DSL enables natural, branching conversation patterns with intelligent routing.
4
-
5
- ## Overview
6
-
7
- Routes are the building blocks of conversational AI in @falai/agent. Each route represents a journey with:
8
-
9
- - **Structured Steps**: Sequential or branching conversation states
10
- - **Data Collection**: Schema-driven information gathering
11
- - **Conditional Logic**: Smart skipping and branching based on context
12
- - **Lifecycle Hooks**: Custom behavior at route and step levels
13
-
14
- ## Basic Route Creation
15
-
16
- ### Simple Linear Route
17
-
18
- ```typescript
19
- const greetingRoute = agent
20
- .createRoute({
21
- title: "Greeting Flow",
22
- description: "Simple greeting and introduction",
23
- initialStep: {
24
- prompt: "Hello! What's your name?",
25
- collect: ["name"],
26
- },
27
- })
28
- .nextStep({
29
- prompt: "Nice to meet you, {{name}}! How can I help you today?",
30
- requires: ["name"], // Must have name before proceeding
31
- });
32
- ```
33
-
34
- ### Route with Agent-Level Schema
35
-
36
- ```typescript
37
- interface UserInfo {
38
- name: string;
39
- email: string;
40
- interests: string[];
41
- preferences?: object;
42
- profileComplete?: boolean;
43
- }
44
-
45
- // Agent defines comprehensive schema
46
- const agent = new Agent<{}, UserInfo>({
47
- name: "Profile Assistant",
48
- provider: openaiProvider,
49
- schema: {
50
- type: "object",
51
- properties: {
52
- name: { type: "string" },
53
- email: { type: "string", format: "email" },
54
- interests: {
55
- type: "array",
56
- items: { type: "string" },
57
- },
58
- preferences: { type: "object" },
59
- profileComplete: { type: "boolean" }
60
- },
61
- required: ["name", "email"],
62
- }
63
- });
64
-
65
- // Route specifies required fields instead of schema
66
- const userProfileRoute = agent
67
- .createRoute({
68
- title: "User Profile Collection",
69
- description: "Collect basic user information",
70
- requiredFields: ["name", "email", "interests"], // Required for completion
71
- optionalFields: ["preferences"], // Nice to have
72
- initialStep: {
73
- prompt: "Let's create your profile. What's your name?",
74
- collect: ["name"],
75
- },
76
- })
77
- .nextStep({
78
- prompt: "Great, {{name}}! What's your email address?",
79
- collect: ["email"],
80
- requires: ["name"], // Prerequisites from agent data
81
- })
82
- .nextStep({
83
- prompt: "What are your interests? (comma-separated)",
84
- collect: ["interests"],
85
- requires: ["name", "email"], // Prerequisites from agent data
86
- });
87
- ```
88
-
89
- ## Step Configuration
90
-
91
- ### Step Options
92
-
93
- Each step supports comprehensive configuration:
94
-
95
- ```typescript
96
- interface StepOptions<TContext, TData> {
97
- id?: string; // Optional custom ID
98
- description?: string; // Human-readable description
99
- prompt?: Template<TContext, TData>; // AI prompt template
100
- collect?: string[]; // Fields to extract from AI response
101
- skipIf?: (data: Partial<TData>) => boolean; // Skip condition
102
- requires?: string[]; // Required data fields
103
- when?: Template<TContext, TData>; // Conditional execution
104
- prepare?: (context: TContext, data?: Partial<TData>) => void | Promise<void>;
105
- finalize?: (context: TContext, data?: Partial<TData>) => void | Promise<void>;
106
- tools?: (string | Tool<TContext, unknown[], unknown, TData>)[];
107
- }
108
- ```
109
-
110
- ### Data Collection Steps
111
-
112
- ```typescript
113
- const dataCollectionStep = {
114
- prompt: "What's your preferred contact method?",
115
- collect: ["contactMethod"], // Maps to agent schema field
116
- requires: ["name", "email"], // Must have these fields from agent data
117
- skipIf: (data) => data.contactMethod !== undefined, // Skip if already collected by any route
118
- };
119
- ```
120
-
121
- ### Conditional Steps
122
-
123
- ```typescript
124
- const conditionalStep = {
125
- prompt: "Would you like to receive our newsletter?",
126
- collect: ["newsletterOptIn"],
127
- when: "if user has provided email address", // AI-evaluated condition
128
- skipIf: (data) => data.email === undefined, // Skip if no email
129
- };
130
- ```
131
-
132
- ### Lifecycle Hooks
133
-
134
- ```typescript
135
- const stepWithHooks = {
136
- prompt: "Processing your request...",
137
- prepare: async (context, data) => {
138
- // Run before AI responds
139
- console.log("Preparing step with data:", data);
140
- // Could fetch external data, validate state, etc.
141
- },
142
- finalize: async (context, data) => {
143
- // Run after AI responds and data is collected
144
- console.log("Step completed with data:", data);
145
- // Could save to database, trigger notifications, etc.
146
- },
147
- };
148
- ```
149
-
150
- ## Branching and Non-Linear Flows
151
-
152
- ### Basic Branching
153
-
154
- ```typescript
155
- const branchingRoute = agent
156
- .createRoute({
157
- title: "Support Flow",
158
- initialStep: {
159
- prompt: "How can I help you today?",
160
- collect: ["intent"],
161
- },
162
- })
163
- .branch([
164
- {
165
- name: "technical",
166
- step: {
167
- prompt:
168
- "I understand you're having a technical issue. Can you describe the problem?",
169
- collect: ["problem"],
170
- requires: ["intent"],
171
- when: "if intent indicates technical support",
172
- },
173
- },
174
- {
175
- name: "billing",
176
- step: {
177
- prompt: "For billing questions, I'll need your account information...",
178
- collect: ["accountInfo"],
179
- requires: ["intent"],
180
- when: "if intent indicates billing or payment",
181
- },
182
- },
183
- {
184
- name: "general",
185
- step: {
186
- prompt: "I'd be happy to help with general questions...",
187
- collect: ["question"],
188
- requires: ["intent"],
189
- },
190
- },
191
- ]);
192
- ```
193
-
194
- ### Accessing Branch Results
195
-
196
- ```typescript
197
- const routeWithBranches = agent
198
- .createRoute({
199
- title: "Complex Flow",
200
- })
201
- .branch([
202
- {
203
- name: "optionA",
204
- step: { prompt: "Choose option A", collect: ["choiceA"] },
205
- },
206
- {
207
- name: "optionB",
208
- step: { prompt: "Choose option B", collect: ["choiceB"] },
209
- },
210
- ]);
211
-
212
- // Access specific branches for further chaining
213
- const optionA = routeWithBranches.branches.optionA.nextStep({
214
- prompt: "You chose A. What's next?",
215
- requires: ["choiceA"],
216
- });
217
-
218
- const optionB = routeWithBranches.branches.optionB.nextStep({
219
- prompt: "You chose B. What's next?",
220
- requires: ["choiceB"],
221
- });
222
- ```
223
-
224
- ## Route Completion and Transitions
225
-
226
- ### Basic Route Completion
227
-
228
- ```typescript
229
- const simpleRoute = agent
230
- .createRoute({
231
- title: "Simple Task",
232
- initialStep: { prompt: "What task should I help with?", collect: ["task"] },
233
- })
234
- .nextStep({
235
- prompt: "I'll help you with: {{task}}",
236
- requires: ["task"],
237
- })
238
- .endRoute({
239
- prompt: "Task completed! Is there anything else I can help with?",
240
- });
241
- ```
242
-
243
- ### Automatic Transitions
244
-
245
- ```typescript
246
- const onboardingRoute = agent
247
- .createRoute({
248
- title: "User Onboarding",
249
- initialStep: { prompt: "Welcome! What's your name?", collect: ["name"] },
250
- })
251
- .nextStep({
252
- prompt: "Thanks {{name}}! Let's set up your profile.",
253
- collect: ["profileComplete"],
254
- requires: ["name"],
255
- })
256
- .endRoute({
257
- prompt: "Onboarding complete! Ready to explore?",
258
- });
259
-
260
- // Automatically transition to another route when complete
261
- onboardingRoute.onComplete = "main-menu"; // Route ID or title
262
- ```
263
-
264
- ### Conditional Transitions
265
-
266
- ```typescript
267
- const purchaseRoute = agent
268
- .createRoute({
269
- title: "Purchase Flow",
270
- initialStep: {
271
- prompt: "What would you like to purchase?",
272
- collect: ["item"],
273
- },
274
- })
275
- .nextStep({
276
- prompt: "Great choice! Processing {{item}}...",
277
- collect: ["purchaseComplete"],
278
- requires: ["item"],
279
- })
280
- .endRoute();
281
-
282
- purchaseRoute.onComplete = {
283
- nextStep: "feedback-collection", // Transition target
284
- condition: "if purchase was successful", // AI-evaluated condition
285
- };
286
- ```
287
-
288
- ### Dynamic Transitions
289
-
290
- ```typescript
291
- purchaseRoute.onComplete = async (session, context) => {
292
- // Custom logic for determining next route
293
- if (session.data?.purchaseComplete) {
294
- return "feedback-collection";
295
- } else if (session.data?.error) {
296
- return "error-recovery";
297
- } else {
298
- return "support";
299
- }
300
- };
301
- ```
302
-
303
- ## Advanced Route Features
304
-
305
- ### Route-Level Configuration
306
-
307
- ```typescript
308
- const advancedRoute = agent.createRoute({
309
- title: "Advanced Interaction",
310
- description: "Complex multi-step conversation",
311
-
312
- // Route completion requirements
313
- requiredFields: ["customerName", "email", "issueType"],
314
- optionalFields: ["phone", "priority"],
315
-
316
- // Route-level identity overrides agent identity
317
- identity: "You are an expert consultant specializing in {{domain}}",
318
-
319
- // Behavioral guidelines for this route
320
- guidelines: [
321
- {
322
- condition: "if user is frustrated",
323
- action: "Be extra patient and offer specific solutions",
324
- },
325
- ],
326
-
327
- // Domain-specific terms
328
- terms: [
329
- {
330
- name: "ROI",
331
- description: "Return on Investment - the financial benefit gained",
332
- synonyms: ["return on investment", "profitability"],
333
- },
334
- ],
335
-
336
- // Initial data to pre-populate (maps to agent schema)
337
- initialData: {
338
- sessionId: generateId(),
339
- startTime: new Date().toISOString(),
340
- },
341
-
342
- // Route-level lifecycle hooks (work with agent data)
343
- hooks: {
344
- onDataUpdate: (newData, previousData) => {
345
- // Validate or enrich agent-level collected data
346
- if (newData.email && !isValidEmail(newData.email)) {
347
- throw new Error("Invalid email format");
348
- }
349
-
350
- // Auto-set priority based on issue type
351
- if (newData.issueType === 'billing' && !newData.priority) {
352
- newData.priority = 'high';
353
- }
354
-
355
- return newData;
356
- },
357
- onContextUpdate: (newContext, previousContext) => {
358
- // React to context changes
359
- console.log("Context updated:", { previousContext, newContext });
360
- },
361
- },
362
- });
363
- ```
364
-
365
- ### Sequential Step Building
366
-
367
- ```typescript
368
- const sequentialRoute = agent.createRoute({
369
- title: "Sequential Process",
370
- steps: [
371
- {
372
- description: "Step 1: Initial assessment",
373
- prompt: "Let's start with some basic information...",
374
- collect: ["basicInfo"],
375
- },
376
- {
377
- description: "Step 2: Detailed requirements",
378
- prompt: "Now I need more specific details...",
379
- collect: ["detailedInfo"],
380
- requires: ["basicInfo"],
381
- skipIf: (data) => data.skipDetailed, // Allow skipping if condition met
382
- },
383
- {
384
- description: "Step 3: Confirmation",
385
- prompt: "Please confirm the following details...",
386
- collect: ["confirmed"],
387
- requires: ["basicInfo"], // Note: detailedInfo not required due to skipIf
388
- },
389
- ],
390
- });
391
- ```
392
-
393
- ## Route Management
394
-
395
- ### Route Registration
396
-
397
- ```typescript
398
- const agent = new Agent({
399
- name: "Multi-Purpose Assistant",
400
- provider: openaiProvider,
401
- routes: [greetingRoute, supportRoute, purchaseRoute],
402
- });
403
-
404
- // Or add routes dynamically
405
- agent.createRoute(salesRoute);
406
- agent.createRoute(feedbackRoute);
407
- ```
408
-
409
- ### Route Access and Inspection
410
-
411
- ```typescript
412
- // Get all routes
413
- const allRoutes = agent.getRoutes();
414
-
415
- // Find specific route
416
- const supportRoute = agent.getRoutes().find((r) => r.id === "support");
417
-
418
- // Inspect route structure
419
- console.log(supportRoute.describe());
420
- ```
421
-
422
- ## Best Practices
423
-
424
- ### Route Design
425
-
426
- 1. **Single Responsibility**: Each route should serve one clear user intent
427
- 2. **Progressive Disclosure**: Collect information in logical order
428
- 3. **Fail Fast**: Use `requires` to prevent invalid state transitions
429
- 4. **Smart Skipping**: Use `skipIf` to avoid redundant questions
430
-
431
- ### Step Design
432
-
433
- 1. **Clear Prompts**: Make step purposes obvious to both AI and users
434
- 2. **Minimal Collection**: Only collect what's needed for the current step
435
- 3. **Validation**: Use lifecycle hooks for data validation
436
- 4. **Error Handling**: Plan for edge cases and invalid inputs
437
-
438
- ### Performance
439
-
440
- 1. **Limit Branching**: Too many branches increase AI evaluation complexity
441
- 2. **Optimize Conditions**: Use efficient `skipIf` and `requires` logic
442
- 3. **Cache Data**: Avoid redundant data fetching in lifecycle hooks
443
- 4. **Monitor Usage**: Track route completion rates and drop-off points
444
-
445
- ### Maintainability
446
-
447
- 1. **Descriptive Names**: Use clear route and step IDs
448
- 2. **Documentation**: Add descriptions to routes and complex steps
449
- 3. **Modular Design**: Break complex routes into smaller, focused routes
450
- 4. **Version Control**: Plan for route evolution and backward compatibility
451
-
452
- ## Debugging and Testing
453
-
454
- ### Route Inspection
455
-
456
- ```typescript
457
- // Get detailed route structure
458
- console.log(route.describe());
459
-
460
- // Inspect all steps
461
- const steps = route.getAllSteps();
462
- steps.forEach((step) => {
463
- console.log(`Step: ${step.id} - ${step.description}`);
464
- console.log(
465
- `Transitions:`,
466
- step.getTransitions().map((s) => s.id)
467
- );
468
- });
469
- ```
470
-
471
- ### Step Validation
472
-
473
- ```typescript
474
- // Test skipIf conditions
475
- const shouldSkip = step.shouldSkip(collectedData);
476
-
477
- // Test requirements
478
- const hasRequirements = step.hasRequires(collectedData);
479
- ```
480
-
481
- ### Route Testing
482
-
483
- ```typescript
484
- // Simulate route execution — classic signature
485
- const mockSession = createSession();
486
-
487
- // Or pre-populate with known data using partial state overload
488
- const prepopSession = createSession({
489
- data: { name: "Test User" },
490
- history: [{ role: "user", content: "Hello" }],
491
- });
492
-
493
- const mockHistory = [
494
- {
495
- role: "user",
496
- content: "Hello",
497
- },
498
- ];
499
-
500
- const response = await agent.respond({
501
- history: mockHistory,
502
- session: mockSession,
503
- });
504
-
505
- console.log("Route selected:", response.session.currentRoute?.title);
506
- console.log("Data collected:", response.session.data);
507
- ```
508
-
509
- The Route DSL transforms conversation design from rigid, hardcoded flows into flexible, intelligent systems that can adapt to user needs while maintaining structure and reliability.