@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,495 +0,0 @@
1
- /**
2
- * Memory Session Management Example
3
- *
4
- * This example demonstrates how to use in-memory session management for
5
- * conversational agents. Shows session creation, persistence, restoration,
6
- * and management without external databases.
7
- *
8
- * Key concepts:
9
- * - In-memory session storage
10
- * - Session lifecycle management
11
- * - Session restoration
12
- * - Multi-user session handling
13
- * - Session metadata
14
- * - Automatic cleanup
15
- */
16
-
17
- import {
18
- Agent,
19
- GeminiProvider,
20
- MemoryAdapter,
21
- type Tool,
22
- } from "../../src/index";
23
-
24
- // Define data types
25
- interface SupportTicketData {
26
- issue: string;
27
- category: "technical" | "billing" | "account" | "general";
28
- priority: "low" | "medium" | "high";
29
- status: "open" | "in_progress" | "resolved";
30
- ticketId?: string;
31
- assignedAgent?: string;
32
- }
33
-
34
- interface SupportContext {
35
- userId: string;
36
- userName: string;
37
- userTier: "standard" | "premium" | "enterprise";
38
- }
39
-
40
- // Support tools
41
- const createTicket: Tool<unknown, SupportTicketData> = {
42
- id: "create_support_ticket",
43
- description: "Create a new support ticket",
44
- parameters: {
45
- type: "object",
46
- properties: {},
47
- },
48
- handler: (context, args) => {
49
- const ticketData = context.data;
50
- const ticketId = `TICKET-${Date.now()}`;
51
- console.log(
52
- `Creating ticket ${ticketId} for ${ticketData?.category} issue`
53
- );
54
-
55
- return {
56
- data: `Support ticket ${ticketId} created successfully.`,
57
- dataUpdate: {
58
- ticketId,
59
- status: "open" as const,
60
- },
61
- };
62
- },
63
- };
64
-
65
- // Define support ticket schema
66
- const supportTicketSchema = {
67
- type: "object",
68
- properties: {
69
- issue: { type: "string" },
70
- category: {
71
- type: "string",
72
- enum: ["technical", "billing", "account", "general"],
73
- },
74
- priority: { type: "string", enum: ["low", "medium", "high"] },
75
- status: { type: "string", enum: ["open", "in_progress", "resolved"] },
76
- ticketId: { type: "string" },
77
- assignedAgent: { type: "string" },
78
- },
79
- required: ["issue"],
80
- };
81
-
82
- // Create agent with memory persistence
83
- const agent = new Agent<unknown, SupportTicketData>({
84
- name: "SupportBot",
85
- description: "A support agent with memory-based session management",
86
- provider: new GeminiProvider({
87
- apiKey: process.env.GEMINI_API_KEY!,
88
- model: "models/gemini-2.5-flash",
89
- }),
90
- // NEW: Agent-level schema
91
- schema: supportTicketSchema,
92
- persistence: {
93
- adapter: new MemoryAdapter(),
94
- },
95
- });
96
-
97
- // Create support route with sequential steps
98
- const supportRoute = agent.createRoute({
99
- title: "Customer Support",
100
- description: "Handle customer support requests with session persistence",
101
- // NEW: Required fields for route completion
102
- requiredFields: ["issue"],
103
- // NEW: Optional fields that enhance the experience
104
- optionalFields: ["category", "priority", "status", "ticketId", "assignedAgent"],
105
- // Sequential steps for support ticket creation
106
- steps: [
107
- {
108
- id: "ask_issue",
109
- description: "Ask for the issue description",
110
- prompt:
111
- "Hi! I'm here to help with your support request. What's the issue you're experiencing?",
112
- collect: ["issue"],
113
- skipIf: (ctx) => !!ctx.data?.issue,
114
- },
115
- {
116
- id: "ask_category",
117
- description: "Ask for issue category",
118
- prompt:
119
- "What category does this issue fall under? (technical, billing, account, or general)",
120
- collect: ["category"],
121
- requires: ["issue"],
122
- skipIf: (ctx) => !!ctx.data?.category,
123
- },
124
- {
125
- id: "ask_priority",
126
- description: "Ask for priority level",
127
- prompt:
128
- "How would you rate the priority of this issue? (low, medium, or high)",
129
- collect: ["priority"],
130
- requires: ["issue", "category"],
131
- skipIf: (ctx) => !!ctx.data?.priority,
132
- },
133
- {
134
- id: "create_ticket",
135
- description: "Create the support ticket",
136
- prompt: "I'll create a support ticket for you now.",
137
- tools: [createTicket],
138
- requires: ["issue", "category"],
139
- },
140
- ],
141
- });
142
-
143
- // Demonstrate session management
144
- async function demonstrateSessionBasics() {
145
- console.log("=== Memory Session Basics Demo ===\n");
146
-
147
- // Create agent with specific sessionId
148
- const sessionId = "session-user-123";
149
- const sessionAgent = new Agent<SupportContext, SupportTicketData>({
150
- name: "Support Assistant",
151
- description: "Help users with technical issues",
152
- provider: new GeminiProvider({
153
- apiKey: process.env.GEMINI_API_KEY!,
154
- model: "models/gemini-2.5-flash",
155
- }),
156
- context: {
157
- userId: "user_123",
158
- userName: "Alice",
159
- userTier: "premium",
160
- },
161
- // NEW: Agent-level schema
162
- schema: supportTicketSchema,
163
- persistence: {
164
- adapter: new MemoryAdapter(),
165
- autoSave: true,
166
- },
167
- sessionId, // Agent will create or load this session
168
- });
169
-
170
- // Create the same route on the new agent
171
- sessionAgent.createRoute({
172
- title: "Customer Support",
173
- description: "Handle customer support requests with session persistence",
174
- // NEW: Required fields for route completion
175
- requiredFields: ["issue"],
176
- // NEW: Optional fields that enhance the experience
177
- optionalFields: ["category", "priority", "status", "ticketId", "assignedAgent"],
178
- });
179
-
180
- console.log("Session ready:", sessionAgent.session.id);
181
-
182
- // Use the session in conversation
183
- console.log("\nUser: I can't access my account");
184
-
185
- await sessionAgent.session.addMessage("user", "I can't access my account", "Alice");
186
-
187
- const response1 = await sessionAgent.respond({
188
- history: sessionAgent.session.getHistory(),
189
- });
190
-
191
- console.log("Bot:", response1.message);
192
- console.log(
193
- "Session data:",
194
- JSON.stringify(sessionAgent.session.getData(), null, 2)
195
- );
196
-
197
- await sessionAgent.session.addMessage("assistant", response1.message);
198
-
199
- // Continue the conversation with the returned session
200
- console.log("\nUser: It's a technical issue, high priority");
201
- const response2 = await agent.respond({
202
- history: [
203
- {
204
- role: "user" as const,
205
- content: "I can't access my account",
206
- name: "Alice",
207
- },
208
- {
209
- role: "assistant" as const,
210
- content: response1.message,
211
- },
212
- {
213
- role: "user" as const,
214
- content: "It's a technical issue, high priority",
215
- name: "Alice",
216
- },
217
- ],
218
- session: response1.session,
219
- });
220
-
221
- console.log("Bot:", response2.message);
222
- console.log(
223
- "Updated session data:",
224
- JSON.stringify(response2.session?.data, null, 2)
225
- );
226
- console.log("Session complete:", response2.isRouteComplete);
227
- }
228
-
229
- // Demonstrate session persistence and restoration
230
- async function demonstrateSessionPersistence() {
231
- console.log("\n=== Session Persistence Demo ===\n");
232
-
233
- // Start a conversation
234
- const userId = "user_alice";
235
- console.log(`Starting conversation for user: ${userId}`);
236
-
237
- const response1 = await agent.respond({
238
- history: [
239
- {
240
- role: "user" as const,
241
- content: "I have a billing question",
242
- name: "Alice",
243
- },
244
- ],
245
- });
246
-
247
- console.log("First response - Session ID:", response1.session?.id);
248
- console.log(
249
- "Data collected:",
250
- JSON.stringify(response1.session?.data, null, 2)
251
- );
252
-
253
- // Simulate persistence (in real usage, this happens automatically)
254
- if (agent.hasPersistence() && response1.session?.id) {
255
- console.log("💾 Session auto-saved to memory");
256
-
257
- // Manually trigger save (normally automatic)
258
- await agent
259
- .getPersistenceManager()
260
- ?.saveSessionState(response1.session.id, response1.session);
261
- }
262
-
263
- // Continue conversation
264
- const response2 = await agent.respond({
265
- history: [
266
- {
267
- role: "user" as const,
268
- content: "I have a billing question",
269
- name: "Alice",
270
- },
271
- {
272
- role: "assistant" as const,
273
- content: response1.message,
274
- },
275
- {
276
- role: "user" as const,
277
- content: "My account is ACC-456",
278
- name: "Alice",
279
- },
280
- ],
281
- session: response1.session,
282
- });
283
-
284
- console.log("\nContinued conversation:");
285
- console.log(
286
- "Data collected:",
287
- JSON.stringify(response2.session?.data, null, 2)
288
- );
289
-
290
- // Demonstrate session restoration
291
- console.log("\n🔄 Simulating session restoration (e.g., user returns later)");
292
- if (response2.session?.id) {
293
- const restoredSession = await agent
294
- .getPersistenceManager()
295
- ?.loadSessionState(response2.session.id);
296
-
297
- console.log(
298
- "Restored session data:",
299
- JSON.stringify(restoredSession?.data, null, 2)
300
- );
301
- console.log("Session metadata preserved:", !!restoredSession?.metadata);
302
- }
303
- }
304
-
305
- // Demonstrate multi-user session management
306
- async function demonstrateMultiUserSessions() {
307
- console.log("\n=== Multi-User Session Management Demo ===\n");
308
-
309
- // Simulate multiple users having concurrent conversations
310
- const users = [
311
- { id: "user_001", name: "Alice", issue: "Login problems" },
312
- { id: "user_002", name: "Bob", issue: "Billing dispute" },
313
- { id: "user_003", name: "Charlie", issue: "Account settings" },
314
- ];
315
-
316
- console.log("Managing concurrent sessions for multiple users...");
317
-
318
- for (const user of users) {
319
- console.log(`\n👤 Handling ${user.name}'s session (${user.id}):`);
320
-
321
- const response = await agent.respond({
322
- history: [
323
- {
324
- role: "user" as const,
325
- content: user.issue,
326
- name: user.name,
327
- },
328
- ],
329
- });
330
-
331
- console.log(` Session ID: ${response.session?.id}`);
332
- console.log(
333
- ` Issue recorded: ${(response.session?.data as Partial<SupportTicketData>)?.issue
334
- }`
335
- );
336
- }
337
-
338
- // Show all active sessions
339
- console.log("\n📊 Active Sessions Summary:");
340
- try {
341
- const manager = agent.getPersistenceManager();
342
- if (manager) {
343
- for (const user of users) {
344
- const sessions = await manager.getUserSessions(user.id);
345
- console.log(` ${user.name}: ${sessions.length} active session(s)`);
346
- }
347
- }
348
- } catch (error) {
349
- console.error("Error:", error);
350
- console.log(
351
- " Could not retrieve session summary (normal for memory adapter)"
352
- );
353
- }
354
- }
355
-
356
- // Demonstrate session lifecycle
357
- async function demonstrateSessionLifecycle() {
358
- console.log("\n=== Session Lifecycle Demo ===\n");
359
-
360
- // 1. Create agent with session
361
- console.log("1. 🆕 Creating new session");
362
- const sessionId = `lifecycle-demo-${Date.now()}`;
363
-
364
- const lifecycleAgent = new Agent<SupportContext, SupportTicketData>({
365
- name: "Support Assistant",
366
- provider: new GeminiProvider({
367
- apiKey: process.env.GEMINI_API_KEY!,
368
- model: "models/gemini-2.5-flash",
369
- }),
370
- context: {
371
- userId: "demo_user",
372
- userName: "Demo",
373
- userTier: "standard",
374
- },
375
- // NEW: Agent-level schema
376
- schema: supportTicketSchema,
377
- persistence: {
378
- adapter: new MemoryAdapter(),
379
- autoSave: true,
380
- },
381
- sessionId,
382
- });
383
-
384
- // Create the same route on the lifecycle agent
385
- lifecycleAgent.createRoute({
386
- title: "Customer Support",
387
- description: "Handle customer support requests with session persistence",
388
- // NEW: Required fields for route completion
389
- requiredFields: ["issue"],
390
- // NEW: Optional fields that enhance the experience
391
- optionalFields: ["category", "priority", "status", "ticketId", "assignedAgent"],
392
- });
393
-
394
- console.log(` Created session: ${lifecycleAgent.session.id}`);
395
-
396
- // 2. Use session in conversation
397
- console.log("\n2. 💬 Using session in conversation");
398
-
399
- await lifecycleAgent.session.addMessage("user", "I need help with something", "Demo");
400
-
401
- const response1 = await lifecycleAgent.respond({
402
- history: lifecycleAgent.session.getHistory(),
403
- });
404
-
405
- console.log(` Session data: ${JSON.stringify(lifecycleAgent.session.getData())}`);
406
-
407
- await lifecycleAgent.session.addMessage("assistant", response1.message);
408
-
409
- // 3. Complete the session
410
- console.log("\n3. ✅ Completing session");
411
- const response2 = await agent.respond({
412
- history: [
413
- {
414
- role: "user" as const,
415
- content: "I need help with something",
416
- name: "Demo",
417
- },
418
- {
419
- role: "assistant" as const,
420
- content: response1.message,
421
- },
422
- {
423
- role: "user" as const,
424
- content: "It's a general inquiry",
425
- name: "Demo",
426
- },
427
- ],
428
- session: response1.session,
429
- });
430
-
431
- console.log(` Session completed: ${response2.isRouteComplete}`);
432
- console.log(` Final data: ${JSON.stringify(response2.session?.data)}`);
433
-
434
- // 4. Clean up (optional - memory adapter doesn't need this)
435
- console.log("\n4. 🗑️ Session lifecycle complete");
436
- console.log(" (Memory sessions are automatically managed)");
437
- }
438
-
439
- // Show memory adapter characteristics
440
- function demonstrateMemoryAdapter() {
441
- console.log("\n=== Memory Adapter Characteristics ===\n");
442
-
443
- console.log("MemoryAdapter features:");
444
- console.log("✅ Fast - No disk I/O or network calls");
445
- console.log("✅ Simple - No external dependencies");
446
- console.log("✅ Ephemeral - Data lost on process restart");
447
- console.log("✅ Concurrent - Supports multiple users");
448
- console.log("✅ Automatic - No manual session management needed");
449
-
450
- console.log("\nUse cases:");
451
- console.log("• Development and testing");
452
- console.log("• Short-lived conversations");
453
- console.log("• Prototyping new features");
454
- console.log("• CI/CD environments");
455
- console.log("• Applications where persistence isn't critical");
456
-
457
- console.log("\nWhen to use external persistence:");
458
- console.log("• Production applications");
459
- console.log("• Long-running conversations");
460
- console.log("• Multi-server deployments");
461
- console.log("• Data recovery requirements");
462
- console.log("• Analytics and reporting needs");
463
-
464
- console.log("\nCode example:");
465
- console.log(
466
- `
467
- import { Agent, MemoryAdapter } from "@falai/agent";
468
-
469
- const agent = new Agent({
470
- // ... other config
471
- persistence: {
472
- adapter: new MemoryAdapter(),
473
- // autoSave: true (default)
474
- },
475
- });
476
- `.trim()
477
- );
478
- }
479
-
480
- // Run demonstrations
481
- async function main() {
482
- try {
483
- demonstrateMemoryAdapter();
484
- await demonstrateSessionBasics();
485
- await demonstrateSessionPersistence();
486
- await demonstrateMultiUserSessions();
487
- await demonstrateSessionLifecycle();
488
- } catch (error) {
489
- console.error("Error:", error);
490
- }
491
- }
492
-
493
- if (import.meta.url === `file://${process.argv[1]}`) {
494
- main().catch(console.error);
495
- }
@@ -1,74 +0,0 @@
1
- // This is an example Prisma schema file for @falai/agent persistence
2
- // Copy and adapt this to your needs
3
-
4
- datasource db {
5
- provider = "postgresql" // or "mysql", "sqlite", "sqlserver", "mongodb"
6
- url = env("DATABASE_URL")
7
- }
8
-
9
- generator client {
10
- provider = "prisma-client-js"
11
- }
12
-
13
- // Agent Session model
14
- // Stores conversation session step
15
- model AgentSession {
16
- id String @id @default(cuid())
17
- userId String? @map("user_id")
18
- agentName String? @map("agent_name")
19
- status String @default("active") // "active" | "completed" | "abandoned"
20
- currentRoute String? @map("current_route")
21
- currentStep String? @map("current_step")
22
- collectedData Json? @map("collected_data")
23
- messageCount Int @default(0) @map("message_count")
24
- lastMessageAt DateTime? @map("last_message_at")
25
- completedAt DateTime? @map("completed_at")
26
- createdAt DateTime @default(now()) @map("created_at")
27
- updatedAt DateTime @updatedAt @map("updated_at")
28
-
29
- // Relations
30
- messages AgentMessage[]
31
-
32
- @@index([userId])
33
- @@index([status])
34
- @@index([userId, status])
35
- @@map("agent_sessions")
36
- }
37
-
38
- // Agent Message model
39
- // Stores individual messages in a conversation
40
- model AgentMessage {
41
- id String @id @default(cuid())
42
- sessionId String @map("session_id")
43
- userId String? @map("user_id")
44
- role String // "user" | "assistant" | "agent" | "system"
45
- content String @db.Text
46
- route String?
47
- step String?
48
- toolCalls Json? @map("tool_calls")
49
- event Json? // Optional: store full event data
50
- createdAt DateTime @default(now()) @map("created_at")
51
-
52
- // Relations
53
- session AgentSession @relation(fields: [sessionId], references: [id], onDelete: Cascade)
54
-
55
- @@index([sessionId])
56
- @@index([userId])
57
- @@index([sessionId, createdAt])
58
- @@map("agent_messages")
59
- }
60
-
61
- // Alternative: If you want different table names, you can customize:
62
- //
63
- // model ConversationSession {
64
- // id String @id @default(cuid())
65
- // ...
66
- // @@map("conversations")
67
- // }
68
- //
69
- // model ChatMessage {
70
- // id String @id @default(cuid())
71
- // ...
72
- // @@map("chat_messages")
73
- // }
74
-