@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
package/README.md CHANGED
@@ -97,9 +97,9 @@ After building production AI applications, we found existing solutions either:
97
97
 
98
98
  ### 🔧 **Tools & Data Integration**
99
99
 
100
- - **Data-Aware Tools** - Tools access collected data directly via `data` context
101
- - **Enrichment Hooks** - Tools can modify collected data with `dataUpdate`
102
- - **Action Flags** - Tools set flags for conditional execution
100
+ - **Advanced Tool System** - Context-aware tools with data access and lifecycle integration
101
+ - **Dynamic Tool Calling** - AI can call tools during streaming responses
102
+ - **Tool Result Processing** - Tools update context and collected data automatically
103
103
 
104
104
  </td>
105
105
  </tr>
@@ -119,6 +119,28 @@ After building production AI applications, we found existing solutions either:
119
119
 
120
120
  - **Always-On Routing** - Users can change their mind mid-conversation
121
121
  - **Context Awareness** - Router sees current progress and collected data
122
+
123
+ </td>
124
+ </tr>
125
+ <tr>
126
+ <td width="50%">
127
+
128
+ ### 🚀 **Advanced Features**
129
+
130
+ - **Streaming Responses** - Real-time response generation with tool execution
131
+ - **Lifecycle Hooks** - `prepare`/`finalize` functions or tools on steps, context/data update hooks
132
+ - **Sequential Steps** - Define linear conversation flows with `steps` array
133
+ - **Route Transitions** - Automatic flow transitions when routes complete
134
+ - **Smart Step Control** - `skipIf` and `requires` for data-driven flow control
135
+
136
+ </td>
137
+ <td width="50%">
138
+
139
+ ### 🎨 **Behavioral Control**
140
+
141
+ - **Guidelines & Rules** - Define agent behavior patterns and restrictions
142
+ - **Route-Specific Logic** - Different rules for different conversation contexts
143
+ - **Knowledge Base** - Structured information available to AI during responses
122
144
  - **Session Step** - Track conversation progress across turns
123
145
 
124
146
  </td>
@@ -151,7 +173,12 @@ yarn add @falai/agent
151
173
  Create a minimal conversational agent:
152
174
 
153
175
  ```typescript
154
- import { Agent, GeminiProvider } from "@falai/agent";
176
+ import {
177
+ Agent,
178
+ GeminiProvider,
179
+ createMessageEvent,
180
+ EventSource,
181
+ } from "@falai/agent";
155
182
 
156
183
  // Create your agent
157
184
  const agent = new Agent({
@@ -159,24 +186,26 @@ const agent = new Agent({
159
186
  description: "A helpful assistant",
160
187
  provider: new GeminiProvider({
161
188
  apiKey: process.env.GEMINI_API_KEY,
162
- model: "models/gemini-2.0-flash-exp",
189
+ model: "models/gemini-2.5-flash",
163
190
  }),
164
191
  });
165
192
 
166
- // Create a simple route
193
+ // Create a simple route with sequential steps
167
194
  agent.createRoute({
168
195
  title: "General Help",
169
196
  description: "Answers user questions",
170
197
  conditions: ["User needs help or asks a question"],
171
- initialStep: {
172
- instructions: "Answer the user's question helpfully",
173
- },
198
+ steps: [
199
+ {
200
+ id: "answer_question",
201
+ description: "Answer the user's question helpfully",
202
+ prompt: "Answer the user's question helpfully",
203
+ },
204
+ ],
174
205
  });
175
206
 
176
- // Start chatting
177
- const response = await agent.respond({
178
- history: [{ source: "customer", name: "Alice", content: "What can you do?" }],
179
- });
207
+ // Start chatting - simple message-based API
208
+ const response = await agent.respond("What can you do?");
180
209
 
181
210
  console.log(response.message);
182
211
  ```
@@ -185,6 +214,60 @@ console.log(response.message);
185
214
 
186
215
  ---
