@falai/agent 0.8.0 → 0.9.0-alpha-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 (654) hide show
  1. package/README.md +306 -133
  2. package/dist/{adapters → cjs/src/adapters}/MemoryAdapter.d.ts +4 -4
  3. package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +1 -0
  4. package/dist/cjs/{adapters → src/adapters}/MemoryAdapter.js +41 -21
  5. package/dist/cjs/src/adapters/MemoryAdapter.js.map +1 -0
  6. package/dist/{adapters → cjs/src/adapters}/MongoAdapter.d.ts +3 -3
  7. package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +1 -0
  8. package/dist/cjs/{adapters → src/adapters}/MongoAdapter.js +2 -1
  9. package/dist/cjs/src/adapters/MongoAdapter.js.map +1 -0
  10. package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
  11. package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
  12. package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
  13. package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +1 -0
  14. package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
  15. package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  16. package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
  17. package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +1 -0
  18. package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
  19. package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +1 -0
  20. package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.js +35 -5
  21. package/dist/cjs/src/adapters/PrismaAdapter.js.map +1 -0
  22. package/dist/cjs/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
  23. package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +1 -0
  24. package/dist/cjs/{adapters → src/adapters}/RedisAdapter.js +3 -2
  25. package/dist/cjs/src/adapters/RedisAdapter.js.map +1 -0
  26. package/dist/{adapters → cjs/src/adapters}/SQLiteAdapter.d.ts +3 -3
  27. package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +1 -0
  28. package/dist/cjs/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
  29. package/dist/cjs/src/adapters/SQLiteAdapter.js.map +1 -0
  30. package/dist/cjs/src/adapters/index.d.ts.map +1 -0
  31. package/dist/cjs/src/adapters/index.js.map +1 -0
  32. package/dist/cjs/src/constants/index.d.ts.map +1 -0
  33. package/dist/cjs/src/constants/index.js.map +1 -0
  34. package/dist/{core → cjs/src/core}/Agent.d.ts +67 -69
  35. package/dist/cjs/src/core/Agent.d.ts.map +1 -0
  36. package/dist/cjs/src/core/Agent.js +1433 -0
  37. package/dist/cjs/src/core/Agent.js.map +1 -0
  38. package/dist/cjs/src/core/Events.d.ts +26 -0
  39. package/dist/cjs/src/core/Events.d.ts.map +1 -0
  40. package/dist/cjs/src/core/Events.js +144 -0
  41. package/dist/cjs/src/core/Events.js.map +1 -0
  42. package/dist/cjs/src/core/PersistenceManager.d.ts +98 -0
  43. package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
  44. package/dist/cjs/{core → src/core}/PersistenceManager.js +62 -32
  45. package/dist/cjs/src/core/PersistenceManager.js.map +1 -0
  46. package/dist/cjs/src/core/PromptComposer.d.ts +27 -0
  47. package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -0
  48. package/dist/cjs/src/core/PromptComposer.js +157 -0
  49. package/dist/cjs/src/core/PromptComposer.js.map +1 -0
  50. package/dist/cjs/src/core/ResponseEngine.d.ts +31 -0
  51. package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -0
  52. package/dist/cjs/src/core/ResponseEngine.js +84 -0
  53. package/dist/cjs/src/core/ResponseEngine.js.map +1 -0
  54. package/dist/cjs/src/core/ResponsePipeline.d.ts +143 -0
  55. package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
  56. package/dist/cjs/src/core/ResponsePipeline.js +446 -0
  57. package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
  58. package/dist/cjs/src/core/Route.d.ts +126 -0
  59. package/dist/cjs/src/core/Route.d.ts.map +1 -0
  60. package/dist/cjs/{core → src/core}/Route.js +116 -20
  61. package/dist/cjs/src/core/Route.js.map +1 -0
  62. package/dist/{core → cjs/src/core}/RoutingEngine.d.ts +33 -38
  63. package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
  64. package/dist/cjs/{core → src/core}/RoutingEngine.js +102 -108
  65. package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
  66. package/dist/cjs/src/core/SessionManager.d.ts +76 -0
  67. package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
  68. package/dist/cjs/src/core/SessionManager.js +197 -0
  69. package/dist/cjs/src/core/SessionManager.js.map +1 -0
  70. package/dist/cjs/src/core/Step.d.ts +96 -0
  71. package/dist/cjs/src/core/Step.d.ts.map +1 -0
  72. package/dist/cjs/src/core/Step.js +206 -0
  73. package/dist/cjs/src/core/Step.js.map +1 -0
  74. package/dist/cjs/src/core/ToolExecutor.d.ts +43 -0
  75. package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -0
  76. package/dist/cjs/{core → src/core}/ToolExecutor.js +19 -18
  77. package/dist/cjs/src/core/ToolExecutor.js.map +1 -0
  78. package/dist/{index.d.ts → cjs/src/index.d.ts} +7 -15
  79. package/dist/cjs/src/index.d.ts.map +1 -0
  80. package/dist/cjs/{index.js → src/index.js} +21 -19
  81. package/dist/cjs/src/index.js.map +1 -0
  82. package/dist/cjs/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
  83. package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +1 -0
  84. package/dist/cjs/{providers → src/providers}/AnthropicProvider.js +54 -2
  85. package/dist/cjs/src/providers/AnthropicProvider.js.map +1 -0
  86. package/dist/{providers → cjs/src/providers}/GeminiProvider.d.ts +1 -1
  87. package/dist/cjs/src/providers/GeminiProvider.d.ts.map +1 -0
  88. package/dist/cjs/{providers → src/providers}/GeminiProvider.js +65 -0
  89. package/dist/cjs/src/providers/GeminiProvider.js.map +1 -0
  90. package/dist/cjs/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
  91. package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +1 -0
  92. package/dist/cjs/{providers → src/providers}/OpenAIProvider.js +70 -1
  93. package/dist/cjs/src/providers/OpenAIProvider.js.map +1 -0
  94. package/dist/{providers → cjs/src/providers}/OpenRouterProvider.d.ts +1 -1
  95. package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +1 -0
  96. package/dist/cjs/{providers → src/providers}/OpenRouterProvider.js +76 -0
  97. package/dist/cjs/src/providers/OpenRouterProvider.js.map +1 -0
  98. package/dist/cjs/src/providers/index.d.ts.map +1 -0
  99. package/dist/cjs/src/providers/index.js.map +1 -0
  100. package/dist/cjs/{types → src/types}/agent.d.ts +54 -35
  101. package/dist/cjs/src/types/agent.d.ts.map +1 -0
  102. package/dist/cjs/src/types/agent.js.map +1 -0
  103. package/dist/cjs/{types → src/types}/ai.d.ts +7 -0
  104. package/dist/cjs/src/types/ai.d.ts.map +1 -0
  105. package/dist/cjs/src/types/ai.js.map +1 -0
  106. package/dist/{types → cjs/src/types}/history.d.ts +76 -18
  107. package/dist/cjs/src/types/history.d.ts.map +1 -0
  108. package/dist/cjs/src/types/history.js +33 -0
  109. package/dist/cjs/src/types/history.js.map +1 -0
  110. package/dist/cjs/src/types/index.d.ts +20 -0
  111. package/dist/cjs/src/types/index.d.ts.map +1 -0
  112. package/dist/cjs/src/types/index.js +30 -0
  113. package/dist/cjs/src/types/index.js.map +1 -0
  114. package/dist/{types → cjs/src/types}/persistence.d.ts +39 -23
  115. package/dist/cjs/src/types/persistence.d.ts.map +1 -0
  116. package/dist/cjs/src/types/persistence.js.map +1 -0
  117. package/dist/cjs/{types → src/types}/route.d.ts +85 -31
  118. package/dist/cjs/src/types/route.d.ts.map +1 -0
  119. package/dist/cjs/{types → src/types}/route.js.map +1 -1
  120. package/dist/cjs/src/types/routing.d.ts.map +1 -0
  121. package/dist/{types → cjs/src/types}/routing.js.map +1 -1
  122. package/dist/cjs/src/types/schema.d.ts.map +1 -0
  123. package/dist/{types → cjs/src/types}/schema.js.map +1 -1
  124. package/dist/cjs/src/types/session.d.ts +70 -0
  125. package/dist/cjs/src/types/session.d.ts.map +1 -0
  126. package/dist/cjs/src/types/session.js +6 -0
  127. package/dist/cjs/src/types/session.js.map +1 -0
  128. package/dist/cjs/src/types/template.d.ts +30 -0
  129. package/dist/cjs/src/types/template.d.ts.map +1 -0
  130. package/dist/cjs/src/types/template.js +3 -0
  131. package/dist/cjs/src/types/template.js.map +1 -0
  132. package/dist/cjs/{types → src/types}/tool.d.ts +6 -8
  133. package/dist/cjs/src/types/tool.d.ts.map +1 -0
  134. package/dist/cjs/{types → src/types}/tool.js.map +1 -1
  135. package/dist/cjs/src/utils/clone.d.ts +8 -0
  136. package/dist/cjs/src/utils/clone.d.ts.map +1 -0
  137. package/dist/cjs/src/utils/clone.js +36 -0
  138. package/dist/cjs/src/utils/clone.js.map +1 -0
  139. package/dist/{utils → cjs/src/utils}/event.d.ts +1 -1
  140. package/dist/cjs/src/utils/event.d.ts.map +1 -0
  141. package/dist/cjs/{utils → src/utils}/event.js +2 -2
  142. package/dist/cjs/src/utils/event.js.map +1 -0
  143. package/dist/cjs/src/utils/history.d.ts +31 -0
  144. package/dist/cjs/src/utils/history.d.ts.map +1 -0
  145. package/dist/cjs/src/utils/history.js +128 -0
  146. package/dist/cjs/src/utils/history.js.map +1 -0
  147. package/dist/cjs/src/utils/id.d.ts.map +1 -0
  148. package/dist/cjs/src/utils/id.js.map +1 -0
  149. package/dist/cjs/src/utils/index.d.ts +13 -0
  150. package/dist/cjs/src/utils/index.d.ts.map +1 -0
  151. package/dist/cjs/src/utils/index.js +49 -0
  152. package/dist/cjs/src/utils/index.js.map +1 -0
  153. package/dist/cjs/src/utils/logger.d.ts.map +1 -0
  154. package/dist/cjs/src/utils/logger.js.map +1 -0
  155. package/dist/cjs/src/utils/retry.d.ts.map +1 -0
  156. package/dist/cjs/src/utils/retry.js.map +1 -0
  157. package/dist/cjs/src/utils/session.d.ts +51 -0
  158. package/dist/cjs/src/utils/session.d.ts.map +1 -0
  159. package/dist/cjs/{types → src/utils}/session.js +36 -13
  160. package/dist/cjs/src/utils/session.js.map +1 -0
  161. package/dist/cjs/src/utils/template.d.ts +107 -0
  162. package/dist/cjs/src/utils/template.d.ts.map +1 -0
  163. package/dist/cjs/src/utils/template.js +283 -0
  164. package/dist/cjs/src/utils/template.js.map +1 -0
  165. package/dist/{cjs → src}/adapters/MemoryAdapter.d.ts +4 -4
  166. package/dist/src/adapters/MemoryAdapter.d.ts.map +1 -0
  167. package/dist/{adapters → src/adapters}/MemoryAdapter.js +41 -21
  168. package/dist/src/adapters/MemoryAdapter.js.map +1 -0
  169. package/dist/{cjs → src}/adapters/MongoAdapter.d.ts +3 -3
  170. package/dist/src/adapters/MongoAdapter.d.ts.map +1 -0
  171. package/dist/{adapters → src/adapters}/MongoAdapter.js +2 -1
  172. package/dist/src/adapters/MongoAdapter.js.map +1 -0
  173. package/dist/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
  174. package/dist/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
  175. package/dist/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
  176. package/dist/src/adapters/OpenSearchAdapter.js.map +1 -0
  177. package/dist/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
  178. package/dist/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  179. package/dist/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
  180. package/dist/src/adapters/PostgreSQLAdapter.js.map +1 -0
  181. package/dist/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
  182. package/dist/src/adapters/PrismaAdapter.d.ts.map +1 -0
  183. package/dist/{adapters → src/adapters}/PrismaAdapter.js +35 -5
  184. package/dist/src/adapters/PrismaAdapter.js.map +1 -0
  185. package/dist/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
  186. package/dist/src/adapters/RedisAdapter.d.ts.map +1 -0
  187. package/dist/{adapters → src/adapters}/RedisAdapter.js +3 -2
  188. package/dist/src/adapters/RedisAdapter.js.map +1 -0
  189. package/dist/{cjs → src}/adapters/SQLiteAdapter.d.ts +3 -3
  190. package/dist/src/adapters/SQLiteAdapter.d.ts.map +1 -0
  191. package/dist/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
  192. package/dist/src/adapters/SQLiteAdapter.js.map +1 -0
  193. package/dist/src/adapters/index.js.map +1 -0
  194. package/dist/src/constants/index.js.map +1 -0
  195. package/dist/{cjs → src}/core/Agent.d.ts +67 -69
  196. package/dist/src/core/Agent.d.ts.map +1 -0
  197. package/dist/src/core/Agent.js +1429 -0
  198. package/dist/src/core/Agent.js.map +1 -0
  199. package/dist/src/core/Events.d.ts +26 -0
  200. package/dist/src/core/Events.d.ts.map +1 -0
  201. package/dist/src/core/Events.js +137 -0
  202. package/dist/src/core/Events.js.map +1 -0
  203. package/dist/src/core/PersistenceManager.d.ts +98 -0
  204. package/dist/src/core/PersistenceManager.d.ts.map +1 -0
  205. package/dist/{core → src/core}/PersistenceManager.js +56 -26
  206. package/dist/src/core/PersistenceManager.js.map +1 -0
  207. package/dist/src/core/PromptComposer.d.ts +27 -0
  208. package/dist/src/core/PromptComposer.d.ts.map +1 -0
  209. package/dist/src/core/PromptComposer.js +153 -0
  210. package/dist/src/core/PromptComposer.js.map +1 -0
  211. package/dist/src/core/ResponseEngine.d.ts +31 -0
  212. package/dist/src/core/ResponseEngine.d.ts.map +1 -0
  213. package/dist/src/core/ResponseEngine.js +80 -0
  214. package/dist/src/core/ResponseEngine.js.map +1 -0
  215. package/dist/src/core/ResponsePipeline.d.ts +143 -0
  216. package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
  217. package/dist/src/core/ResponsePipeline.js +442 -0
  218. package/dist/src/core/ResponsePipeline.js.map +1 -0
  219. package/dist/src/core/Route.d.ts +126 -0
  220. package/dist/src/core/Route.d.ts.map +1 -0
  221. package/dist/{core → src/core}/Route.js +116 -20
  222. package/dist/src/core/Route.js.map +1 -0
  223. package/dist/{cjs → src}/core/RoutingEngine.d.ts +33 -38
  224. package/dist/src/core/RoutingEngine.d.ts.map +1 -0
  225. package/dist/{core → src/core}/RoutingEngine.js +98 -104
  226. package/dist/src/core/RoutingEngine.js.map +1 -0
  227. package/dist/src/core/SessionManager.d.ts +76 -0
  228. package/dist/src/core/SessionManager.d.ts.map +1 -0
  229. package/dist/src/core/SessionManager.js +193 -0
  230. package/dist/src/core/SessionManager.js.map +1 -0
  231. package/dist/src/core/Step.d.ts +96 -0
  232. package/dist/src/core/Step.d.ts.map +1 -0
  233. package/dist/src/core/Step.js +202 -0
  234. package/dist/src/core/Step.js.map +1 -0
  235. package/dist/src/core/ToolExecutor.d.ts +43 -0
  236. package/dist/src/core/ToolExecutor.d.ts.map +1 -0
  237. package/dist/src/core/ToolExecutor.js +70 -0
  238. package/dist/src/core/ToolExecutor.js.map +1 -0
  239. package/dist/{cjs → src}/index.d.ts +7 -15
  240. package/dist/src/index.d.ts.map +1 -0
  241. package/dist/{index.js → src/index.js} +6 -7
  242. package/dist/src/index.js.map +1 -0
  243. package/dist/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
  244. package/dist/src/providers/AnthropicProvider.d.ts.map +1 -0
  245. package/dist/{providers → src/providers}/AnthropicProvider.js +54 -2
  246. package/dist/src/providers/AnthropicProvider.js.map +1 -0
  247. package/dist/{cjs → src}/providers/GeminiProvider.d.ts +1 -1
  248. package/dist/{cjs → src}/providers/GeminiProvider.d.ts.map +1 -1
  249. package/dist/{providers → src/providers}/GeminiProvider.js +65 -0
  250. package/dist/src/providers/GeminiProvider.js.map +1 -0
  251. package/dist/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
  252. package/dist/{cjs → src}/providers/OpenAIProvider.d.ts.map +1 -1
  253. package/dist/{providers → src/providers}/OpenAIProvider.js +70 -1
  254. package/dist/src/providers/OpenAIProvider.js.map +1 -0
  255. package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts +1 -1
  256. package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts.map +1 -1
  257. package/dist/{providers → src/providers}/OpenRouterProvider.js +76 -0
  258. package/dist/src/providers/OpenRouterProvider.js.map +1 -0
  259. package/dist/src/providers/index.js.map +1 -0
  260. package/dist/{types → src/types}/agent.d.ts +54 -35
  261. package/dist/src/types/agent.d.ts.map +1 -0
  262. package/dist/src/types/agent.js.map +1 -0
  263. package/dist/{types → src/types}/ai.d.ts +7 -0
  264. package/dist/src/types/ai.d.ts.map +1 -0
  265. package/dist/{cjs → src}/types/ai.js.map +1 -1
  266. package/dist/{cjs → src}/types/history.d.ts +76 -18
  267. package/dist/src/types/history.d.ts.map +1 -0
  268. package/dist/src/types/history.js +30 -0
  269. package/dist/src/types/history.js.map +1 -0
  270. package/dist/src/types/index.d.ts +20 -0
  271. package/dist/src/types/index.d.ts.map +1 -0
  272. package/dist/src/types/index.js +10 -0
  273. package/dist/src/types/index.js.map +1 -0
  274. package/dist/{cjs → src}/types/persistence.d.ts +39 -23
  275. package/dist/src/types/persistence.d.ts.map +1 -0
  276. package/dist/src/types/persistence.js.map +1 -0
  277. package/dist/{types → src/types}/route.d.ts +85 -31
  278. package/dist/src/types/route.d.ts.map +1 -0
  279. package/dist/{types → src/types}/route.js.map +1 -1
  280. package/dist/src/types/session.d.ts +70 -0
  281. package/dist/src/types/session.d.ts.map +1 -0
  282. package/dist/src/types/session.js +5 -0
  283. package/dist/src/types/session.js.map +1 -0
  284. package/dist/src/types/template.d.ts +30 -0
  285. package/dist/src/types/template.d.ts.map +1 -0
  286. package/dist/src/types/template.js +2 -0
  287. package/dist/src/types/template.js.map +1 -0
  288. package/dist/{types → src/types}/tool.d.ts +6 -8
  289. package/dist/{cjs → src}/types/tool.d.ts.map +1 -1
  290. package/dist/{types → src/types}/tool.js.map +1 -1
  291. package/dist/src/utils/clone.d.ts +8 -0
  292. package/dist/src/utils/clone.d.ts.map +1 -0
  293. package/dist/src/utils/clone.js +33 -0
  294. package/dist/src/utils/clone.js.map +1 -0
  295. package/dist/{cjs → src}/utils/event.d.ts +1 -1
  296. package/dist/{cjs → src}/utils/event.d.ts.map +1 -1
  297. package/dist/{utils → src/utils}/event.js +1 -1
  298. package/dist/src/utils/event.js.map +1 -0
  299. package/dist/src/utils/history.d.ts +31 -0
  300. package/dist/src/utils/history.d.ts.map +1 -0
  301. package/dist/src/utils/history.js +121 -0
  302. package/dist/src/utils/history.js.map +1 -0
  303. package/dist/src/utils/id.js.map +1 -0
  304. package/dist/src/utils/index.d.ts +13 -0
  305. package/dist/src/utils/index.d.ts.map +1 -0
  306. package/dist/src/utils/index.js +19 -0
  307. package/dist/src/utils/index.js.map +1 -0
  308. package/dist/src/utils/logger.js.map +1 -0
  309. package/dist/src/utils/retry.js.map +1 -0
  310. package/dist/src/utils/session.d.ts +51 -0
  311. package/dist/src/utils/session.d.ts.map +1 -0
  312. package/dist/{types → src/utils}/session.js +34 -13
  313. package/dist/src/utils/session.js.map +1 -0
  314. package/dist/src/utils/template.d.ts +107 -0
  315. package/dist/src/utils/template.d.ts.map +1 -0
  316. package/dist/src/utils/template.js +276 -0
  317. package/dist/src/utils/template.js.map +1 -0
  318. package/docs/README.md +174 -68
  319. package/docs/{API_REFERENCE.md → api/README.md} +902 -263
  320. package/docs/api/overview.md +798 -0
  321. package/docs/core/agent/README.md +642 -0
  322. package/docs/{CONTEXT_MANAGEMENT.md → core/agent/context-management.md} +144 -95
  323. package/docs/{ARCHITECTURE.md → core/agent/session-management.md} +74 -59
  324. package/docs/core/ai-integration/prompt-composition.md +196 -0
  325. package/docs/core/ai-integration/providers.md +515 -0
  326. package/docs/core/ai-integration/response-processing.md +165 -0
  327. package/docs/core/conversation-flows/data-collection.md +545 -0
  328. package/docs/core/conversation-flows/route-dsl.md +479 -0
  329. package/docs/core/conversation-flows/routes.md +61 -0
  330. package/docs/core/conversation-flows/step-transitions.md +595 -0
  331. package/docs/core/conversation-flows/steps.md +130 -0
  332. package/docs/{ADAPTERS.md → core/persistence/adapters.md} +2 -2
  333. package/docs/core/persistence/session-storage.md +644 -0
  334. package/docs/core/routing/intelligent-routing.md +339 -0
  335. package/docs/core/tools/tool-definition.md +346 -0
  336. package/docs/core/tools/tool-execution.md +815 -0
  337. package/docs/core/tools/tool-scoping.md +628 -0
  338. package/docs/guides/getting-started/README.md +384 -0
  339. package/examples/{company-qna-agent.ts → advanced-patterns/knowledge-based-agent.ts} +104 -69
  340. package/examples/{persistent-onboarding.ts → advanced-patterns/persistent-onboarding.ts} +181 -103
  341. package/examples/{rules-prohibitions.ts → advanced-patterns/route-lifecycle-hooks.ts} +102 -82
  342. package/examples/{streaming-agent.ts → advanced-patterns/streaming-responses.ts} +90 -69
  343. package/examples/ai-providers/anthropic-integration.ts +377 -0
  344. package/examples/{openai-agent.ts → ai-providers/openai-integration.ts} +37 -43
  345. package/examples/{route-transitions.ts → conversation-flows/completion-transitions.ts} +115 -108
  346. package/examples/{declarative-agent.ts → core-concepts/basic-agent.ts} +175 -131
  347. package/examples/core-concepts/schema-driven-extraction.ts +301 -0
  348. package/examples/core-concepts/session-management.ts +394 -0
  349. package/examples/integrations/database-integration.ts +615 -0
  350. package/examples/{healthcare-agent.ts → integrations/healthcare-integration.ts} +204 -111
  351. package/examples/{opensearch-persistence.ts → integrations/search-integration.ts} +159 -128
  352. package/examples/integrations/server-session-management.ts +299 -0
  353. package/examples/persistence/custom-adapter.ts +529 -0
  354. package/examples/{prisma-persistence.ts → persistence/database-persistence.ts} +168 -241
  355. package/examples/persistence/memory-sessions.ts +506 -0
  356. package/examples/{prisma-schema.example.prisma → persistence/prisma-schema.example.prisma} +1 -1
  357. package/examples/{redis-persistence.ts → persistence/redis-persistence.ts} +152 -173
  358. package/examples/tools/basic-tools.ts +550 -0
  359. package/examples/{extracted-data-modification.ts → tools/data-enrichment-tools.ts} +82 -79
  360. package/package.json +14 -10
  361. package/src/adapters/MemoryAdapter.ts +74 -46
  362. package/src/adapters/MongoAdapter.ts +33 -24
  363. package/src/adapters/OpenSearchAdapter.ts +41 -37
  364. package/src/adapters/PostgreSQLAdapter.ts +35 -24
  365. package/src/adapters/PrismaAdapter.ts +69 -27
  366. package/src/adapters/RedisAdapter.ts +38 -26
  367. package/src/adapters/SQLiteAdapter.ts +32 -22
  368. package/src/core/Agent.ts +1102 -487
  369. package/src/core/Events.ts +100 -112
  370. package/src/core/PersistenceManager.ts +87 -57
  371. package/src/core/PromptComposer.ts +158 -85
  372. package/src/core/ResponseEngine.ts +118 -38
  373. package/src/core/ResponsePipeline.ts +715 -0
  374. package/src/core/Route.ts +168 -51
  375. package/src/core/RoutingEngine.ts +178 -209
  376. package/src/core/SessionManager.ts +241 -0
  377. package/src/core/Step.ts +149 -67
  378. package/src/core/ToolExecutor.ts +37 -42
  379. package/src/index.ts +31 -37
  380. package/src/providers/AnthropicProvider.ts +71 -5
  381. package/src/providers/GeminiProvider.ts +83 -2
  382. package/src/providers/OpenAIProvider.ts +95 -3
  383. package/src/providers/OpenRouterProvider.ts +102 -2
  384. package/src/types/agent.ts +50 -38
  385. package/src/types/ai.ts +7 -0
  386. package/src/types/history.ts +91 -18
  387. package/src/types/index.ts +43 -7
  388. package/src/types/persistence.ts +46 -28
  389. package/src/types/route.ts +104 -45
  390. package/src/types/session.ts +19 -213
  391. package/src/types/template.ts +36 -0
  392. package/src/types/tool.ts +9 -11
  393. package/src/utils/clone.ts +36 -0
  394. package/src/utils/event.ts +1 -1
  395. package/src/utils/history.ts +143 -0
  396. package/src/utils/index.ts +53 -0
  397. package/src/utils/session.ts +229 -0
  398. package/src/utils/template.ts +335 -0
  399. package/dist/adapters/MemoryAdapter.d.ts.map +0 -1
  400. package/dist/adapters/MemoryAdapter.js.map +0 -1
  401. package/dist/adapters/MongoAdapter.d.ts.map +0 -1
  402. package/dist/adapters/MongoAdapter.js.map +0 -1
  403. package/dist/adapters/OpenSearchAdapter.d.ts.map +0 -1
  404. package/dist/adapters/OpenSearchAdapter.js.map +0 -1
  405. package/dist/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  406. package/dist/adapters/PostgreSQLAdapter.js.map +0 -1
  407. package/dist/adapters/PrismaAdapter.d.ts.map +0 -1
  408. package/dist/adapters/PrismaAdapter.js.map +0 -1
  409. package/dist/adapters/RedisAdapter.d.ts.map +0 -1
  410. package/dist/adapters/RedisAdapter.js.map +0 -1
  411. package/dist/adapters/SQLiteAdapter.d.ts.map +0 -1
  412. package/dist/adapters/SQLiteAdapter.js.map +0 -1
  413. package/dist/adapters/index.d.ts.map +0 -1
  414. package/dist/adapters/index.js.map +0 -1
  415. package/dist/cjs/adapters/MemoryAdapter.d.ts.map +0 -1
  416. package/dist/cjs/adapters/MemoryAdapter.js.map +0 -1
  417. package/dist/cjs/adapters/MongoAdapter.d.ts.map +0 -1
  418. package/dist/cjs/adapters/MongoAdapter.js.map +0 -1
  419. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +0 -1
  420. package/dist/cjs/adapters/OpenSearchAdapter.js.map +0 -1
  421. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  422. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +0 -1
  423. package/dist/cjs/adapters/PrismaAdapter.d.ts.map +0 -1
  424. package/dist/cjs/adapters/PrismaAdapter.js.map +0 -1
  425. package/dist/cjs/adapters/RedisAdapter.d.ts.map +0 -1
  426. package/dist/cjs/adapters/RedisAdapter.js.map +0 -1
  427. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +0 -1
  428. package/dist/cjs/adapters/SQLiteAdapter.js.map +0 -1
  429. package/dist/cjs/adapters/index.js.map +0 -1
  430. package/dist/cjs/constants/index.js.map +0 -1
  431. package/dist/cjs/core/Agent.d.ts.map +0 -1
  432. package/dist/cjs/core/Agent.js +0 -966
  433. package/dist/cjs/core/Agent.js.map +0 -1
  434. package/dist/cjs/core/DomainRegistry.d.ts +0 -36
  435. package/dist/cjs/core/DomainRegistry.d.ts.map +0 -1
  436. package/dist/cjs/core/DomainRegistry.js +0 -72
  437. package/dist/cjs/core/DomainRegistry.js.map +0 -1
  438. package/dist/cjs/core/Events.d.ts +0 -41
  439. package/dist/cjs/core/Events.d.ts.map +0 -1
  440. package/dist/cjs/core/Events.js +0 -99
  441. package/dist/cjs/core/Events.js.map +0 -1
  442. package/dist/cjs/core/PersistenceManager.d.ts +0 -96
  443. package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
  444. package/dist/cjs/core/PersistenceManager.js.map +0 -1
  445. package/dist/cjs/core/PromptComposer.d.ts +0 -24
  446. package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
  447. package/dist/cjs/core/PromptComposer.js +0 -127
  448. package/dist/cjs/core/PromptComposer.js.map +0 -1
  449. package/dist/cjs/core/ResponseEngine.d.ts +0 -14
  450. package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
  451. package/dist/cjs/core/ResponseEngine.js +0 -56
  452. package/dist/cjs/core/ResponseEngine.js.map +0 -1
  453. package/dist/cjs/core/Route.d.ts +0 -90
  454. package/dist/cjs/core/Route.d.ts.map +0 -1
  455. package/dist/cjs/core/Route.js.map +0 -1
  456. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  457. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  458. package/dist/cjs/core/Step.d.ts +0 -72
  459. package/dist/cjs/core/Step.d.ts.map +0 -1
  460. package/dist/cjs/core/Step.js +0 -150
  461. package/dist/cjs/core/Step.js.map +0 -1
  462. package/dist/cjs/core/Tool.d.ts +0 -39
  463. package/dist/cjs/core/Tool.d.ts.map +0 -1
  464. package/dist/cjs/core/Tool.js +0 -34
  465. package/dist/cjs/core/Tool.js.map +0 -1
  466. package/dist/cjs/core/ToolExecutor.d.ts +0 -29
  467. package/dist/cjs/core/ToolExecutor.d.ts.map +0 -1
  468. package/dist/cjs/core/ToolExecutor.js.map +0 -1
  469. package/dist/cjs/core/Transition.d.ts +0 -32
  470. package/dist/cjs/core/Transition.d.ts.map +0 -1
  471. package/dist/cjs/core/Transition.js +0 -89
  472. package/dist/cjs/core/Transition.js.map +0 -1
  473. package/dist/cjs/index.d.ts.map +0 -1
  474. package/dist/cjs/index.js.map +0 -1
  475. package/dist/cjs/providers/AnthropicProvider.d.ts.map +0 -1
  476. package/dist/cjs/providers/AnthropicProvider.js.map +0 -1
  477. package/dist/cjs/providers/GeminiProvider.js.map +0 -1
  478. package/dist/cjs/providers/OpenAIProvider.js.map +0 -1
  479. package/dist/cjs/providers/OpenRouterProvider.js.map +0 -1
  480. package/dist/cjs/providers/index.js.map +0 -1
  481. package/dist/cjs/types/agent.d.ts.map +0 -1
  482. package/dist/cjs/types/agent.js.map +0 -1
  483. package/dist/cjs/types/ai.d.ts.map +0 -1
  484. package/dist/cjs/types/history.d.ts.map +0 -1
  485. package/dist/cjs/types/history.js +0 -37
  486. package/dist/cjs/types/history.js.map +0 -1
  487. package/dist/cjs/types/index.d.ts +0 -12
  488. package/dist/cjs/types/index.d.ts.map +0 -1
  489. package/dist/cjs/types/index.js +0 -12
  490. package/dist/cjs/types/index.js.map +0 -1
  491. package/dist/cjs/types/persistence.d.ts.map +0 -1
  492. package/dist/cjs/types/persistence.js.map +0 -1
  493. package/dist/cjs/types/route.d.ts.map +0 -1
  494. package/dist/cjs/types/session.d.ts +0 -104
  495. package/dist/cjs/types/session.d.ts.map +0 -1
  496. package/dist/cjs/types/session.js.map +0 -1
  497. package/dist/cjs/utils/event.js.map +0 -1
  498. package/dist/cjs/utils/id.js.map +0 -1
  499. package/dist/cjs/utils/logger.js.map +0 -1
  500. package/dist/cjs/utils/retry.js.map +0 -1
  501. package/dist/constants/index.d.ts.map +0 -1
  502. package/dist/constants/index.js.map +0 -1
  503. package/dist/core/Agent.d.ts.map +0 -1
  504. package/dist/core/Agent.js +0 -962
  505. package/dist/core/Agent.js.map +0 -1
  506. package/dist/core/DomainRegistry.d.ts +0 -36
  507. package/dist/core/DomainRegistry.d.ts.map +0 -1
  508. package/dist/core/DomainRegistry.js +0 -68
  509. package/dist/core/DomainRegistry.js.map +0 -1
  510. package/dist/core/Events.d.ts +0 -41
  511. package/dist/core/Events.d.ts.map +0 -1
  512. package/dist/core/Events.js +0 -94
  513. package/dist/core/Events.js.map +0 -1
  514. package/dist/core/PersistenceManager.d.ts +0 -96
  515. package/dist/core/PersistenceManager.d.ts.map +0 -1
  516. package/dist/core/PersistenceManager.js.map +0 -1
  517. package/dist/core/PromptComposer.d.ts +0 -24
  518. package/dist/core/PromptComposer.d.ts.map +0 -1
  519. package/dist/core/PromptComposer.js +0 -123
  520. package/dist/core/PromptComposer.js.map +0 -1
  521. package/dist/core/ResponseEngine.d.ts +0 -14
  522. package/dist/core/ResponseEngine.d.ts.map +0 -1
  523. package/dist/core/ResponseEngine.js +0 -52
  524. package/dist/core/ResponseEngine.js.map +0 -1
  525. package/dist/core/Route.d.ts +0 -90
  526. package/dist/core/Route.d.ts.map +0 -1
  527. package/dist/core/Route.js.map +0 -1
  528. package/dist/core/RoutingEngine.d.ts.map +0 -1
  529. package/dist/core/RoutingEngine.js.map +0 -1
  530. package/dist/core/Step.d.ts +0 -72
  531. package/dist/core/Step.d.ts.map +0 -1
  532. package/dist/core/Step.js +0 -146
  533. package/dist/core/Step.js.map +0 -1
  534. package/dist/core/Tool.d.ts +0 -39
  535. package/dist/core/Tool.d.ts.map +0 -1
  536. package/dist/core/Tool.js +0 -31
  537. package/dist/core/Tool.js.map +0 -1
  538. package/dist/core/ToolExecutor.d.ts +0 -29
  539. package/dist/core/ToolExecutor.d.ts.map +0 -1
  540. package/dist/core/ToolExecutor.js +0 -69
  541. package/dist/core/ToolExecutor.js.map +0 -1
  542. package/dist/core/Transition.d.ts +0 -32
  543. package/dist/core/Transition.d.ts.map +0 -1
  544. package/dist/core/Transition.js +0 -85
  545. package/dist/core/Transition.js.map +0 -1
  546. package/dist/index.d.ts.map +0 -1
  547. package/dist/index.js.map +0 -1
  548. package/dist/providers/AnthropicProvider.d.ts.map +0 -1
  549. package/dist/providers/AnthropicProvider.js.map +0 -1
  550. package/dist/providers/GeminiProvider.d.ts.map +0 -1
  551. package/dist/providers/GeminiProvider.js.map +0 -1
  552. package/dist/providers/OpenAIProvider.d.ts.map +0 -1
  553. package/dist/providers/OpenAIProvider.js.map +0 -1
  554. package/dist/providers/OpenRouterProvider.d.ts.map +0 -1
  555. package/dist/providers/OpenRouterProvider.js.map +0 -1
  556. package/dist/providers/index.d.ts.map +0 -1
  557. package/dist/providers/index.js.map +0 -1
  558. package/dist/types/agent.d.ts.map +0 -1
  559. package/dist/types/agent.js.map +0 -1
  560. package/dist/types/ai.d.ts.map +0 -1
  561. package/dist/types/ai.js.map +0 -1
  562. package/dist/types/history.d.ts.map +0 -1
  563. package/dist/types/history.js +0 -34
  564. package/dist/types/history.js.map +0 -1
  565. package/dist/types/index.d.ts +0 -12
  566. package/dist/types/index.d.ts.map +0 -1
  567. package/dist/types/index.js +0 -6
  568. package/dist/types/index.js.map +0 -1
  569. package/dist/types/persistence.d.ts.map +0 -1
  570. package/dist/types/persistence.js.map +0 -1
  571. package/dist/types/route.d.ts.map +0 -1
  572. package/dist/types/routing.d.ts.map +0 -1
  573. package/dist/types/schema.d.ts.map +0 -1
  574. package/dist/types/session.d.ts +0 -104
  575. package/dist/types/session.d.ts.map +0 -1
  576. package/dist/types/session.js.map +0 -1
  577. package/dist/types/tool.d.ts.map +0 -1
  578. package/dist/utils/event.d.ts.map +0 -1
  579. package/dist/utils/event.js.map +0 -1
  580. package/dist/utils/id.d.ts.map +0 -1
  581. package/dist/utils/id.js.map +0 -1
  582. package/dist/utils/logger.d.ts.map +0 -1
  583. package/dist/utils/logger.js.map +0 -1
  584. package/dist/utils/retry.d.ts.map +0 -1
  585. package/dist/utils/retry.js.map +0 -1
  586. package/docs/AGENT.md +0 -535
  587. package/docs/DOCS.md +0 -263
  588. package/docs/DOMAINS.md +0 -735
  589. package/docs/EXAMPLES.md +0 -467
  590. package/docs/GETTING_STARTED.md +0 -424
  591. package/docs/PERSISTENCE.md +0 -815
  592. package/docs/PROVIDERS.md +0 -612
  593. package/docs/ROUTES.md +0 -1085
  594. package/docs/STEPS.md +0 -883
  595. package/examples/business-onboarding.ts +0 -791
  596. package/examples/custom-database-persistence.ts +0 -574
  597. package/examples/domain-scoping.ts +0 -366
  598. package/examples/travel-agent.ts +0 -584
  599. package/src/core/DomainRegistry.ts +0 -80
  600. package/src/core/Tool.ts +0 -112
  601. package/src/core/Transition.ts +0 -115
  602. /package/dist/{adapters → cjs/src/adapters}/index.d.ts +0 -0
  603. /package/dist/cjs/{adapters → src/adapters}/index.js +0 -0
  604. /package/dist/cjs/{constants → src/constants}/index.d.ts +0 -0
  605. /package/dist/cjs/{constants → src/constants}/index.js +0 -0
  606. /package/dist/cjs/{providers → src/providers}/index.d.ts +0 -0
  607. /package/dist/cjs/{providers → src/providers}/index.js +0 -0
  608. /package/dist/cjs/{types → src/types}/agent.js +0 -0
  609. /package/dist/cjs/{types → src/types}/ai.js +0 -0
  610. /package/dist/cjs/{types → src/types}/persistence.js +0 -0
  611. /package/dist/cjs/{types → src/types}/route.js +0 -0
  612. /package/dist/cjs/{types → src/types}/routing.d.ts +0 -0
  613. /package/dist/cjs/{types → src/types}/routing.js +0 -0
  614. /package/dist/cjs/{types → src/types}/schema.d.ts +0 -0
  615. /package/dist/cjs/{types → src/types}/schema.js +0 -0
  616. /package/dist/cjs/{types → src/types}/tool.js +0 -0
  617. /package/dist/cjs/{utils → src/utils}/id.d.ts +0 -0
  618. /package/dist/cjs/{utils → src/utils}/id.js +0 -0
  619. /package/dist/cjs/{utils → src/utils}/logger.d.ts +0 -0
  620. /package/dist/cjs/{utils → src/utils}/logger.js +0 -0
  621. /package/dist/cjs/{utils → src/utils}/retry.d.ts +0 -0
  622. /package/dist/cjs/{utils → src/utils}/retry.js +0 -0
  623. /package/dist/{cjs → src}/adapters/index.d.ts +0 -0
  624. /package/dist/{cjs → src}/adapters/index.d.ts.map +0 -0
  625. /package/dist/{adapters → src/adapters}/index.js +0 -0
  626. /package/dist/{constants → src/constants}/index.d.ts +0 -0
  627. /package/dist/{cjs → src}/constants/index.d.ts.map +0 -0
  628. /package/dist/{constants → src/constants}/index.js +0 -0
  629. /package/dist/{providers → src/providers}/index.d.ts +0 -0
  630. /package/dist/{cjs → src}/providers/index.d.ts.map +0 -0
  631. /package/dist/{providers → src/providers}/index.js +0 -0
  632. /package/dist/{types → src/types}/agent.js +0 -0
  633. /package/dist/{types → src/types}/ai.js +0 -0
  634. /package/dist/{types → src/types}/persistence.js +0 -0
  635. /package/dist/{types → src/types}/route.js +0 -0
  636. /package/dist/{types → src/types}/routing.d.ts +0 -0
  637. /package/dist/{cjs → src}/types/routing.d.ts.map +0 -0
  638. /package/dist/{types → src/types}/routing.js +0 -0
  639. /package/dist/{cjs → src}/types/routing.js.map +0 -0
  640. /package/dist/{types → src/types}/schema.d.ts +0 -0
  641. /package/dist/{cjs → src}/types/schema.d.ts.map +0 -0
  642. /package/dist/{types → src/types}/schema.js +0 -0
  643. /package/dist/{cjs → src}/types/schema.js.map +0 -0
  644. /package/dist/{types → src/types}/tool.js +0 -0
  645. /package/dist/{utils → src/utils}/id.d.ts +0 -0
  646. /package/dist/{cjs → src}/utils/id.d.ts.map +0 -0
  647. /package/dist/{utils → src/utils}/id.js +0 -0
  648. /package/dist/{utils → src/utils}/logger.d.ts +0 -0
  649. /package/dist/{cjs → src}/utils/logger.d.ts.map +0 -0
  650. /package/dist/{utils → src/utils}/logger.js +0 -0
  651. /package/dist/{utils → src/utils}/retry.d.ts +0 -0
  652. /package/dist/{cjs → src}/utils/retry.d.ts.map +0 -0
  653. /package/dist/{utils → src/utils}/retry.js +0 -0
  654. /package/docs/{PUBLISHING.md → guides/advanced-patterns/publishing.md} +0 -0
