@falai/agent 0.1.0-alpha2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. package/README.md +797 -0
  2. package/dist/cjs/package.json +1 -0
  3. package/dist/cjs/src/adapters/MemoryAdapter.d.ts +47 -0
  4. package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +1 -0
  5. package/dist/cjs/src/adapters/MemoryAdapter.js +202 -0
  6. package/dist/cjs/src/adapters/MemoryAdapter.js.map +1 -0
  7. package/dist/cjs/src/adapters/MongoAdapter.d.ts +97 -0
  8. package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +1 -0
  9. package/dist/cjs/src/adapters/MongoAdapter.js +168 -0
  10. package/dist/cjs/src/adapters/MongoAdapter.js.map +1 -0
  11. package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts +169 -0
  12. package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
  13. package/dist/cjs/src/adapters/OpenSearchAdapter.js +458 -0
  14. package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +1 -0
  15. package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts +71 -0
  16. package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  17. package/dist/cjs/src/adapters/PostgreSQLAdapter.js +260 -0
  18. package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +1 -0
  19. package/dist/cjs/src/adapters/PrismaAdapter.d.ts +115 -0
  20. package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +1 -0
  21. package/dist/cjs/src/adapters/PrismaAdapter.js +366 -0
  22. package/dist/cjs/src/adapters/PrismaAdapter.js.map +1 -0
  23. package/dist/cjs/src/adapters/RedisAdapter.d.ts +71 -0
  24. package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +1 -0
  25. package/dist/cjs/src/adapters/RedisAdapter.js +231 -0
  26. package/dist/cjs/src/adapters/RedisAdapter.js.map +1 -0
  27. package/dist/cjs/src/adapters/SQLiteAdapter.d.ts +69 -0
  28. package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +1 -0
  29. package/dist/cjs/src/adapters/SQLiteAdapter.js +312 -0
  30. package/dist/cjs/src/adapters/SQLiteAdapter.js.map +1 -0
  31. package/dist/cjs/src/adapters/index.d.ts +17 -0
  32. package/dist/cjs/src/adapters/index.d.ts.map +1 -0
  33. package/dist/cjs/src/adapters/index.js +21 -0
  34. package/dist/cjs/src/adapters/index.js.map +1 -0
  35. package/dist/cjs/src/constants/index.d.ts +10 -0
  36. package/dist/cjs/src/constants/index.d.ts.map +1 -0
  37. package/dist/cjs/src/constants/index.js +13 -0
  38. package/dist/cjs/src/constants/index.js.map +1 -0
  39. package/dist/cjs/src/core/Agent.d.ts +232 -0
  40. package/dist/cjs/src/core/Agent.d.ts.map +1 -0
  41. package/dist/cjs/src/core/Agent.js +741 -0
  42. package/dist/cjs/src/core/Agent.js.map +1 -0
  43. package/dist/cjs/src/core/Events.d.ts +26 -0
  44. package/dist/cjs/src/core/Events.d.ts.map +1 -0
  45. package/dist/cjs/src/core/Events.js +144 -0
  46. package/dist/cjs/src/core/Events.js.map +1 -0
  47. package/dist/cjs/src/core/PersistenceManager.d.ts +98 -0
  48. package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
  49. package/dist/cjs/src/core/PersistenceManager.js +261 -0
  50. package/dist/cjs/src/core/PersistenceManager.js.map +1 -0
  51. package/dist/cjs/src/core/PromptComposer.d.ts +27 -0
  52. package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -0
  53. package/dist/cjs/src/core/PromptComposer.js +194 -0
  54. package/dist/cjs/src/core/PromptComposer.js.map +1 -0
  55. package/dist/cjs/src/core/ResponseEngine.d.ts +32 -0
  56. package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -0
  57. package/dist/cjs/src/core/ResponseEngine.js +202 -0
  58. package/dist/cjs/src/core/ResponseEngine.js.map +1 -0
  59. package/dist/cjs/src/core/ResponseModal.d.ts +222 -0
  60. package/dist/cjs/src/core/ResponseModal.d.ts.map +1 -0
  61. package/dist/cjs/src/core/ResponseModal.js +1588 -0
  62. package/dist/cjs/src/core/ResponseModal.js.map +1 -0
  63. package/dist/cjs/src/core/ResponsePipeline.d.ts +175 -0
  64. package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
  65. package/dist/cjs/src/core/ResponsePipeline.js +549 -0
  66. package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
  67. package/dist/cjs/src/core/Route.d.ts +181 -0
  68. package/dist/cjs/src/core/Route.d.ts.map +1 -0
  69. package/dist/cjs/src/core/Route.js +541 -0
  70. package/dist/cjs/src/core/Route.js.map +1 -0
  71. package/dist/cjs/src/core/RoutingEngine.d.ts +159 -0
  72. package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
  73. package/dist/cjs/src/core/RoutingEngine.js +961 -0
  74. package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
  75. package/dist/cjs/src/core/SessionManager.d.ts +94 -0
  76. package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
  77. package/dist/cjs/src/core/SessionManager.js +239 -0
  78. package/dist/cjs/src/core/SessionManager.js.map +1 -0
  79. package/dist/cjs/src/core/Step.d.ts +170 -0
  80. package/dist/cjs/src/core/Step.d.ts.map +1 -0
  81. package/dist/cjs/src/core/Step.js +448 -0
  82. package/dist/cjs/src/core/Step.js.map +1 -0
  83. package/dist/cjs/src/core/ToolManager.d.ts +234 -0
  84. package/dist/cjs/src/core/ToolManager.d.ts.map +1 -0
  85. package/dist/cjs/src/core/ToolManager.js +1117 -0
  86. package/dist/cjs/src/core/ToolManager.js.map +1 -0
  87. package/dist/cjs/src/index.d.ts +44 -0
  88. package/dist/cjs/src/index.d.ts.map +1 -0
  89. package/dist/cjs/src/index.js +88 -0
  90. package/dist/cjs/src/index.js.map +1 -0
  91. package/dist/cjs/src/providers/AnthropicProvider.d.ts +43 -0
  92. package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +1 -0
  93. package/dist/cjs/src/providers/AnthropicProvider.js +377 -0
  94. package/dist/cjs/src/providers/AnthropicProvider.js.map +1 -0
  95. package/dist/cjs/src/providers/GeminiProvider.d.ts +58 -0
  96. package/dist/cjs/src/providers/GeminiProvider.d.ts.map +1 -0
  97. package/dist/cjs/src/providers/GeminiProvider.js +489 -0
  98. package/dist/cjs/src/providers/GeminiProvider.js.map +1 -0
  99. package/dist/cjs/src/providers/OpenAIProvider.d.ts +52 -0
  100. package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +1 -0
  101. package/dist/cjs/src/providers/OpenAIProvider.js +395 -0
  102. package/dist/cjs/src/providers/OpenAIProvider.js.map +1 -0
  103. package/dist/cjs/src/providers/OpenRouterProvider.d.ts +56 -0
  104. package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +1 -0
  105. package/dist/cjs/src/providers/OpenRouterProvider.js +409 -0
  106. package/dist/cjs/src/providers/OpenRouterProvider.js.map +1 -0
  107. package/dist/cjs/src/providers/index.d.ts +13 -0
  108. package/dist/cjs/src/providers/index.d.ts.map +1 -0
  109. package/dist/cjs/src/providers/index.js +16 -0
  110. package/dist/cjs/src/providers/index.js.map +1 -0
  111. package/dist/cjs/src/types/agent.d.ts +181 -0
  112. package/dist/cjs/src/types/agent.d.ts.map +1 -0
  113. package/dist/cjs/src/types/agent.js +21 -0
  114. package/dist/cjs/src/types/agent.js.map +1 -0
  115. package/dist/cjs/src/types/ai.d.ts +143 -0
  116. package/dist/cjs/src/types/ai.d.ts.map +1 -0
  117. package/dist/cjs/src/types/ai.js +6 -0
  118. package/dist/cjs/src/types/ai.js.map +1 -0
  119. package/dist/cjs/src/types/history.d.ts +178 -0
  120. package/dist/cjs/src/types/history.d.ts.map +1 -0
  121. package/dist/cjs/src/types/history.js +33 -0
  122. package/dist/cjs/src/types/history.js.map +1 -0
  123. package/dist/cjs/src/types/index.d.ts +22 -0
  124. package/dist/cjs/src/types/index.d.ts.map +1 -0
  125. package/dist/cjs/src/types/index.js +37 -0
  126. package/dist/cjs/src/types/index.js.map +1 -0
  127. package/dist/cjs/src/types/persistence.d.ts +209 -0
  128. package/dist/cjs/src/types/persistence.d.ts.map +1 -0
  129. package/dist/cjs/src/types/persistence.js +7 -0
  130. package/dist/cjs/src/types/persistence.js.map +1 -0
  131. package/dist/cjs/src/types/route.d.ts +238 -0
  132. package/dist/cjs/src/types/route.d.ts.map +1 -0
  133. package/dist/cjs/src/types/route.js +6 -0
  134. package/dist/cjs/src/types/route.js.map +1 -0
  135. package/dist/cjs/src/types/routing.d.ts +16 -0
  136. package/dist/cjs/src/types/routing.d.ts.map +1 -0
  137. package/dist/cjs/src/types/routing.js +3 -0
  138. package/dist/cjs/src/types/routing.js.map +1 -0
  139. package/dist/cjs/src/types/schema.d.ts +22 -0
  140. package/dist/cjs/src/types/schema.d.ts.map +1 -0
  141. package/dist/cjs/src/types/schema.js +3 -0
  142. package/dist/cjs/src/types/schema.js.map +1 -0
  143. package/dist/cjs/src/types/session.d.ts +65 -0
  144. package/dist/cjs/src/types/session.d.ts.map +1 -0
  145. package/dist/cjs/src/types/session.js +6 -0
  146. package/dist/cjs/src/types/session.js.map +1 -0
  147. package/dist/cjs/src/types/template.d.ts +88 -0
  148. package/dist/cjs/src/types/template.d.ts.map +1 -0
  149. package/dist/cjs/src/types/template.js +3 -0
  150. package/dist/cjs/src/types/template.js.map +1 -0
  151. package/dist/cjs/src/types/tool.d.ts +130 -0
  152. package/dist/cjs/src/types/tool.d.ts.map +1 -0
  153. package/dist/cjs/src/types/tool.js +19 -0
  154. package/dist/cjs/src/types/tool.js.map +1 -0
  155. package/dist/cjs/src/utils/clone.d.ts +8 -0
  156. package/dist/cjs/src/utils/clone.d.ts.map +1 -0
  157. package/dist/cjs/src/utils/clone.js +32 -0
  158. package/dist/cjs/src/utils/clone.js.map +1 -0
  159. package/dist/cjs/src/utils/condition.d.ts +38 -0
  160. package/dist/cjs/src/utils/condition.d.ts.map +1 -0
  161. package/dist/cjs/src/utils/condition.js +168 -0
  162. package/dist/cjs/src/utils/condition.js.map +1 -0
  163. package/dist/cjs/src/utils/event.d.ts +6 -0
  164. package/dist/cjs/src/utils/event.d.ts.map +1 -0
  165. package/dist/cjs/src/utils/event.js +20 -0
  166. package/dist/cjs/src/utils/event.js.map +1 -0
  167. package/dist/cjs/src/utils/history.d.ts +60 -0
  168. package/dist/cjs/src/utils/history.d.ts.map +1 -0
  169. package/dist/cjs/src/utils/history.js +274 -0
  170. package/dist/cjs/src/utils/history.js.map +1 -0
  171. package/dist/cjs/src/utils/id.d.ts +25 -0
  172. package/dist/cjs/src/utils/id.d.ts.map +1 -0
  173. package/dist/cjs/src/utils/id.js +70 -0
  174. package/dist/cjs/src/utils/id.js.map +1 -0
  175. package/dist/cjs/src/utils/index.d.ts +15 -0
  176. package/dist/cjs/src/utils/index.d.ts.map +1 -0
  177. package/dist/cjs/src/utils/index.js +64 -0
  178. package/dist/cjs/src/utils/index.js.map +1 -0
  179. package/dist/cjs/src/utils/json.d.ts +16 -0
  180. package/dist/cjs/src/utils/json.d.ts.map +1 -0
  181. package/dist/cjs/src/utils/json.js +47 -0
  182. package/dist/cjs/src/utils/json.js.map +1 -0
  183. package/dist/cjs/src/utils/logger.d.ts +10 -0
  184. package/dist/cjs/src/utils/logger.d.ts.map +1 -0
  185. package/dist/cjs/src/utils/logger.js +23 -0
  186. package/dist/cjs/src/utils/logger.js.map +1 -0
  187. package/dist/cjs/src/utils/retry.d.ts +10 -0
  188. package/dist/cjs/src/utils/retry.d.ts.map +1 -0
  189. package/dist/cjs/src/utils/retry.js +76 -0
  190. package/dist/cjs/src/utils/retry.js.map +1 -0
  191. package/dist/cjs/src/utils/session.d.ts +51 -0
  192. package/dist/cjs/src/utils/session.d.ts.map +1 -0
  193. package/dist/cjs/src/utils/session.js +170 -0
  194. package/dist/cjs/src/utils/session.js.map +1 -0
  195. package/dist/cjs/src/utils/template.d.ts +155 -0
  196. package/dist/cjs/src/utils/template.d.ts.map +1 -0
  197. package/dist/cjs/src/utils/template.js +383 -0
  198. package/dist/cjs/src/utils/template.js.map +1 -0
  199. package/dist/src/adapters/MemoryAdapter.d.ts +47 -0
  200. package/dist/src/adapters/MemoryAdapter.d.ts.map +1 -0
  201. package/dist/src/adapters/MemoryAdapter.js +198 -0
  202. package/dist/src/adapters/MemoryAdapter.js.map +1 -0
  203. package/dist/src/adapters/MongoAdapter.d.ts +97 -0
  204. package/dist/src/adapters/MongoAdapter.d.ts.map +1 -0
  205. package/dist/src/adapters/MongoAdapter.js +164 -0
  206. package/dist/src/adapters/MongoAdapter.js.map +1 -0
  207. package/dist/src/adapters/OpenSearchAdapter.d.ts +169 -0
  208. package/dist/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
  209. package/dist/src/adapters/OpenSearchAdapter.js +454 -0
  210. package/dist/src/adapters/OpenSearchAdapter.js.map +1 -0
  211. package/dist/src/adapters/PostgreSQLAdapter.d.ts +71 -0
  212. package/dist/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  213. package/dist/src/adapters/PostgreSQLAdapter.js +256 -0
  214. package/dist/src/adapters/PostgreSQLAdapter.js.map +1 -0
  215. package/dist/src/adapters/PrismaAdapter.d.ts +115 -0
  216. package/dist/src/adapters/PrismaAdapter.d.ts.map +1 -0
  217. package/dist/src/adapters/PrismaAdapter.js +362 -0
  218. package/dist/src/adapters/PrismaAdapter.js.map +1 -0
  219. package/dist/src/adapters/RedisAdapter.d.ts +71 -0
  220. package/dist/src/adapters/RedisAdapter.d.ts.map +1 -0
  221. package/dist/src/adapters/RedisAdapter.js +227 -0
  222. package/dist/src/adapters/RedisAdapter.js.map +1 -0
  223. package/dist/src/adapters/SQLiteAdapter.d.ts +69 -0
  224. package/dist/src/adapters/SQLiteAdapter.d.ts.map +1 -0
  225. package/dist/src/adapters/SQLiteAdapter.js +308 -0
  226. package/dist/src/adapters/SQLiteAdapter.js.map +1 -0
  227. package/dist/src/adapters/index.d.ts +17 -0
  228. package/dist/src/adapters/index.d.ts.map +1 -0
  229. package/dist/src/adapters/index.js +11 -0
  230. package/dist/src/adapters/index.js.map +1 -0
  231. package/dist/src/constants/index.d.ts +10 -0
  232. package/dist/src/constants/index.d.ts.map +1 -0
  233. package/dist/src/constants/index.js +10 -0
  234. package/dist/src/constants/index.js.map +1 -0
  235. package/dist/src/core/Agent.d.ts +232 -0
  236. package/dist/src/core/Agent.d.ts.map +1 -0
  237. package/dist/src/core/Agent.js +737 -0
  238. package/dist/src/core/Agent.js.map +1 -0
  239. package/dist/src/core/Events.d.ts +26 -0
  240. package/dist/src/core/Events.d.ts.map +1 -0
  241. package/dist/src/core/Events.js +137 -0
  242. package/dist/src/core/Events.js.map +1 -0
  243. package/dist/src/core/PersistenceManager.d.ts +98 -0
  244. package/dist/src/core/PersistenceManager.d.ts.map +1 -0
  245. package/dist/src/core/PersistenceManager.js +257 -0
  246. package/dist/src/core/PersistenceManager.js.map +1 -0
  247. package/dist/src/core/PromptComposer.d.ts +27 -0
  248. package/dist/src/core/PromptComposer.d.ts.map +1 -0
  249. package/dist/src/core/PromptComposer.js +190 -0
  250. package/dist/src/core/PromptComposer.js.map +1 -0
  251. package/dist/src/core/ResponseEngine.d.ts +32 -0
  252. package/dist/src/core/ResponseEngine.d.ts.map +1 -0
  253. package/dist/src/core/ResponseEngine.js +198 -0
  254. package/dist/src/core/ResponseEngine.js.map +1 -0
  255. package/dist/src/core/ResponseModal.d.ts +222 -0
  256. package/dist/src/core/ResponseModal.d.ts.map +1 -0
  257. package/dist/src/core/ResponseModal.js +1583 -0
  258. package/dist/src/core/ResponseModal.js.map +1 -0
  259. package/dist/src/core/ResponsePipeline.d.ts +175 -0
  260. package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
  261. package/dist/src/core/ResponsePipeline.js +545 -0
  262. package/dist/src/core/ResponsePipeline.js.map +1 -0
  263. package/dist/src/core/Route.d.ts +181 -0
  264. package/dist/src/core/Route.d.ts.map +1 -0
  265. package/dist/src/core/Route.js +537 -0
  266. package/dist/src/core/Route.js.map +1 -0
  267. package/dist/src/core/RoutingEngine.d.ts +159 -0
  268. package/dist/src/core/RoutingEngine.d.ts.map +1 -0
  269. package/dist/src/core/RoutingEngine.js +957 -0
  270. package/dist/src/core/RoutingEngine.js.map +1 -0
  271. package/dist/src/core/SessionManager.d.ts +94 -0
  272. package/dist/src/core/SessionManager.d.ts.map +1 -0
  273. package/dist/src/core/SessionManager.js +235 -0
  274. package/dist/src/core/SessionManager.js.map +1 -0
  275. package/dist/src/core/Step.d.ts +170 -0
  276. package/dist/src/core/Step.d.ts.map +1 -0
  277. package/dist/src/core/Step.js +444 -0
  278. package/dist/src/core/Step.js.map +1 -0
  279. package/dist/src/core/ToolManager.d.ts +234 -0
  280. package/dist/src/core/ToolManager.d.ts.map +1 -0
  281. package/dist/src/core/ToolManager.js +1111 -0
  282. package/dist/src/core/ToolManager.js.map +1 -0
  283. package/dist/src/index.d.ts +44 -0
  284. package/dist/src/index.d.ts.map +1 -0
  285. package/dist/src/index.js +37 -0
  286. package/dist/src/index.js.map +1 -0
  287. package/dist/src/providers/AnthropicProvider.d.ts +43 -0
  288. package/dist/src/providers/AnthropicProvider.d.ts.map +1 -0
  289. package/dist/src/providers/AnthropicProvider.js +370 -0
  290. package/dist/src/providers/AnthropicProvider.js.map +1 -0
  291. package/dist/src/providers/GeminiProvider.d.ts +58 -0
  292. package/dist/src/providers/GeminiProvider.d.ts.map +1 -0
  293. package/dist/src/providers/GeminiProvider.js +485 -0
  294. package/dist/src/providers/GeminiProvider.js.map +1 -0
  295. package/dist/src/providers/OpenAIProvider.d.ts +52 -0
  296. package/dist/src/providers/OpenAIProvider.d.ts.map +1 -0
  297. package/dist/src/providers/OpenAIProvider.js +388 -0
  298. package/dist/src/providers/OpenAIProvider.js.map +1 -0
  299. package/dist/src/providers/OpenRouterProvider.d.ts +56 -0
  300. package/dist/src/providers/OpenRouterProvider.d.ts.map +1 -0
  301. package/dist/src/providers/OpenRouterProvider.js +402 -0
  302. package/dist/src/providers/OpenRouterProvider.js.map +1 -0
  303. package/dist/src/providers/index.d.ts +13 -0
  304. package/dist/src/providers/index.d.ts.map +1 -0
  305. package/dist/src/providers/index.js +9 -0
  306. package/dist/src/providers/index.js.map +1 -0
  307. package/dist/src/types/agent.d.ts +181 -0
  308. package/dist/src/types/agent.d.ts.map +1 -0
  309. package/dist/src/types/agent.js +18 -0
  310. package/dist/src/types/agent.js.map +1 -0
  311. package/dist/src/types/ai.d.ts +143 -0
  312. package/dist/src/types/ai.d.ts.map +1 -0
  313. package/dist/src/types/ai.js +5 -0
  314. package/dist/src/types/ai.js.map +1 -0
  315. package/dist/src/types/history.d.ts +178 -0
  316. package/dist/src/types/history.d.ts.map +1 -0
  317. package/dist/src/types/history.js +30 -0
  318. package/dist/src/types/history.js.map +1 -0
  319. package/dist/src/types/index.d.ts +22 -0
  320. package/dist/src/types/index.d.ts.map +1 -0
  321. package/dist/src/types/index.js +12 -0
  322. package/dist/src/types/index.js.map +1 -0
  323. package/dist/src/types/persistence.d.ts +209 -0
  324. package/dist/src/types/persistence.d.ts.map +1 -0
  325. package/dist/src/types/persistence.js +6 -0
  326. package/dist/src/types/persistence.js.map +1 -0
  327. package/dist/src/types/route.d.ts +238 -0
  328. package/dist/src/types/route.d.ts.map +1 -0
  329. package/dist/src/types/route.js +5 -0
  330. package/dist/src/types/route.js.map +1 -0
  331. package/dist/src/types/routing.d.ts +16 -0
  332. package/dist/src/types/routing.d.ts.map +1 -0
  333. package/dist/src/types/routing.js +2 -0
  334. package/dist/src/types/routing.js.map +1 -0
  335. package/dist/src/types/schema.d.ts +22 -0
  336. package/dist/src/types/schema.d.ts.map +1 -0
  337. package/dist/src/types/schema.js +2 -0
  338. package/dist/src/types/schema.js.map +1 -0
  339. package/dist/src/types/session.d.ts +65 -0
  340. package/dist/src/types/session.d.ts.map +1 -0
  341. package/dist/src/types/session.js +5 -0
  342. package/dist/src/types/session.js.map +1 -0
  343. package/dist/src/types/template.d.ts +88 -0
  344. package/dist/src/types/template.d.ts.map +1 -0
  345. package/dist/src/types/template.js +2 -0
  346. package/dist/src/types/template.js.map +1 -0
  347. package/dist/src/types/tool.d.ts +130 -0
  348. package/dist/src/types/tool.d.ts.map +1 -0
  349. package/dist/src/types/tool.js +16 -0
  350. package/dist/src/types/tool.js.map +1 -0
  351. package/dist/src/utils/clone.d.ts +8 -0
  352. package/dist/src/utils/clone.d.ts.map +1 -0
  353. package/dist/src/utils/clone.js +29 -0
  354. package/dist/src/utils/clone.js.map +1 -0
  355. package/dist/src/utils/condition.d.ts +38 -0
  356. package/dist/src/utils/condition.d.ts.map +1 -0
  357. package/dist/src/utils/condition.js +161 -0
  358. package/dist/src/utils/condition.js.map +1 -0
  359. package/dist/src/utils/event.d.ts +6 -0
  360. package/dist/src/utils/event.d.ts.map +1 -0
  361. package/dist/src/utils/event.js +17 -0
  362. package/dist/src/utils/event.js.map +1 -0
  363. package/dist/src/utils/history.d.ts +60 -0
  364. package/dist/src/utils/history.d.ts.map +1 -0
  365. package/dist/src/utils/history.js +263 -0
  366. package/dist/src/utils/history.js.map +1 -0
  367. package/dist/src/utils/id.d.ts +25 -0
  368. package/dist/src/utils/id.d.ts.map +1 -0
  369. package/dist/src/utils/id.js +64 -0
  370. package/dist/src/utils/id.js.map +1 -0
  371. package/dist/src/utils/index.d.ts +15 -0
  372. package/dist/src/utils/index.d.ts.map +1 -0
  373. package/dist/src/utils/index.js +23 -0
  374. package/dist/src/utils/index.js.map +1 -0
  375. package/dist/src/utils/json.d.ts +16 -0
  376. package/dist/src/utils/json.d.ts.map +1 -0
  377. package/dist/src/utils/json.js +43 -0
  378. package/dist/src/utils/json.js.map +1 -0
  379. package/dist/src/utils/logger.d.ts +10 -0
  380. package/dist/src/utils/logger.d.ts.map +1 -0
  381. package/dist/src/utils/logger.js +17 -0
  382. package/dist/src/utils/logger.js.map +1 -0
  383. package/dist/src/utils/retry.d.ts +10 -0
  384. package/dist/src/utils/retry.d.ts.map +1 -0
  385. package/dist/src/utils/retry.js +71 -0
  386. package/dist/src/utils/retry.js.map +1 -0
  387. package/dist/src/utils/session.d.ts +51 -0
  388. package/dist/src/utils/session.d.ts.map +1 -0
  389. package/dist/src/utils/session.js +160 -0
  390. package/dist/src/utils/session.js.map +1 -0
  391. package/dist/src/utils/template.d.ts +155 -0
  392. package/dist/src/utils/template.d.ts.map +1 -0
  393. package/dist/src/utils/template.js +374 -0
  394. package/dist/src/utils/template.js.map +1 -0
  395. package/docs/CONTRIBUTING.md +521 -0
  396. package/docs/README.md +228 -0
  397. package/docs/api/README.md +3258 -0
  398. package/docs/api/overview.md +1134 -0
  399. package/docs/architecture/data-extraction-flow.md +363 -0
  400. package/docs/core/agent/README.md +902 -0
  401. package/docs/core/agent/context-management.md +796 -0
  402. package/docs/core/agent/session-management.md +641 -0
  403. package/docs/core/ai-integration/prompt-composition.md +220 -0
  404. package/docs/core/ai-integration/providers.md +515 -0
  405. package/docs/core/ai-integration/response-processing.md +287 -0
  406. package/docs/core/conversation-flows/data-collection.md +623 -0
  407. package/docs/core/conversation-flows/route-dsl.md +502 -0
  408. package/docs/core/conversation-flows/routes.md +247 -0
  409. package/docs/core/conversation-flows/step-transitions.md +595 -0
  410. package/docs/core/conversation-flows/steps.md +154 -0
  411. package/docs/core/error-handling.md +638 -0
  412. package/docs/core/persistence/adapters.md +255 -0
  413. package/docs/core/persistence/session-storage.md +644 -0
  414. package/docs/core/routing/intelligent-routing.md +466 -0
  415. package/docs/core/tools/tool-definition.md +970 -0
  416. package/docs/core/tools/tool-scoping.md +819 -0
  417. package/docs/guides/advanced-patterns/publishing.md +186 -0
  418. package/docs/guides/error-handling-patterns.md +578 -0
  419. package/docs/guides/getting-started/README.md +696 -0
  420. package/docs/guides/migration/README.md +72 -0
  421. package/docs/guides/migration/flexible-routing-conditions.md +375 -0
  422. package/docs/guides/migration/response-modal-refactor.md +518 -0
  423. package/examples/advanced-patterns/knowledge-based-agent.ts +735 -0
  424. package/examples/advanced-patterns/persistent-onboarding.ts +728 -0
  425. package/examples/advanced-patterns/route-lifecycle-hooks.ts +556 -0
  426. package/examples/advanced-patterns/streaming-responses.ts +578 -0
  427. package/examples/ai-providers/anthropic-integration.ts +388 -0
  428. package/examples/ai-providers/openai-integration.ts +228 -0
  429. package/examples/condition-patterns/function-only-conditions.ts +365 -0
  430. package/examples/condition-patterns/mixed-array-conditions.ts +477 -0
  431. package/examples/condition-patterns/route-skipif-patterns.ts +468 -0
  432. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  433. package/examples/condition-patterns/string-only-conditions.ts +296 -0
  434. package/examples/conversation-flows/completion-transitions.ts +318 -0
  435. package/examples/core-concepts/basic-agent.ts +503 -0
  436. package/examples/core-concepts/modern-streaming-api.ts +309 -0
  437. package/examples/core-concepts/schema-driven-extraction.ts +332 -0
  438. package/examples/core-concepts/session-management.ts +494 -0
  439. package/examples/integrations/database-integration.ts +630 -0
  440. package/examples/integrations/healthcare-integration.ts +595 -0
  441. package/examples/integrations/search-integration.ts +530 -0
  442. package/examples/integrations/server-session-management.ts +307 -0
  443. package/examples/persistence/custom-adapter.ts +529 -0
  444. package/examples/persistence/database-persistence.ts +583 -0
  445. package/examples/persistence/memory-sessions.ts +495 -0
  446. package/examples/persistence/prisma-schema.example.prisma +74 -0
  447. package/examples/persistence/redis-persistence.ts +488 -0
  448. package/examples/tools/basic-tools.ts +765 -0
  449. package/examples/tools/data-enrichment-tools.ts +593 -0
  450. package/package.json +125 -0
  451. package/src/adapters/MemoryAdapter.ts +273 -0
  452. package/src/adapters/MongoAdapter.ts +304 -0
  453. package/src/adapters/OpenSearchAdapter.ts +670 -0
  454. package/src/adapters/PostgreSQLAdapter.ts +428 -0
  455. package/src/adapters/PrismaAdapter.ts +553 -0
  456. package/src/adapters/RedisAdapter.ts +377 -0
  457. package/src/adapters/SQLiteAdapter.ts +459 -0
  458. package/src/adapters/index.ts +43 -0
  459. package/src/constants/index.ts +10 -0
  460. package/src/core/Agent.ts +970 -0
  461. package/src/core/Events.ts +164 -0
  462. package/src/core/PersistenceManager.ts +353 -0
  463. package/src/core/PromptComposer.ts +253 -0
  464. package/src/core/ResponseEngine.ts +306 -0
  465. package/src/core/ResponseModal.ts +2050 -0
  466. package/src/core/ResponsePipeline.ts +864 -0
  467. package/src/core/Route.ts +677 -0
  468. package/src/core/RoutingEngine.ts +1396 -0
  469. package/src/core/SessionManager.ts +297 -0
  470. package/src/core/Step.ts +593 -0
  471. package/src/core/ToolManager.ts +1394 -0
  472. package/src/index.ts +155 -0
  473. package/src/providers/AnthropicProvider.ts +560 -0
  474. package/src/providers/GeminiProvider.ts +683 -0
  475. package/src/providers/OpenAIProvider.ts +602 -0
  476. package/src/providers/OpenRouterProvider.ts +613 -0
  477. package/src/providers/index.ts +16 -0
  478. package/src/types/agent.ts +196 -0
  479. package/src/types/ai.ts +158 -0
  480. package/src/types/history.ts +206 -0
  481. package/src/types/index.ts +119 -0
  482. package/src/types/persistence.ts +251 -0
  483. package/src/types/route.ts +272 -0
  484. package/src/types/routing.ts +18 -0
  485. package/src/types/schema.ts +23 -0
  486. package/src/types/session.ts +74 -0
  487. package/src/types/template.ts +104 -0
  488. package/src/types/tool.ts +174 -0
  489. package/src/utils/clone.ts +34 -0
  490. package/src/utils/condition.ts +190 -0
  491. package/src/utils/event.ts +16 -0
  492. package/src/utils/history.ts +306 -0
  493. package/src/utils/id.ts +73 -0
  494. package/src/utils/index.ts +69 -0
  495. package/src/utils/json.ts +46 -0
  496. package/src/utils/logger.ts +19 -0
  497. package/src/utils/retry.ts +97 -0
  498. package/src/utils/session.ts +204 -0
  499. package/src/utils/template.ts +444 -0
