@falai/agent 1.2.7 → 2.0.0

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