@falai/agent 1.2.8 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (522) hide show
  1. package/README.md +40 -886
  2. package/dist/adapters/MemoryAdapter.js +2 -2
  3. package/dist/adapters/MemoryAdapter.js.map +1 -1
  4. package/dist/adapters/MongoAdapter.js +2 -2
  5. package/dist/adapters/MongoAdapter.js.map +1 -1
  6. package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
  7. package/dist/adapters/OpenSearchAdapter.js +9 -7
  8. package/dist/adapters/OpenSearchAdapter.js.map +1 -1
  9. package/dist/adapters/PostgreSQLAdapter.d.ts +14 -0
  10. package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  11. package/dist/adapters/PostgreSQLAdapter.js +25 -9
  12. package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
  13. package/dist/adapters/PrismaAdapter.js +5 -5
  14. package/dist/adapters/PrismaAdapter.js.map +1 -1
  15. package/dist/adapters/RedisAdapter.js +2 -2
  16. package/dist/adapters/RedisAdapter.js.map +1 -1
  17. package/dist/adapters/SQLiteAdapter.d.ts +17 -0
  18. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
  19. package/dist/adapters/SQLiteAdapter.js +30 -11
  20. package/dist/adapters/SQLiteAdapter.js.map +1 -1
  21. package/dist/cjs/adapters/MemoryAdapter.js +2 -2
  22. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  23. package/dist/cjs/adapters/MongoAdapter.js +2 -2
  24. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  25. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
  26. package/dist/cjs/adapters/OpenSearchAdapter.js +9 -7
  27. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  28. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +14 -0
  29. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  30. package/dist/cjs/adapters/PostgreSQLAdapter.js +25 -9
  31. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  32. package/dist/cjs/adapters/PrismaAdapter.js +5 -5
  33. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  34. package/dist/cjs/adapters/RedisAdapter.js +2 -2
  35. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  36. package/dist/cjs/adapters/SQLiteAdapter.d.ts +17 -0
  37. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  38. package/dist/cjs/adapters/SQLiteAdapter.js +30 -11
  39. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  40. package/dist/cjs/constants/index.d.ts +0 -9
  41. package/dist/cjs/constants/index.d.ts.map +1 -1
  42. package/dist/cjs/constants/index.js +2 -11
  43. package/dist/cjs/constants/index.js.map +1 -1
  44. package/dist/cjs/core/Agent.d.ts +119 -153
  45. package/dist/cjs/core/Agent.d.ts.map +1 -1
  46. package/dist/cjs/core/Agent.js +471 -324
  47. package/dist/cjs/core/Agent.js.map +1 -1
  48. package/dist/cjs/core/AutoChainExecutor.d.ts +107 -0
  49. package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -0
  50. package/dist/cjs/core/AutoChainExecutor.js +297 -0
  51. package/dist/cjs/core/AutoChainExecutor.js.map +1 -0
  52. package/dist/cjs/core/BranchEvaluator.d.ts +54 -0
  53. package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -0
  54. package/dist/cjs/core/BranchEvaluator.js +130 -0
  55. package/dist/cjs/core/BranchEvaluator.js.map +1 -0
  56. package/dist/cjs/core/DirectiveBus.d.ts +88 -0
  57. package/dist/cjs/core/DirectiveBus.d.ts.map +1 -0
  58. package/dist/cjs/core/DirectiveBus.js +196 -0
  59. package/dist/cjs/core/DirectiveBus.js.map +1 -0
  60. package/dist/cjs/core/DirectiveChainTracker.d.ts +49 -0
  61. package/dist/cjs/core/DirectiveChainTracker.d.ts.map +1 -0
  62. package/dist/cjs/core/DirectiveChainTracker.js +121 -0
  63. package/dist/cjs/core/DirectiveChainTracker.js.map +1 -0
  64. package/dist/cjs/core/Flow.d.ts +186 -0
  65. package/dist/cjs/core/Flow.d.ts.map +1 -0
  66. package/dist/cjs/core/Flow.js +550 -0
  67. package/dist/cjs/core/Flow.js.map +1 -0
  68. package/dist/cjs/core/FlowRouter.d.ts +182 -0
  69. package/dist/cjs/core/FlowRouter.d.ts.map +1 -0
  70. package/dist/cjs/core/{RoutingEngine.js → FlowRouter.js} +323 -306
  71. package/dist/cjs/core/FlowRouter.js.map +1 -0
  72. package/dist/cjs/core/PersistenceManager.d.ts +2 -2
  73. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  74. package/dist/cjs/core/PersistenceManager.js +7 -7
  75. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  76. package/dist/cjs/core/PromptComposer.d.ts +21 -8
  77. package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
  78. package/dist/cjs/core/PromptComposer.js +182 -105
  79. package/dist/cjs/core/PromptComposer.js.map +1 -1
  80. package/dist/cjs/core/PromptSectionCache.d.ts +1 -1
  81. package/dist/cjs/core/PromptSectionCache.js +1 -1
  82. package/dist/cjs/core/ResponseEngine.d.ts +18 -8
  83. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  84. package/dist/cjs/core/ResponseEngine.js +38 -36
  85. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  86. package/dist/cjs/core/ResponseModal.d.ts +73 -56
  87. package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
  88. package/dist/cjs/core/ResponseModal.js +1191 -1014
  89. package/dist/cjs/core/ResponseModal.js.map +1 -1
  90. package/dist/cjs/core/ResponsePipeline.d.ts +124 -26
  91. package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
  92. package/dist/cjs/core/ResponsePipeline.js +509 -136
  93. package/dist/cjs/core/ResponsePipeline.js.map +1 -1
  94. package/dist/cjs/core/SignalEvaluator.d.ts +86 -0
  95. package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -0
  96. package/dist/cjs/core/SignalEvaluator.js +333 -0
  97. package/dist/cjs/core/SignalEvaluator.js.map +1 -0
  98. package/dist/cjs/core/SignalProcessor.d.ts +152 -0
  99. package/dist/cjs/core/SignalProcessor.d.ts.map +1 -0
  100. package/dist/cjs/core/SignalProcessor.js +562 -0
  101. package/dist/cjs/core/SignalProcessor.js.map +1 -0
  102. package/dist/cjs/core/Step.d.ts +43 -32
  103. package/dist/cjs/core/Step.d.ts.map +1 -1
  104. package/dist/cjs/core/Step.js +221 -126
  105. package/dist/cjs/core/Step.js.map +1 -1
  106. package/dist/cjs/core/StreamingToolExecutor.d.ts +2 -2
  107. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -1
  108. package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
  109. package/dist/cjs/core/ToolManager.d.ts +44 -13
  110. package/dist/cjs/core/ToolManager.d.ts.map +1 -1
  111. package/dist/cjs/core/ToolManager.js +174 -91
  112. package/dist/cjs/core/ToolManager.js.map +1 -1
  113. package/dist/cjs/core/createAgent.d.ts +35 -0
  114. package/dist/cjs/core/createAgent.d.ts.map +1 -0
  115. package/dist/cjs/core/createAgent.js +39 -0
  116. package/dist/cjs/core/createAgent.js.map +1 -0
  117. package/dist/cjs/core/flow-namespace.d.ts +49 -0
  118. package/dist/cjs/core/flow-namespace.d.ts.map +1 -0
  119. package/dist/cjs/core/flow-namespace.js +171 -0
  120. package/dist/cjs/core/flow-namespace.js.map +1 -0
  121. package/dist/cjs/index.d.ts +11 -14
  122. package/dist/cjs/index.d.ts.map +1 -1
  123. package/dist/cjs/index.js +18 -22
  124. package/dist/cjs/index.js.map +1 -1
  125. package/dist/cjs/providers/AnthropicProvider.d.ts +1 -1
  126. package/dist/cjs/providers/AnthropicProvider.js +1 -1
  127. package/dist/cjs/providers/GeminiProvider.d.ts +1 -1
  128. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  129. package/dist/cjs/providers/GeminiProvider.js +1 -1
  130. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  131. package/dist/cjs/providers/OpenAIProvider.d.ts +1 -1
  132. package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
  133. package/dist/cjs/providers/OpenAIProvider.js +1 -1
  134. package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
  135. package/dist/cjs/types/agent.d.ts +183 -54
  136. package/dist/cjs/types/agent.d.ts.map +1 -1
  137. package/dist/cjs/types/agent.js +0 -6
  138. package/dist/cjs/types/agent.js.map +1 -1
  139. package/dist/cjs/types/ai.d.ts +3 -3
  140. package/dist/cjs/types/ai.d.ts.map +1 -1
  141. package/dist/cjs/types/errors.d.ts +15 -0
  142. package/dist/cjs/types/errors.d.ts.map +1 -0
  143. package/dist/cjs/types/errors.js +22 -0
  144. package/dist/cjs/types/errors.js.map +1 -0
  145. package/dist/cjs/types/flow.d.ts +513 -0
  146. package/dist/cjs/types/flow.d.ts.map +1 -0
  147. package/dist/cjs/types/{route.js → flow.js} +2 -2
  148. package/dist/cjs/types/flow.js.map +1 -0
  149. package/dist/cjs/types/index.d.ts +7 -6
  150. package/dist/cjs/types/index.d.ts.map +1 -1
  151. package/dist/cjs/types/index.js +6 -2
  152. package/dist/cjs/types/index.js.map +1 -1
  153. package/dist/cjs/types/persistence.d.ts +11 -7
  154. package/dist/cjs/types/persistence.d.ts.map +1 -1
  155. package/dist/cjs/types/routing.d.ts +1 -1
  156. package/dist/cjs/types/routing.d.ts.map +1 -1
  157. package/dist/cjs/types/session.d.ts +24 -23
  158. package/dist/cjs/types/session.d.ts.map +1 -1
  159. package/dist/cjs/types/signals.d.ts +248 -0
  160. package/dist/cjs/types/signals.d.ts.map +1 -0
  161. package/dist/cjs/types/signals.js +11 -0
  162. package/dist/cjs/types/signals.js.map +1 -0
  163. package/dist/cjs/types/template.d.ts +2 -8
  164. package/dist/cjs/types/template.d.ts.map +1 -1
  165. package/dist/cjs/types/tool.d.ts +36 -29
  166. package/dist/cjs/types/tool.d.ts.map +1 -1
  167. package/dist/cjs/types/tool.js +1 -1
  168. package/dist/cjs/types/tool.js.map +1 -1
  169. package/dist/cjs/utils/condition.d.ts +7 -1
  170. package/dist/cjs/utils/condition.d.ts.map +1 -1
  171. package/dist/cjs/utils/condition.js.map +1 -1
  172. package/dist/cjs/utils/id.d.ts +13 -5
  173. package/dist/cjs/utils/id.d.ts.map +1 -1
  174. package/dist/cjs/utils/id.js +24 -10
  175. package/dist/cjs/utils/id.js.map +1 -1
  176. package/dist/cjs/utils/index.d.ts +2 -2
  177. package/dist/cjs/utils/index.d.ts.map +1 -1
  178. package/dist/cjs/utils/index.js +7 -3
  179. package/dist/cjs/utils/index.js.map +1 -1
  180. package/dist/cjs/utils/session.d.ts +44 -5
  181. package/dist/cjs/utils/session.d.ts.map +1 -1
  182. package/dist/cjs/utils/session.js +197 -38
  183. package/dist/cjs/utils/session.js.map +1 -1
  184. package/dist/constants/index.d.ts +0 -9
  185. package/dist/constants/index.d.ts.map +1 -1
  186. package/dist/constants/index.js +3 -9
  187. package/dist/constants/index.js.map +1 -1
  188. package/dist/core/Agent.d.ts +119 -153
  189. package/dist/core/Agent.d.ts.map +1 -1
  190. package/dist/core/Agent.js +472 -325
  191. package/dist/core/Agent.js.map +1 -1
  192. package/dist/core/AutoChainExecutor.d.ts +107 -0
  193. package/dist/core/AutoChainExecutor.d.ts.map +1 -0
  194. package/dist/core/AutoChainExecutor.js +293 -0
  195. package/dist/core/AutoChainExecutor.js.map +1 -0
  196. package/dist/core/BranchEvaluator.d.ts +54 -0
  197. package/dist/core/BranchEvaluator.d.ts.map +1 -0
  198. package/dist/core/BranchEvaluator.js +126 -0
  199. package/dist/core/BranchEvaluator.js.map +1 -0
  200. package/dist/core/DirectiveBus.d.ts +88 -0
  201. package/dist/core/DirectiveBus.d.ts.map +1 -0
  202. package/dist/core/DirectiveBus.js +192 -0
  203. package/dist/core/DirectiveBus.js.map +1 -0
  204. package/dist/core/DirectiveChainTracker.d.ts +49 -0
  205. package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
  206. package/dist/core/DirectiveChainTracker.js +117 -0
  207. package/dist/core/DirectiveChainTracker.js.map +1 -0
  208. package/dist/core/Flow.d.ts +186 -0
  209. package/dist/core/Flow.d.ts.map +1 -0
  210. package/dist/core/Flow.js +546 -0
  211. package/dist/core/Flow.js.map +1 -0
  212. package/dist/core/FlowRouter.d.ts +182 -0
  213. package/dist/core/FlowRouter.d.ts.map +1 -0
  214. package/dist/core/{RoutingEngine.js → FlowRouter.js} +322 -305
  215. package/dist/core/FlowRouter.js.map +1 -0
  216. package/dist/core/PersistenceManager.d.ts +2 -2
  217. package/dist/core/PersistenceManager.d.ts.map +1 -1
  218. package/dist/core/PersistenceManager.js +7 -7
  219. package/dist/core/PersistenceManager.js.map +1 -1
  220. package/dist/core/PromptComposer.d.ts +21 -8
  221. package/dist/core/PromptComposer.d.ts.map +1 -1
  222. package/dist/core/PromptComposer.js +183 -106
  223. package/dist/core/PromptComposer.js.map +1 -1
  224. package/dist/core/PromptSectionCache.d.ts +1 -1
  225. package/dist/core/PromptSectionCache.js +1 -1
  226. package/dist/core/ResponseEngine.d.ts +18 -8
  227. package/dist/core/ResponseEngine.d.ts.map +1 -1
  228. package/dist/core/ResponseEngine.js +38 -36
  229. package/dist/core/ResponseEngine.js.map +1 -1
  230. package/dist/core/ResponseModal.d.ts +73 -56
  231. package/dist/core/ResponseModal.d.ts.map +1 -1
  232. package/dist/core/ResponseModal.js +1193 -1016
  233. package/dist/core/ResponseModal.js.map +1 -1
  234. package/dist/core/ResponsePipeline.d.ts +124 -26
  235. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  236. package/dist/core/ResponsePipeline.js +509 -137
  237. package/dist/core/ResponsePipeline.js.map +1 -1
  238. package/dist/core/SignalEvaluator.d.ts +86 -0
  239. package/dist/core/SignalEvaluator.d.ts.map +1 -0
  240. package/dist/core/SignalEvaluator.js +326 -0
  241. package/dist/core/SignalEvaluator.js.map +1 -0
  242. package/dist/core/SignalProcessor.d.ts +152 -0
  243. package/dist/core/SignalProcessor.d.ts.map +1 -0
  244. package/dist/core/SignalProcessor.js +555 -0
  245. package/dist/core/SignalProcessor.js.map +1 -0
  246. package/dist/core/Step.d.ts +43 -32
  247. package/dist/core/Step.d.ts.map +1 -1
  248. package/dist/core/Step.js +220 -126
  249. package/dist/core/Step.js.map +1 -1
  250. package/dist/core/StreamingToolExecutor.d.ts +2 -2
  251. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  252. package/dist/core/StreamingToolExecutor.js.map +1 -1
  253. package/dist/core/ToolManager.d.ts +44 -13
  254. package/dist/core/ToolManager.d.ts.map +1 -1
  255. package/dist/core/ToolManager.js +174 -91
  256. package/dist/core/ToolManager.js.map +1 -1
  257. package/dist/core/createAgent.d.ts +35 -0
  258. package/dist/core/createAgent.d.ts.map +1 -0
  259. package/dist/core/createAgent.js +36 -0
  260. package/dist/core/createAgent.js.map +1 -0
  261. package/dist/core/flow-namespace.d.ts +49 -0
  262. package/dist/core/flow-namespace.d.ts.map +1 -0
  263. package/dist/core/flow-namespace.js +168 -0
  264. package/dist/core/flow-namespace.js.map +1 -0
  265. package/dist/index.d.ts +11 -14
  266. package/dist/index.d.ts.map +1 -1
  267. package/dist/index.js +9 -12
  268. package/dist/index.js.map +1 -1
  269. package/dist/providers/AnthropicProvider.d.ts +1 -1
  270. package/dist/providers/AnthropicProvider.js +1 -1
  271. package/dist/providers/GeminiProvider.d.ts +1 -1
  272. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  273. package/dist/providers/GeminiProvider.js +1 -1
  274. package/dist/providers/GeminiProvider.js.map +1 -1
  275. package/dist/providers/OpenAIProvider.d.ts +1 -1
  276. package/dist/providers/OpenAIProvider.d.ts.map +1 -1
  277. package/dist/providers/OpenAIProvider.js +1 -1
  278. package/dist/providers/OpenAIProvider.js.map +1 -1
  279. package/dist/types/agent.d.ts +183 -54
  280. package/dist/types/agent.d.ts.map +1 -1
  281. package/dist/types/agent.js +0 -6
  282. package/dist/types/agent.js.map +1 -1
  283. package/dist/types/ai.d.ts +3 -3
  284. package/dist/types/ai.d.ts.map +1 -1
  285. package/dist/types/errors.d.ts +15 -0
  286. package/dist/types/errors.d.ts.map +1 -0
  287. package/dist/types/errors.js +18 -0
  288. package/dist/types/errors.js.map +1 -0
  289. package/dist/types/flow.d.ts +513 -0
  290. package/dist/types/flow.d.ts.map +1 -0
  291. package/dist/types/flow.js +5 -0
  292. package/dist/types/flow.js.map +1 -0
  293. package/dist/types/index.d.ts +7 -6
  294. package/dist/types/index.d.ts.map +1 -1
  295. package/dist/types/index.js +4 -1
  296. package/dist/types/index.js.map +1 -1
  297. package/dist/types/persistence.d.ts +11 -7
  298. package/dist/types/persistence.d.ts.map +1 -1
  299. package/dist/types/routing.d.ts +1 -1
  300. package/dist/types/routing.d.ts.map +1 -1
  301. package/dist/types/session.d.ts +24 -23
  302. package/dist/types/session.d.ts.map +1 -1
  303. package/dist/types/signals.d.ts +248 -0
  304. package/dist/types/signals.d.ts.map +1 -0
  305. package/dist/types/signals.js +10 -0
  306. package/dist/types/signals.js.map +1 -0
  307. package/dist/types/template.d.ts +2 -8
  308. package/dist/types/template.d.ts.map +1 -1
  309. package/dist/types/tool.d.ts +36 -29
  310. package/dist/types/tool.d.ts.map +1 -1
  311. package/dist/types/tool.js +1 -1
  312. package/dist/types/tool.js.map +1 -1
  313. package/dist/utils/condition.d.ts +7 -1
  314. package/dist/utils/condition.d.ts.map +1 -1
  315. package/dist/utils/condition.js.map +1 -1
  316. package/dist/utils/id.d.ts +13 -5
  317. package/dist/utils/id.d.ts.map +1 -1
  318. package/dist/utils/id.js +22 -9
  319. package/dist/utils/id.js.map +1 -1
  320. package/dist/utils/index.d.ts +2 -2
  321. package/dist/utils/index.d.ts.map +1 -1
  322. package/dist/utils/index.js +2 -2
  323. package/dist/utils/index.js.map +1 -1
  324. package/dist/utils/session.d.ts +44 -5
  325. package/dist/utils/session.d.ts.map +1 -1
  326. package/dist/utils/session.js +193 -37
  327. package/dist/utils/session.js.map +1 -1
  328. package/docs/README.md +22 -200
  329. package/docs/concepts/architecture.md +281 -0
  330. package/docs/concepts/directives.md +400 -0
  331. package/docs/concepts/pipeline.md +399 -0
  332. package/docs/guides/branching.md +263 -0
  333. package/docs/guides/compaction.md +163 -0
  334. package/docs/guides/conditions.md +167 -0
  335. package/docs/guides/error-handling.md +176 -0
  336. package/docs/guides/flow-control.md +409 -0
  337. package/docs/guides/instructions.md +210 -0
  338. package/docs/guides/persistence.md +182 -0
  339. package/docs/guides/streaming.md +137 -0
  340. package/docs/migration/README.md +14 -0
  341. package/docs/migration/route-to-flow.md +561 -0
  342. package/docs/migration/v1-to-v2.md +909 -0
  343. package/docs/reference/adapters.md +481 -0
  344. package/docs/reference/branches.md +241 -0
  345. package/docs/reference/create-agent.md +186 -0
  346. package/docs/reference/directive.md +243 -0
  347. package/docs/reference/errors.md +122 -0
  348. package/docs/reference/flow.md +238 -0
  349. package/docs/reference/instruction.md +177 -0
  350. package/docs/reference/pre-directive.md +131 -0
  351. package/docs/reference/providers.md +227 -0
  352. package/docs/reference/signals.md +356 -0
  353. package/docs/reference/step.md +339 -0
  354. package/docs/reference/tool.md +269 -0
  355. package/docs/start/01-install.md +81 -0
  356. package/docs/start/02-first-agent.md +196 -0
  357. package/docs/start/03-collect-data.md +222 -0
  358. package/docs/start/04-add-tools.md +276 -0
  359. package/docs/start/05-go-to-production.md +216 -0
  360. package/examples/01-quickstart.ts +20 -0
  361. package/examples/02-data-extraction.ts +90 -0
  362. package/examples/03-tools.ts +136 -0
  363. package/examples/04-instructions.ts +100 -0
  364. package/examples/05-branching.ts +140 -0
  365. package/examples/06-flow-control.ts +103 -0
  366. package/examples/07-streaming.ts +69 -0
  367. package/examples/08-persistence.ts +98 -0
  368. package/examples/09-signals.ts +144 -0
  369. package/examples/tsconfig.json +30 -0
  370. package/package.json +2 -1
  371. package/src/adapters/MemoryAdapter.ts +3 -3
  372. package/src/adapters/MongoAdapter.ts +3 -3
  373. package/src/adapters/OpenSearchAdapter.ts +10 -8
  374. package/src/adapters/PostgreSQLAdapter.ts +26 -10
  375. package/src/adapters/PrismaAdapter.ts +6 -6
  376. package/src/adapters/RedisAdapter.ts +3 -3
  377. package/src/adapters/SQLiteAdapter.ts +31 -12
  378. package/src/constants/index.ts +2 -10
  379. package/src/core/Agent.ts +585 -374
  380. package/src/core/AutoChainExecutor.ts +440 -0
  381. package/src/core/BranchEvaluator.ts +167 -0
  382. package/src/core/DirectiveBus.ts +248 -0
  383. package/src/core/DirectiveChainTracker.ts +144 -0
  384. package/src/core/Flow.ts +666 -0
  385. package/src/core/{RoutingEngine.ts → FlowRouter.ts} +385 -365
  386. package/src/core/PersistenceManager.ts +8 -8
  387. package/src/core/PromptComposer.ts +209 -140
  388. package/src/core/PromptSectionCache.ts +1 -1
  389. package/src/core/ResponseEngine.ts +61 -46
  390. package/src/core/ResponseModal.ts +1453 -1240
  391. package/src/core/ResponsePipeline.ts +655 -175
  392. package/src/core/SignalEvaluator.ts +420 -0
  393. package/src/core/SignalProcessor.ts +723 -0
  394. package/src/core/Step.ts +279 -176
  395. package/src/core/StreamingToolExecutor.ts +4 -4
  396. package/src/core/ToolManager.ts +200 -97
  397. package/src/core/createAgent.ts +40 -0
  398. package/src/core/flow-namespace.ts +219 -0
  399. package/src/index.ts +42 -36
  400. package/src/providers/AnthropicProvider.ts +2 -2
  401. package/src/providers/GeminiProvider.ts +2 -2
  402. package/src/providers/OpenAIProvider.ts +2 -2
  403. package/src/types/agent.ts +182 -53
  404. package/src/types/ai.ts +3 -3
  405. package/src/types/errors.ts +18 -0
  406. package/src/types/flow.ts +590 -0
  407. package/src/types/index.ts +43 -16
  408. package/src/types/persistence.ts +12 -8
  409. package/src/types/routing.ts +1 -1
  410. package/src/types/session.ts +26 -23
  411. package/src/types/signals.ts +321 -0
  412. package/src/types/template.ts +3 -11
  413. package/src/types/tool.ts +50 -42
  414. package/src/utils/condition.ts +13 -4
  415. package/src/utils/id.ts +27 -9
  416. package/src/utils/index.ts +6 -2
  417. package/src/utils/session.ts +238 -42
  418. package/dist/cjs/core/BatchExecutor.d.ts +0 -359
  419. package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
  420. package/dist/cjs/core/BatchExecutor.js +0 -861
  421. package/dist/cjs/core/BatchExecutor.js.map +0 -1
  422. package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
  423. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
  424. package/dist/cjs/core/BatchPromptBuilder.js +0 -223
  425. package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
  426. package/dist/cjs/core/Route.d.ts +0 -180
  427. package/dist/cjs/core/Route.d.ts.map +0 -1
  428. package/dist/cjs/core/Route.js +0 -542
  429. package/dist/cjs/core/Route.js.map +0 -1
  430. package/dist/cjs/core/RoutingEngine.d.ts +0 -185
  431. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  432. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  433. package/dist/cjs/types/route.d.ts +0 -336
  434. package/dist/cjs/types/route.d.ts.map +0 -1
  435. package/dist/cjs/types/route.js.map +0 -1
  436. package/dist/core/BatchExecutor.d.ts +0 -359
  437. package/dist/core/BatchExecutor.d.ts.map +0 -1
  438. package/dist/core/BatchExecutor.js +0 -856
  439. package/dist/core/BatchExecutor.js.map +0 -1
  440. package/dist/core/BatchPromptBuilder.d.ts +0 -89
  441. package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
  442. package/dist/core/BatchPromptBuilder.js +0 -219
  443. package/dist/core/BatchPromptBuilder.js.map +0 -1
  444. package/dist/core/Route.d.ts +0 -180
  445. package/dist/core/Route.d.ts.map +0 -1
  446. package/dist/core/Route.js +0 -538
  447. package/dist/core/Route.js.map +0 -1
  448. package/dist/core/RoutingEngine.d.ts +0 -185
  449. package/dist/core/RoutingEngine.d.ts.map +0 -1
  450. package/dist/core/RoutingEngine.js.map +0 -1
  451. package/dist/types/route.d.ts +0 -336
  452. package/dist/types/route.d.ts.map +0 -1
  453. package/dist/types/route.js +0 -5
  454. package/dist/types/route.js.map +0 -1
  455. package/docs/CONTRIBUTING.md +0 -521
  456. package/docs/api/README.md +0 -3299
  457. package/docs/api/overview.md +0 -1410
  458. package/docs/architecture/data-extraction-flow.md +0 -360
  459. package/docs/architecture/multi-step-execution.md +0 -277
  460. package/docs/core/agent/README.md +0 -938
  461. package/docs/core/agent/context-management.md +0 -796
  462. package/docs/core/agent/rules-and-prohibitions.md +0 -113
  463. package/docs/core/agent/session-management.md +0 -693
  464. package/docs/core/ai-integration/prompt-composition.md +0 -355
  465. package/docs/core/ai-integration/providers.md +0 -515
  466. package/docs/core/ai-integration/response-processing.md +0 -433
  467. package/docs/core/conversation-flows/data-collection.md +0 -772
  468. package/docs/core/conversation-flows/route-dsl.md +0 -509
  469. package/docs/core/conversation-flows/routes.md +0 -249
  470. package/docs/core/conversation-flows/step-transitions.md +0 -731
  471. package/docs/core/conversation-flows/steps.md +0 -268
  472. package/docs/core/error-handling.md +0 -830
  473. package/docs/core/persistence/adapters.md +0 -255
  474. package/docs/core/persistence/session-storage.md +0 -656
  475. package/docs/core/routing/intelligent-routing.md +0 -470
  476. package/docs/core/tools/enhanced-tool.md +0 -186
  477. package/docs/core/tools/streaming-execution.md +0 -161
  478. package/docs/core/tools/tool-definition.md +0 -970
  479. package/docs/core/tools/tool-scoping.md +0 -819
  480. package/docs/guides/advanced-patterns/publishing.md +0 -186
  481. package/docs/guides/context-compaction.md +0 -96
  482. package/docs/guides/error-handling-patterns.md +0 -578
  483. package/docs/guides/getting-started/README.md +0 -795
  484. package/docs/guides/migration/README.md +0 -101
  485. package/docs/guides/migration/flexible-routing-conditions.md +0 -375
  486. package/docs/guides/migration/multi-step-execution.md +0 -393
  487. package/docs/guides/migration/response-modal-refactor.md +0 -518
  488. package/docs/guides/prompt-optimization.md +0 -164
  489. package/examples/advanced-patterns/context-compaction.ts +0 -223
  490. package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
  491. package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
  492. package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
  493. package/examples/advanced-patterns/streaming-responses.ts +0 -656
  494. package/examples/ai-providers/anthropic-integration.ts +0 -388
  495. package/examples/ai-providers/openai-integration.ts +0 -228
  496. package/examples/condition-patterns/function-only-conditions.ts +0 -365
  497. package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
  498. package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
  499. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  500. package/examples/condition-patterns/string-only-conditions.ts +0 -296
  501. package/examples/conversation-flows/completion-transitions.ts +0 -318
  502. package/examples/core-concepts/basic-agent.ts +0 -503
  503. package/examples/core-concepts/modern-streaming-api.ts +0 -309
  504. package/examples/core-concepts/schema-driven-extraction.ts +0 -332
  505. package/examples/core-concepts/session-management.ts +0 -494
  506. package/examples/integrations/database-integration.ts +0 -631
  507. package/examples/integrations/healthcare-integration.ts +0 -595
  508. package/examples/integrations/search-integration.ts +0 -530
  509. package/examples/integrations/server-session-management.ts +0 -307
  510. package/examples/persistence/custom-adapter.ts +0 -526
  511. package/examples/persistence/database-persistence.ts +0 -583
  512. package/examples/persistence/memory-sessions.ts +0 -495
  513. package/examples/persistence/prisma-schema.example.prisma +0 -74
  514. package/examples/persistence/redis-persistence.ts +0 -488
  515. package/examples/tools/basic-tools.ts +0 -765
  516. package/examples/tools/data-enrichment-tools.ts +0 -593
  517. package/examples/tools/enhanced-tool-metadata.ts +0 -268
  518. package/examples/tools/streaming-tool-execution.ts +0 -283
  519. package/src/core/BatchExecutor.ts +0 -1187
  520. package/src/core/BatchPromptBuilder.ts +0 -299
  521. package/src/core/Route.ts +0 -678
  522. package/src/types/route.ts +0 -392
