@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,488 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */
2
- /**
3
- * Example: Using Redis for Persistence with Session Step
4
- *
5
- * Fast, in-memory persistence perfect for:
6
- * - High-throughput applications
7
- * - Session caching with collected data
8
- * - Real-time chat applications
9
- * - Temporary conversation storage
10
- */
11
-
12
- import {
13
- Agent,
14
- GeminiProvider,
15
- RedisAdapter,
16
- END_ROUTE,
17
- } from "../../src";
18
- // @ts-expect-error - Redis is not typed
19
- import Redis from "ioredis";
20
-
21
- /**
22
- * Setup Steps:
23
- *
24
- * 1. Install Redis and client:
25
- * brew install redis (macOS) or apt-get install redis (Linux)
26
- * npm install ioredis
27
- *
28
- * 2. Start Redis:
29
- * redis-server
30
- *
31
- * 3. Run this example
32
- */
33
-
34
- interface ChatContext {
35
- userId: string;
36
- userName: string;
37
- chatType: "support" | "sales" | "general";
38
- }
39
-
40
- interface SupportTicketData {
41
- issue: string;
42
- category: "technical" | "billing" | "account" | "other";
43
- priority: "low" | "medium" | "high";
44
- description: string;
45
- }
46
-
47
- interface QuickChatData {
48
- topic: string;
49
- sentiment: "positive" | "neutral" | "negative";
50
- }
51
-
52
- interface OrderData {
53
- productId: string;
54
- quantity: number;
55
- shippingAddress: string;
56
- }
57
-
58
- async function example() {
59
- // Initialize Redis client
60
-
61
- const redis = new Redis();
62
-
63
- const userId = "user_123";
64
-
65
- // Define support ticket schema
66
- const supportTicketSchema = {
67
- type: "object",
68
- properties: {
69
- issue: { type: "string" },
70
- category: { type: "string", enum: ["technical", "billing", "account", "other"] },
71
- priority: { type: "string", enum: ["low", "medium", "high"] },
72
- description: { type: "string" },
73
- },
74
- required: ["issue", "category", "priority", "description"],
75
- };
76
-
77
- // Create agent with Redis persistence
78
- const agent = new Agent<ChatContext, SupportTicketData>({
79
- name: "Support Assistant",
80
- description: "Fast, real-time support assistant",
81
- goal: "Help users resolve issues quickly",
82
- provider: new GeminiProvider({
83
- apiKey: process.env.GEMINI_API_KEY!,
84
- model: "models/gemini-2.5-flash",
85
- }),
86
- context: {
87
- userId,
88
- userName: "Alice",
89
- chatType: "support",
90
- },
91
- // NEW: Agent-level schema
92
- schema: supportTicketSchema,
93
- // ✨ Redis adapter with custom options
94
- persistence: {
95
- adapter: new RedisAdapter({
96
- redis,
97
- keyPrefix: "support:", // Custom prefix
98
- sessionTTL: 24 * 60 * 60, // 24 hours
99
- messageTTL: 7 * 24 * 60 * 60, // 7 days
100
- }),
101
- autoSave: true, // Auto-save session step
102
- userId,
103
- },
104
- });
105
-
106
- // Create support ticket route with data collecting
107
- const ticketRoute = agent.createRoute({
108
- title: "Create Support Ticket",
109
- description: "Help user create and track support tickets",
110
- when: [
111
- "User needs help with an issue",
112
- "User wants to report a problem",
113
- "User mentions support, help, or issue",
114
- ],
115
- // NEW: Required fields for route completion
116
- requiredFields: ["issue", "category", "description"],
117
- // NEW: Optional fields that enhance the experience
118
- optionalFields: ["priority"],
119
- });
120
-
121
- // Step flow
122
- ticketRoute.initialStep
123
- .nextStep({
124
- prompt: "Ask what the issue is",
125
- collect: ["issue", "category"],
126
- skipIf: (ctx) => !!ctx.data?.issue && !!ctx.data.category,
127
- })
128
- .nextStep({
129
- prompt: "Ask for priority",
130
- collect: ["priority"],
131
- skipIf: (ctx) => !!ctx.data?.priority,
132
- requires: ["issue", "category"],
133
- })
134
- .nextStep({
135
- prompt: "Ask for detailed description",
136
- collect: ["description"],
137
- skipIf: (ctx) => !!ctx.data?.description,
138
- requires: ["issue", "category"],
139
- })
140
- .nextStep({
141
- prompt: "Confirm and create ticket",
142
- requires: ["issue", "category", "description"],
143
- })
144
- .nextStep({ step: END_ROUTE });
145
-
146
- // Session is automatically managed by the agent with Redis persistence
147
- console.log("✨ Session ready:", agent.session.id);
148
-
149
- // Set initial data
150
- await agent.session.setData({ priority: "medium" });
151
-
152
- console.log("📊 Initial data:", agent.session.getData());
153
-
154
- // Turn 1: User provides issue
155
- console.log("\n--- Turn 1 ---");
156
-
157
- await agent.session.addMessage(
158
- "user",
159
- "I can't log into my account, it's a technical issue and it's urgent!",
160
- "Alice"
161
- );
162
- const history = agent.session.getHistory();
163
-
164
- const response1 = await agent.respond({
165
- history,
166
- });
167
-
168
- console.log("🤖 Agent:", response1.message);
169
-
170
- await agent.session.addMessage("assistant", response1.message);
171
- console.log("📊 Collected data:", agent.session.getData());
172
-
173
- // Turn 2: Provide more details
174
- console.log("\n--- Turn 2 ---");
175
-
176
- await agent.session.addMessage(
177
- "user",
178
- "I keep getting 'Invalid credentials' error even though I reset my password",
179
- "Alice"
180
- );
181
-
182
- const response2 = await agent.respond({
183
- history: agent.session.getHistory(),
184
- });
185
-
186
- console.log("🤖 Agent:", response2.message);
187
- console.log("📊 Collected data:", agent.session.getData());
188
-
189
- await agent.session.addMessage("assistant", response2.message);
190
-
191
- if (response2.isRouteComplete) {
192
- console.log("\n✅ Support ticket route complete!");
193
- await fileSupportTicket(agent.session.getData() as SupportTicketData);
194
- }
195
-
196
- // Demonstrate session recovery with new agent instance
197
- console.log("\n--- Session Recovery Example ---");
198
- const sessionId = agent.session.id;
199
-
200
- const recoveredAgent = new Agent<ChatContext, SupportTicketData>({
201
- name: "Support Assistant",
202
- provider: new GeminiProvider({
203
- apiKey: process.env.GEMINI_API_KEY!,
204
- model: "models/gemini-2.5-flash",
205
- }),
206
- context: {
207
- userId,
208
- userName: "Alice",
209
- chatType: "support",
210
- },
211
- // NEW: Agent-level schema (same as original agent)
212
- schema: supportTicketSchema,
213
- persistence: {
214
- adapter: new RedisAdapter({
215
- redis,
216
- keyPrefix: "support:",
217
- sessionTTL: 24 * 60 * 60,
218
- messageTTL: 7 * 24 * 60 * 60,
219
- }),
220
- autoSave: true,
221
- },
222
- sessionId, // Same sessionId - will load existing session
223
- });
224
-
225
- // Recreate the same route on recovered agent
226
- recoveredAgent.createRoute({
227
- title: "Create Support Ticket",
228
- description: "Help user create and track support tickets",
229
- when: [
230
- "User needs help with an issue",
231
- "User wants to report a problem",
232
- "User mentions support, help, or issue",
233
- ],
234
- // NEW: Required fields for route completion
235
- requiredFields: ["issue", "category", "description"],
236
- // NEW: Optional fields that enhance the experience
237
- optionalFields: ["priority"],
238
- });
239
-
240
- console.log("📥 Recovered session:", {
241
- sessionId: recoveredAgent.session.id,
242
- historyLength: recoveredAgent.session.getHistory().length,
243
- data: recoveredAgent.session.getData(),
244
- });
245
-
246
- console.log("✅ Session recovery complete!");
247
-
248
- // Cleanup
249
-
250
- await redis.quit();
251
- }
252
-
253
- /**
254
- * Advanced Example: High-Throughput Chat with Session Step
255
- */
256
- async function highThroughputExample() {
257
- const redis = new Redis();
258
-
259
- // Define quick chat schema
260
- const quickChatSchema = {
261
- type: "object",
262
- properties: {
263
- topic: { type: "string" },
264
- sentiment: { type: "string", enum: ["positive", "neutral", "negative"] },
265
- },
266
- required: ["topic", "sentiment"],
267
- };
268
-
269
- const agent = new Agent<unknown, QuickChatData>({
270
- name: "Chat Bot",
271
- description: "Fast chat responses",
272
- provider: new GeminiProvider({
273
- apiKey: process.env.GEMINI_API_KEY!,
274
- model: "models/gemini-2.5-flash",
275
- }),
276
- // NEW: Agent-level schema
277
- schema: quickChatSchema,
278
- persistence: {
279
- adapter: new RedisAdapter<unknown>({
280
- redis,
281
- keyPrefix: "chat:",
282
- sessionTTL: 60 * 60, // 1 hour for quick chats
283
- }),
284
- autoSave: true,
285
- userId: "user_456",
286
- },
287
- });
288
-
289
- // Simple chat route that extracts topic and sentiment
290
- const chatRoute = agent.createRoute({
291
- title: "General Chat",
292
- // NEW: Required fields for route completion
293
- requiredFields: ["topic", "sentiment"],
294
- });
295
-
296
- chatRoute.initialStep
297
- .nextStep({
298
- prompt: "Chat and extract topic/sentiment",
299
- collect: ["topic", "sentiment"],
300
- })
301
- .nextStep({ step: END_ROUTE });
302
-
303
- // Session is automatically managed by the agent
304
- console.log("✨ Session ready:", agent.session.id);
305
-
306
- // Quick chat interaction
307
- await agent.session.addMessage("user", "I'm loving the new features you added!", "User");
308
-
309
- const response = await agent.respond({
310
- history: agent.session.getHistory(),
311
- });
312
-
313
- console.log("🤖 Response:", response.message);
314
- console.log("📊 Data:", agent.session.getData());
315
-
316
- await agent.session.addMessage("assistant", response.message);
317
-
318
- if (response.isRouteComplete) {
319
- console.log("\n✅ Chat analytics route complete!");
320
- await logChatAnalytics(agent.session.getData() as QuickChatData);
321
- }
322
-
323
- console.log("💾 Session automatically saved to Redis!");
324
-
325
- await redis.quit();
326
- }
327
-
328
- /**
329
- * Session Recovery Example
330
- * Shows how to resume conversations from Redis
331
- */
332
- async function sessionRecoveryExample() {
333
- const redis = new Redis();
334
-
335
- // Define order schema
336
- const orderSchema = {
337
- type: "object",
338
- properties: {
339
- productId: { type: "string" },
340
- quantity: { type: "number", minimum: 1 },
341
- shippingAddress: { type: "string" },
342
- },
343
- required: ["productId", "quantity", "shippingAddress"],
344
- };
345
-
346
- const agent = new Agent<unknown, OrderData>({
347
- name: "Order Assistant",
348
- provider: new GeminiProvider({
349
- apiKey: process.env.GEMINI_API_KEY!,
350
- model: "models/gemini-2.5-flash",
351
- }),
352
- // NEW: Agent-level schema
353
- schema: orderSchema,
354
- persistence: {
355
- adapter: new RedisAdapter<unknown>({ redis }),
356
- autoSave: true,
357
- userId: "user_789",
358
- },
359
- });
360
-
361
- const orderRoute = agent.createRoute({
362
- title: "Place Order",
363
- // NEW: Required fields for route completion
364
- requiredFields: ["productId", "quantity", "shippingAddress"],
365
- });
366
-
367
- orderRoute.initialStep
368
- .nextStep({
369
- prompt: "Ask what to order",
370
- collect: ["productId", "quantity"],
371
- })
372
- .nextStep({
373
- prompt: "Ask for shipping address",
374
- collect: ["shippingAddress"],
375
- })
376
- .nextStep({ step: END_ROUTE });
377
-
378
- // Session is automatically managed by the agent
379
- const sessionId = agent.session.id;
380
- console.log("✨ New order session:", sessionId);
381
-
382
- // First interaction
383
- await agent.session.addMessage("user", "I want to order product ABC123, 2 units", "User");
384
-
385
- const response1 = await agent.respond({
386
- history: agent.session.getHistory(),
387
- });
388
-
389
- console.log("🤖 Response:", response1.message);
390
- console.log("📊 Data so far:", agent.session.getData());
391
-
392
- await agent.session.addMessage("assistant", response1.message);
393
-
394
- // --- Simulate user disconnecting and reconnecting ---
395
- console.log("\n--- User Reconnects ---");
396
-
397
- // Create new agent instance with same sessionId (simulates reconnection)
398
- const reconnectedAgent = new Agent<unknown, OrderData>({
399
- name: "Order Assistant",
400
- provider: new GeminiProvider({
401
- apiKey: process.env.GEMINI_API_KEY!,
402
- model: "models/gemini-2.5-flash",
403
- }),
404
- // NEW: Agent-level schema (same as original agent)
405
- schema: orderSchema,
406
- persistence: {
407
- adapter: new RedisAdapter<unknown>({ redis }),
408
- autoSave: true,
409
- },
410
- sessionId, // Same sessionId - will load existing session
411
- });
412
-
413
- console.log("📥 Recovered session:", {
414
- sessionId: reconnectedAgent.session.id,
415
- historyLength: reconnectedAgent.session.getHistory().length,
416
- data: reconnectedAgent.session.getData(),
417
- });
418
-
419
- // Continue conversation
420
- await reconnectedAgent.session.addMessage("user", "Ship to 123 Main St, New York", "User");
421
-
422
- const response2 = await reconnectedAgent.respond({
423
- history: reconnectedAgent.session.getHistory(),
424
- });
425
-
426
- console.log("🤖 Response:", response2.message);
427
- console.log("📊 Final collected data:", reconnectedAgent.session.getData());
428
-
429
- await reconnectedAgent.session.addMessage("assistant", response2.message);
430
-
431
- if (response2.isRouteComplete) {
432
- console.log("\n✅ Order placement complete!");
433
- await processOrder(reconnectedAgent.session.getData() as OrderData);
434
- }
435
-
436
- console.log("✅ Order complete with recovered session!");
437
-
438
- await redis.quit();
439
- }
440
-
441
- /**
442
- * Mock function to file a support ticket.
443
- */
444
- async function fileSupportTicket(data: SupportTicketData | undefined) {
445
- console.log("\n" + "=".repeat(60));
446
- console.log("🎫 Filing Support Ticket...");
447
- console.log("=".repeat(60));
448
- console.log("Ticket Details:", JSON.stringify(data, null, 2));
449
- console.log(
450
- ` - Filing ticket for issue: ${data?.issue} with priority: ${data?.priority}`
451
- );
452
- await new Promise((resolve) => setTimeout(resolve, 1000));
453
- console.log("✨ Ticket filed successfully!");
454
- }
455
-
456
- /**
457
- * Mock function to log chat analytics.
458
- * @param data - The chat data.
459
- */
460
- async function logChatAnalytics(data: QuickChatData) {
461
- console.log("\n" + "=".repeat(60));
462
- console.log("📊 Logging Chat Analytics...");
463
- console.log("=".repeat(60));
464
- console.log("Chat Details:", JSON.stringify(data, null, 2));
465
- console.log(` - Logging chat with topic: ${data.topic}`);
466
- await new Promise((resolve) => setTimeout(resolve, 500));
467
- console.log("✨ Analytics logged!");
468
- }
469
-
470
- /**
471
- * Mock function to process an order.
472
- */
473
- async function processOrder(data: OrderData | undefined) {
474
- console.log("\n" + "=".repeat(60));
475
- console.log("📦 Processing Order...");
476
- console.log("=".repeat(60));
477
- console.log("Order Details:", JSON.stringify(data, null, 2));
478
- console.log(` - Processing order for product: ${data?.productId}`);
479
- await new Promise((resolve) => setTimeout(resolve, 1000));
480
- console.log("✨ Order processed successfully!");
481
- }
482
-
483
- // Run the example
484
- if (require.main === module) {
485
- example().catch(console.error);
486
- }
487
-
488
- export { example, highThroughputExample, sessionRecoveryExample };