@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,526 +0,0 @@
1
- /**
2
- * Custom Persistence Adapter Example
3
- *
4
- * This example demonstrates how to create a custom persistence adapter
5
- * that implements the PersistenceAdapter interface. It shows a simple
6
- * in-memory implementation that can be extended to use any database.
7
- *
8
- * Key concepts:
9
- * - Implementing PersistenceAdapter interface
10
- * - SessionRepository and MessageRepository interfaces
11
- * - Custom storage backends (database, file system, etc.)
12
- * - Error handling and data validation
13
- * - Async operations and resource management
14
- */
15
-
16
- import type {
17
- PersistenceAdapter,
18
- SessionRepository,
19
- MessageRepository,
20
- SessionData,
21
- MessageData,
22
- SessionStatus,
23
- CollectedStateData,
24
- } from "../../src/types";
25
- import { Agent, GeminiProvider, createSessionId } from "../../src";
26
-
27
- /**
28
- * Simple in-memory storage for demonstration
29
- * In a real implementation, this would be replaced with database calls
30
- */
31
- class InMemoryStorage {
32
- private sessions = new Map<string, SessionData>();
33
- private messages = new Map<string, MessageData>();
34
- private sessionMessages = new Map<string, string[]>(); // sessionId -> messageIds
35
-
36
- // Session operations
37
- createSession(
38
- data: Omit<SessionData, "createdAt" | "updatedAt"> & {
39
- id?: string;
40
- }
41
- ): SessionData {
42
- const id =
43
- data.id || createSessionId();
44
- const session: SessionData = {
45
- ...data,
46
- id,
47
- createdAt: new Date(),
48
- updatedAt: new Date(),
49
- };
50
- this.sessions.set(id, session);
51
- return session;
52
- }
53
-
54
- getSession(id: string): SessionData | null {
55
- return this.sessions.get(id) || null;
56
- }
57
-
58
- getSessionsByUserId(userId: string): SessionData[] {
59
- return Array.from(this.sessions.values()).filter(
60
- (s) => s.userId === userId
61
- );
62
- }
63
-
64
- updateSession(id: string, updates: Partial<SessionData>): SessionData | null {
65
- const existing = this.sessions.get(id);
66
- if (!existing) return null;
67
-
68
- const updated = {
69
- ...existing,
70
- ...updates,
71
- updatedAt: new Date(),
72
- };
73
- this.sessions.set(id, updated);
74
- return updated;
75
- }
76
-
77
- updateSessionStatus(
78
- id: string,
79
- status: SessionStatus,
80
- completedAt?: Date
81
- ): SessionData | null {
82
- const existing = this.sessions.get(id);
83
- if (!existing) return null;
84
-
85
- const updated = {
86
- ...existing,
87
- status,
88
- completedAt:
89
- status === "completed"
90
- ? completedAt || new Date()
91
- : existing.completedAt,
92
- updatedAt: new Date(),
93
- };
94
- this.sessions.set(id, updated);
95
- return updated;
96
- }
97
-
98
- updateCollectedData(
99
- id: string,
100
- collectedData: CollectedStateData<Record<string, unknown>>
101
- ): SessionData<Record<string, unknown>> | null {
102
- const existing = this.sessions.get(id);
103
- if (!existing) return null;
104
-
105
- const updated: SessionData<Record<string, unknown>> = {
106
- ...existing,
107
- collectedData: {
108
- ...(existing.collectedData || {}),
109
- ...collectedData,
110
- },
111
- updatedAt: new Date(),
112
- };
113
- this.sessions.set(id, updated);
114
- return updated;
115
- }
116
-
117
- updateRouteStep(
118
- id: string,
119
- route?: string,
120
- step?: string
121
- ): SessionData | null {
122
- const existing = this.sessions.get(id);
123
- if (!existing) return null;
124
-
125
- const updated = {
126
- ...existing,
127
- currentRoute: route,
128
- currentStep: step,
129
- updatedAt: new Date(),
130
- };
131
- this.sessions.set(id, updated);
132
- return updated;
133
- }
134
-
135
- incrementMessageCount(id: string): SessionData | null {
136
- const existing = this.sessions.get(id);
137
- if (!existing) return null;
138
-
139
- const updated = {
140
- ...existing,
141
- messageCount: (existing.messageCount || 0) + 1,
142
- lastMessageAt: new Date(),
143
- updatedAt: new Date(),
144
- };
145
- this.sessions.set(id, updated);
146
- return updated;
147
- }
148
-
149
- deleteSession(id: string): boolean {
150
- return this.sessions.delete(id);
151
- }
152
-
153
- // Message operations
154
- createMessage(data: Omit<MessageData, "id" | "createdAt">): MessageData {
155
- const id = `msg_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
156
- const message: MessageData = {
157
- ...data,
158
- id,
159
- createdAt: new Date(),
160
- };
161
- this.messages.set(id, message);
162
-
163
- // Track messages by session
164
- const sessionMessages = this.sessionMessages.get(data.sessionId) || [];
165
- sessionMessages.push(id);
166
- this.sessionMessages.set(data.sessionId, sessionMessages);
167
-
168
- return message;
169
- }
170
-
171
- getMessage(id: string): MessageData | null {
172
- return this.messages.get(id) || null;
173
- }
174
-
175
- getMessagesBySessionId(sessionId: string): MessageData[] {
176
- const messageIds = this.sessionMessages.get(sessionId) || [];
177
- return messageIds
178
- .map((id) => this.messages.get(id))
179
- .filter((msg): msg is MessageData => msg !== undefined)
180
- .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());
181
- }
182
-
183
- getMessagesByUserId(userId: string): MessageData[] {
184
- return Array.from(this.messages.values())
185
- .filter((msg) => msg.userId === userId)
186
- .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());
187
- }
188
-
189
- deleteMessage(id: string): boolean {
190
- const message = this.messages.get(id);
191
- if (!message) return false;
192
-
193
- this.messages.delete(id);
194
-
195
- // Remove from session tracking
196
- const sessionMessages = this.sessionMessages.get(message.sessionId) || [];
197
- const filtered = sessionMessages.filter((msgId) => msgId !== id);
198
- if (filtered.length === 0) {
199
- this.sessionMessages.delete(message.sessionId);
200
- } else {
201
- this.sessionMessages.set(message.sessionId, filtered);
202
- }
203
-
204
- return true;
205
- }
206
-
207
- deleteMessagesBySessionId(sessionId: string): number {
208
- const messageIds = this.sessionMessages.get(sessionId) || [];
209
- let deletedCount = 0;
210
-
211
- for (const messageId of messageIds) {
212
- if (this.messages.delete(messageId)) {
213
- deletedCount++;
214
- }
215
- }
216
-
217
- this.sessionMessages.delete(sessionId);
218
- return deletedCount;
219
- }
220
-
221
- deleteMessagesByUserId(userId: string): number {
222
- const messagesToDelete = Array.from(this.messages.values()).filter(
223
- (msg) => msg.userId === userId
224
- );
225
-
226
- let deletedCount = 0;
227
- for (const message of messagesToDelete) {
228
- if (this.messages.delete(message.id)) {
229
- // Remove from session tracking
230
- const sessionMessages =
231
- this.sessionMessages.get(message.sessionId) || [];
232
- const filtered = sessionMessages.filter(
233
- (msgId) => msgId !== message.id
234
- );
235
- if (filtered.length === 0) {
236
- this.sessionMessages.delete(message.sessionId);
237
- } else {
238
- this.sessionMessages.set(message.sessionId, filtered);
239
- }
240
- deletedCount++;
241
- }
242
- }
243
-
244
- return deletedCount;
245
- }
246
- }
247
-
248
- /**
249
- * Custom Session Repository implementation
250
- */
251
- class CustomSessionRepository<TData = Record<string, unknown>>
252
- implements SessionRepository<TData> {
253
- constructor(private storage: InMemoryStorage) { }
254
-
255
- async create(
256
- data: Omit<SessionData<TData>, "createdAt" | "updatedAt"> & {
257
- id?: string;
258
- }
259
- ): Promise<SessionData<TData>> {
260
- return Promise.resolve(
261
- this.storage.createSession({
262
- ...data,
263
- id:
264
- data.id ||
265
- createSessionId(),
266
- }) as SessionData<TData>
267
- );
268
- }
269
-
270
- async findById(id: string): Promise<SessionData<TData> | null> {
271
- return Promise.resolve(
272
- this.storage.getSession(id) as SessionData<TData> | null
273
- );
274
- }
275
-
276
- async findActiveByUserId(userId: string): Promise<SessionData<TData> | null> {
277
- const sessions = this.storage.getSessionsByUserId(userId);
278
- return Promise.resolve(
279
- (sessions.find((s) => s.status === "active") as SessionData<TData>) ||
280
- null
281
- );
282
- }
283
-
284
- async findByUserId(
285
- userId: string,
286
- limit = 50
287
- ): Promise<SessionData<TData>[]> {
288
- const sessions = this.storage.getSessionsByUserId(userId);
289
- return Promise.resolve(
290
- sessions
291
- .sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime())
292
- .slice(0, limit) as SessionData<TData>[]
293
- );
294
- }
295
-
296
- async update(
297
- id: string,
298
- data: Partial<Omit<SessionData<TData>, "id" | "createdAt">>
299
- ): Promise<SessionData<TData> | null> {
300
- return Promise.resolve(
301
- this.storage.updateSession(id, data) as SessionData<TData> | null
302
- );
303
- }
304
-
305
- async updateStatus(
306
- id: string,
307
- status: SessionStatus,
308
- completedAt?: Date
309
- ): Promise<SessionData<TData> | null> {
310
- return Promise.resolve(
311
- this.storage.updateSessionStatus(
312
- id,
313
- status,
314
- completedAt
315
- ) as SessionData<TData> | null
316
- );
317
- }
318
-
319
- async updateCollectedData(
320
- id: string,
321
- collectedData: CollectedStateData<TData>
322
- ): Promise<SessionData<TData> | null> {
323
- return Promise.resolve(
324
- this.storage.updateCollectedData(
325
- id,
326
- collectedData
327
- ) as SessionData<TData> | null
328
- );
329
- }
330
-
331
- async updateRouteStep(
332
- id: string,
333
- route?: string,
334
- step?: string
335
- ): Promise<SessionData<TData> | null> {
336
- return Promise.resolve(
337
- this.storage.updateRouteStep(id, route, step) as SessionData<TData> | null
338
- );
339
- }
340
-
341
- async incrementMessageCount(id: string): Promise<SessionData<TData> | null> {
342
- return Promise.resolve(
343
- this.storage.incrementMessageCount(id) as SessionData<TData> | null
344
- );
345
- }
346
-
347
- async delete(id: string): Promise<boolean> {
348
- return Promise.resolve(this.storage.deleteSession(id));
349
- }
350
- }
351
-
352
- /**
353
- * Custom Message Repository implementation
354
- */
355
- class CustomMessageRepository implements MessageRepository {
356
- constructor(private storage: InMemoryStorage) { }
357
-
358
- async create(
359
- data: Omit<MessageData, "id" | "createdAt">
360
- ): Promise<MessageData> {
361
- return Promise.resolve(this.storage.createMessage(data));
362
- }
363
-
364
- async findById(id: string): Promise<MessageData | null> {
365
- return Promise.resolve(this.storage.getMessage(id));
366
- }
367
-
368
- async findBySessionId(
369
- sessionId: string,
370
- limit = 100
371
- ): Promise<MessageData[]> {
372
- const messages = this.storage.getMessagesBySessionId(sessionId);
373
- return Promise.resolve(messages.slice(-limit)); // Get most recent messages
374
- }
375
-
376
- async findByUserId(userId: string, limit = 100): Promise<MessageData[]> {
377
- const messages = this.storage.getMessagesByUserId(userId);
378
- return Promise.resolve(messages.slice(-limit)); // Get most recent messages
379
- }
380
-
381
- async delete(id: string): Promise<boolean> {
382
- return Promise.resolve(this.storage.deleteMessage(id));
383
- }
384
-
385
- async deleteBySessionId(sessionId: string): Promise<number> {
386
- return Promise.resolve(this.storage.deleteMessagesBySessionId(sessionId));
387
- }
388
-
389
- async deleteByUserId(userId: string): Promise<number> {
390
- return Promise.resolve(this.storage.deleteMessagesByUserId(userId));
391
- }
392
- }
393
-
394
- /**
395
- * Custom Persistence Adapter
396
- *
397
- * This adapter demonstrates how to implement a custom persistence layer.
398
- * Replace the InMemoryStorage with actual database calls for production use.
399
- */
400
- export class CustomAdapter<TData = Record<string, unknown>> implements PersistenceAdapter<TData> {
401
- private storage = new InMemoryStorage();
402
-
403
- readonly sessionRepository: SessionRepository<TData>;
404
- readonly messageRepository: MessageRepository;
405
-
406
- constructor() {
407
- this.sessionRepository = new CustomSessionRepository<TData>(this.storage);
408
- this.messageRepository = new CustomMessageRepository(this.storage);
409
- }
410
-
411
- /**
412
- * Initialize the adapter (create tables, indexes, etc.)
413
- */
414
- async initialize(): Promise<void> {
415
- console.log("šŸ”§ Initializing CustomAdapter...");
416
- // In a real implementation, you might:
417
- // - Create database tables
418
- // - Set up indexes
419
- // - Run migrations
420
- // - Establish database connections
421
-
422
- // For this demo, we just log
423
- console.log("āœ… CustomAdapter initialized");
424
- return Promise.resolve();
425
- }
426
-
427
- /**
428
- * Disconnect/cleanup resources
429
- */
430
- async disconnect(): Promise<void> {
431
- console.log("šŸ”Œ Disconnecting CustomAdapter...");
432
- // In a real implementation, you might:
433
- // - Close database connections
434
- // - Clean up resources
435
- // - Flush pending writes
436
-
437
- console.log("āœ… CustomAdapter disconnected");
438
- return Promise.resolve();
439
- }
440
- }
441
-
442
- // ==============================================================================
443
- // USAGE EXAMPLE
444
- // ==============================================================================
445
-
446
- /**
447
- * Example: Using Custom Adapter with Agent
448
- */
449
- async function demonstrateCustomAdapter() {
450
- console.log("šŸ—„ļø Custom Persistence Adapter Demo");
451
- console.log("=".repeat(50));
452
-
453
- // Create custom adapter
454
- const adapter = new CustomAdapter();
455
-
456
- // Initialize adapter
457
- await adapter.initialize();
458
-
459
- // Create agent with custom persistence
460
- const agent = new Agent({
461
- name: "CustomPersistenceAgent",
462
- description: "Agent with custom persistence adapter",
463
- provider: new GeminiProvider({
464
- apiKey: process.env.GEMINI_API_KEY || "demo-key",
465
- model: "models/gemini-2.5-flash",
466
- }),
467
- persistence: {
468
- adapter,
469
- // Optional: configure auto-save behavior
470
- autoSave: true, // Auto-saves session step after each response
471
- },
472
- });
473
-
474
- // Session is automatically managed by the agent
475
- console.log("✨ Session ready:", agent.session.id);
476
-
477
- // First interaction
478
- console.log("\nšŸ’¬ First interaction:");
479
-
480
- await agent.session.addMessage("user", "Hi, I need help booking a flight", "Alice");
481
-
482
- const response1 = await agent.respond({
483
- history: agent.session.getHistory(),
484
- });
485
-
486
- console.log(`Agent: ${response1.message}`);
487
- console.log(`Session ID: ${agent.session.id}`);
488
-
489
- await agent.session.addMessage("assistant", response1.message);
490
-
491
- // Second interaction
492
- console.log("\nšŸ’¬ Second interaction:");
493
-
494
- await agent.session.addMessage("user", "I want to fly to Paris next week", "Alice");
495
-
496
- const response2 = await agent.respond({
497
- history: agent.session.getHistory(),
498
- });
499
-
500
- console.log(`Agent: ${response2.message}`);
501
-
502
- // Check persistence
503
- console.log("\nšŸ’¾ Checking persistence:");
504
- if (response2.session?.id) {
505
- const savedSession = await adapter.sessionRepository.findById(
506
- response2.session.id
507
- );
508
- const messages = await adapter.messageRepository.findBySessionId(
509
- response2.session.id
510
- );
511
-
512
- console.log(`Saved session: ${savedSession?.id}`);
513
- console.log(`Messages in session: ${messages.length}`);
514
- console.log(`Session status: ${savedSession?.status}`);
515
- }
516
-
517
- // Clean up
518
- await adapter.disconnect();
519
-
520
- console.log("\nāœ… Demo complete!");
521
- }
522
-
523
- // Run the demo
524
- if (import.meta.url === `file://${process.argv[1]}`) {
525
- demonstrateCustomAdapter().catch(console.error);
526
- }