@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,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
- }