@@ -1,494 +0,0 @@
1
- /**
2
- * Session Management Example
3
- *
4
- * This example demonstrates how to manage conversation state across multiple turns
5
- * using session management, persistence, and state restoration.
6
- *
7
- * Key concepts:
8
- * - Session state management
9
- * - Multi-turn conversations
10
- * - Data persistence across turns
11
- * - Session restoration
12
- * - Route transitions with session state
13
- * - NEW: Flexible ConditionTemplate patterns for session-aware routing:
14
- * - String-only conditions: "user wants to order" (AI context only)
15
- * - Function-only conditions: (ctx) => !!ctx.data?.orderId (session state checks)
16
- * - Mixed arrays: ["payment needed", (ctx) => !ctx.data?.confirmed] (hybrid)
17
- * - Session-aware skipIf conditions for flow control
18
- */
19
-
20
- import {
21
- Agent,
22
- GeminiProvider,
23
- MemoryAdapter,
24
- type Tool,
25
- ValidationError,
26
- } from "../../src/index";
27
-
28
- // Define data types for our multi-step process
29
- interface OrderData {
30
- customerName: string;
31
- productType: "laptop" | "phone" | "tablet";
32
- budget: number;
33
- preferredColor?: string;
34
- urgentDelivery: boolean;
35
- orderId?: string;
36
- }
37
-
38
- interface OrderContext {
39
- userId: string;
40
- userName: string;
41
- isVip: boolean;
42
- }
43
-
44
- interface PaymentData {
45
- orderId?: string; // Make this optional to match OrderData
46
- paymentMethod: "credit_card" | "paypal" | "bank_transfer";
47
- amount: number;
48
- confirmed: boolean;
49
- }
50
-
51
- // Tools for order processing - using unified Tool interface
52
- const createOrderTool: Tool<unknown, UnifiedOrderData> = {
53
- id: "create_order",
54
- description: "Create a new order from the collected order data",
55
- parameters: {
56
- type: "object",
57
- properties: {},
58
- },
59
- handler: (context, args) => {
60
- const orderId = `ORD-${Date.now()}`;
61
- console.log(`Creating order ${orderId} for ${context.data?.customerName}`);
62
-
63
- return {
64
- data: `Order ${orderId} created successfully!`,
65
- dataUpdate: {
66
- orderId,
67
- },
68
- };
69
- },
70
- };
71
-
72
- const processPaymentTool: Tool<unknown, UnifiedOrderData> = {
73
- id: "process_payment",
74
- description: "Process payment for an order",
75
- parameters: {
76
- type: "object",
77
- properties: {},
78
- },
79
- handler: (context, args) => {
80
- console.log(`Processing payment for order ${context.data?.orderId}`);
81
-
82
- // Simulate payment processing
83
- const success = Math.random() > 0.1; // 90% success rate
84
-
85
- if (success) {
86
- return {
87
- data: `Payment processed successfully! Order ${context.data?.orderId} is now confirmed.`,
88
- dataUpdate: {
89
- confirmed: true,
90
- },
91
- };
92
- } else {
93
- return {
94
- data: "Payment failed. Please try again or contact support.",
95
- dataUpdate: {
96
- confirmed: false,
97
- },
98
- };
99
- }
100
- },
101
- };
102
-
103
- // Define unified data schema for all order-related interactions
104
- interface UnifiedOrderData extends OrderData, PaymentData { }
105
-
106
- const orderSchema = {
107
- type: "object",
108
- properties: {
109
- // Order fields
110
- customerName: { type: "string" },
111
- productType: { type: "string", enum: ["laptop", "phone", "tablet"] },
112
- budget: { type: "number", minimum: 100 },
113
- preferredColor: { type: "string" },
114
- urgentDelivery: { type: "boolean" },
115
- orderId: { type: "string" },
116
- // Payment fields
117
- paymentMethod: {
118
- type: "string",
119
- enum: ["credit_card", "paypal", "bank_transfer"],
120
- },
121
- amount: { type: "number" },
122
- confirmed: { type: "boolean" },
123
- },
124
- };
125
-
126
- // Create agent with persistence and agent-level schema
127
- const agent = new Agent<unknown, UnifiedOrderData>({
128
- name: "OrderBot",
129
- description:
130
- "A bot that handles multi-step order processing with session management",
131
- provider: new GeminiProvider({
132
- apiKey: process.env.GEMINI_API_KEY!,
133
- model: "models/gemini-2.5-flash",
134
- }),
135
- // NEW: Agent-level schema
136
- schema: orderSchema,
137
- persistence: {
138
- adapter: new MemoryAdapter(), // In production, use RedisAdapter, PrismaAdapter, etc.
139
- },
140
- });
141
-
142
- // Demonstrate different tool registration patterns
143
-
144
- // Method 1: Register tools for ID-based reference in steps
145
- agent.tool.register(createOrderTool);
146
- agent.tool.register(processPaymentTool);
147
-
148
- // Method 2: Create specialized validation tool
149
- const orderValidationTool = agent.tool.createValidation({
150
- id: "validate_order",
151
- fields: ["customerName", "productType", "budget"] as const,
152
- validator: async (context, data) => {
153
- const errors: ValidationError[] = [];
154
- if (!data.customerName || data.customerName.length < 2) {
155
- errors.push({
156
- field: "customerName",
157
- value: data.customerName,
158
- message: "Customer name must be at least 2 characters",
159
- schemaPath: "customerName"
160
- });
161
- }
162
- if (!data.budget || data.budget < 100) {
163
- errors.push({
164
- field: "budget",
165
- value: data.budget,
166
- message: "Budget must be at least $100",
167
- schemaPath: "budget"
168
- });
169
- }
170
- return {
171
- valid: errors.length === 0,
172
- errors,
173
- warnings: [],
174
- };
175
- },
176
- });
177
-
178
- // Method 3: Create data enrichment tool
179
- const orderEnrichmentTool = agent.tool.createDataEnrichment({
180
- id: "enrich_order",
181
- fields: ["productType", "budget"] as const,
182
- enricher: async (context, data) => {
183
- // Enrich with fields that exist in UnifiedOrderData
184
- const urgentDelivery = data.budget > 1000; // Premium orders get urgent delivery
185
- const preferredColor = data.productType === "laptop" ? "silver" : "black";
186
-
187
- return {
188
- urgentDelivery,
189
- preferredColor,
190
- };
191
- },
192
- });
193
-
194
- // Order collection route with sequential steps
195
- agent.createRoute({
196
- title: "Product Order",
197
- description: "Collect order details and create an order",
198
- // Mixed condition: AI context + programmatic validation
199
- when: [
200
- "user wants to place an order or buy something",
201
- (ctx) => {
202
- const message = ctx.helpers.getLastUserMessage()?.toLowerCase() || '';
203
- return message.includes('order') || message.includes('buy') || message.includes('purchase');
204
- }
205
- ],
206
- // Skip if user already has a pending order
207
- skipIf: [
208
- "user already has an active order",
209
- (ctx) => !!ctx.data?.orderId && !ctx.data?.confirmed
210
- ],
211
- // NEW: Required fields for route completion
212
- requiredFields: ["customerName", "productType", "budget"],
213
- // NEW: Optional fields that enhance the experience
214
- optionalFields: ["preferredColor", "urgentDelivery", "orderId"],
215
- // Sequential steps for order collection
216
- steps: [
217
- {
218
- id: "ask_name",
219
- description: "Ask for customer name",
220
- prompt: "Hi! I'd like to help you place an order. What's your name?",
221
- collect: ["customerName"],
222
- // String-only skipIf for AI context
223
- skipIf: "customer name already provided",
224
- },
225
- {
226
- id: "ask_product",
227
- description: "Ask for product type",
228
- prompt: "What would you like to order? (laptop, phone, or tablet)",
229
- collect: ["productType"],
230
- requires: ["customerName"],
231
- // Function-only skipIf for programmatic check
232
- skipIf: (ctx) => !!ctx.data?.productType,
233
- },
234
- {
235
- id: "ask_budget",
236
- description: "Ask for budget",
237
- prompt: "What's your budget for this purchase?",
238
- collect: ["budget"],
239
- requires: ["customerName", "productType"],
240
- // Mixed skipIf: AI context + programmatic logic
241
- skipIf: [
242
- "budget already specified",
243
- (ctx) => ctx.data?.budget !== undefined
244
- ],
245
- },
246
- {
247
- id: "ask_color",
248
- description: "Ask for preferred color",
249
- prompt: "Do you have a preferred color?",
250
- collect: ["preferredColor"],
251
- requires: ["customerName", "productType", "budget"],
252
- // Function-only skipIf
253
- skipIf: (ctx) => !!ctx.data?.preferredColor,
254
- },
255
- {
256
- id: "ask_urgent",
257
- description: "Ask about urgent delivery",
258
- prompt: "Do you need urgent delivery?",
259
- collect: ["urgentDelivery"],
260
- requires: ["customerName", "productType", "budget"],
261
- // String-only skipIf for simple cases
262
- skipIf: "delivery preference already collected",
263
- },
264
- {
265
- id: "create_order",
266
- description: "Create the order",
267
- prompt: "Great! Let me create your order.",
268
- tools: ["create_order"], // Reference by ID
269
- requires: ["customerName", "productType", "budget"],
270
- },
271
- ],
272
- onComplete: {
273
- nextStep: "Payment Processing",
274
- condition: "Order has been created successfully",
275
- },
276
- });
277
-
278
- // Payment route with sequential steps
279
- agent.createRoute({
280
- title: "Payment Processing",
281
- description: "Process payment for an order",
282
- // Function-only condition for programmatic logic
283
- when: (ctx) => !!ctx.data?.orderId && !ctx.data?.confirmed,
284
- // Skip if payment already processed
285
- skipIf: (ctx) => !!ctx.data?.confirmed,
286
- // NEW: Required fields for route completion
287
- requiredFields: ["orderId", "paymentMethod", "amount"],
288
- // NEW: Optional fields
289
- optionalFields: ["confirmed"],
290
- // Sequential steps for payment processing
291
- steps: [
292
- {
293
- id: "ask_payment_method",
294
- description: "Ask for payment method",
295
- prompt:
296
- "Now let's process payment for your order. What payment method would you prefer?",
297
- collect: ["paymentMethod"],
298
- // Mixed skipIf: AI context + programmatic check
299
- skipIf: [
300
- "payment method already selected",
301
- (ctx) => !!ctx.data?.paymentMethod
302
- ],
303
- },
304
- {
305
- id: "ask_amount",
306
- description: "Ask for payment amount",
307
- prompt: "What's the payment amount?",
308
- collect: ["amount"],
309
- requires: ["paymentMethod"],
310
- // Function-only skipIf
311
- skipIf: (ctx) => ctx.data?.amount !== undefined,
312
- },
313
- {
314
- id: "process_payment",
315
- description: "Process the payment",
316
- prompt: "Processing your payment...",
317
- tools: ["process_payment"], // Reference by ID
318
- requires: ["orderId", "paymentMethod", "amount"],
319
- },
320
- ],
321
- onComplete: "Order Complete", // End conversation when payment is complete
322
- });
323
-
324
- // Demonstration of automatic session management
325
- async function demonstrateSessionManagement() {
326
- console.log("=== Automatic Session Management Demo ===\n");
327
-
328
- // Create agent with automatic session management
329
- const sessionAgent = new Agent<unknown, UnifiedOrderData>({
330
- name: "OrderBot",
331
- description: "A bot that handles multi-step order processing",
332
- provider: new GeminiProvider({
333
- apiKey: process.env.GEMINI_API_KEY!,
334
- model: "models/gemini-2.5-flash",
335
- }),
336
- // NEW: Agent-level schema
337
- schema: orderSchema,
338
- persistence: {
339
- adapter: new MemoryAdapter(),
340
- },
341
- sessionId: "user-alice-123", // Automatically creates/loads this session
342
- });
343
-
344
- // Copy routes to the session agent
345
- agent.getRoutes().forEach(route => {
346
- sessionAgent.createRoute(route.toOptions());
347
- });
348
-
349
- // Turn 1: Start order process - simple message API
350
- console.log("Turn 1: Starting order process");
351
- console.log("User: Hi, I'm Alice and I want to buy a laptop");
352
-
353
- const response1 = await sessionAgent.chat("Hi, I'm Alice and I want to buy a laptop");
354
-
355
- console.log("Bot:", response1.message);
356
- console.log("Session ID:", sessionAgent.session.id);
357
- console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
358
- console.log("History length:", sessionAgent.session.getHistory().length);
359
- console.log();
360
-
361
- // Turn 2: Provide budget - session automatically maintained
362
- console.log("Turn 2: Providing budget");
363
- console.log("User: My budget is $1500");
364
-
365
- const response2 = await sessionAgent.chat("My budget is $1500");
366
-
367
- console.log("Bot:", response2.message);
368
- console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
369
- console.log("History length:", sessionAgent.session.getHistory().length);
370
- console.log();
371
-
372
- // Turn 3: Complete order details - session automatically updated
373
- console.log("Turn 3: Completing order and transitioning to payment");
374
- console.log("User: I want black color and urgent delivery please");
375
-
376
- const response3 = await sessionAgent.chat("I want black color and urgent delivery please");
377
-
378
- console.log("Bot:", response3.message);
379
- console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
380
- console.log("Route complete:", response3.isRouteComplete);
381
- console.log("History length:", sessionAgent.session.getHistory().length);
382
- console.log();
383
-
384
- // Turn 4: Process payment - automatic route transition
385
- console.log("Turn 4: Processing payment in transitioned route");
386
- console.log("User: I'll pay with credit card, amount is $1599");
387
-
388
- const response4 = await sessionAgent.chat("I'll pay with credit card, amount is $1599");
389
-
390
- console.log("Bot:", response4.message);
391
- console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
392
- console.log("Route complete:", response4.isRouteComplete);
393
- console.log("Final history length:", sessionAgent.session.getHistory().length);
394
- }
395
-
396
- // Demonstrate automatic session persistence and restoration
397
- async function demonstrateSessionPersistence() {
398
- console.log("\n=== Automatic Session Persistence Demo ===\n");
399
-
400
- // Create agent with specific sessionId for demonstration
401
- const sessionId = "demo-session-456";
402
- const persistentAgent = new Agent<OrderContext, UnifiedOrderData>({
403
- name: "Order Assistant",
404
- description: "Help customers place orders with automatic persistence",
405
- provider: new GeminiProvider({
406
- apiKey: process.env.GEMINI_API_KEY!,
407
- model: "models/gemini-2.5-flash",
408
- }),
409
- context: {
410
- userId: "user_alice",
411
- userName: "Alice",
412
- isVip: false,
413
- },
414
- // NEW: Agent-level schema
415
- schema: orderSchema,
416
- persistence: {
417
- adapter: new MemoryAdapter(),
418
- autoSave: true, // Automatic persistence
419
- },
420
- sessionId, // Agent automatically loads or creates this session
421
- });
422
-
423
- // Copy routes to the persistent agent
424
- agent.getRoutes().forEach(route => {
425
- persistentAgent.createRoute(route.toOptions());
426
- });
427
-
428
- console.log("Session ready:", persistentAgent.session.id);
429
-
430
- // Start conversation - session automatically managed
431
- const response1 = await persistentAgent.chat("I want to buy a phone for $800");
432
-
433
- console.log("After first interaction:");
434
- console.log("šŸ¤– Agent:", response1.message);
435
- console.log("Session data:", JSON.stringify(persistentAgent.session.getData(), null, 2));
436
- console.log("History length:", persistentAgent.session.getHistory().length);
437
- console.log("Session automatically saved to persistence āœ“");
438
-
439
- // Simulate server restart - create new agent instance with same sessionId
440
- console.log("\nšŸ”„ Simulating server restart - creating new agent instance...");
441
-
442
- const restoredAgent = new Agent<OrderContext, UnifiedOrderData>({
443
- name: "Order Assistant",
444
- provider: new GeminiProvider({
445
- apiKey: process.env.GEMINI_API_KEY!,
446
- model: "models/gemini-2.5-flash",
447
- }),
448
- context: {
449
- userId: "user_alice",
450
- userName: "Alice",
451
- isVip: false,
452
- },
453
- // NEW: Agent-level schema
454
- schema: orderSchema,
455
- persistence: {
456
- adapter: new MemoryAdapter(), // Same adapter instance for demo
457
- autoSave: true,
458
- },
459
- sessionId, // Same sessionId - automatically loads existing session
460
- });
461
-
462
- // Copy routes to the restored agent
463
- agent.getRoutes().forEach(route => {
464
- restoredAgent.createRoute(route.toOptions());
465
- });
466
-
467
- console.log("Session automatically restored:");
468
- console.log("- Session ID:", restoredAgent.session.id);
469
- console.log("- History length:", restoredAgent.session.getHistory().length);
470
- console.log("- Restored data:", JSON.stringify(restoredAgent.session.getData(), null, 2));
471
-
472
- // Continue conversation seamlessly
473
- const response2 = await restoredAgent.chat("Actually, make it urgent delivery");
474
-
475
- console.log("\nAfter continuing with restored session:");
476
- console.log("šŸ¤– Agent:", response2.message);
477
- console.log("Session data:", JSON.stringify(restoredAgent.session.getData(), null, 2));
478
- console.log("History length:", restoredAgent.session.getHistory().length);
479
- console.log("Session automatically saved again āœ“");
480
- }
481
-
482
- // Run demonstrations
483
- async function main() {
484
- try {
485
- await demonstrateSessionManagement();
486
- await demonstrateSessionPersistence();
487
- } catch (error) {
488
- console.error("Error:", error);
489
- }
490
- }
491
-
492
- if (import.meta.url === `file://${process.argv[1]}`) {
493
- main().catch(console.error);
494
- }