187
216
 
217
+ ## 🔧 Advanced Step Configuration
218
+
219
+ ### Using Tools as Prepare/Finalize Hooks
220
+
221
+ Steps can use tools for `prepare` and `finalize` lifecycle hooks, enabling powerful data processing and side effects:
222
+
223
+ ```typescript
224
+ // Define a preparation tool
225
+ const validateUser = {
226
+ id: "validate_user",
227
+ description: "Validate user data before processing",
228
+ parameters: { type: "object", properties: {} },
229
+ handler: ({ context, data }) => {
230
+ // Validation logic
231
+ if (!data.email?.includes("@")) {
232
+ throw new Error("Invalid email address");
233
+ }
234
+ return { data: "User validated" };
235
+ },
236
+ };
237
+
238
+ // Use tools in step lifecycle
239
+ agent.createRoute({
240
+ title: "User Registration",
241
+ schema: {
242
+ /* ... */
243
+ },
244
+ steps: [
245
+ {
246
+ id: "collect_info",
247
+ description: "Collect user information",
248
+ collect: ["name", "email"],
249
+ prompt: "Please provide your name and email.",
250
+ finalize: validateUser, // Tool validates data after collection
251
+ },
252
+ {
253
+ id: "send_welcome",
254
+ description: "Send welcome email",
255
+ prompt: "Welcome! Check your email for confirmation.",
256
+ prepare: "send_welcome_email", // Tool ID string - sends email before AI responds
257
+ },
258
+ ],
259
+ });
260
+ ```
261
+
262
+ **Benefits:**
263
+
264
+ - ✅ **Reusable Logic** - Tools can be shared across steps and routes
265
+ - ✅ **Error Handling** - Tool execution includes automatic error handling
266
+ - ✅ **Context Access** - Tools receive full context and collected data
267
+ - ✅ **Data Updates** - Tools can modify collected data or agent context
268
+
269
+ ---
270
+
188
271
  ### Level 2: Data Extraction (The Real Power)
189
272
 
190
273
  Now let's build an agent that intelligently collects structured data:
@@ -193,11 +276,9 @@ Now let's build an agent that intelligently collects structured data:
193
276
  import {
194
277
  Agent,
195
278
  OpenAIProvider,
196
- defineTool,
197
279
  createMessageEvent,
198
280
  EventSource,
199
- END_ROUTE,
200
- type ToolContext,
281
+ type Tool,
201
282
  } from "@falai/agent";
202
283
 
203
284
  // 1️⃣ Define the data you want to collect
@@ -213,21 +294,23 @@ const agent = new Agent({
213
294
  description: "A hotel booking assistant that collects information.",
214
295
  provider: new OpenAIProvider({
215
296
  apiKey: process.env.OPENAI_API_KEY,
216
- model: "gpt-5", // or your preferred model
297
+ model: "gpt-4", // or your preferred model
217
298
  }),
218
299
  });
219
300
 
220
301
  // 3️⃣ Define a tool that uses the collected data