@@ -1,20 +1,22 @@
1
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */
1
2
  /**
2
- * Example: Using Prisma ORM for Persistence with Session Step
3
+ * Example: Using Prisma ORM for Persistence with New Session Management
3
4
  *
4
- * This example shows how to use @falai/agent with Prisma for automatic
5
- * session step persistence - with the new data-driven architecture!
5
+ * This example demonstrates the new automatic session management features:
6
+ * - Automatic session creation and loading with sessionId
7
+ * - Built-in conversation history management
8
+ * - Simplified server-side usage patterns
9
+ * - SessionManager API for direct session control
6
10
  */
7
11
 
8
12
  import {
9
13
  Agent,
10
14
  GeminiProvider,
11
15
  PrismaAdapter,
12
- createMessageEvent,
13
- EventSource,
14
16
  END_ROUTE,
15
- } from "../src/index";
17
+ } from "../../src";
16
18
 
17
- // @ts-ignore
19
+ // @ts-expect-error - PrismaClient is not typed
18
20
  import { PrismaClient } from "@prisma/client";
19
21
 
20
22
  /**
@@ -76,29 +78,29 @@ async function example() {
76
78
  // Initialize Prisma client
77
79
  const prisma = new PrismaClient();
78
80
 
79
- const userId = "user_123";
80
-
81
81
  /**
82
- * Create Agent with Persistence - New Session-Based Pattern! ✨
82
+ * Server-Style Usage: Create Agent per request with sessionId
83
+ * This is the recommended pattern for server environments
83
84
  */
