@falai/agent 0.8.1 → 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 (652) 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 +65 -67
  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/{core → cjs/src/core}/PersistenceManager.d.ts +21 -19
  43. package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
  44. package/dist/cjs/{core → src/core}/PersistenceManager.js +50 -20
  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 +52 -33
  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 +34 -11
  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 +65 -67
  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/{cjs → src}/core/PersistenceManager.d.ts +21 -19
  204. package/dist/src/core/PersistenceManager.d.ts.map +1 -0
  205. package/dist/{core → src/core}/PersistenceManager.js +47 -17
  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 +52 -33
  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 +32 -11
  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} +890 -251
  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} +143 -94
  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} +1 -1
  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} +112 -105
  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 +1093 -478
  369. package/src/core/Events.ts +100 -112
  370. package/src/core/PersistenceManager.ts +77 -47
  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 +48 -36
  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.map +0 -1
  443. package/dist/cjs/core/PersistenceManager.js.map +0 -1
  444. package/dist/cjs/core/PromptComposer.d.ts +0 -24
  445. package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
  446. package/dist/cjs/core/PromptComposer.js +0 -127
  447. package/dist/cjs/core/PromptComposer.js.map +0 -1
  448. package/dist/cjs/core/ResponseEngine.d.ts +0 -14
  449. package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
  450. package/dist/cjs/core/ResponseEngine.js +0 -56
  451. package/dist/cjs/core/ResponseEngine.js.map +0 -1
  452. package/dist/cjs/core/Route.d.ts +0 -90
  453. package/dist/cjs/core/Route.d.ts.map +0 -1
  454. package/dist/cjs/core/Route.js.map +0 -1
  455. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  456. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  457. package/dist/cjs/core/Step.d.ts +0 -72
  458. package/dist/cjs/core/Step.d.ts.map +0 -1
  459. package/dist/cjs/core/Step.js +0 -150
  460. package/dist/cjs/core/Step.js.map +0 -1
  461. package/dist/cjs/core/Tool.d.ts +0 -39
  462. package/dist/cjs/core/Tool.d.ts.map +0 -1
  463. package/dist/cjs/core/Tool.js +0 -34
  464. package/dist/cjs/core/Tool.js.map +0 -1
  465. package/dist/cjs/core/ToolExecutor.d.ts +0 -29
  466. package/dist/cjs/core/ToolExecutor.d.ts.map +0 -1
  467. package/dist/cjs/core/ToolExecutor.js.map +0 -1
  468. package/dist/cjs/core/Transition.d.ts +0 -32
  469. package/dist/cjs/core/Transition.d.ts.map +0 -1
  470. package/dist/cjs/core/Transition.js +0 -89
  471. package/dist/cjs/core/Transition.js.map +0 -1
  472. package/dist/cjs/index.d.ts.map +0 -1
  473. package/dist/cjs/index.js.map +0 -1
  474. package/dist/cjs/providers/AnthropicProvider.d.ts.map +0 -1
  475. package/dist/cjs/providers/AnthropicProvider.js.map +0 -1
  476. package/dist/cjs/providers/GeminiProvider.js.map +0 -1
  477. package/dist/cjs/providers/OpenAIProvider.js.map +0 -1
  478. package/dist/cjs/providers/OpenRouterProvider.js.map +0 -1
  479. package/dist/cjs/providers/index.js.map +0 -1
  480. package/dist/cjs/types/agent.d.ts.map +0 -1
  481. package/dist/cjs/types/agent.js.map +0 -1
  482. package/dist/cjs/types/ai.d.ts.map +0 -1
  483. package/dist/cjs/types/history.d.ts.map +0 -1
  484. package/dist/cjs/types/history.js +0 -37
  485. package/dist/cjs/types/history.js.map +0 -1
  486. package/dist/cjs/types/index.d.ts +0 -12
  487. package/dist/cjs/types/index.d.ts.map +0 -1
  488. package/dist/cjs/types/index.js +0 -12
  489. package/dist/cjs/types/index.js.map +0 -1
  490. package/dist/cjs/types/persistence.d.ts.map +0 -1
  491. package/dist/cjs/types/persistence.js.map +0 -1
  492. package/dist/cjs/types/route.d.ts.map +0 -1
  493. package/dist/cjs/types/session.d.ts +0 -104
  494. package/dist/cjs/types/session.d.ts.map +0 -1
  495. package/dist/cjs/types/session.js.map +0 -1
  496. package/dist/cjs/utils/event.js.map +0 -1
  497. package/dist/cjs/utils/id.js.map +0 -1
  498. package/dist/cjs/utils/logger.js.map +0 -1
  499. package/dist/cjs/utils/retry.js.map +0 -1
  500. package/dist/constants/index.d.ts.map +0 -1
  501. package/dist/constants/index.js.map +0 -1
  502. package/dist/core/Agent.d.ts.map +0 -1
  503. package/dist/core/Agent.js +0 -962
  504. package/dist/core/Agent.js.map +0 -1
  505. package/dist/core/DomainRegistry.d.ts +0 -36
  506. package/dist/core/DomainRegistry.d.ts.map +0 -1
  507. package/dist/core/DomainRegistry.js +0 -68
  508. package/dist/core/DomainRegistry.js.map +0 -1
  509. package/dist/core/Events.d.ts +0 -41
  510. package/dist/core/Events.d.ts.map +0 -1
  511. package/dist/core/Events.js +0 -94
  512. package/dist/core/Events.js.map +0 -1
  513. package/dist/core/PersistenceManager.d.ts.map +0 -1
  514. package/dist/core/PersistenceManager.js.map +0 -1
  515. package/dist/core/PromptComposer.d.ts +0 -24
  516. package/dist/core/PromptComposer.d.ts.map +0 -1
  517. package/dist/core/PromptComposer.js +0 -123
  518. package/dist/core/PromptComposer.js.map +0 -1
  519. package/dist/core/ResponseEngine.d.ts +0 -14
  520. package/dist/core/ResponseEngine.d.ts.map +0 -1
  521. package/dist/core/ResponseEngine.js +0 -52
  522. package/dist/core/ResponseEngine.js.map +0 -1
  523. package/dist/core/Route.d.ts +0 -90
  524. package/dist/core/Route.d.ts.map +0 -1
  525. package/dist/core/Route.js.map +0 -1
  526. package/dist/core/RoutingEngine.d.ts.map +0 -1
  527. package/dist/core/RoutingEngine.js.map +0 -1
  528. package/dist/core/Step.d.ts +0 -72
  529. package/dist/core/Step.d.ts.map +0 -1
  530. package/dist/core/Step.js +0 -146
  531. package/dist/core/Step.js.map +0 -1
  532. package/dist/core/Tool.d.ts +0 -39
  533. package/dist/core/Tool.d.ts.map +0 -1
  534. package/dist/core/Tool.js +0 -31
  535. package/dist/core/Tool.js.map +0 -1
  536. package/dist/core/ToolExecutor.d.ts +0 -29
  537. package/dist/core/ToolExecutor.d.ts.map +0 -1
  538. package/dist/core/ToolExecutor.js +0 -69
  539. package/dist/core/ToolExecutor.js.map +0 -1
  540. package/dist/core/Transition.d.ts +0 -32
  541. package/dist/core/Transition.d.ts.map +0 -1
  542. package/dist/core/Transition.js +0 -85
  543. package/dist/core/Transition.js.map +0 -1
  544. package/dist/index.d.ts.map +0 -1
  545. package/dist/index.js.map +0 -1
  546. package/dist/providers/AnthropicProvider.d.ts.map +0 -1
  547. package/dist/providers/AnthropicProvider.js.map +0 -1
  548. package/dist/providers/GeminiProvider.d.ts.map +0 -1
  549. package/dist/providers/GeminiProvider.js.map +0 -1
  550. package/dist/providers/OpenAIProvider.d.ts.map +0 -1
  551. package/dist/providers/OpenAIProvider.js.map +0 -1
  552. package/dist/providers/OpenRouterProvider.d.ts.map +0 -1
  553. package/dist/providers/OpenRouterProvider.js.map +0 -1
  554. package/dist/providers/index.d.ts.map +0 -1
  555. package/dist/providers/index.js.map +0 -1
  556. package/dist/types/agent.d.ts.map +0 -1
  557. package/dist/types/agent.js.map +0 -1
  558. package/dist/types/ai.d.ts.map +0 -1
  559. package/dist/types/ai.js.map +0 -1
  560. package/dist/types/history.d.ts.map +0 -1
  561. package/dist/types/history.js +0 -34
  562. package/dist/types/history.js.map +0 -1
  563. package/dist/types/index.d.ts +0 -12
  564. package/dist/types/index.d.ts.map +0 -1
  565. package/dist/types/index.js +0 -6
  566. package/dist/types/index.js.map +0 -1
  567. package/dist/types/persistence.d.ts.map +0 -1
  568. package/dist/types/persistence.js.map +0 -1
  569. package/dist/types/route.d.ts.map +0 -1
  570. package/dist/types/routing.d.ts.map +0 -1
  571. package/dist/types/schema.d.ts.map +0 -1
  572. package/dist/types/session.d.ts +0 -104
  573. package/dist/types/session.d.ts.map +0 -1
  574. package/dist/types/session.js.map +0 -1
  575. package/dist/types/tool.d.ts.map +0 -1
  576. package/dist/utils/event.d.ts.map +0 -1
  577. package/dist/utils/event.js.map +0 -1
  578. package/dist/utils/id.d.ts.map +0 -1
  579. package/dist/utils/id.js.map +0 -1
  580. package/dist/utils/logger.d.ts.map +0 -1
  581. package/dist/utils/logger.js.map +0 -1
  582. package/dist/utils/retry.d.ts.map +0 -1
  583. package/dist/utils/retry.js.map +0 -1
  584. package/docs/AGENT.md +0 -535
  585. package/docs/DOCS.md +0 -263
  586. package/docs/DOMAINS.md +0 -735
  587. package/docs/EXAMPLES.md +0 -467
  588. package/docs/GETTING_STARTED.md +0 -424
  589. package/docs/PERSISTENCE.md +0 -815
  590. package/docs/PROVIDERS.md +0 -612
  591. package/docs/ROUTES.md +0 -1085
  592. package/docs/STEPS.md +0 -883
  593. package/examples/business-onboarding.ts +0 -791
  594. package/examples/custom-database-persistence.ts +0 -574
  595. package/examples/domain-scoping.ts +0 -366
  596. package/examples/travel-agent.ts +0 -584
  597. package/src/core/DomainRegistry.ts +0 -80
  598. package/src/core/Tool.ts +0 -112
  599. package/src/core/Transition.ts +0 -115
  600. /package/dist/{adapters → cjs/src/adapters}/index.d.ts +0 -0
  601. /package/dist/cjs/{adapters → src/adapters}/index.js +0 -0
  602. /package/dist/cjs/{constants → src/constants}/index.d.ts +0 -0
  603. /package/dist/cjs/{constants → src/constants}/index.js +0 -0
  604. /package/dist/cjs/{providers → src/providers}/index.d.ts +0 -0
  605. /package/dist/cjs/{providers → src/providers}/index.js +0 -0
  606. /package/dist/cjs/{types → src/types}/agent.js +0 -0
  607. /package/dist/cjs/{types → src/types}/ai.js +0 -0
  608. /package/dist/cjs/{types → src/types}/persistence.js +0 -0
  609. /package/dist/cjs/{types → src/types}/route.js +0 -0
  610. /package/dist/cjs/{types → src/types}/routing.d.ts +0 -0
  611. /package/dist/cjs/{types → src/types}/routing.js +0 -0
  612. /package/dist/cjs/{types → src/types}/schema.d.ts +0 -0
  613. /package/dist/cjs/{types → src/types}/schema.js +0 -0
  614. /package/dist/cjs/{types → src/types}/tool.js +0 -0
  615. /package/dist/cjs/{utils → src/utils}/id.d.ts +0 -0
  616. /package/dist/cjs/{utils → src/utils}/id.js +0 -0
  617. /package/dist/cjs/{utils → src/utils}/logger.d.ts +0 -0
  618. /package/dist/cjs/{utils → src/utils}/logger.js +0 -0
  619. /package/dist/cjs/{utils → src/utils}/retry.d.ts +0 -0
  620. /package/dist/cjs/{utils → src/utils}/retry.js +0 -0
  621. /package/dist/{cjs → src}/adapters/index.d.ts +0 -0
  622. /package/dist/{cjs → src}/adapters/index.d.ts.map +0 -0
  623. /package/dist/{adapters → src/adapters}/index.js +0 -0
  624. /package/dist/{constants → src/constants}/index.d.ts +0 -0
  625. /package/dist/{cjs → src}/constants/index.d.ts.map +0 -0
  626. /package/dist/{constants → src/constants}/index.js +0 -0
  627. /package/dist/{providers → src/providers}/index.d.ts +0 -0
  628. /package/dist/{cjs → src}/providers/index.d.ts.map +0 -0
  629. /package/dist/{providers → src/providers}/index.js +0 -0
  630. /package/dist/{types → src/types}/agent.js +0 -0
  631. /package/dist/{types → src/types}/ai.js +0 -0
  632. /package/dist/{types → src/types}/persistence.js +0 -0
  633. /package/dist/{types → src/types}/route.js +0 -0
  634. /package/dist/{types → src/types}/routing.d.ts +0 -0
  635. /package/dist/{cjs → src}/types/routing.d.ts.map +0 -0
  636. /package/dist/{types → src/types}/routing.js +0 -0
  637. /package/dist/{cjs → src}/types/routing.js.map +0 -0
  638. /package/dist/{types → src/types}/schema.d.ts +0 -0
  639. /package/dist/{cjs → src}/types/schema.d.ts.map +0 -0
  640. /package/dist/{types → src/types}/schema.js +0 -0
  641. /package/dist/{cjs → src}/types/schema.js.map +0 -0
  642. /package/dist/{types → src/types}/tool.js +0 -0
  643. /package/dist/{utils → src/utils}/id.d.ts +0 -0
  644. /package/dist/{cjs → src}/utils/id.d.ts.map +0 -0
  645. /package/dist/{utils → src/utils}/id.js +0 -0
  646. /package/dist/{utils → src/utils}/logger.d.ts +0 -0
  647. /package/dist/{cjs → src}/utils/logger.d.ts.map +0 -0
  648. /package/dist/{utils → src/utils}/logger.js +0 -0
  649. /package/dist/{utils → src/utils}/retry.d.ts +0 -0
  650. /package/dist/{cjs → src}/utils/retry.d.ts.map +0 -0
  651. /package/dist/{utils → src/utils}/retry.js +0 -0
  652. /package/docs/{PUBLISHING.md → guides/advanced-patterns/publishing.md} +0 -0