221
- const bookHotel = defineTool(
222
- "book_hotel",
223
- async ({ data }: ToolContext<{}, HotelBookingData>) => {
302
+ const bookHotel: Tool<unknown, [], string, HotelBookingData> = {
303
+ id: "book_hotel",
304
+ description: "Books a hotel once all information is collected.",
305
+ parameters: { type: "object", properties: {} },
306
+ handler: ({ data }) => {
307
+ const bookingData = data as Partial<HotelBookingData>;
224
308
  // Logic to book the hotel...
225
309
  return {
226
- data: `Booking confirmed for ${data?.guests} at ${data?.hotelName} on ${data?.date}!`,
310
+ data: `Booking confirmed for ${bookingData.guests} guests at ${bookingData.hotelName} on ${bookingData.date}!`,
227
311
  };
228
312
  },
229
- { description: "Books a hotel once all information is collected." }
230
- );
313
+ };
231
314
 
232
315
  const schema = {
233
316
  type: "object",
@@ -239,61 +322,54 @@ const schema = {
239
322
  required: ["hotelName", "date", "guests"],
240
323
  };
241
324
 
242
- // 4️⃣ Create a data-driven route
243
- const bookingRoute = agent.createRoute<HotelBookingData>({
325
+ // 4️⃣ Create a data-driven route with sequential steps
326
+ agent.createRoute<HotelBookingData>({
244
327
  title: "Book Hotel",
245
328
  description: "Guides the user through the hotel booking process.",
246
329
  conditions: ["User wants to book a hotel"],
247
330
  schema,
248
- endStep: {
249
- instructions: "Confirm the booking details warmly and thank the user",
250
- },
251
- });
252
-
253
- // 5️⃣ Build the flow to collect data step-by-step
254
- const askHotel = bookingRoute.initialStep.nextStep({
255
- instructions: "Ask which hotel they want to book",
256
- collect: ["hotelName"],
257
- skipIf: (data) => !!data.hotelName, // Skip if we already have it
258
- });
259
-
260
- const askDate = askHotel.nextStep({
261
- instructions: "Ask for the booking date",
262
- collect: ["date"],
263
- skipIf: (data) => !!data.date,
264
- });
265
-
266
- const askGuests = askDate.nextStep({
267
- instructions: "Ask for the number of guests",
268
- collect: ["guests"],
269
- skipIf: (data) => !!data.guests,
270
- });
271
-
272
- const confirmBooking = askGuests.nextStep({
273
- tool: bookHotel,
274
- condition:
275
- "All required information (hotel, date, guests) has been collected.",
276
- });
277
-
278
- confirmBooking.nextStep({
279
- step: END_ROUTE, // End the conversation flow
280
- });
281
-
282
- // 6️⃣ Start conversing
283
- const response = await agent.respond({
284
- history: [
285
- createMessageEvent(
286
- EventSource.CUSTOMER,
287
- "Alice",
288
- "I want to book a room at the Grand Hotel for 2 people."
289
- ),
331
+ // 5️⃣ Define the flow to collect data step-by-step
332
+ steps: [
333
+ {
334
+ id: "ask_hotel",
335
+ description: "Ask which hotel they want to book",
336
+ prompt: "Which hotel would you like to book?",
337
+ collect: ["hotelName"],
338
+ skipIf: (data: Partial<HotelBookingData>) => !!data.hotelName,
339
+ },
340
+ {
341
+ id: "ask_date",
342
+ description: "Ask for the booking date",
343
+ prompt: "What date would you like to book for?",
344
+ collect: ["date"],
345
+ requires: ["hotelName"],
346
+ skipIf: (data: Partial<HotelBookingData>) => !!data.date,
347
+ },
348
+ {
349
+ id: "ask_guests",
350
+ description: "Ask for the number of guests",
351
+ prompt: "How many guests will be staying?",
352
+ collect: ["guests"],
353
+ requires: ["hotelName", "date"],
354
+ skipIf: (data: Partial<HotelBookingData>) => data.guests !== undefined,
355
+ },
356
+ {
357
+ id: "confirm_booking",
358
+ description: "Confirm and book the hotel",
359
+ prompt: "Let me confirm your booking details.",
360
+ tools: [bookHotel],
361
+ requires: ["hotelName", "date", "guests"],
362
+ },
290
363
  ],
291
364
  });
292
365
 
366
+ // 5️⃣ Start conversing - simple message API
367
+ const response = await agent.respond("I want to book a room at the Grand Hotel for 2 people.");
368
+
293
369
  // The agent sees that `hotelName` and `guests` are provided,
294
370
  // skips the first and third steps, and only asks for the date.
295
371
  console.log(response.message);
296
- // Expected: "Sure, for what date would you like to book at the Grand Hotel?"
372
+ // Expected: "What date would you like to book for?"
297
373
  ```
298
374
 
299
375
  **That's it!** The data-driven agent will:
@@ -306,32 +382,61 @@ console.log(response.message);
306
382
 
307
383
  This creates a flexible and natural conversation, guided by a clear data structure.
308
384
 
309
- 📖 **[See more examples →](./docs/EXAMPLES.md)** | **[Full tutorial →](./docs/GETTING_STARTED.md)**
385
+ 📖 **[See more examples →](./examples/)** | **[Full tutorial →](./docs/guides/getting-started/README.md)**
310
386
 
311
387
  ### ⚡ Advanced Features
312
388
 
313
389
  **Streaming responses** for real-time UX:
314
390
 
315
391
  ```typescript
316
- for await (const chunk of agent.respondStream({ history })) {
392
+ for await (const chunk of agent.respondStream("Hello")) {
317
393
  process.stdout.write(chunk.delta);
394
+ if (chunk.done) {
395
+ console.log("\nTool calls:", chunk.toolCalls);
396
+ }
318
397
  }
319
398
  ```
320
399
 
321
- **Session step** for multi-turn conversations:
400
+ **Automatic session management** for multi-turn conversations:
322
401
 
323
402
  ```typescript
324
- let session = createSession<MyData>();
325
- const response = await agent.respond({ history, session });
326
- session = response.session!; // Tracks progress across turns, you can use it to save the current step in your database
403
+ // Server-side: Create agent with sessionId
404
+ const agent = new Agent({
405
+ name: "Assistant",
406
+ provider: new OpenAIProvider({ apiKey: process.env.OPENAI_API_KEY }),
407
+ persistence: { adapter: new PrismaAdapter({ prisma }) },
408
+ sessionId: "user-123" // Automatically loads or creates session
409
+ });
410
+
411
+ // Simple conversation - no manual session management needed
412
+ const response = await agent.respond("Hello, how are you?");
413
+ console.log(response.message);
414
+ console.log(agent.session.id); // Session ID for client
327
415
  ```
328
416
 
329
- **Database persistence** with any adapter:
417
+ **Automatic session persistence** with any adapter:
330
418
 
331
419
  ```typescript
332
420
  import { PrismaAdapter } from "@falai/agent";
333
- const agent = new Agent({
334
- persistence: { adapter: new PrismaAdapter({ prisma }) },
421
+
422
+ // Server endpoint - sessions managed automatically
423
+ app.post('/chat', async (req, res) => {
424
+ const { sessionId, message } = req.body;
425
+
426
+ const agent = new Agent({
427
+ name: "ChatBot",
428
+ provider: new OpenAIProvider({ apiKey: process.env.OPENAI_API_KEY }),
429
+ persistence: { adapter: new PrismaAdapter({ prisma }) },
430
+ sessionId // Automatically loads or creates this session
431
+ });
432
+
433
+ const response = await agent.respond(message);
434
+
435
+ res.json({
436
+ message: response.message,
437
+ sessionId: agent.session.id, // Return session ID to client
438
+ isComplete: response.isRouteComplete
439
+ });
335
440
  });
336
441
  ```
337
442
 
@@ -341,104 +446,172 @@ const agent = new Agent({
341
446
 
342
447
  ## 📚 Documentation
343
448
 
344
- 📋 **[Complete Documentation Index →](docs/DOCS.md)** - Searchable index of all docs
449
+ 📋 **[Complete Documentation Index →](docs/README.md)** - Searchable index of all docs
450
+
451
+ ### 🚀 Getting Started
452
+
453
+ - **[Quick Start Guide](./docs/guides/getting-started/README.md)** - Build your first agent in 15 minutes
454
+
455
+ ### 🏗️ Core Framework
456
+
457
+ - **[Agent Orchestration](./docs/core/agent/README.md)** - Agent lifecycle, configuration & hooks
458
+ - **[Context Management](./docs/core/agent/context-management.md)** - Dynamic context providers & updates
459
+ - **[Session Management](./docs/core/agent/session-management.md)** - Session persistence & state
345
460
 
346
- **Core Guides:**
461
+ ### 💬 Conversation Flows
347
462
 
348
- - 📘 **[Getting Started](./docs/GETTING_STARTED.md)** - Build your first agent in 5 minutes
349
- - 🏗️ **[Architecture](./docs/ARCHITECTURE.md)** - Design principles & philosophy
350
- - 🔧 **[API Reference](./docs/API_REFERENCE.md)** - Complete API documentation
351
- - 📝 **[Examples](./docs/EXAMPLES.md)** - Production-ready code examples
463
+ - **[Routes](./docs/core/conversation-flows/routes.md)** - Route definition & lifecycle
464
+ - **[Steps](./docs/core/conversation-flows/steps.md)** - Step transitions & logic
352
465
 
353
- **Feature Guides:**
466
+ ### 🤖 AI Integration
354
467
 
355
- - 🛤️ **[Routes](./docs/ROUTES.md)** - Creating conversational routes & flows
356
- - 🔄 **[Steps](./docs/STEPS.md)** - Managing steps & transitions
357
- - 💾 **[Persistence](./docs/PERSISTENCE.md)** - Database integration with adapters
358
- - 🔒 **[Domains](./docs/DOMAINS.md)** - Optional tool security & organization
359
- - 🎛️ **[Agent](./docs/AGENT.md)** - Configuration patterns
360
- - 📊 **[Context Management](./docs/CONTEXT_MANAGEMENT.md)** - Session step & lifecycle hooks
361
- - 🤖 **[AI Providers](./docs/PROVIDERS.md)** - Anthropic, OpenAI, Gemini, OpenRouter
468
+ - **[AI Providers](./docs/core/ai-integration/providers.md)** - Gemini, OpenAI, Anthropic, OpenRouter
469
+ - **[Prompt Composition](./docs/core/ai-integration/prompt-composition/)** - How prompts are built
470
+ - **[Response Processing](./docs/core/ai-integration/response-processing/)** - Schema extraction & tool calls
471
+
472
+ ### 🔧 Tools & Data
473
+
474
+ - **[Tool Definition](./docs/core/tools/tool-definition.md)** - Creating and configuring tools
475
+ - **[Tool Execution](./docs/core/tools/tool-execution.md)** - Dynamic tool calling and context updates
476
+ - **[Tool Scoping](./docs/core/tools/tool-scoping.md)** - Agent, route, and step-level tool management
477
+
478
+ ### 💾 Persistence
479
+
480
+ - **[Session Storage](./docs/core/persistence/session-storage.md)** - Session persistence patterns
481
+ - **[Database Adapters](./docs/core/persistence/adapters.md)** - Built-in adapter configurations
482
+
483
+ ### 🚀 Advanced Guides
484
+
485
+ - **[Building Agents](./docs/guides/building-agents/)** - Complete agent construction patterns
486
+ - **[Advanced Patterns](./docs/guides/advanced-patterns/)** - Complex use cases & integrations
487
+ - **[API Reference](./docs/api/overview.md)** - Complete API documentation
362
488
 
363
489
  ---
364
490
 
365
- ## 🎯 Examples - Pick Your Use Case
491
+ ## 🎯 Examples - By Domain
492
+
493
+ ### 🏗️ Core Concepts
494
+
495
+ Fundamental patterns every agent needs:
496
+
497
+ - **[Basic Agent](./examples/core-concepts/basic-agent.ts)** - Minimal agent setup and configuration
498
+ - **[Schema-Driven Extraction](./examples/core-concepts/schema-driven-extraction.ts)** - Type-safe data collection with JSON Schema
499
+ - **[Session Management](./examples/core-concepts/session-management.ts)** - Multi-turn conversations with persistence
500
+ - **[Context Providers](./examples/core-concepts/context-providers.ts)** - Dynamic context fetching and updates
501
+
502
+ ### 💬 Conversation Flows
503
+
504
+ Building intelligent dialogue systems:
366
505
 
367
- ### 🤖 Conversational Flows
506
+ - **[Simple Route](./examples/conversation-flows/simple-route.ts)** - Basic route with linear step progression
507
+ - **[Data-Driven Flows](./examples/conversation-flows/data-driven-flows.ts)** - Conditional logic with skipIf and requires
508
+ - **[Conditional Branching](./examples/conversation-flows/conditional-branching.ts)** - AI-powered branching decisions
509
+ - **[Completion Transitions](./examples/conversation-flows/completion-transitions.ts)** - Route transitions when flows complete
368
510
 
369
- Build intelligent data-collecting conversations:
511
+ ### 🤖 AI Providers
370
512
 
371
- - 🏢 **[Business Onboarding](./examples/business-onboarding.ts)** - Multi-step company setup with conditional branching
372
- - ✈️ **[Travel Agent](./examples/travel-agent.ts)** - Flight & hotel booking with session step
373
- - 🏥 **[Healthcare Assistant](./examples/healthcare-agent.ts)** - Appointment scheduling & lab result delivery
513
+ Integrating different AI services:
374
514
 
375
- ### 🏢 Production Patterns
515
+ - **[Gemini Integration](./examples/ai-providers/gemini-integration.ts)** - Google Gemini with advanced features
516
+ - **[OpenAI Integration](./examples/ai-providers/openai-integration.ts)** - GPT-4 and GPT-3.5 Turbo
517
+ - **[Anthropic Integration](./examples/ai-providers/anthropic-integration.ts)** - Claude with streaming and tool calling
518
+ - **[Custom Provider](./examples/ai-providers/custom-provider.ts)** - Build your own AI provider integration
376
519
 
377
- Enterprise-ready features:
520
+ ### 💾 Persistence
378
521
 
379
- - 💾 **[Prisma Persistence](./examples/prisma-persistence.ts)** - Auto-save sessions with Prisma ORM
380
- - ⚡ **[Redis Persistence](./examples/redis-persistence.ts)** - High-performance in-memory sessions
381
- - 🔐 **[Domain Scoping](./examples/domain-scoping.ts)** - Tool security & access control
522
+ Session storage and data persistence:
382
523
 
383
- ### Advanced Techniques
524
+ - **[Memory Sessions](./examples/persistence/memory-sessions.ts)** - In-memory session management
525
+ - **[Redis Persistence](./examples/persistence/redis-persistence.ts)** - High-performance Redis storage
526
+ - **[Database Persistence](./examples/persistence/database-persistence.ts)** - SQL/NoSQL database integration
527
+ - **[Custom Adapter](./examples/persistence/custom-adapter.ts)** - Build custom persistence adapters
384
528
 
385
- Power-user features:
529
+ ### 🔧 Tools
386
530
 
387
- - 📋 **[Declarative Agent](./examples/declarative-agent.ts)** - Full constructor-based configuration
388
- - ⚡ **[Streaming Responses](./examples/streaming-agent.ts)** - Real-time response streaming
389
- - 📜 **[Rules & Prohibitions](./examples/rules-prohibitions.ts)** - Fine-grained behavior control
531
+ Tool creation and data manipulation:
390
532
 
391
- 📖 **[See all examples with detailed explanations →](./docs/EXAMPLES.md)**
533
+ - **[Basic Tools](./examples/tools/basic-tools.ts)** - Simple tool creation and execution
534
+ - **[Data Enrichment Tools](./examples/tools/data-enrichment-tools.ts)** - Tools that modify collected data
535
+ - **[Context Updating Tools](./examples/tools/context-updating-tools.ts)** - Tools that modify agent context
536
+ - **[Domain Scoped Tools](./examples/tools/domain-scoped-tools.ts)** - Tool security and access control
537
+
538
+ ### 🚀 Advanced Patterns
539
+
540
+ Complex use cases and integrations:
541
+
542
+ - **[Multi-Turn Conversations](./examples/advanced-patterns/multi-turn-conversations.ts)** - Complex dialogue flows with backtracking
543
+ - **[Streaming Responses](./examples/advanced-patterns/streaming-responses.ts)** - Real-time response streaming
544
+ - **[Route Lifecycle Hooks](./examples/advanced-patterns/route-lifecycle-hooks.ts)** - Custom route behavior
545
+ - **[Custom Response Schemas](./examples/advanced-patterns/custom-response-schemas.ts)** - Advanced schema patterns
546
+
547
+ ### 🔗 Integrations
548
+
549
+ External service integrations:
550
+
551
+ - **[Server Deployment](./examples/integrations/server-deployment.ts)** - HTTP API with WebSocket streaming
552
+ - **[Database Integration](./examples/integrations/database-integration.ts)** - Direct database access patterns
553
+ - **[Webhook Integration](./examples/integrations/webhook-integration.ts)** - HTTP webhook handling
554
+ - **[API Integration](./examples/integrations/api-integration.ts)** - External API calls and responses
555
+
556
+ 📖 **[See all examples with detailed explanations →](./examples/)**
392
557
 
393
558
  ---
394
559
 
395
560
  ## 🏗️ How It Works
396
561
 
397
- `@falai/agent` uses a **schema-first, step machine-driven architecture**:
562
+ `@falai/agent` uses a **schema-first, pipeline-driven architecture** with sophisticated data extraction and lifecycle management:
398
563
 
399
564
  ```
400
- User Message
565
+ User Message + Session State
401
566
 
402
567
  ┌─────────────────────────────────────────┐
403
- │ 1. PREPARATION (Tools)
404
- │ • Execute tools for current step
405
- │ • Update context with results
406
- │ • Enrich collected data
568
+ │ 1. RESPONSE PIPELINE
569
+ │ • Prepare context & session
570
+ │ • Handle pending transitions
571
+ │ • Execute step prepare() functions
407
572
  └─────────────────────────────────────────┘
408
573
 
409
574
  ┌─────────────────────────────────────────┐
410
- │ 2. ROUTING (AI-Driven)
411
- │ • Evaluate all routes
412
- │ • Consider session context
413
- │ • Select best route (0-100 score)
575
+ │ 2. ROUTING + STEP SELECTION
576
+ │ • Evaluate routes (AI scoring)
577
+ │ • Filter steps (skipIf, requires)
578
+ │ • Select best route & step
414
579
  └─────────────────────────────────────────┘
415
580
 
416
581
  ┌─────────────────────────────────────────┐
417
- │ 3. STEP SELECTION (Code + AI)
418
- │ • Filter steps with skipIf (code)
419
- │ • AI picks best from valid steps
420
- │ • Update session step
582
+ │ 3. RESPONSE GENERATION
583
+ │ • Build prompt with context/schema
584
+ │ • Stream or generate AI response
585
+ │ • Extract data via JSON Schema
586
+ │ • Execute dynamic tools (streaming) │
421
587
  └─────────────────────────────────────────┘
422
588
 
423
589
  ┌─────────────────────────────────────────┐
424
- │ 4. RESPONSE (AI + Schema)
425
- │ • Extract data via JSON Schema
426
- │ • Generate natural message
427
- │ • Update session with new data
590
+ │ 4. POST-PROCESSING
591
+ │ • Run finalize() functions
592
+ │ • Update context/data (lifecycle)
593
+ │ • Auto-save session
594
+ │ • Handle route completion/transitions│
428
595
  └─────────────────────────────────────────┘
429
596
 
430
- Response with Structured Data
597
+ Response + Updated Session State
431
598
  ```
432
599
 
433
600
  ### Key Principles:
434
601
 
435
- ✅ **AI decides:** Route selection, step selection (from valid options), message generation, data extraction
436
- ✅ **Code decides:** Tool execution, step filtering (`skipIf`), data validation, flow control
602
+ ✅ **AI decides:** Route selection, message generation, data extraction, tool calling
603
+ ✅ **Code decides:** Step flow control (`skipIf`/`requires`), tool execution, lifecycle hooks, data validation
437
604
  ✅ **Result:** Predictable, testable agents with natural conversations
438
605
 
439
- **This architecture delivers 1-2 LLM calls per turn** (vs 3-5 in traditional approaches) while maintaining complete type safety.
606
+ ### New Features:
607
+
608
+ 🚀 **Streaming Support**: Real-time response generation with tool execution
609
+ 🔄 **Lifecycle Hooks**: `prepare`/`finalize` functions or tools, context/data update hooks
610
+ 📊 **Data-Driven Flows**: Smart step skipping, prerequisite checking, schema validation
611
+ 🛠️ **Advanced Tools**: Context-aware tools with data access and lifecycle integration
612
+ 💾 **Session Management**: Automatic persistence, state restoration, route transitions
440
613
 
441
- 📖 **[Read the full architecture guide →](./docs/ARCHITECTURE.md)**
614
+ 📖 **[Read the architecture docs →](./docs/core/agent/README.md)**
442
615
 
443
616
  ---
444
617
 
@@ -469,8 +642,8 @@ MIT © 2025
469
642
 
470
643
  **Choose your path:**
471
644
 
472
- 👶 **New to AI agents?** → [5-minute tutorial](./docs/GETTING_STARTED.md)
473
- 🏗️ **Building production app?** → [Architecture guide](./docs/ARCHITECTURE.md)
645
+ 👶 **New to AI agents?** → [Quick Start Guide](./docs/guides/getting-started/README.md)
646
+ 🏗️ **Building production app?** → [Agent Architecture](./docs/core/agent/README.md)
474
647
  💡 **Have questions?** → [Open a discussion](https://github.com/falai-dev/agent/discussions)
475
648
 
476
649
  ---
@@ -2,7 +2,7 @@
2
2
  * Memory adapter for persistence
3
3
  * In-memory storage for testing and development (no database required)
4
4
  */
5
- import type { SessionRepository, MessageRepository, SessionData, MessageData, PersistenceAdapter } from "../types/persistence";
5
+ import type { MessageData, MessageRepository, PersistenceAdapter, SessionData, SessionRepository } from "../types";
6
6
  /**
7
7
  * Memory Adapter - Provider-style API for in-memory persistence
8
8
  *
@@ -26,8 +26,8 @@ import type { SessionRepository, MessageRepository, SessionData, MessageData, Pe
26
26
  * });
27
27
  * ```
28
28
  */
29
- export declare class MemoryAdapter implements PersistenceAdapter {
30
- readonly sessionRepository: SessionRepository;
29
+ export declare class MemoryAdapter<TData = Record<string, unknown>> implements PersistenceAdapter<TData> {
30
+ readonly sessionRepository: SessionRepository<TData>;
31
31
  readonly messageRepository: MessageRepository;
32
32
  private sessions;
33
33
  private messages;
@@ -40,7 +40,7 @@ export declare class MemoryAdapter implements PersistenceAdapter {
40
40
  * Get data snapshot (useful for debugging)
41
41
  */
42
42
  getSnapshot(): {
43
- sessions: SessionData[];
43
+ sessions: SessionData<TData>[];
44
44
  messages: MessageData[];
45
45
  };
46
46
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryAdapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/MemoryAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EAGlB,MAAM,UAAU,CAAC;AAGlB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACxD,YAAW,kBAAkB,CAAC,KAAK,CAAC;IAEpC,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5D,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC;IACrD,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,QAAQ,CAA2B;;IAU3C;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,WAAW,IAAI;QACb,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,QAAQ,EAAE,WAAW,EAAE,CAAC;KACzB;CAMF"}