85
+ const sessionId = "session_user123_booking"; // Could be from request params
86
+
84
87
  const agent = new Agent<ConversationContext>({
85
88
  name: "Travel Assistant",
86
89
  description: "A helpful travel booking assistant",
87
90
  goal: "Help users book flights with ease",
88
91
  provider: new GeminiProvider({
89
92
  apiKey: process.env.GEMINI_API_KEY!,
90
- model: "models/gemini-2.0-flash-exp",
93
+ model: "models/gemini-2.5-flash",
91
94
  }),
92
95
  context: {
93
- userId,
96
+ userId: "user_123",
94
97
  userName: "Alice",
95
98
  },
96
- // ✨ Just pass the adapter - that's it!
97
99
  persistence: {
98
- adapter: new PrismaAdapter({ prisma }),
99
- autoSave: true, // Auto-saves session step after each response
100
- userId,
100
+ adapter: new PrismaAdapter<ConversationContext>({ prisma }),
101
+ autoSave: true, // Auto-saves session after each response
101
102
  },
103
+ sessionId, // ✨ Agent will automatically load or create this session
102
104
  });
103
105
 
104
106
  /**
@@ -146,217 +148,143 @@ async function example() {
146
148
  // Step flow with smart data collecting and custom IDs
147
149
  const askDestination = flightRoute.initialStep.nextStep({
148
150
  id: "ask_destination", // Custom step ID for easier tracking
149
- instructions: "Ask where they want to fly",
151
+ prompt: "Ask where they want to fly",
150
152
  collect: ["destination"],
151
- skipIf: (data) => !!data.destination,
153
+ skipIf: (data: Partial<FlightBookingData>) => !!data.destination,
152
154
  });
153
155
 
154
156
  const askDates = askDestination.nextStep({
155
157
  id: "ask_dates", // Custom step ID
156
- instructions: "Ask about travel dates",
158
+ prompt: "Ask about travel dates",
157
159
  collect: ["departureDate", "returnDate"],
158
- skipIf: (data) => !!data.departureDate,
160
+ skipIf: (data: Partial<FlightBookingData>) => !!data.departureDate,
159
161
  requires: ["destination"],
160
162
  });
161
163
 
162
164
  const askPassengers = askDates.nextStep({
163
165
  id: "ask_passengers", // Custom step ID
164
- instructions: "Ask how many passengers",
166
+ prompt: "Ask how many passengers",
165
167
  collect: ["passengers"],
166
- skipIf: (data) => !!data.passengers,
168
+ skipIf: (data: Partial<FlightBookingData>) => !!data.passengers,
167
169
  requires: ["destination", "departureDate"],
168
170
  });
169
171
 
170
172
  const askCabinClass = askPassengers.nextStep({
171
173
  id: "ask_cabin_class", // Custom step ID
172
- instructions: "Ask about cabin class preference",
174
+ prompt: "Ask about cabin class preference",
173
175
  collect: ["cabinClass"],
174
- skipIf: (data) => !!data.cabinClass,
176
+ skipIf: (data: Partial<FlightBookingData>) => !!data.cabinClass,
175
177
  requires: ["destination", "departureDate", "passengers"],
176
178
  });
177
179
 
178
180
  const confirmBooking = askCabinClass.nextStep({
179
181
  id: "confirm_booking", // Custom step ID
180
- instructions: "Present options and confirm booking details",
182
+ prompt: "Present options and confirm booking details",
181
183
  requires: ["destination", "departureDate", "passengers", "cabinClass"],
182
184
  });
183
185
 
184
186
  confirmBooking.nextStep({ step: END_ROUTE });
185
187
 
186
188
  /**
187
- * Get persistence manager from agent
189
+ * Session is automatically loaded/created by Agent constructor
190
+ * Access it through agent.session
188
191
  */