@@ -0,0 +1,798 @@
1
+ # API Reference
2
+
3
+ Complete API documentation for `@falai/agent`. This framework provides a strongly-typed, modular agent architecture with AI-powered routing and schema-driven data collection.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Core Classes](#core-classes)
8
+ - [Agent](#agent)
9
+ - [Route](#route)
10
+ - [Step](#step)
11
+ - [RoutingEngine](#routingengine)
12
+ - [ResponseEngine](#responseengine)
13
+ - [PromptComposer](#promptcomposer)
14
+ - [ToolExecutor](#toolexecutor)
15
+ - [AI Providers](#ai-providers)
16
+ - [Persistence Adapters](#persistence-adapters)
17
+ - [Types & Interfaces](#types--interfaces)
18
+ - [Utilities](#utilities)
19
+
20
+ ---
21
+
22
+ ## Core Classes
23
+
24
+ ### Agent
25
+
26
+ The central orchestrator class that manages conversation flow, routing, and tool execution.
27
+
28
+ #### Constructor
29
+
30
+ ```typescript
31
+ new Agent<TContext = unknown>(options: AgentOptions<TContext>)
32
+ ```
33
+
34
+ #### Properties
35
+
36
+ - `name: string` - Agent display name
37
+ - `description?: string` - Detailed description
38
+ - `goal?: string` - Primary objective
39
+ - `context?: TContext` - Static context data
40
+ - `session?: SessionState` - Current session state
41
+
42
+ #### Methods
43
+
44
+ ##### Route Management
45
+
46
+ ```typescript
47
+ createRoute<TData = unknown>(options: RouteOptions<TContext, TData>): Route<TContext, TData>
48
+ ```
49
+
50
+ Creates a new conversation route with the specified options.
51
+
52
+ ##### Context Management
53
+
54
+ ```typescript
55
+ updateContext(updates: Partial<TContext>): Promise<void>
56
+ ```
57
+
58
+ Updates agent context and triggers lifecycle hooks.
59
+
60
+ ```typescript
61
+ getContext(): Promise<TContext | undefined>
62
+ ```
63
+
64
+ Gets current context, fetching from provider if configured.
65
+
66
+ ##### Response Generation
67
+
68
+ ```typescript
69
+ respond(params: {
70
+ history: Event[];
71
+ session?: SessionState;
72
+ contextOverride?: Partial<TContext>;
73
+ signal?: AbortSignal;
74
+ }): Promise<{
75
+ message: string;
76
+ session?: SessionState;
77
+ toolCalls?: ToolCall[];
78
+ isRouteComplete?: boolean;
79
+ }>
80
+ ```
81
+
82
+ Generates a single response based on conversation history.
83
+
84
+ ```typescript
85
+ respondStream(params: {
86
+ history: Event[];
87
+ session?: SessionState;
88
+ contextOverride?: Partial<TContext>;
89
+ signal?: AbortSignal;
90
+ }): AsyncGenerator<{
91
+ delta: string;
92
+ accumulated: string;
93
+ done: boolean;
94
+ session?: SessionState;
95
+ toolCalls?: ToolCall[];
96
+ isRouteComplete?: boolean;
97
+ }>
98
+ ```
99
+
100
+ Generates a streaming response with real-time updates.
101
+
102
+ ##### Tool Management
103
+
104
+ ```typescript
105
+ createTool(tool: Tool<TContext, unknown[], unknown, unknown>): this
106
+ registerTools(tools: Tool<TContext, unknown[], unknown, unknown>[]): this
107
+ getTools(): Tool<TContext, unknown[], unknown, unknown>[]
108
+ ```
109
+
110
+ ##### Domain Knowledge
111
+
112
+ ```typescript
113
+ createTerm(term: Term<TContext>): this
114
+ createGuideline(guideline: Guideline<TContext>): this
115
+ getTerms(): Term<TContext>[]
116
+ getGuidelines(): Guideline<TContext>[]
117
+ getKnowledgeBase(): Record<string, unknown>
118
+ ```
119
+
120
+ ##### Session Management
121
+
122
+ ```typescript
123
+ setCurrentSession(session: SessionState): void
124
+ getCurrentSession(): SessionState | undefined
125
+ clearCurrentSession(): void
126
+ getData<TData = unknown>(routeId?: string): Partial<TData>
127
+ ```
128
+
129
+ ##### Route Transitions
130
+
131
+ ```typescript
132
+ nextStepRoute(
133
+ routeIdOrTitle: string,
134
+ session?: SessionState,
135
+ condition?: Template<TContext, unknown>,
136
+ history?: Event[]
137
+ ): Promise<SessionState>
138
+ ```
139
+
140
+ Manually transitions to a different route.
141
+
142
+ ##### Persistence
143
+
144
+ ```typescript
145
+ getPersistenceManager(): PersistenceManager | undefined
146
+ hasPersistence(): boolean
147
+ ```
148
+
149
+ ---
150
+
151
+ ### Route
152
+
153
+ Represents a conversational journey with structured steps and data collection.
154
+
155
+ #### Constructor
156
+
157
+ ```typescript
158
+ new Route<TContext = unknown, TData = unknown>(options: RouteOptions<TContext, TData>)
159
+ ```
160
+
161
+ #### Properties
162
+
163
+ - `id: string` - Unique route identifier
164
+ - `title: string` - Human-readable title
165
+ - `description?: string` - Detailed description
166
+ - `identity?: Template<TContext, TData>` - Route-specific identity
167
+ - `personality?: Template<TContext, TData>` - Route-specific personality
168
+ - `initialStep: Step<TContext, TData>` - Entry point for the route
169
+
170
+ #### Methods
171
+
172
+ ##### Step Management
173
+
174
+ ```typescript
175
+ createStep(options: StepOptions<TContext, TData>): Step<TContext, TData>
176
+ getStep(stepId: string): Step<TContext, TData> | undefined
177
+ getAllSteps(): Step<TContext, TData>[]
178
+ ```
179
+
180
+ ##### Data Collection
181
+
182
+ ```typescript
183
+ getRules(): Template<TContext, TData>[]
184
+ getProhibitions(): Template<TContext, TData>[]
185
+ getTerms(): Term<TContext>[]
186
+ getKnowledgeBase(): Record<string, unknown>
187
+ ```
188
+
189
+ ##### Schema & Validation
190
+
191
+ ```typescript
192
+ getResponseOutputSchema(): StructuredSchema | undefined
193
+ getRoutingExtrasSchema(): StructuredSchema | undefined
194
+ ```
195
+
196
+ ##### Tool Management
197
+
198
+ ```typescript
199
+ createTool(tool: Tool<TContext, unknown[], unknown, TData>): this
200
+ registerTools(tools: Tool<TContext, unknown[], unknown, TData>[]): this
201
+ getTools(): Tool<TContext, unknown[], unknown, TData>[]
202
+ ```
203
+
204
+ ##### Lifecycle Hooks
205
+
206
+ ```typescript
207
+ handleDataUpdate(data: Partial<TData>, previousData: Partial<TData>): Promise<Partial<TData>>
208
+ handleContextUpdate(newContext: TContext, previousContext: TContext): Promise<void>
209
+ evaluateOnComplete(session: { data?: Partial<TData> }, context?: TContext): Promise<RouteTransitionConfig | undefined>
210
+ ```
211
+
212
+ ---
213
+
214
+ ### Step
215
+
216
+ Represents an individual conversation state within a route.
217
+
218
+ #### Constructor
219
+
220
+ ```typescript
221
+ new Step<TContext = unknown, TData = unknown>(routeId: string, options?: StepOptions<TContext, TData>)
222
+ ```
223
+
224
+ #### Properties
225
+
226
+ - `id: string` - Unique step identifier
227
+ - `routeId: string` - Parent route identifier
228
+ - `description?: string` - Human-readable description
229
+ - `collect?: string[]` - Fields to extract from AI responses
230
+ - `requires?: string[]` - Required data fields
231
+ - `prompt?: Template<TContext, TData>` - Step-specific prompt
232
+ - `tools?: (string | Tool)[]` - Step-specific tools
233
+
234
+ #### Methods
235
+
236
+ ##### Configuration
237
+
238
+ ```typescript
239
+ configure(config: Partial<StepOptions<TContext, TData>>): this
240
+ ```
241
+
242
+ ##### Transitions
243
+
244
+ ```typescript
245
+ nextStep(spec: StepOptions<TContext, TData>): StepResult<TContext, TData>
246
+ branch(branches: BranchSpec<TContext, TData>[]): BranchResult<TContext, TData>
247
+ endRoute(options?: Omit<StepOptions<TContext, TData>, 'step'>): StepResult<TContext, TData>
248
+ ```
249
+
250
+ ##### Validation
251
+
252
+ ```typescript
253
+ shouldSkip(data: Partial<TData>): boolean
254
+ hasRequires(data: Partial<TData>): boolean
255
+ ```
256
+
257
+ ##### Tool Management
258
+
259
+ ```typescript
260
+ addGuideline(guideline: Guideline<TContext>): void
261
+ getGuidelines(): Guideline<TContext>[]
262
+ getTransitions(): Step<TContext, TData>[]
263
+ ```
264
+
265
+ ##### References
266
+
267
+ ```typescript
268
+ getRef(): StepRef
269
+ asStepResult(): StepResult<TContext, TData>
270
+ ```
271
+
272
+ ---
273
+
274
+ ### RoutingEngine
275
+
276
+ AI-powered routing system that intelligently selects routes and steps based on conversation context.
277
+
278
+ #### Constructor
279
+
280
+ ```typescript
281
+ new RoutingEngine(options?: RoutingEngineOptions)
282
+ ```
283
+
284
+ #### Methods
285
+
286
+ ##### Route Selection
287
+
288
+ ```typescript
289
+ decideRouteAndStep(params: {
290
+ routes: Route[];
291
+ session: SessionState;
292
+ history: Event[];
293
+ agentOptions?: AgentOptions;
294
+ provider: AiProvider;
295
+ context: unknown;
296
+ signal?: AbortSignal;
297
+ }): Promise<{
298
+ selectedRoute?: Route;
299
+ selectedStep?: Step;
300
+ responseDirectives?: string[];
301
+ session: SessionState;
302
+ isRouteComplete?: boolean;
303
+ }>
304
+ ```
305
+
306
+ ##### Single Route Optimization
307
+
308
+ ```typescript
309
+ decideSingleRouteStep(params: {
310
+ route: Route;
311
+ session: SessionState;
312
+ history: Event[];
313
+ agentOptions?: AgentOptions;
314
+ provider: AiProvider;
315
+ context: unknown;
316
+ signal?: AbortSignal;
317
+ }): Promise<{
318
+ selectedRoute?: Route;
319
+ selectedStep?: Step;
320
+ responseDirectives?: string[];
321
+ session: SessionState;
322
+ isRouteComplete?: boolean;
323
+ }>
324
+ ```
325
+
326
+ ##### Candidate Discovery
327
+
328
+ ```typescript
329
+ getCandidateSteps<TData>(
330
+ route: Route,
331
+ currentStep: Step | undefined,
332
+ data: Partial<TData>
333
+ ): CandidateStep[]
334
+ ```
335
+
336
+ ##### Prompt Generation
337
+
338
+ ```typescript
339
+ buildRoutingPrompt(params: BuildRoutingPromptParams): Promise<string>
340
+ buildStepSelectionPrompt(params: BuildStepSelectionPromptParams): Promise<string>
341
+ ```
342
+
343
+ ---
344
+
345
+ ### ResponseEngine
346
+
347
+ Handles prompt composition and response schema generation for AI interactions.
348
+
349
+ #### Methods
350
+
351
+ ##### Schema Generation
352
+
353
+ ```typescript
354
+ responseSchemaForRoute(route: Route, currentStep?: Step): StructuredSchema
355
+ ```
356
+
357
+ ##### Prompt Building
358
+
359
+ ```typescript
360
+ buildResponsePrompt(params: BuildResponsePromptParams): Promise<string>
361
+ buildFallbackPrompt(params: BuildFallbackPromptParams): Promise<string>
362
+ ```
363
+
364
+ ---
365
+
366
+ ### PromptComposer
367
+
368
+ Utility for composing structured prompts with agent metadata, knowledge, and context.
369
+
370
+ #### Constructor
371
+
372
+ ```typescript
373
+ new PromptComposer<TContext = unknown, TData = unknown>(context?: TemplateContext<TContext, TData>)
374
+ ```
375
+
376
+ #### Methods
377
+
378
+ ##### Metadata Addition
379
+
380
+ ```typescript
381
+ addAgentMeta(agent: AgentOptions): Promise<this>
382
+ addGlossary(terms: Term[]): Promise<this>
383
+ addGuidelines(guidelines: Guideline[]): Promise<this>
384
+ addKnowledgeBase(agentKb?: Record<string, unknown>, routeKb?: Record<string, unknown>): Promise<this>
385
+ ```
386
+
387
+ ##### Content Addition
388
+
389
+ ```typescript
390
+ addInstruction(text: string): Promise<this>
391
+ addInteractionHistory(history: Event[], note?: string): Promise<this>
392
+ addLastMessage(message: string): Promise<this>
393
+ addRoutingOverview(routes: Route[]): Promise<this>
394
+ addDirectives(directives?: string[]): Promise<this>
395
+ ```
396
+
397
+ ##### Finalization
398
+
399
+ ```typescript
400
+ build(): Promise<string>
401
+ ```
402
+
403
+ ---
404
+
405
+ ### ToolExecutor
406
+
407
+ Handles tool execution with context updates and data collection.
408
+
409
+ #### Methods
410
+
411
+ ```typescript
412
+ executeTool(params: {
413
+ tool: Tool;
414
+ context: unknown;
415
+ updateContext: (updates: Partial<unknown>) => Promise<void>;
416
+ history: Event[];
417
+ data: unknown;
418
+ }): Promise<ToolExecutionResult>
419
+ ```
420
+
421
+ ---
422
+
423
+ ## AI Providers
424
+
425
+ ### OpenAIProvider
426
+
427
+ ```typescript
428
+ new OpenAIProvider(options: OpenAIProviderOptions)
429
+
430
+ generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>
431
+ generateMessageStream(input: GenerateMessageInput): AsyncGenerator<GenerateMessageStreamChunk>
432
+ ```
433
+
434
+ ### GeminiProvider
435
+
436
+ ```typescript
437
+ new GeminiProvider(options: GeminiProviderOptions)
438
+
439
+ generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>
440
+ generateMessageStream(input: GenerateMessageInput): AsyncGenerator<GenerateMessageStreamChunk>
441
+ ```
442
+
443
+ ### AnthropicProvider
444
+
445
+ ```typescript
446
+ new AnthropicProvider(options: AnthropicProviderOptions)
447
+
448
+ generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>
449
+ generateMessageStream(input: GenerateMessageInput): AsyncGenerator<GenerateMessageStreamChunk>
450
+ ```
451
+
452
+ ### OpenRouterProvider
453
+
454
+ ```typescript
455
+ new OpenRouterProvider(options: OpenRouterProviderOptions)
456
+
457
+ generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>
458
+ generateMessageStream(input: GenerateMessageInput): AsyncGenerator<GenerateMessageStreamChunk>
459
+ ```
460
+
461
+ ---
462
+
463
+ ## Persistence Adapters
464
+
465
+ ### PrismaAdapter
466
+
467
+ ```typescript
468
+ new PrismaAdapter(options: {
469
+ prisma: PrismaClient;
470
+ tables?: { sessions?: string; messages?: string };
471
+ fieldMappings?: FieldMappings;
472
+ })
473
+
474
+ sessionRepository: SessionRepository
475
+ messageRepository: MessageRepository
476
+ ```
477
+
478
+ ### RedisAdapter
479
+
480
+ ```typescript
481
+ new RedisAdapter(options: {
482
+ redis: Redis;
483
+ keyPrefix?: string;
484
+ sessionTTL?: number;
485
+ messageTTL?: number;
486
+ })
487
+
488
+ sessionRepository: SessionRepository
489
+ messageRepository: MessageRepository
490
+ ```
491
+
492
+ ### MongoAdapter
493
+
494
+ ```typescript
495
+ new MongoAdapter(options: {
496
+ client: MongoClient;
497
+ databaseName: string;
498
+ collections?: { sessions?: string; messages?: string };
499
+ })
500
+
501
+ sessionRepository: SessionRepository
502
+ messageRepository: MessageRepository
503
+ ```
504
+
505
+ ### PostgreSQLAdapter
506
+
507
+ ```typescript
508
+ new PostgreSQLAdapter(options: {
509
+ client: Client;
510
+ tables?: { sessions?: string; messages?: string };
511
+ })
512
+
513
+ sessionRepository: SessionRepository
514
+ messageRepository: MessageRepository
515
+
516
+ initialize(): Promise<void> // Auto-create tables
517
+ ```
518
+
519
+ ### SQLiteAdapter
520
+
521
+ ```typescript
522
+ new SQLiteAdapter(options: { db: Database })
523
+
524
+ sessionRepository: SessionRepository
525
+ messageRepository: MessageRepository
526
+
527
+ initialize(): Promise<void> // Auto-create tables
528
+ ```
529
+
530
+ ### OpenSearchAdapter
531
+
532
+ ```typescript
533
+ new OpenSearchAdapter(client: Client, options: {
534
+ indices?: { sessions?: string; messages?: string };
535
+ autoCreateIndices?: boolean;
536
+ refresh?: string;
537
+ })
538
+
539
+ sessionRepository: SessionRepository
540
+ messageRepository: MessageRepository
541
+ ```
542
+
543
+ ### MemoryAdapter
544
+
545
+ ```typescript
546
+ new MemoryAdapter()
547
+
548
+ sessionRepository: SessionRepository
549
+ messageRepository: MessageRepository
550
+
551
+ clear(): void
552
+ getSnapshot(): { sessions: SessionData[]; messages: MessageData[] }
553
+ ```
554
+
555
+ ---
556
+
557
+ ## Types & Interfaces
558
+
559
+ ### Core Types
560
+
561
+ ```typescript
562
+ interface AgentOptions<TContext = unknown> {
563
+ name: string;
564
+ provider: AiProvider;
565
+ description?: string;
566
+ goal?: string;
567
+ personality?: Template<TContext>;
568
+ identity?: Template<TContext>;
569
+ context?: TContext;
570
+ contextProvider?: ContextProvider<TContext>;
571
+ hooks?: ContextLifecycleHooks<TContext>;
572
+ debug?: boolean;
573
+ session?: SessionState;
574
+ persistence?: PersistenceConfig;
575
+ terms?: Term<TContext>[];
576
+ guidelines?: Guideline<TContext>[];
577
+ tools?: Tool<TContext, unknown[], unknown, unknown>[];
578
+ routes?: RouteOptions<TContext, unknown>[];
579
+ knowledgeBase?: Record<string, unknown>;
580
+ }
581
+
582
+ interface RouteOptions<TContext = unknown, TData = unknown> {
583
+ id?: string;
584
+ title: string;
585
+ description?: string;
586
+ identity?: Template<TContext, TData>;
587
+ personality?: Template<TContext, TData>;
588
+ conditions?: Template<TContext, TData>[];
589
+ rules?: Template<TContext, TData>[];
590
+ prohibitions?: Template<TContext, TData>[];
591
+ schema?: StructuredSchema;
592
+ initialData?: Partial<TData>;
593
+ steps?: StepOptions<TContext, TData>[];
594
+ initialStep?: Omit<StepOptions<TContext, TData>, "step">;
595
+ endStep?: Omit<StepOptions<TContext, TData>, "step" | "condition" | "skipIf">;
596
+ onComplete?: string | RouteTransitionConfig | RouteCompletionHandler;
597
+ hooks?: RouteLifecycleHooks<TContext, TData>;
598
+ guidelines?: Guideline<TContext>[];
599
+ terms?: Term<TContext>[];
600
+ tools?: Tool<TContext, unknown[], unknown, TData>[];
601
+ knowledgeBase?: Record<string, unknown>;
602
+ }
603
+
604
+ interface StepOptions<TContext = unknown, TData = unknown> {
605
+ id?: string;
606
+ description?: string;
607
+ prompt?: Template<TContext, TData>;
608
+ collect?: string[];
609
+ skipIf?: (data: Partial<TData>) => boolean;
610
+ requires?: string[];
611
+ when?: Template<TContext, TData>;
612
+ prepare?: string | Tool<TContext, unknown[], unknown, TData> | ((
613
+ context: TContext,
614
+ data?: Partial<TData>
615
+ ) => void | Promise<void>);
616
+ finalize?: string | Tool<TContext, unknown[], unknown, TData> | ((
617
+ context: TContext,
618
+ data?: Partial<TData>
619
+ ) => void | Promise<void>);
620
+ tools?: (string | Tool<TContext, unknown[], unknown, TData>)[];
621
+ }
622
+
623
+ // ==============================================================================
624
+ // LIFECYCLE HOOKS: prepare & finalize
625
+ // ==============================================================================
626
+
627
+ /**
628
+ * Step lifecycle hooks allow you to execute custom logic before and after AI responses.
629
+ * Both prepare and finalize can be functions, tool references, or inline tool definitions.
630
+ */
631
+
632
+ // Example: Using functions (traditional approach)
633
+ {
634
+ prepare: (context, data) => {
635
+ console.log("Preparing step execution...");
636
+ },
637
+ finalize: (context, data) => {
638
+ console.log("Finalizing step execution...");
639
+ }
640
+ }
641
+
642
+ // Example: Using existing tools (new approach)
643
+ {
644
+ prepare: "validate_user_data", // Tool ID string
645
+ finalize: myCustomTool, // Tool object
646
+ }
647
+
648
+ // Example: Inline tool definition
649
+ {
650
+ prepare: {
651
+ id: "setup_step_context",
652
+ description: "Prepare context for this step",
653
+ parameters: { type: "object", properties: {} },
654
+ handler: ({ context, data }) => {
655
+ // Custom logic here
656
+ return { data: "Setup complete" };
657
+ }
658
+ }
659
+ }
660
+ ```
661
+
662
+ ### Session Types
663
+
664
+ ```typescript
665
+ interface SessionState<TData = unknown> {
666
+ id?: string;
667
+ data: Partial<TData>;
668
+ dataByRoute: Record<string, Partial<TData>>;
669
+ routeHistory: RouteHistoryEntry[];
670
+ currentRoute?: RouteRef;
671
+ currentStep?: StepRef;
672
+ metadata?: SessionMetadata;
673
+ }
674
+
675
+ interface SessionData {
676
+ id: string;
677
+ userId?: string;
678
+ agentName?: string;
679
+ status: SessionStatus;
680
+ currentRoute?: string;
681
+ currentStep?: string;
682
+ collectedData?: Record<string, unknown>;
683
+ messageCount: number;
684
+ lastMessageAt?: Date;
685
+ completedAt?: Date;
686
+ createdAt: Date;
687
+ updatedAt: Date;
688
+ }
689
+ ```
690
+
691
+ ### Tool Types
692
+
693
+ ```typescript
694
+ interface Tool<TContext, TArgs extends unknown[], TResult, TData> {
695
+ id: string;
696
+ description: string;
697
+ parameters: StructuredSchema;
698
+ execute: ToolHandler<TContext, TArgs, TResult, TData>;
699
+ }
700
+
701
+ type ToolHandler<TContext, TArgs extends unknown[], TResult, TData> = (
702
+ args: TArgs[0],
703
+ context: {
704
+ context: TContext;
705
+ data: Partial<TData>;
706
+ }
707
+ ) => Promise<{
708
+ data: unknown;
709
+ contextUpdate?: Partial<TContext>;
710
+ dataUpdate?: Partial<TData>;
711
+ }>;
712
+ ```
713
+
714
+ ### AI Provider Types
715
+
716
+ ```typescript
717
+ interface AiProvider {
718
+ name: string;
719
+ generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>;
720
+ generateMessageStream(
721
+ input: GenerateMessageInput
722
+ ): AsyncGenerator<GenerateMessageStreamChunk>;
723
+ }
724
+
725
+ interface GenerateMessageInput<TContext = unknown> {
726
+ prompt: string;
727
+ history: Event[];
728
+ context?: TContext;
729
+ tools?: ToolDefinition[];
730
+ parameters?: {
731
+ jsonSchema?: StructuredSchema;
732
+ schemaName?: string;
733
+ maxOutputTokens?: number;
734
+ reasoning?: { effort: "low" | "medium" | "high" };
735
+ };
736
+ signal?: AbortSignal;
737
+ }
738
+ ```
739
+
740
+ ---
741
+
742
+ ## Utilities
743
+
744
+ ### Session Utilities
745
+
746
+ ```typescript
747
+ createSession<TData = unknown>(initialData?: {
748
+ data?: Partial<TData>;
749
+ metadata?: SessionMetadata;
750
+ }): SessionState<TData>
751
+
752
+ enterRoute<TData>(
753
+ session: SessionState<TData>,
754
+ routeId: string,
755
+ routeTitle: string
756
+ ): SessionState<TData>
757
+
758
+ enterStep<TData>(
759
+ session: SessionState<TData>,
760
+ stepId: string,
761
+ stepDescription?: string
762
+ ): SessionState<TData>
763
+
764
+ mergeCollected<TData>(
765
+ session: SessionState<TData>,
766
+ data: Partial<TData>
767
+ ): SessionState<TData>
768
+ ```
769
+
770
+ ### Template Utilities
771
+
772
+ ```typescript
773
+ render<TContext, TData>(
774
+ template: Template<TContext, TData> | undefined,
775
+ params: TemplateContext<TContext, TData>
776
+ ): Promise<string>
777
+
778
+ renderMany<TContext, TData>(
779
+ templates: Template<TContext, TData>[] | undefined,
780
+ params: TemplateContext<TContext, TData>
781
+ ): Promise<string[]>
782
+
783
+ formatKnowledgeBase(
784
+ data: Record<string, unknown>,
785
+ title?: string,
786
+ maxDepth?: number
787
+ ): string
788
+ ```
789
+
790
+ ### ID Generators
791
+
792
+ ```typescript
793
+ generateRouteId(title: string): string
794
+ generateStepId(routeId: string, description?: string): string
795
+ generateToolId(name: string): string
796
+ ```
797
+
798
+ This API reference covers the complete @falai/agent framework. For more detailed examples and usage patterns, see the [examples directory](../../examples/) and [guides](../../docs/guides/).