@falai/agent 1.2.7 → 2.0.0

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