189
- const persistence = agent.getPersistenceManager();
192
+ console.log("✨ Session ready:", agent.session.id);
193
+ console.log("📊 Session data:", agent.session.getData());
194
+ console.log("📜 Conversation history:", agent.session.getHistory().length, "messages");
190
195
 
191
- if (!persistence) {
192
- throw new Error("Persistence not configured");
196
+ // Set some initial data if this is a new session
197
+ if (!agent.session.getData<FlightBookingData>()?.cabinClass) {
198
+ await agent.session.setData<FlightBookingData>({ cabinClass: "economy" });
193
199
  }
194
200
 
195
201
  /**
196
- * Create or find a session - New Pattern!
197
- */
198
- let sessionResult =
199
- await persistence.createSessionWithStep<FlightBookingData>({
200
- userId,
201
- agentName: "Travel Assistant",
202
- initialData: {
203
- cabinClass: "economy", // Default value
204
- },
205
- });
206
-
207
- let session = sessionResult.sessionStep;
208
- const dbSessionId = sessionResult.sessionData.id;
209
-
210
- console.log("✨ Created new session:", dbSessionId);
211
- console.log("📊 Session metadata:", {
212
- sessionId: session.metadata?.sessionId, // Same as dbSessionId
213
- createdAt: session.metadata?.createdAt,
214
- });
215
- console.log("📊 Initial session step:", {
216
- currentRoute: session.currentRoute,
217
- data: session.data,
218
- });
219
-
220
- /**
221
- * Load conversation history
222
- */
223
- const history = await persistence.loadSessionHistory(dbSessionId);
224
- console.log(`📜 Loaded ${history.length} messages from history`);
225
-
226
- /**
227
- * Turn 1: User provides multiple fields at once
202
+ * Turn 1: Simple message-based conversation
203
+ * SessionManager automatically handles history and persistence
228
204
  */
229
205
  console.log("\n--- Turn 1 ---");
230
- const userMessage1 = createMessageEvent(
231
- EventSource.CUSTOMER,
232
- "Alice",
233
- "I want to fly to Paris on June 15 with 2 people"
234
- );
235
-
236
- history.push(userMessage1);
237
-
206
+
207
+ // Add user message to session history and get response
208
+ await agent.session.addMessage("user", "I want to fly to Paris on June 15 with 2 people", "Alice");
209
+
238
210
  const response1 = await agent.respond({
239
- history,
240
- session, // Pass session step
211
+ history: agent.session.getHistory(), // Use session-managed history
241
212
  });
242
213
 
243
214
  console.log("🤖 Agent:", response1.message);
244
- console.log("📊 Session step after turn 1:", {
245
- sessionId: response1.session?.metadata?.sessionId,
215
+ console.log("📊 Session after turn 1:", {
216
+ sessionId: agent.session.id,
246
217
  currentRoute: response1.session?.currentRoute?.title,
247
- currentStepId: response1.session?.currentStep?.id, // Custom ID like "ask_destination"
248
- currentStepDescription: response1.session?.currentStep?.description,
249
- data: response1.session?.data,
218
+ currentStepId: response1.session?.currentStep?.id,
219
+ data: agent.session.getData<FlightBookingData>(),
250
220
  });
251
221
 
252
- // Save user message
253
- await persistence.saveMessage({
254
- sessionId: dbSessionId,
255
- userId,
256
- role: "user",
257
- content: userMessage1.data.message,
258
- event: userMessage1,
259
- });
260
-
261
- // Save agent message (session step is auto-saved by Agent!)
262
- await persistence.saveMessage({
263
- sessionId: dbSessionId,
264
- userId,
265
- role: "agent",
266
- content: response1.message,
267
- route: response1.session?.currentRoute?.id,
268
- step: response1.session?.currentStep?.id,
269
- });
270
-
271
- // Update session for next turn
272
- session = response1.session!;
222
+ // Add agent response to session history
223
+ await agent.session.addMessage("assistant", response1.message);
273
224
 
274
225
  /**
275
226
  * Turn 2: User changes their mind
276
227
  */
277
228
  console.log("\n--- Turn 2 ---");
278
- const userMessage2 = createMessageEvent(
279
- EventSource.CUSTOMER,
280
- "Alice",
281
- "Actually, make that Tokyo instead, and premium class"
282
- );
283
-
284
- history.push(
285
- createMessageEvent(
286
- EventSource.AI_AGENT,
287
- "Travel Assistant",
288
- response1.message
289
- )
290
- );
291
- history.push(userMessage2);
229
+
230
+ await agent.session.addMessage("user", "Actually, make that Tokyo instead, and premium class", "Alice");
292
231
 
293
232
  const response2 = await agent.respond({
294
- history,
295
- session, // Pass updated session
233
+ history: agent.session.getHistory(),
296
234
  });
297
235
 
298
236
  console.log("🤖 Agent:", response2.message);
299
- console.log("📊 Session step after turn 2:", {
237
+ console.log("📊 Session after turn 2:", {
300
238
  currentRoute: response2.session?.currentRoute?.title,
301
239
  currentStep: response2.session?.currentStep?.id,
302
- data: response2.session?.data,
303
- });
304
-
305
- // Save messages
306
- await persistence.saveMessage({
307
- sessionId: dbSessionId,
308
- userId,
309
- role: "user",
310
- content: userMessage2.data.message,
311
- event: userMessage2,
312
- });
313
-
314
- await persistence.saveMessage({
315
- sessionId: dbSessionId,
316
- userId,
317
- role: "agent",
318
- content: response2.message,
319
- route: response2.session?.currentRoute?.id,
320
- step: response2.session?.currentStep?.id,
240
+ data: agent.session.getData<FlightBookingData>(),
321
241
  });
322
242
 
323
- session = response2.session!;
243
+ await agent.session.addMessage("assistant", response2.message);
324
244
 
325
245
  if (response2.isRouteComplete) {
326
246
  console.log("\n✅ Flight booking complete!");
327
- await sendFlightConfirmation(
328
- agent.getData(session.id) as FlightBookingData
329
- );
247
+ await sendFlightConfirmation(agent.session.getData<FlightBookingData>());
330
248
  }
331
249
 
332
250
  /**
333
- * Load session step from database (demonstrates persistence)
251
+ * Demonstrate session recovery - create new Agent instance with same sessionId
334
252
  */
335
- console.log("\n--- Loading Session from Database ---");
336
- const loadedSession = await persistence.loadSessionStep<FlightBookingData>(
337
- dbSessionId
338
- );
339
-
340
- console.log("📥 Loaded session step:", {
341
- currentRoute: loadedSession?.currentRoute?.title,
342
- currentStep: loadedSession?.currentStep?.id,
343
- data: loadedSession?.data,
253
+ console.log("\n--- Session Recovery (New Agent Instance) ---");
254
+
255
+ const newAgent = new Agent<ConversationContext>({
256
+ name: "Travel Assistant",
257
+ provider: new GeminiProvider({
258
+ apiKey: process.env.GEMINI_API_KEY!,
259
+ model: "models/gemini-2.5-flash",
260
+ }),
261
+ context: {
262
+ userId: "user_123",
263
+ userName: "Alice",
264
+ },
265
+ persistence: {
266
+ adapter: new PrismaAdapter<ConversationContext>({ prisma }),
267
+ },
268
+ sessionId, // Same sessionId - will load existing session
344
269
  });
345
270
 
346
- /**
347
- * Query sessions and messages
348
- */
349
- const userSessions = await persistence.getUserSessions(userId);
350
- console.log(`\n👤 User has ${userSessions.length} total sessions`);
351
-
352
- const messages = await persistence.getSessionMessages(dbSessionId);
353
- console.log(`💬 Session has ${messages.length} messages`);
271
+ console.log("📥 Recovered session:", {
272
+ sessionId: newAgent.session.id,
273
+ historyLength: newAgent.session.getHistory().length,
274
+ data: newAgent.session.getData<FlightBookingData>(),
275
+ });
354
276
 
355
277
  /**
356
- * Complete the session
278
+ * Continue conversation with recovered session
357
279
  */
358
- await persistence.completeSession(dbSessionId);
359
- console.log("✅ Session completed");
280
+ await newAgent.session.addMessage("user", "Can you confirm my booking details?");
281
+
282
+ const confirmResponse = await newAgent.respond({
283
+ history: newAgent.session.getHistory(),
284
+ });
285
+
286
+ console.log("🤖 Confirmation:", confirmResponse.message);
287
+ await newAgent.session.addMessage("assistant", confirmResponse.message);
360
288
 
361
289
  /**
362
290
  * Cleanup
@@ -365,11 +293,11 @@ async function example() {
365
293
  }
366
294
 
367
295
  /**
368
- * Advanced Example: Session Step with Lifecycle Hooks
296
+ * Advanced Example: SessionManager with History Management
369
297
  */
370
298
  async function advancedExample() {
371
299
  const prisma = new PrismaClient();
372
- const userId = "user_456";
300
+ const sessionId = "session_user456_onboarding";
373
301
 
374
302
  interface UserContext {
375
303
  userId: string;
@@ -385,21 +313,23 @@ async function advancedExample() {
385
313
  description: "Help new users get started",
386
314
  provider: new GeminiProvider({
387
315
  apiKey: process.env.GEMINI_API_KEY!,
388
- model: "models/gemini-2.0-flash-exp",
316
+ model: "models/gemini-2.5-flash",
389
317
  }),
390
318
  context: {
391
- userId,
319
+ userId: "user_456",
392
320
  userName: "Bob",
393
321
  preferences: {
394
322
  currency: "USD",
395
323
  language: "en",
396
324
  },
397
325
  },
398
- // Lifecycle hooks for session step enrichment
326
+ // Lifecycle hooks for data enrichment
399
327
  hooks: {
400
- // Enrich collected data before saving
401
- onDataUpdate: async (data, previous) => {
402
- console.log("🔄 Collected data updated:", { data, previous });
328
+ onDataUpdate: async (
329
+ data: Partial<OnboardingData>,
330
+ previous: Partial<OnboardingData>
331
+ ) => {
332
+ console.log("🔄 Data updated:", { data, previous });
403
333
 
404
334
  // Normalize phone numbers
405
335
  if (data.phoneNumber) {
@@ -411,19 +341,22 @@ async function advancedExample() {
411
341
  console.warn("⚠️ Invalid email detected");
412
342
  }
413
343
 
414
- return data;
344
+ return data as OnboardingData;
415
345
  },
416
346
 
417
- // Update context when session step changes
418
- onContextUpdate: async (newContext, oldContext) => {
347
+ onContextUpdate: async (
348
+ newContext: UserContext,
349
+ oldContext: UserContext
350
+ ) => {
419
351
  console.log("🔄 Context updated:", { newContext, oldContext });
352
+ return Promise.resolve();
420
353
  },
421
354
  },
422
355
  persistence: {
423
- adapter: new PrismaAdapter({ prisma }),
356
+ adapter: new PrismaAdapter<UserContext>({ prisma }),
424
357
  autoSave: true,
425
- userId,
426
358
  },
359
+ sessionId,
427
360
  });
428
361
 
429
362
  // Create onboarding route
@@ -444,88 +377,91 @@ async function advancedExample() {
444
377
 
445
378
  onboardingRoute.initialStep
446
379
  .nextStep({
447
- instructions: "Welcome and ask for name",
380
+ prompt: "Welcome and ask for name",
448
381
  collect: ["fullName"],
449
- skipIf: (data) => !!data.fullName,
382
+ skipIf: (data: Partial<OnboardingData>) => !!data.fullName,
450
383
  })
451
384
  .nextStep({
452
- instructions: "Ask for email",
385
+ prompt: "Ask for email",
453
386
  collect: ["email"],
454
- skipIf: (data) => !!data.email,
387
+ skipIf: (data: Partial<OnboardingData>) => !!data.email,
455
388
  })
456
389
  .nextStep({
457
- instructions: "Ask for phone number (optional)",
390
+ prompt: "Ask for phone number (optional)",
458
391
  collect: ["phoneNumber"],
459
392
  })
460
393
  .nextStep({
461
- instructions: "Ask for country",
394
+ prompt: "Ask for country",
462
395
  collect: ["country"],
463
- skipIf: (data) => !!data.country,
396
+ skipIf: (data: Partial<OnboardingData>) => !!data.country,
464
397
  })
465
398
  .nextStep({
466
- instructions: "Confirm and complete onboarding",
399
+ prompt: "Confirm and complete onboarding",
467
400
  })
468
401
  .nextStep({ step: END_ROUTE });
469
402
 
470
- const persistence = agent.getPersistenceManager()!;
471
-
472
- // Create session with step
473
- const { sessionData, sessionStep } =
474
- await persistence.createSessionWithStep<OnboardingData>({
475
- userId,
476
- agentName: "Onboarding Assistant",
477
- });
403
+ console.log("✨ Onboarding session ready:", agent.session.id);
478
404
 
479
- console.log("✨ Created onboarding session:", sessionData.id);
480
-
481
- // Simulate conversation
482
- const history = [];
483
- let session = sessionStep;
405
+ // Demonstrate history override for context setting
406
+ const contextHistory = [
407
+ { role: "system" as const, content: "User is starting onboarding process" },
408
+ { role: "user" as const, content: "I'd like to create an account" },
409
+ ];
484
410
 
485
411
  const response = await agent.respond({
486
- history: [
487
- createMessageEvent(EventSource.CUSTOMER, "Bob", "Hi, I'm new here!"),
488
- ],
489
- session,
412
+ history: contextHistory, // Override session history for this response
490
413
  });
491
414
 
492
415
  console.log("🤖 Agent:", response.message);
493
- console.log("📊 Data so far:", response.session?.data);
416
+ console.log("📊 Data collected:", agent.session.getData<OnboardingData>());
494
417
 
495
- await persistence.saveMessage({
496
- sessionId: sessionData.id,
497
- userId,
498
- role: "agent",
499
- content: response.message,
418
+ // Add to session history for future responses
419
+ await agent.session.addMessage("user", "I'd like to create an account");
420
+ await agent.session.addMessage("assistant", response.message);
421
+
422
+ // Continue with session-managed history
423
+ await agent.session.addMessage("user", "My name is Bob Johnson and email is bob@example.com");
424
+
425
+ const response2 = await agent.respond({
426
+ history: agent.session.getHistory(),
500
427
  });
501
428
 
502
- if (response.isRouteComplete) {
429
+ console.log("🤖 Agent:", response2.message);
430
+ console.log("📊 Normalized data:", agent.session.getData<OnboardingData>());
431
+ // Shows normalized phone and email
432
+
433
+ if (response2.isRouteComplete) {
503
434
  console.log("\n✅ Onboarding complete!");
504
- await sendOnboardingEmail(agent.getData(sessionData.id) as OnboardingData);
435
+ await sendOnboardingEmail(agent.session.getData<OnboardingData>());
505
436
  }
506
437
 
507
- console.log("✅ Session step automatically saved to database!");
508
-
509
438
  await prisma.$disconnect();
510
439
  }
511
440
 
512
441
  /**
513
- * Minimal Example - Quick Start
442
+ * Minimal Example - Server Endpoint Pattern
514
443
  */
515
- async function quickStart() {
444
+ async function serverEndpointExample() {
516
445
  const prisma = new PrismaClient();
517
446
 
447
+ // Simulate server endpoint receiving request
448
+ const requestData = {
449
+ sessionId: "session_user789_support", // From client
450
+ message: "I need help, my name is John and my email is john@example.com",
451
+ };
452
+
453
+ // Create agent with sessionId (loads existing or creates new)
518
454
  const agent = new Agent({
519
455
  name: "Support Agent",
520
456
  provider: new GeminiProvider({
521
457
  apiKey: process.env.GEMINI_API_KEY!,
522
- model: "models/gemini-2.0-flash-exp",
458
+ model: "models/gemini-2.5-flash",
523
459
  }),
524
460
  persistence: {
525
- adapter: new PrismaAdapter({ prisma }),
526
- userId: "user_789",
527
- autoSave: true, // ✨ Automatically saves session step!
461
+ adapter: new PrismaAdapter<ContactFormData>({ prisma }),
462
+ autoSave: true,
528
463
  },
464
+ sessionId: requestData.sessionId, // ✨ Automatic session management
529
465
  });
530
466
 
531
467
  // Create a simple contact form route
@@ -544,51 +480,44 @@ async function quickStart() {
544
480
 
545
481
  contactRoute.initialStep
546
482
  .nextStep({
547
- instructions: "Collect all information",
483
+ prompt: "Collect all information",
548
484
  collect: ["name", "email", "message"],
549
485
  })
550
486
  .nextStep({
551
- instructions: "Confirm submission",
487
+ prompt: "Confirm submission",
552
488
  })
553
489
  .nextStep({ step: END_ROUTE });
554
490
 
555
- const persistence = agent.getPersistenceManager()!;
556
-
557
- // Create session with step support
558
- const { sessionData, sessionStep } =
559
- await persistence.createSessionWithStep<ContactFormData>({
560
- userId: "user_789",
561
- agentName: "Support Agent",
562
- });
563
-
564
- // Chat!
491
+ // Add user message and respond
492
+ await agent.session.addMessage("user", requestData.message);
493
+
565
494
  const response = await agent.respond({
566
- history: [
567
- createMessageEvent(
568
- EventSource.CUSTOMER,
569
- "User",
570
- "I need help, my name is John and my email is john@example.com"
571
- ),
572
- ],
573
- session: sessionStep,
495
+ history: agent.session.getHistory(),
574
496
  });
575
497
 
576
- console.log("✅ Response:", response.message);
577
- console.log("📊 Data:", response.session?.data);
498
+ await agent.session.addMessage("assistant", response.message);
499
+
500
+ // Return response (like in a REST API)
501
+ const apiResponse = {
502
+ message: response.message,
503
+ sessionId: agent.session.id,
504
+ isComplete: response.isRouteComplete,
505
+ data: agent.session.getData<ContactFormData>(),
506
+ };
507
+
508
+ console.log("✅ API Response:", apiResponse);
578
509
 
579
510
  if (response.isRouteComplete) {
580
511
  console.log("\n✅ Contact form submitted!");
581
- await logContactForm(agent.getData(sessionData.id) as ContactFormData);
512
+ await logContactForm(agent.session.getData<ContactFormData>());
582
513
  }
583
514
 
584
- console.log("💾 Session step auto-saved to Prisma!");
585
-
586
515
  await prisma.$disconnect();
516
+ return apiResponse;
587
517
  }
588
518
 
589
519
  /**
590
520
  * Mock function to send a flight confirmation email.
591
- * @param data - The flight booking data.
592
521
  */
593
522
  async function sendFlightConfirmation(
594
523
  data: Partial<FlightBookingData> | undefined
@@ -606,7 +535,6 @@ async function sendFlightConfirmation(
606
535
 
607
536
  /**
608
537
  * Mock function to send an onboarding email.
609
- * @param data - The onboarding data.
610
538
  */
611
539
  async function sendOnboardingEmail(data: Partial<OnboardingData> | undefined) {
612
540
  console.log("\n" + "=".repeat(60));
@@ -620,7 +548,6 @@ async function sendOnboardingEmail(data: Partial<OnboardingData> | undefined) {
620
548
 
621
549
  /**
622
550
  * Mock function to log a contact form submission.
623
- * @param data - The contact form data.
624
551
  */
625
552
  async function logContactForm(data: Partial<ContactFormData> | undefined) {
626
553
  console.log("\n" + "=".repeat(60));
@@ -637,4 +564,4 @@ if (require.main === module) {
637
564
  example().catch(console.error);
638
565
  }
639
566
 
640
- export { example, advancedExample, quickStart };
567
+ export { example, advancedExample, serverEndpointExample };