@@ -0,0 +1,366 @@
1
+ "use strict";
2
+ /**
3
+ * Prisma adapter for persistence
4
+ * Simple, provider-like API with automatic schema creation
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.PrismaAdapter = void 0;
8
+ const utils_1 = require("../utils");
9
+ /**
10
+ * Prisma Adapter - Provider-style API for Prisma persistence
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { PrismaClient } from '@prisma/client';
15
+ * import { Agent, PrismaAdapter } from '@falai/agent';
16
+ *
17
+ * const prisma = new PrismaClient();
18
+ *
19
+ * const agent = new Agent({
20
+ * name: "My Agent",
21
+ * provider: provider,
22
+ * persistence: {
23
+ * adapter: new PrismaAdapter({ prisma }),
24
+ * userId: "user_123",
25
+ * },
26
+ * });
27
+ * ```
28
+ */
29
+ class PrismaAdapter {
30
+ constructor(options) {
31
+ this.initialized = false;
32
+ this.prisma = options.prisma;
33
+ this.options = {
34
+ prisma: options.prisma,
35
+ tables: {
36
+ sessions: options.tables?.sessions || "agentSession",
37
+ messages: options.tables?.messages || "agentMessage",
38
+ },
39
+ fieldMappings: options.fieldMappings,
40
+ autoMigrate: options.autoMigrate ?? false,
41
+ };
42
+ // Initialize repositories
43
+ this.sessionRepository = new PrismaSessionRepository(this.prisma, this.options.tables.sessions, this.options.fieldMappings?.sessions);
44
+ this.messageRepository = new PrismaMessageRepository(this.prisma, this.options.tables.messages, this.options.fieldMappings?.messages);
45
+ // Auto-initialize if configured
46
+ if (this.options.autoMigrate) {
47
+ this.initialize().catch((error) => {
48
+ utils_1.logger.error("[PrismaAdapter] Auto-migration failed:", error);
49
+ });
50
+ }
51
+ }
52
+ /**
53
+ * Initialize the adapter (check/create tables)
54
+ * Called automatically if autoMigrate is enabled
55
+ */
56
+ async initialize() {
57
+ if (this.initialized)
58
+ return;
59
+ if (this.options.autoMigrate && this.prisma.$executeRaw) {
60
+ // Note: This is a simplified example. In production, use Prisma Migrate.
61
+ utils_1.logger.warn("[PrismaAdapter] autoMigrate is experimental. Use Prisma Migrate for production.");
62
+ // Table creation would go here, but it's database-specific
63
+ // Better to rely on Prisma Migrate
64
+ await Promise.resolve(); // Satisfy async requirement
65
+ }
66
+ this.initialized = true;
67
+ }
68
+ /**
69
+ * Disconnect from the database
70
+ */
71
+ async disconnect() {
72
+ if (this.prisma.$disconnect) {
73
+ await this.prisma.$disconnect();
74
+ }
75
+ }
76
+ }
77
+ exports.PrismaAdapter = PrismaAdapter;
78
+ /**
79
+ * Prisma Session Repository
80
+ * Internal implementation - users should use PrismaAdapter instead
81
+ */
82
+ class PrismaSessionRepository {
83
+ constructor(prismaClient, tableName, fieldMappings) {
84
+ this.prisma = prismaClient;
85
+ this.tableName = tableName;
86
+ this.fieldMap = fieldMappings || {};
87
+ }
88
+ /**
89
+ * Map our standard field names to custom schema field names
90
+ */
91
+ mapFields(data) {
92
+ const mapped = {};
93
+ for (const [key, value] of Object.entries(data)) {
94
+ const mappedKey = this.fieldMap[key] || key;
95
+ mapped[mappedKey] = value;
96
+ }
97
+ return mapped;
98
+ }
99
+ /**
100
+ * Map custom schema field names back to our standard field names
101
+ */
102
+ unmapFields(data) {
103
+ if (!data)
104
+ throw new Error("Data cannot be null");
105
+ const reverseMap = {};
106
+ for (const [standardKey, customKey] of Object.entries(this.fieldMap)) {
107
+ reverseMap[customKey] = standardKey;
108
+ }
109
+ const unmapped = {};
110
+ for (const [key, value] of Object.entries(data)) {
111
+ const unmappedKey = reverseMap[key] || key;
112
+ unmapped[unmappedKey] = value;
113
+ }
114
+ // Construct proper SessionData object
115
+ return {
116
+ id: unmapped.id,
117
+ userId: unmapped.userId,
118
+ agentName: unmapped.agentName,
119
+ status: unmapped.status,
120
+ currentRoute: unmapped.currentRoute,
121
+ currentStep: unmapped.currentStep,
122
+ collectedData: unmapped.collectedData,
123
+ messageCount: unmapped.messageCount,
124
+ lastMessageAt: unmapped.lastMessageAt,
125
+ completedAt: unmapped.completedAt,
126
+ createdAt: unmapped.createdAt,
127
+ updatedAt: unmapped.updatedAt,
128
+ };
129
+ }
130
+ getModel() {
131
+ return this.prisma[this.tableName];
132
+ }
133
+ async create(data) {
134
+ const mapped = this.mapFields({
135
+ ...data,
136
+ id: data.id ||
137
+ `session_${Date.now()}_${Math.random().toString(36).slice(2)}`,
138
+ });
139
+ const result = await this.getModel().create({
140
+ data: mapped,
141
+ });
142
+ return this.unmapFields(result);
143
+ }
144
+ async findById(id) {
145
+ const result = await this.getModel().findUnique({
146
+ where: { [this.fieldMap.id || "id"]: id },
147
+ });
148
+ return result ? this.unmapFields(result) : null;
149
+ }
150
+ async findActiveByUserId(userId) {
151
+ const result = await this.getModel().findFirst({
152
+ where: {
153
+ [this.fieldMap.userId || "userId"]: userId,
154
+ [this.fieldMap.status || "status"]: "active",
155
+ },
156
+ orderBy: {
157
+ [this.fieldMap.createdAt || "createdAt"]: "desc",
158
+ },
159
+ });
160
+ return result ? this.unmapFields(result) : null;
161
+ }
162
+ async findByUserId(userId, limit = 100) {
163
+ const results = await this.getModel().findMany({
164
+ where: {
165
+ [this.fieldMap.userId || "userId"]: userId,
166
+ },
167
+ orderBy: {
168
+ [this.fieldMap.createdAt || "createdAt"]: "desc",
169
+ },
170
+ take: limit,
171
+ });
172
+ return results.map((r) => this.unmapFields(r));
173
+ }
174
+ async update(id, data) {
175
+ const mapped = this.mapFields(data);
176
+ const result = await this.getModel().update({
177
+ where: { [this.fieldMap.id || "id"]: id },
178
+ data: {
179
+ ...mapped,
180
+ [this.fieldMap.updatedAt || "updatedAt"]: new Date(),
181
+ },
182
+ });
183
+ return this.unmapFields(result);
184
+ }
185
+ async updateStatus(id, status, completedAt) {
186
+ const data = {
187
+ [this.fieldMap.status || "status"]: status,
188
+ [this.fieldMap.updatedAt || "updatedAt"]: new Date(),
189
+ };
190
+ if (completedAt) {
191
+ data[this.fieldMap.completedAt || "completedAt"] = completedAt;
192
+ }
193
+ const result = await this.getModel().update({
194
+ where: { [this.fieldMap.id || "id"]: id },
195
+ data,
196
+ });
197
+ return this.unmapFields(result);
198
+ }
199
+ async updateCollectedData(id, collectedData) {
200
+ const result = await this.getModel().update({
201
+ where: { [this.fieldMap.id || "id"]: id },
202
+ data: {
203
+ [this.fieldMap.collectedData || "collectedData"]: collectedData,
204
+ [this.fieldMap.updatedAt || "updatedAt"]: new Date(),
205
+ },
206
+ });
207
+ return this.unmapFields(result);
208
+ }
209
+ async updateRouteStep(id, route, step) {
210
+ const data = {
211
+ [this.fieldMap.updatedAt || "updatedAt"]: new Date(),
212
+ };
213
+ if (route !== undefined) {
214
+ data[this.fieldMap.currentRoute || "currentRoute"] = route;
215
+ }
216
+ if (step !== undefined) {
217
+ data[this.fieldMap.currentStep || "currentStep"] = step;
218
+ }
219
+ const result = await this.getModel().update({
220
+ where: { [this.fieldMap.id || "id"]: id },
221
+ data,
222
+ });
223
+ return this.unmapFields(result);
224
+ }
225
+ async incrementMessageCount(id) {
226
+ const result = await this.getModel().update({
227
+ where: { [this.fieldMap.id || "id"]: id },
228
+ data: {
229
+ [this.fieldMap.messageCount || "messageCount"]: { increment: 1 },
230
+ [this.fieldMap.lastMessageAt || "lastMessageAt"]: new Date(),
231
+ [this.fieldMap.updatedAt || "updatedAt"]: new Date(),
232
+ },
233
+ });
234
+ return this.unmapFields(result);
235
+ }
236
+ async delete(id) {
237
+ try {
238
+ await this.getModel().delete({
239
+ where: { [this.fieldMap.id || "id"]: id },
240
+ });
241
+ return true;
242
+ }
243
+ catch {
244
+ return false;
245
+ }
246
+ }
247
+ }
248
+ /**
249
+ * Prisma Message Repository
250
+ * Internal implementation - users should use PrismaAdapter instead
251
+ */
252
+ class PrismaMessageRepository {
253
+ constructor(prismaClient, tableName, fieldMappings) {
254
+ this.prisma = prismaClient;
255
+ this.tableName = tableName;
256
+ this.fieldMap = fieldMappings || {};
257
+ }
258
+ /**
259
+ * Map our standard field names to custom schema field names
260
+ */
261
+ mapFields(data) {
262
+ const mapped = {};
263
+ for (const [key, value] of Object.entries(data)) {
264
+ const mappedKey = this.fieldMap[key] || key;
265
+ mapped[mappedKey] = value;
266
+ }
267
+ return mapped;
268
+ }
269
+ /**
270
+ * Map custom schema field names back to our standard field names
271
+ */
272
+ unmapFields(data) {
273
+ if (!data)
274
+ throw new Error("Data cannot be null");
275
+ const reverseMap = {};
276
+ for (const [standardKey, customKey] of Object.entries(this.fieldMap)) {
277
+ reverseMap[customKey] = standardKey;
278
+ }
279
+ const unmapped = {};
280
+ for (const [key, value] of Object.entries(data)) {
281
+ const unmappedKey = reverseMap[key] || key;
282
+ unmapped[unmappedKey] = value;
283
+ }
284
+ // Construct proper MessageData object
285
+ return {
286
+ id: unmapped.id,
287
+ sessionId: unmapped.sessionId,
288
+ userId: unmapped.userId,
289
+ role: unmapped.role,
290
+ content: unmapped.content,
291
+ route: unmapped.route,
292
+ step: unmapped.step,
293
+ toolCalls: unmapped.toolCalls,
294
+ event: unmapped.event,
295
+ createdAt: unmapped.createdAt,
296
+ };
297
+ }
298
+ getModel() {
299
+ return this.prisma[this.tableName];
300
+ }
301
+ async create(data) {
302
+ const mapped = this.mapFields(data);
303
+ const result = await this.getModel().create({
304
+ data: mapped,
305
+ });
306
+ return this.unmapFields(result);
307
+ }
308
+ async findById(id) {
309
+ const result = await this.getModel().findUnique({
310
+ where: { [this.fieldMap.id || "id"]: id },
311
+ });
312
+ return result ? this.unmapFields(result) : null;
313
+ }
314
+ async findBySessionId(sessionId, limit = 1000) {
315
+ const results = await this.getModel().findMany({
316
+ where: {
317
+ [this.fieldMap.sessionId || "sessionId"]: sessionId,
318
+ },
319
+ orderBy: {
320
+ [this.fieldMap.createdAt || "createdAt"]: "asc",
321
+ },
322
+ take: limit,
323
+ });
324
+ return results.map((r) => this.unmapFields(r));
325
+ }
326
+ async findByUserId(userId, limit = 100) {
327
+ const results = await this.getModel().findMany({
328
+ where: {
329
+ [this.fieldMap.userId || "userId"]: userId,
330
+ },
331
+ orderBy: {
332
+ [this.fieldMap.createdAt || "createdAt"]: "desc",
333
+ },
334
+ take: limit,
335
+ });
336
+ return results.map((r) => this.unmapFields(r));
337
+ }
338
+ async delete(id) {
339
+ try {
340
+ await this.getModel().delete({
341
+ where: { [this.fieldMap.id || "id"]: id },
342
+ });
343
+ return true;
344
+ }
345
+ catch {
346
+ return false;
347
+ }
348
+ }
349
+ async deleteBySessionId(sessionId) {
350
+ const result = await this.getModel().deleteMany({
351
+ where: {
352
+ [this.fieldMap.sessionId || "sessionId"]: sessionId,
353
+ },
354
+ });
355
+ return result.count || 0;
356
+ }
357
+ async deleteByUserId(userId) {
358
+ const result = await this.getModel().deleteMany({
359
+ where: {
360
+ [this.fieldMap.userId || "userId"]: userId,
361
+ },
362
+ });
363
+ return result.count || 0;
364
+ }
365
+ }
366
+ //# sourceMappingURL=PrismaAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrismaAdapter.js","sourceRoot":"","sources":["../../../../src/adapters/PrismaAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Redis adapter for persistence
3
+ * Uses Redis for fast session/message storage
4
+ */
5
+ import type { MessageRepository, PersistenceAdapter, SessionRepository } from "../types";
6
+ /**
7
+ * Redis client interface - matches ioredis/redis clients
8
+ */
9
+ export interface RedisClient {
10
+ get(key: string): Promise<string | null>;
11
+ set(key: string, value: string): Promise<string | null>;
12
+ setex(key: string, seconds: number, value: string): Promise<string>;
13
+ del(...keys: string[]): Promise<number>;
14
+ keys(pattern: string): Promise<string[]>;
15
+ hgetall(key: string): Promise<Record<string, string>>;
16
+ hset(key: string, field: string, value: string): Promise<number>;
17
+ expire(key: string, seconds: number): Promise<number>;
18
+ quit(): Promise<string>;
19
+ }
20
+ /**
21
+ * Options for Redis adapter
22
+ */
23
+ export interface RedisAdapterOptions {
24
+ /**
25
+ * Redis client instance (ioredis or node-redis)
26
+ */
27
+ redis: RedisClient;
28
+ /**
29
+ * Key prefix for all keys (default: "agent:")
30
+ */
31
+ keyPrefix?: string;
32
+ /**
33
+ * TTL in seconds for sessions (default: 7 days)
34
+ */
35
+ sessionTTL?: number;
36
+ /**
37
+ * TTL in seconds for messages (default: 30 days)
38
+ */
39
+ messageTTL?: number;
40
+ }
41
+ /**
42
+ * Redis Adapter - Provider-style API for Redis persistence
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * import Redis from 'ioredis';
47
+ * import { Agent, RedisAdapter } from '@falai/agent';
48
+ *
49
+ * const redis = new Redis();
50
+ *
51
+ * const agent = new Agent({
52
+ * name: "My Agent",
53
+ * provider: provider,
54
+ * persistence: {
55
+ * adapter: new RedisAdapter({ redis }),
56
+ * userId: "user_123",
57
+ * },
58
+ * });
59
+ * ```
60
+ */
61
+ export declare class RedisAdapter<TData = Record<string, unknown>> implements PersistenceAdapter<TData> {
62
+ readonly sessionRepository: SessionRepository<TData>;
63
+ readonly messageRepository: MessageRepository;
64
+ private redis;
65
+ private keyPrefix;
66
+ private sessionTTL;
67
+ private messageTTL;
68
+ constructor(options: RedisAdapterOptions);
69
+ disconnect(): Promise<void>;
70
+ }
71
+ //# sourceMappingURL=RedisAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedisAdapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/RedisAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAEV,iBAAiB,EACjB,kBAAkB,EAElB,iBAAiB,EAGlB,MAAM,UAAU,CAAC;AAGlB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,KAAK,EAAE,WAAW,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACvD,YAAW,kBAAkB,CAAC,KAAK,CAAC;IAEpC,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5D,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC;IACrD,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,EAAE,mBAAmB;IAmBlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ /**
3
+ * Redis adapter for persistence
4
+ * Uses Redis for fast session/message storage
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RedisAdapter = void 0;
8
+ const utils_1 = require("../utils");
9
+ /**
10
+ * Redis Adapter - Provider-style API for Redis persistence
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import Redis from 'ioredis';
15
+ * import { Agent, RedisAdapter } from '@falai/agent';
16
+ *
17
+ * const redis = new Redis();
18
+ *
19
+ * const agent = new Agent({
20
+ * name: "My Agent",
21
+ * provider: provider,
22
+ * persistence: {
23
+ * adapter: new RedisAdapter({ redis }),
24
+ * userId: "user_123",
25
+ * },
26
+ * });
27
+ * ```
28
+ */
29
+ class RedisAdapter {
30
+ constructor(options) {
31
+ this.redis = options.redis;
32
+ this.keyPrefix = options.keyPrefix || "agent:";
33
+ this.sessionTTL = options.sessionTTL || 7 * 24 * 60 * 60; // 7 days
34
+ this.messageTTL = options.messageTTL || 30 * 24 * 60 * 60; // 30 days
35
+ this.sessionRepository = new RedisSessionRepository(this.redis, this.keyPrefix, this.sessionTTL);
36
+ this.messageRepository = new RedisMessageRepository(this.redis, this.keyPrefix, this.messageTTL);
37
+ }
38
+ async disconnect() {
39
+ await this.redis.quit();
40
+ }
41
+ }
42
+ exports.RedisAdapter = RedisAdapter;
43
+ /**
44
+ * Redis Session Repository
45
+ */
46
+ class RedisSessionRepository {
47
+ constructor(redis, keyPrefix, ttl) {
48
+ this.redis = redis;
49
+ this.keyPrefix = keyPrefix;
50
+ this.ttl = ttl;
51
+ }
52
+ getKey(id) {
53
+ return `${this.keyPrefix}session:${id}`;
54
+ }
55
+ getUserKey(userId) {
56
+ return `${this.keyPrefix}user:${userId}:sessions`;
57
+ }
58
+ async create(data) {
59
+ const id = data.id || (0, utils_1.createSessionId)();
60
+ const now = new Date();
61
+ const session = {
62
+ ...data,
63
+ id,
64
+ createdAt: now,
65
+ updatedAt: now,
66
+ status: data.status || "active",
67
+ messageCount: data.messageCount || 0,
68
+ };
69
+ await this.redis.setex(this.getKey(id), this.ttl, JSON.stringify(session));
70
+ // Add to user's session list
71
+ if (data.userId) {
72
+ await this.redis.hset(this.getUserKey(data.userId), id, now.toISOString());
73
+ }
74
+ return session;
75
+ }
76
+ async findById(id) {
77
+ const data = await this.redis.get(this.getKey(id));
78
+ if (!data)
79
+ return null;
80
+ try {
81
+ return JSON.parse(data);
82
+ }
83
+ catch (error) {
84
+ utils_1.logger.error(`Error parsing session data for id ${id}:`, error);
85
+ return null;
86
+ }
87
+ }
88
+ async findActiveByUserId(userId) {
89
+ const sessionIds = await this.redis.hgetall(this.getUserKey(userId));
90
+ for (const sessionId of Object.keys(sessionIds)) {
91
+ const session = await this.findById(sessionId);
92
+ if (session && session.status === "active") {
93
+ return session;
94
+ }
95
+ }
96
+ return null;
97
+ }
98
+ async findByUserId(userId, limit = 100) {
99
+ const sessionIds = await this.redis.hgetall(this.getUserKey(userId));
100
+ const sessions = [];
101
+ for (const sessionId of Object.keys(sessionIds).slice(0, limit)) {
102
+ const session = await this.findById(sessionId);
103
+ if (session) {
104
+ sessions.push(session);
105
+ }
106
+ }
107
+ return sessions.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
108
+ }
109
+ async update(id, data) {
110
+ const existing = await this.findById(id);
111
+ if (!existing)
112
+ return null;
113
+ const updated = {
114
+ ...existing,
115
+ ...data,
116
+ updatedAt: new Date(),
117
+ };
118
+ await this.redis.setex(this.getKey(id), this.ttl, JSON.stringify(updated));
119
+ return updated;
120
+ }
121
+ async updateStatus(id, status, completedAt) {
122
+ return this.update(id, { status, completedAt });
123
+ }
124
+ async updateCollectedData(id, collectedData) {
125
+ return this.update(id, { collectedData });
126
+ }
127
+ async updateRouteStep(id, route, step) {
128
+ return this.update(id, { currentRoute: route, currentStep: step });
129
+ }
130
+ async incrementMessageCount(id) {
131
+ const session = await this.findById(id);
132
+ if (!session)
133
+ return null;
134
+ return this.update(id, {
135
+ messageCount: (session.messageCount || 0) + 1,
136
+ lastMessageAt: new Date(),
137
+ });
138
+ }
139
+ async delete(id) {
140
+ const result = await this.redis.del(this.getKey(id));
141
+ return result > 0;
142
+ }
143
+ }
144
+ /**
145
+ * Redis Message Repository
146
+ */
147
+ class RedisMessageRepository {
148
+ constructor(redis, keyPrefix, ttl) {
149
+ this.redis = redis;
150
+ this.keyPrefix = keyPrefix;
151
+ this.ttl = ttl;
152
+ }
153
+ getKey(id) {
154
+ return `${this.keyPrefix}message:${id}`;
155
+ }
156
+ getSessionKey(sessionId) {
157
+ return `${this.keyPrefix}session:${sessionId}:messages`;
158
+ }
159
+ async create(data) {
160
+ const id = `msg_${Date.now()}_${Math.random().toString(36).slice(2)}`;
161
+ const message = {
162
+ ...data,
163
+ id,
164
+ createdAt: new Date(),
165
+ };
166
+ await this.redis.setex(this.getKey(id), this.ttl, JSON.stringify(message));
167
+ await this.redis.hset(this.getSessionKey(data.sessionId), id, message.createdAt.toISOString());
168
+ return message;
169
+ }
170
+ async findById(id) {
171
+ const data = await this.redis.get(this.getKey(id));
172
+ if (!data)
173
+ return null;
174
+ try {
175
+ return JSON.parse(data);
176
+ }
177
+ catch (error) {
178
+ utils_1.logger.error(`Error parsing message data for id ${id}:`, error);
179
+ return null;
180
+ }
181
+ }
182
+ async findBySessionId(sessionId, limit = 1000) {
183
+ const messageIds = await this.redis.hgetall(this.getSessionKey(sessionId));
184
+ const messages = [];
185
+ for (const messageId of Object.keys(messageIds).slice(0, limit)) {
186
+ const message = await this.findById(messageId);
187
+ if (message) {
188
+ messages.push(message);
189
+ }
190
+ }
191
+ return messages.sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());
192
+ }
193
+ async findByUserId(userId, limit = 100) {
194
+ // Redis doesn't have efficient user-level querying
195
+ // This would require additional indexing
196
+ const pattern = `${this.keyPrefix}message:*`;
197
+ const keys = await this.redis.keys(pattern);
198
+ const messages = [];
199
+ for (const key of keys.slice(0, limit)) {
200
+ const data = await this.redis.get(key);
201
+ if (data) {
202
+ const message = JSON.parse(data);
203
+ if (message.userId === userId) {
204
+ messages.push(message);
205
+ }
206
+ }
207
+ }
208
+ return messages.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
209
+ }
210
+ async delete(id) {
211
+ const result = await this.redis.del(this.getKey(id));
212
+ return result > 0;
213
+ }
214
+ async deleteBySessionId(sessionId) {
215
+ const messageIds = await this.redis.hgetall(this.getSessionKey(sessionId));
216
+ const keys = Object.keys(messageIds).map((id) => this.getKey(id));
217
+ if (keys.length === 0)
218
+ return 0;
219
+ const result = await this.redis.del(...keys);
220
+ await this.redis.del(this.getSessionKey(sessionId));
221
+ return result;
222
+ }
223
+ async deleteByUserId(userId) {
224
+ const messages = await this.findByUserId(userId);
225
+ const keys = messages.map((m) => this.getKey(m.id));
226
+ if (keys.length === 0)
227
+ return 0;
228
+ return await this.redis.del(...keys);
229
+ }
230
+ }
231
+ //# sourceMappingURL=RedisAdapter.js.map