@falai/agent 0.8.1 → 0.9.0-alpha-2

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 (665) hide show
  1. package/README.md +332 -147
  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/cjs/src/core/Agent.d.ts +223 -0
  35. package/dist/cjs/src/core/Agent.d.ts.map +1 -0
  36. package/dist/cjs/src/core/Agent.js +1660 -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 +73 -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 +32 -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 +171 -0
  55. package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
  56. package/dist/cjs/src/core/ResponsePipeline.js +514 -0
  57. package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
  58. package/dist/cjs/src/core/Route.d.ts +145 -0
  59. package/dist/cjs/src/core/Route.d.ts.map +1 -0
  60. package/dist/cjs/src/core/Route.js +343 -0
  61. package/dist/cjs/src/core/Route.js.map +1 -0
  62. package/dist/cjs/src/core/RoutingEngine.d.ts +129 -0
  63. package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
  64. package/dist/cjs/{core → src/core}/RoutingEngine.js +215 -117
  65. package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
  66. package/dist/cjs/src/core/SessionManager.d.ts +86 -0
  67. package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
  68. package/dist/cjs/src/core/SessionManager.js +217 -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 +45 -0
  75. package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -0
  76. package/dist/cjs/{core → src/core}/ToolExecutor.js +30 -19
  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 +80 -41
  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 +38 -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/src/types/route.d.ts +235 -0
  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 +65 -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/{types → cjs/src/types}/tool.d.ts +17 -13
  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 +35 -32
  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/src/core/Agent.d.ts +223 -0
  196. package/dist/src/core/Agent.d.ts.map +1 -0
  197. package/dist/src/core/Agent.js +1656 -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 +71 -18
  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 +32 -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 +171 -0
  216. package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
  217. package/dist/src/core/ResponsePipeline.js +510 -0
  218. package/dist/src/core/ResponsePipeline.js.map +1 -0
  219. package/dist/src/core/Route.d.ts +145 -0
  220. package/dist/src/core/Route.d.ts.map +1 -0
  221. package/dist/src/core/Route.js +339 -0
  222. package/dist/src/core/Route.js.map +1 -0
  223. package/dist/src/core/RoutingEngine.d.ts +129 -0
  224. package/dist/src/core/RoutingEngine.d.ts.map +1 -0
  225. package/dist/{core → src/core}/RoutingEngine.js +211 -113
  226. package/dist/src/core/RoutingEngine.js.map +1 -0
  227. package/dist/src/core/SessionManager.d.ts +86 -0
  228. package/dist/src/core/SessionManager.d.ts.map +1 -0
  229. package/dist/src/core/SessionManager.js +213 -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 +45 -0
  236. package/dist/src/core/ToolExecutor.d.ts.map +1 -0
  237. package/dist/src/core/ToolExecutor.js +80 -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 +80 -41
  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 +38 -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/src/types/route.d.ts +235 -0
  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 +65 -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/{cjs → src}/types/tool.d.ts +17 -13
  289. package/dist/src/types/tool.d.ts.map +1 -0
  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 +33 -32
  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} +925 -255
  320. package/docs/api/overview.md +952 -0
  321. package/docs/core/agent/README.md +787 -0
  322. package/docs/{CONTEXT_MANAGEMENT.md → core/agent/context-management.md} +175 -102
  323. package/docs/{ARCHITECTURE.md → core/agent/session-management.md} +117 -69
  324. package/docs/core/ai-integration/prompt-composition.md +220 -0
  325. package/docs/core/ai-integration/providers.md +515 -0
  326. package/docs/core/ai-integration/response-processing.md +176 -0
  327. package/docs/core/conversation-flows/data-collection.md +623 -0
  328. package/docs/core/conversation-flows/route-dsl.md +502 -0
  329. package/docs/core/conversation-flows/routes.md +117 -0
  330. package/docs/core/conversation-flows/step-transitions.md +595 -0
  331. package/docs/core/conversation-flows/steps.md +154 -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 +348 -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 +406 -0
  339. package/examples/{company-qna-agent.ts → advanced-patterns/knowledge-based-agent.ts} +139 -95
  340. package/examples/{persistent-onboarding.ts → advanced-patterns/persistent-onboarding.ts} +244 -137
  341. package/examples/{rules-prohibitions.ts → advanced-patterns/route-lifecycle-hooks.ts} +130 -84
  342. package/examples/{streaming-agent.ts → advanced-patterns/streaming-responses.ts} +116 -90
  343. package/examples/ai-providers/anthropic-integration.ts +384 -0
  344. package/examples/{openai-agent.ts → ai-providers/openai-integration.ts} +57 -63
  345. package/examples/conversation-flows/completion-transitions.ts +277 -0
  346. package/examples/core-concepts/basic-agent.ts +443 -0
  347. package/examples/core-concepts/schema-driven-extraction.ts +305 -0
  348. package/examples/core-concepts/session-management.ts +406 -0
  349. package/examples/integrations/database-integration.ts +630 -0
  350. package/examples/integrations/healthcare-integration.ts +609 -0
  351. package/examples/{opensearch-persistence.ts → integrations/search-integration.ts} +199 -171
  352. package/examples/integrations/server-session-management.ts +307 -0
  353. package/examples/persistence/custom-adapter.ts +529 -0
  354. package/examples/{prisma-persistence.ts → persistence/database-persistence.ts} +215 -272
  355. package/examples/persistence/memory-sessions.ts +495 -0
  356. package/examples/{prisma-schema.example.prisma → persistence/prisma-schema.example.prisma} +1 -1
  357. package/examples/persistence/redis-persistence.ts +490 -0
  358. package/examples/tools/basic-tools.ts +561 -0
  359. package/examples/{extracted-data-modification.ts → tools/data-enrichment-tools.ts} +128 -117
  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 +1431 -526
  369. package/src/core/Events.ts +100 -112
  370. package/src/core/PersistenceManager.ts +103 -49
  371. package/src/core/PromptComposer.ts +158 -85
  372. package/src/core/ResponseEngine.ts +128 -46
  373. package/src/core/ResponsePipeline.ts +830 -0
  374. package/src/core/Route.ts +222 -53
  375. package/src/core/RoutingEngine.ts +345 -229
  376. package/src/core/SessionManager.ts +265 -0
  377. package/src/core/Step.ts +157 -67
  378. package/src/core/ToolExecutor.ts +52 -43
  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 +81 -46
  385. package/src/types/ai.ts +7 -0
  386. package/src/types/history.ts +91 -18
  387. package/src/types/index.ts +45 -7
  388. package/src/types/persistence.ts +45 -28
  389. package/src/types/route.ts +122 -57
  390. package/src/types/session.ts +20 -220
  391. package/src/types/template.ts +36 -0
  392. package/src/types/tool.ts +23 -19
  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 +204 -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 +0 -197
  432. package/dist/cjs/core/Agent.d.ts.map +0 -1
  433. package/dist/cjs/core/Agent.js +0 -966
  434. package/dist/cjs/core/Agent.js.map +0 -1
  435. package/dist/cjs/core/DomainRegistry.d.ts +0 -36
  436. package/dist/cjs/core/DomainRegistry.d.ts.map +0 -1
  437. package/dist/cjs/core/DomainRegistry.js +0 -72
  438. package/dist/cjs/core/DomainRegistry.js.map +0 -1
  439. package/dist/cjs/core/Events.d.ts +0 -41
  440. package/dist/cjs/core/Events.d.ts.map +0 -1
  441. package/dist/cjs/core/Events.js +0 -99
  442. package/dist/cjs/core/Events.js.map +0 -1
  443. package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
  444. package/dist/cjs/core/PersistenceManager.js.map +0 -1
  445. package/dist/cjs/core/PromptComposer.d.ts +0 -24
  446. package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
  447. package/dist/cjs/core/PromptComposer.js +0 -127
  448. package/dist/cjs/core/PromptComposer.js.map +0 -1
  449. package/dist/cjs/core/ResponseEngine.d.ts +0 -14
  450. package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
  451. package/dist/cjs/core/ResponseEngine.js +0 -56
  452. package/dist/cjs/core/ResponseEngine.js.map +0 -1
  453. package/dist/cjs/core/Route.d.ts +0 -90
  454. package/dist/cjs/core/Route.d.ts.map +0 -1
  455. package/dist/cjs/core/Route.js +0 -203
  456. package/dist/cjs/core/Route.js.map +0 -1
  457. package/dist/cjs/core/RoutingEngine.d.ts +0 -109
  458. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  459. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  460. package/dist/cjs/core/Step.d.ts +0 -72
  461. package/dist/cjs/core/Step.d.ts.map +0 -1
  462. package/dist/cjs/core/Step.js +0 -150
  463. package/dist/cjs/core/Step.js.map +0 -1
  464. package/dist/cjs/core/Tool.d.ts +0 -39
  465. package/dist/cjs/core/Tool.d.ts.map +0 -1
  466. package/dist/cjs/core/Tool.js +0 -34
  467. package/dist/cjs/core/Tool.js.map +0 -1
  468. package/dist/cjs/core/ToolExecutor.d.ts +0 -29
  469. package/dist/cjs/core/ToolExecutor.d.ts.map +0 -1
  470. package/dist/cjs/core/ToolExecutor.js.map +0 -1
  471. package/dist/cjs/core/Transition.d.ts +0 -32
  472. package/dist/cjs/core/Transition.d.ts.map +0 -1
  473. package/dist/cjs/core/Transition.js +0 -89
  474. package/dist/cjs/core/Transition.js.map +0 -1
  475. package/dist/cjs/index.d.ts.map +0 -1
  476. package/dist/cjs/index.js.map +0 -1
  477. package/dist/cjs/providers/AnthropicProvider.d.ts.map +0 -1
  478. package/dist/cjs/providers/AnthropicProvider.js.map +0 -1
  479. package/dist/cjs/providers/GeminiProvider.js.map +0 -1
  480. package/dist/cjs/providers/OpenAIProvider.js.map +0 -1
  481. package/dist/cjs/providers/OpenRouterProvider.js.map +0 -1
  482. package/dist/cjs/providers/index.js.map +0 -1
  483. package/dist/cjs/types/agent.d.ts.map +0 -1
  484. package/dist/cjs/types/agent.js.map +0 -1
  485. package/dist/cjs/types/ai.d.ts.map +0 -1
  486. package/dist/cjs/types/history.d.ts.map +0 -1
  487. package/dist/cjs/types/history.js +0 -37
  488. package/dist/cjs/types/history.js.map +0 -1
  489. package/dist/cjs/types/index.d.ts +0 -12
  490. package/dist/cjs/types/index.d.ts.map +0 -1
  491. package/dist/cjs/types/index.js +0 -12
  492. package/dist/cjs/types/index.js.map +0 -1
  493. package/dist/cjs/types/persistence.d.ts.map +0 -1
  494. package/dist/cjs/types/persistence.js.map +0 -1
  495. package/dist/cjs/types/route.d.ts +0 -175
  496. package/dist/cjs/types/route.d.ts.map +0 -1
  497. package/dist/cjs/types/session.d.ts +0 -104
  498. package/dist/cjs/types/session.d.ts.map +0 -1
  499. package/dist/cjs/types/session.js.map +0 -1
  500. package/dist/cjs/types/tool.d.ts.map +0 -1
  501. package/dist/cjs/utils/event.js.map +0 -1
  502. package/dist/cjs/utils/id.js.map +0 -1
  503. package/dist/cjs/utils/logger.js.map +0 -1
  504. package/dist/cjs/utils/retry.js.map +0 -1
  505. package/dist/constants/index.d.ts.map +0 -1
  506. package/dist/constants/index.js.map +0 -1
  507. package/dist/core/Agent.d.ts +0 -197
  508. package/dist/core/Agent.d.ts.map +0 -1
  509. package/dist/core/Agent.js +0 -962
  510. package/dist/core/Agent.js.map +0 -1
  511. package/dist/core/DomainRegistry.d.ts +0 -36
  512. package/dist/core/DomainRegistry.d.ts.map +0 -1
  513. package/dist/core/DomainRegistry.js +0 -68
  514. package/dist/core/DomainRegistry.js.map +0 -1
  515. package/dist/core/Events.d.ts +0 -41
  516. package/dist/core/Events.d.ts.map +0 -1
  517. package/dist/core/Events.js +0 -94
  518. package/dist/core/Events.js.map +0 -1
  519. package/dist/core/PersistenceManager.d.ts.map +0 -1
  520. package/dist/core/PersistenceManager.js.map +0 -1
  521. package/dist/core/PromptComposer.d.ts +0 -24
  522. package/dist/core/PromptComposer.d.ts.map +0 -1
  523. package/dist/core/PromptComposer.js +0 -123
  524. package/dist/core/PromptComposer.js.map +0 -1
  525. package/dist/core/ResponseEngine.d.ts +0 -14
  526. package/dist/core/ResponseEngine.d.ts.map +0 -1
  527. package/dist/core/ResponseEngine.js +0 -52
  528. package/dist/core/ResponseEngine.js.map +0 -1
  529. package/dist/core/Route.d.ts +0 -90
  530. package/dist/core/Route.d.ts.map +0 -1
  531. package/dist/core/Route.js +0 -199
  532. package/dist/core/Route.js.map +0 -1
  533. package/dist/core/RoutingEngine.d.ts +0 -109
  534. package/dist/core/RoutingEngine.d.ts.map +0 -1
  535. package/dist/core/RoutingEngine.js.map +0 -1
  536. package/dist/core/Step.d.ts +0 -72
  537. package/dist/core/Step.d.ts.map +0 -1
  538. package/dist/core/Step.js +0 -146
  539. package/dist/core/Step.js.map +0 -1
  540. package/dist/core/Tool.d.ts +0 -39
  541. package/dist/core/Tool.d.ts.map +0 -1
  542. package/dist/core/Tool.js +0 -31
  543. package/dist/core/Tool.js.map +0 -1
  544. package/dist/core/ToolExecutor.d.ts +0 -29
  545. package/dist/core/ToolExecutor.d.ts.map +0 -1
  546. package/dist/core/ToolExecutor.js +0 -69
  547. package/dist/core/ToolExecutor.js.map +0 -1
  548. package/dist/core/Transition.d.ts +0 -32
  549. package/dist/core/Transition.d.ts.map +0 -1
  550. package/dist/core/Transition.js +0 -85
  551. package/dist/core/Transition.js.map +0 -1
  552. package/dist/index.d.ts.map +0 -1
  553. package/dist/index.js.map +0 -1
  554. package/dist/providers/AnthropicProvider.d.ts.map +0 -1
  555. package/dist/providers/AnthropicProvider.js.map +0 -1
  556. package/dist/providers/GeminiProvider.d.ts.map +0 -1
  557. package/dist/providers/GeminiProvider.js.map +0 -1
  558. package/dist/providers/OpenAIProvider.d.ts.map +0 -1
  559. package/dist/providers/OpenAIProvider.js.map +0 -1
  560. package/dist/providers/OpenRouterProvider.d.ts.map +0 -1
  561. package/dist/providers/OpenRouterProvider.js.map +0 -1
  562. package/dist/providers/index.d.ts.map +0 -1
  563. package/dist/providers/index.js.map +0 -1
  564. package/dist/types/agent.d.ts.map +0 -1
  565. package/dist/types/agent.js.map +0 -1
  566. package/dist/types/ai.d.ts.map +0 -1
  567. package/dist/types/ai.js.map +0 -1
  568. package/dist/types/history.d.ts.map +0 -1
  569. package/dist/types/history.js +0 -34
  570. package/dist/types/history.js.map +0 -1
  571. package/dist/types/index.d.ts +0 -12
  572. package/dist/types/index.d.ts.map +0 -1
  573. package/dist/types/index.js +0 -6
  574. package/dist/types/index.js.map +0 -1
  575. package/dist/types/persistence.d.ts.map +0 -1
  576. package/dist/types/persistence.js.map +0 -1
  577. package/dist/types/route.d.ts +0 -175
  578. package/dist/types/route.d.ts.map +0 -1
  579. package/dist/types/routing.d.ts.map +0 -1
  580. package/dist/types/schema.d.ts.map +0 -1
  581. package/dist/types/session.d.ts +0 -104
  582. package/dist/types/session.d.ts.map +0 -1
  583. package/dist/types/session.js.map +0 -1
  584. package/dist/types/tool.d.ts.map +0 -1
  585. package/dist/utils/event.d.ts.map +0 -1
  586. package/dist/utils/event.js.map +0 -1
  587. package/dist/utils/id.d.ts.map +0 -1
  588. package/dist/utils/id.js.map +0 -1
  589. package/dist/utils/logger.d.ts.map +0 -1
  590. package/dist/utils/logger.js.map +0 -1
  591. package/dist/utils/retry.d.ts.map +0 -1
  592. package/dist/utils/retry.js.map +0 -1
  593. package/docs/AGENT.md +0 -535
  594. package/docs/DOCS.md +0 -263
  595. package/docs/DOMAINS.md +0 -735
  596. package/docs/EXAMPLES.md +0 -467
  597. package/docs/GETTING_STARTED.md +0 -424
  598. package/docs/PERSISTENCE.md +0 -815
  599. package/docs/PROVIDERS.md +0 -612
  600. package/docs/ROUTES.md +0 -1085
  601. package/docs/STEPS.md +0 -883
  602. package/examples/business-onboarding.ts +0 -791
  603. package/examples/custom-database-persistence.ts +0 -574
  604. package/examples/declarative-agent.ts +0 -401
  605. package/examples/domain-scoping.ts +0 -366
  606. package/examples/healthcare-agent.ts +0 -511
  607. package/examples/redis-persistence.ts +0 -525
  608. package/examples/route-transitions.ts +0 -266
  609. package/examples/travel-agent.ts +0 -584
  610. package/src/core/DomainRegistry.ts +0 -80
  611. package/src/core/Tool.ts +0 -112
  612. package/src/core/Transition.ts +0 -115
  613. /package/dist/{adapters → cjs/src/adapters}/index.d.ts +0 -0
  614. /package/dist/cjs/{adapters → src/adapters}/index.js +0 -0
  615. /package/dist/cjs/{constants → src/constants}/index.d.ts +0 -0
  616. /package/dist/cjs/{constants → src/constants}/index.js +0 -0
  617. /package/dist/cjs/{providers → src/providers}/index.d.ts +0 -0
  618. /package/dist/cjs/{providers → src/providers}/index.js +0 -0
  619. /package/dist/cjs/{types → src/types}/agent.js +0 -0
  620. /package/dist/cjs/{types → src/types}/ai.js +0 -0
  621. /package/dist/cjs/{types → src/types}/persistence.js +0 -0
  622. /package/dist/cjs/{types → src/types}/route.js +0 -0
  623. /package/dist/cjs/{types → src/types}/routing.d.ts +0 -0
  624. /package/dist/cjs/{types → src/types}/routing.js +0 -0
  625. /package/dist/cjs/{types → src/types}/schema.d.ts +0 -0
  626. /package/dist/cjs/{types → src/types}/schema.js +0 -0
  627. /package/dist/cjs/{types → src/types}/tool.js +0 -0
  628. /package/dist/cjs/{utils → src/utils}/id.d.ts +0 -0
  629. /package/dist/cjs/{utils → src/utils}/id.js +0 -0
  630. /package/dist/cjs/{utils → src/utils}/logger.d.ts +0 -0
  631. /package/dist/cjs/{utils → src/utils}/logger.js +0 -0
  632. /package/dist/cjs/{utils → src/utils}/retry.d.ts +0 -0
  633. /package/dist/cjs/{utils → src/utils}/retry.js +0 -0
  634. /package/dist/{cjs → src}/adapters/index.d.ts +0 -0
  635. /package/dist/{cjs → src}/adapters/index.d.ts.map +0 -0
  636. /package/dist/{adapters → src/adapters}/index.js +0 -0
  637. /package/dist/{constants → src/constants}/index.d.ts +0 -0
  638. /package/dist/{cjs → src}/constants/index.d.ts.map +0 -0
  639. /package/dist/{constants → src/constants}/index.js +0 -0
  640. /package/dist/{providers → src/providers}/index.d.ts +0 -0
  641. /package/dist/{cjs → src}/providers/index.d.ts.map +0 -0
  642. /package/dist/{providers → src/providers}/index.js +0 -0
  643. /package/dist/{types → src/types}/agent.js +0 -0
  644. /package/dist/{types → src/types}/ai.js +0 -0
  645. /package/dist/{types → src/types}/persistence.js +0 -0
  646. /package/dist/{types → src/types}/route.js +0 -0
  647. /package/dist/{types → src/types}/routing.d.ts +0 -0
  648. /package/dist/{cjs → src}/types/routing.d.ts.map +0 -0
  649. /package/dist/{types → src/types}/routing.js +0 -0
  650. /package/dist/{cjs → src}/types/routing.js.map +0 -0
  651. /package/dist/{types → src/types}/schema.d.ts +0 -0
  652. /package/dist/{cjs → src}/types/schema.d.ts.map +0 -0
  653. /package/dist/{types → src/types}/schema.js +0 -0
  654. /package/dist/{cjs → src}/types/schema.js.map +0 -0
  655. /package/dist/{types → src/types}/tool.js +0 -0
  656. /package/dist/{utils → src/utils}/id.d.ts +0 -0
  657. /package/dist/{cjs → src}/utils/id.d.ts.map +0 -0
  658. /package/dist/{utils → src/utils}/id.js +0 -0
  659. /package/dist/{utils → src/utils}/logger.d.ts +0 -0
  660. /package/dist/{cjs → src}/utils/logger.d.ts.map +0 -0
  661. /package/dist/{utils → src/utils}/logger.js +0 -0
  662. /package/dist/{utils → src/utils}/retry.d.ts +0 -0
  663. /package/dist/{cjs → src}/utils/retry.d.ts.map +0 -0
  664. /package/dist/{utils → src/utils}/retry.js +0 -0
  665. /package/docs/{PUBLISHING.md → guides/advanced-patterns/publishing.md} +0 -0
@@ -0,0 +1,952 @@
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, tool execution, and agent-level data collection.
27
+
28
+ #### Constructor
29
+
30
+ ```typescript
31
+ new Agent<TContext = unknown, TData = unknown>(options: AgentOptions<TContext, TData>)
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(options: RouteOptions<TContext, TData>): Route<TContext, TData>
48
+ ```
49
+
50
+ Creates a new conversation route with required fields specification that references the agent-level schema.
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
+ ##### Agent-Level Data Management
67
+
68
+ ```typescript
69
+ getCollectedData(): Partial<TData>
70
+ ```
71
+
72
+ Gets the current agent-level collected data.
73
+
74
+ ```typescript
75
+ updateCollectedData(updates: Partial<TData>): Promise<void>
76
+ ```
77
+
78
+ Updates agent-level collected data and triggers validation and lifecycle hooks.
79
+
80
+ ```typescript
81
+ validateData(data: Partial<TData>): ValidationResult
82
+ ```
83
+
84
+ Validates data against the agent-level schema, returning detailed validation results.
85
+
86
+ ##### Response Generation
87
+
88
+ ```typescript
89
+ respond(params: {
90
+ history: Event[];
91
+ session?: SessionState;
92
+ contextOverride?: Partial<TContext>;
93
+ signal?: AbortSignal;
94
+ }): Promise<{
95
+ message: string;
96
+ session?: SessionState;
97
+ toolCalls?: ToolCall[];
98
+ isRouteComplete?: boolean;
99
+ }>
100
+ ```
101
+
102
+ Generates a single response based on conversation history.
103
+
104
+ ```typescript
105
+ respondStream(params: {
106
+ history: Event[];
107
+ session?: SessionState;
108
+ contextOverride?: Partial<TContext>;
109
+ signal?: AbortSignal;
110
+ }): AsyncGenerator<{
111
+ delta: string;
112
+ accumulated: string;
113
+ done: boolean;
114
+ session?: SessionState;
115
+ toolCalls?: ToolCall[];
116
+ isRouteComplete?: boolean;
117
+ }>
118
+ ```
119
+
120
+ Generates a streaming response with real-time updates.
121
+
122
+ ##### Tool Management
123
+
124
+ ```typescript
125
+ createTool(tool: Tool<TContext, unknown[], unknown, unknown>): this
126
+ registerTools(tools: Tool<TContext, unknown[], unknown, unknown>[]): this
127
+ getTools(): Tool<TContext, unknown[], unknown, unknown>[]
128
+ ```
129
+
130
+ ##### Domain Knowledge
131
+
132
+ ```typescript
133
+ createTerm(term: Term<TContext>): this
134
+ createGuideline(guideline: Guideline<TContext>): this
135
+ getTerms(): Term<TContext>[]
136
+ getGuidelines(): Guideline<TContext>[]
137
+ getKnowledgeBase(): Record<string, unknown>
138
+ ```
139
+
140
+ ##### Session Management
141
+
142
+ ```typescript
143
+ setCurrentSession(session: SessionState): void
144
+ getCurrentSession(): SessionState | undefined
145
+ clearCurrentSession(): void
146
+ getData<TData = unknown>(routeId?: string): Partial<TData>
147
+ ```
148
+
149
+ ##### Route Transitions
150
+
151
+ ```typescript
152
+ nextStepRoute(
153
+ routeIdOrTitle: string,
154
+ session?: SessionState,
155
+ condition?: Template<TContext, unknown>,
156
+ history?: Event[]
157
+ ): Promise<SessionState>
158
+ ```
159
+
160
+ Manually transitions to a different route.
161
+
162
+ ##### Persistence
163
+
164
+ ```typescript
165
+ getPersistenceManager(): PersistenceManager | undefined
166
+ hasPersistence(): boolean
167
+ ```
168
+
169
+ ---
170
+
171
+ ### Route
172
+
173
+ Represents a conversational journey with required fields specification and steps that collect data into the agent-level schema.
174
+
175
+ #### Constructor
176
+
177
+ ```typescript
178
+ new Route<TContext = unknown, TData = unknown>(options: RouteOptions<TContext, TData>)
179
+ ```
180
+
181
+ #### Properties
182
+
183
+ - `id: string` - Unique route identifier
184
+ - `title: string` - Human-readable title
185
+ - `description?: string` - Detailed description
186
+ - `identity?: Template<TContext, TData>` - Route-specific identity
187
+ - `personality?: Template<TContext, TData>` - Route-specific personality
188
+ - `initialStep: Step<TContext, TData>` - Entry point for the route
189
+
190
+ #### Methods
191
+
192
+ ##### Step Management
193
+
194
+ ```typescript
195
+ createStep(options: StepOptions<TContext, TData>): Step<TContext, TData>
196
+ getStep(stepId: string): Step<TContext, TData> | undefined
197
+ getAllSteps(): Step<TContext, TData>[]
198
+ ```
199
+
200
+ ##### Route Completion Logic
201
+
202
+ ```typescript
203
+ isComplete(data: Partial<TData>): boolean
204
+ ```
205
+
206
+ Checks if the route is complete based on agent-level data.
207
+
208
+ ```typescript
209
+ getMissingRequiredFields(data: Partial<TData>): (keyof TData)[]
210
+ ```
211
+
212
+ Returns the fields still needed for route completion.
213
+
214
+ ```typescript
215
+ getCompletionProgress(data: Partial<TData>): number
216
+ ```
217
+
218
+ Returns completion progress as a number between 0 and 1.
219
+
220
+ ##### Data Collection
221
+
222
+ ```typescript
223
+ getRules(): Template<TContext, TData>[]
224
+ getProhibitions(): Template<TContext, TData>[]
225
+ getTerms(): Term<TContext>[]
226
+ getKnowledgeBase(): Record<string, unknown>
227
+ ```
228
+
229
+ ##### Schema & Validation
230
+
231
+ ```typescript
232
+ getResponseOutputSchema(): StructuredSchema | undefined
233
+ getRoutingExtrasSchema(): StructuredSchema | undefined
234
+ ```
235
+
236
+ ##### Tool Management
237
+
238
+ ```typescript
239
+ createTool(tool: Tool<TContext, unknown[], unknown, TData>): this
240
+ registerTools(tools: Tool<TContext, unknown[], unknown, TData>[]): this
241
+ getTools(): Tool<TContext, unknown[], unknown, TData>[]
242
+ ```
243
+
244
+ ##### Lifecycle Hooks
245
+
246
+ ```typescript
247
+ handleDataUpdate(data: Partial<TData>, previousData: Partial<TData>): Promise<Partial<TData>>
248
+ handleContextUpdate(newContext: TContext, previousContext: TContext): Promise<void>
249
+ evaluateOnComplete(session: { data?: Partial<TData> }, context?: TContext): Promise<RouteTransitionConfig | undefined>
250
+ ```
251
+
252
+ ---
253
+
254
+ ### Step
255
+
256
+ Represents an individual conversation state within a route.
257
+
258
+ #### Constructor
259
+
260
+ ```typescript
261
+ new Step<TContext = unknown, TData = unknown>(routeId: string, options?: StepOptions<TContext, TData>)
262
+ ```
263
+
264
+ #### Properties
265
+
266
+ - `id: string` - Unique step identifier
267
+ - `routeId: string` - Parent route identifier
268
+ - `description?: string` - Human-readable description
269
+ - `collect?: string[]` - Fields to extract from AI responses
270
+ - `requires?: string[]` - Required data fields
271
+ - `prompt?: Template<TContext, TData>` - Step-specific prompt
272
+ - `tools?: (string | Tool)[]` - Step-specific tools
273
+
274
+ #### Methods
275
+
276
+ ##### Configuration
277
+
278
+ ```typescript
279
+ configure(config: Partial<StepOptions<TContext, TData>>): this
280
+ ```
281
+
282
+ ##### Transitions
283
+
284
+ ```typescript
285
+ nextStep(spec: StepOptions<TContext, TData>): StepResult<TContext, TData>
286
+ branch(branches: BranchSpec<TContext, TData>[]): BranchResult<TContext, TData>
287
+ endRoute(options?: Omit<StepOptions<TContext, TData>, 'step'>): StepResult<TContext, TData>
288
+ ```
289
+
290
+ ##### Validation
291
+
292
+ ```typescript
293
+ shouldSkip(data: Partial<TData>): boolean
294
+ hasRequires(data: Partial<TData>): boolean
295
+ ```
296
+
297
+ ##### Tool Management
298
+
299
+ ```typescript
300
+ addGuideline(guideline: Guideline<TContext>): void
301
+ getGuidelines(): Guideline<TContext>[]
302
+ getTransitions(): Step<TContext, TData>[]
303
+ ```
304
+
305
+ ##### References
306
+
307
+ ```typescript
308
+ getRef(): StepRef
309
+ asStepResult(): StepResult<TContext, TData>
310
+ ```
311
+
312
+ ---
313
+
314
+ ### RoutingEngine
315
+
316
+ AI-powered routing system that intelligently selects routes and steps based on conversation context.
317
+
318
+ #### Constructor
319
+
320
+ ```typescript
321
+ new RoutingEngine(options?: RoutingEngineOptions)
322
+ ```
323
+
324
+ #### Methods
325
+
326
+ ##### Route Selection
327
+
328
+ ```typescript
329
+ decideRouteAndStep(params: {
330
+ routes: Route[];
331
+ session: SessionState;
332
+ history: Event[];
333
+ agentOptions?: AgentOptions;
334
+ provider: AiProvider;
335
+ context: unknown;
336
+ signal?: AbortSignal;
337
+ }): Promise<{
338
+ selectedRoute?: Route;
339
+ selectedStep?: Step;
340
+ responseDirectives?: string[];
341
+ session: SessionState;
342
+ isRouteComplete?: boolean;
343
+ }>
344
+ ```
345
+
346
+ ##### Single Route Optimization
347
+
348
+ ```typescript
349
+ decideSingleRouteStep(params: {
350
+ route: Route;
351
+ session: SessionState;
352
+ history: Event[];
353
+ agentOptions?: AgentOptions;
354
+ provider: AiProvider;
355
+ context: unknown;
356
+ signal?: AbortSignal;
357
+ }): Promise<{
358
+ selectedRoute?: Route;
359
+ selectedStep?: Step;
360
+ responseDirectives?: string[];
361
+ session: SessionState;
362
+ isRouteComplete?: boolean;
363
+ }>
364
+ ```
365
+
366
+ ##### Candidate Discovery
367
+
368
+ ```typescript
369
+ getCandidateSteps<TData>(
370
+ route: Route,
371
+ currentStep: Step | undefined,
372
+ data: Partial<TData>
373
+ ): CandidateStep[]
374
+ ```
375
+
376
+ ##### Prompt Generation
377
+
378
+ ```typescript
379
+ buildRoutingPrompt(params: BuildRoutingPromptParams): Promise<string>
380
+ buildStepSelectionPrompt(params: BuildStepSelectionPromptParams): Promise<string>
381
+ ```
382
+
383
+ ---
384
+
385
+ ### ResponseEngine
386
+
387
+ Handles prompt composition and response schema generation for AI interactions.
388
+
389
+ #### Methods
390
+
391
+ ##### Schema Generation
392
+
393
+ ```typescript
394
+ responseSchemaForRoute(route: Route, currentStep?: Step): StructuredSchema
395
+ ```
396
+
397
+ ##### Prompt Building
398
+
399
+ ```typescript
400
+ buildResponsePrompt(params: BuildResponsePromptParams): Promise<string>
401
+ buildFallbackPrompt(params: BuildFallbackPromptParams): Promise<string>
402
+ ```
403
+
404
+ ---
405
+
406
+ ### PromptComposer
407
+
408
+ Utility for composing structured prompts with agent metadata, knowledge, and context.
409
+
410
+ #### Constructor
411
+
412
+ ```typescript
413
+ new PromptComposer<TContext = unknown, TData = unknown>(context?: TemplateContext<TContext, TData>)
414
+ ```
415
+
416
+ #### Methods
417
+
418
+ ##### Metadata Addition
419
+
420
+ ```typescript
421
+ addAgentMeta(agent: AgentOptions): Promise<this>
422
+ addGlossary(terms: Term[]): Promise<this>
423
+ addGuidelines(guidelines: Guideline[]): Promise<this>
424
+ addKnowledgeBase(agentKb?: Record<string, unknown>, routeKb?: Record<string, unknown>): Promise<this>
425
+ ```
426
+
427
+ ##### Content Addition
428
+
429
+ ```typescript
430
+ addInstruction(text: string): Promise<this>
431
+ addInteractionHistory(history: Event[], note?: string): Promise<this>
432
+ addLastMessage(message: string): Promise<this>
433
+ addRoutingOverview(routes: Route[]): Promise<this>
434
+ addDirectives(directives?: string[]): Promise<this>
435
+ ```
436
+
437
+ ##### Finalization
438
+
439
+ ```typescript
440
+ build(): Promise<string>
441
+ ```
442
+
443
+ ---
444
+
445
+ ### ToolExecutor
446
+
447
+ Handles tool execution with context updates and data collection.
448
+
449
+ #### Methods
450
+
451
+ ```typescript
452
+ executeTool(params: {
453
+ tool: Tool;
454
+ context: unknown;
455
+ updateContext: (updates: Partial<unknown>) => Promise<void>;
456
+ history: Event[];
457
+ data: unknown;
458
+ }): Promise<ToolExecutionResult>
459
+ ```
460
+
461
+ ---
462
+
463
+ ## AI Providers
464
+
465
+ ### OpenAIProvider
466
+
467
+ ```typescript
468
+ new OpenAIProvider(options: OpenAIProviderOptions)
469
+
470
+ generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>
471
+ generateMessageStream(input: GenerateMessageInput): AsyncGenerator<GenerateMessageStreamChunk>
472
+ ```
473
+
474
+ ### GeminiProvider
475
+
476
+ ```typescript
477
+ new GeminiProvider(options: GeminiProviderOptions)
478
+
479
+ generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>
480
+ generateMessageStream(input: GenerateMessageInput): AsyncGenerator<GenerateMessageStreamChunk>
481
+ ```
482
+
483
+ ### AnthropicProvider
484
+
485
+ ```typescript
486
+ new AnthropicProvider(options: AnthropicProviderOptions)
487
+
488
+ generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>
489
+ generateMessageStream(input: GenerateMessageInput): AsyncGenerator<GenerateMessageStreamChunk>
490
+ ```
491
+
492
+ ### OpenRouterProvider
493
+
494
+ ```typescript
495
+ new OpenRouterProvider(options: OpenRouterProviderOptions)
496
+
497
+ generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>
498
+ generateMessageStream(input: GenerateMessageInput): AsyncGenerator<GenerateMessageStreamChunk>
499
+ ```
500
+
501
+ ---
502
+
503
+ ## Persistence Adapters
504
+
505
+ ### PrismaAdapter
506
+
507
+ ```typescript
508
+ new PrismaAdapter(options: {
509
+ prisma: PrismaClient;
510
+ tables?: { sessions?: string; messages?: string };
511
+ fieldMappings?: FieldMappings;
512
+ })
513
+
514
+ sessionRepository: SessionRepository
515
+ messageRepository: MessageRepository
516
+ ```
517
+
518
+ ### RedisAdapter
519
+
520
+ ```typescript
521
+ new RedisAdapter(options: {
522
+ redis: Redis;
523
+ keyPrefix?: string;
524
+ sessionTTL?: number;
525
+ messageTTL?: number;
526
+ })
527
+
528
+ sessionRepository: SessionRepository
529
+ messageRepository: MessageRepository
530
+ ```
531
+
532
+ ### MongoAdapter
533
+
534
+ ```typescript
535
+ new MongoAdapter(options: {
536
+ client: MongoClient;
537
+ databaseName: string;
538
+ collections?: { sessions?: string; messages?: string };
539
+ })
540
+
541
+ sessionRepository: SessionRepository
542
+ messageRepository: MessageRepository
543
+ ```
544
+
545
+ ### PostgreSQLAdapter
546
+
547
+ ```typescript
548
+ new PostgreSQLAdapter(options: {
549
+ client: Client;
550
+ tables?: { sessions?: string; messages?: string };
551
+ })
552
+
553
+ sessionRepository: SessionRepository
554
+ messageRepository: MessageRepository
555
+
556
+ initialize(): Promise<void> // Auto-create tables
557
+ ```
558
+
559
+ ### SQLiteAdapter
560
+
561
+ ```typescript
562
+ new SQLiteAdapter(options: { db: Database })
563
+
564
+ sessionRepository: SessionRepository
565
+ messageRepository: MessageRepository
566
+
567
+ initialize(): Promise<void> // Auto-create tables
568
+ ```
569
+
570
+ ### OpenSearchAdapter
571
+
572
+ ```typescript
573
+ new OpenSearchAdapter(client: Client, options: {
574
+ indices?: { sessions?: string; messages?: string };
575
+ autoCreateIndices?: boolean;
576
+ refresh?: string;
577
+ })
578
+
579
+ sessionRepository: SessionRepository
580
+ messageRepository: MessageRepository
581
+ ```
582
+
583
+ ### MemoryAdapter
584
+
585
+ ```typescript
586
+ new MemoryAdapter()
587
+
588
+ sessionRepository: SessionRepository
589
+ messageRepository: MessageRepository
590
+
591
+ clear(): void
592
+ getSnapshot(): { sessions: SessionData[]; messages: MessageData[] }
593
+ ```
594
+
595
+ ---
596
+
597
+ ## Types & Interfaces
598
+
599
+ ### Core Types
600
+
601
+ ```typescript
602
+ interface AgentOptions<TContext = unknown, TData = unknown> {
603
+ name: string;
604
+ provider: AiProvider;
605
+ description?: string;
606
+ goal?: string;
607
+ personality?: Template<TContext, TData>;
608
+ identity?: Template<TContext, TData>;
609
+ context?: TContext;
610
+ contextProvider?: ContextProvider<TContext>;
611
+
612
+ // NEW: Agent-level data schema and initial data
613
+ schema?: StructuredSchema;
614
+ initialData?: Partial<TData>;
615
+
616
+ hooks?: ContextLifecycleHooks<TContext, TData>;
617
+ debug?: boolean;
618
+ session?: SessionState;
619
+ persistence?: PersistenceConfig;
620
+ terms?: Term<TContext>[];
621
+ guidelines?: Guideline<TContext>[];
622
+ tools?: Tool<TContext, unknown[], unknown, TData>[];
623
+ routes?: RouteOptions<TContext, TData>[];
624
+ knowledgeBase?: Record<string, unknown>;
625
+ }
626
+
627
+ interface RouteOptions<TContext = unknown, TData = unknown> {
628
+ id?: string;
629
+ title: string;
630
+ description?: string;
631
+ identity?: Template<TContext, TData>;
632
+ personality?: Template<TContext, TData>;
633
+ conditions?: Template<TContext, TData>[];
634
+ rules?: Template<TContext, TData>[];
635
+ prohibitions?: Template<TContext, TData>[];
636
+
637
+ // NEW: Required fields for route completion (replaces schema)
638
+ requiredFields?: (keyof TData)[];
639
+ optionalFields?: (keyof TData)[];
640
+
641
+ // REMOVED: schema (now at agent level)
642
+ // schema?: StructuredSchema;
643
+
644
+ initialData?: Partial<TData>;
645
+ steps?: StepOptions<TContext, TData>[];
646
+ initialStep?: Omit<StepOptions<TContext, TData>, "step">;
647
+ endStep?: Omit<StepOptions<TContext, TData>, "step" | "condition" | "skipIf">;
648
+ onComplete?: string | RouteTransitionConfig | RouteCompletionHandler;
649
+ hooks?: RouteLifecycleHooks<TContext, TData>;
650
+ guidelines?: Guideline<TContext>[];
651
+ terms?: Term<TContext>[];
652
+ tools?: Tool<TContext, unknown[], unknown, TData>[];
653
+ knowledgeBase?: Record<string, unknown>;
654
+ }
655
+
656
+ interface StepOptions<TContext = unknown, TData = unknown> {
657
+ id?: string;
658
+ description?: string;
659
+ prompt?: Template<TContext, TData>;
660
+ collect?: string[];
661
+ skipIf?: (data: Partial<TData>) => boolean;
662
+ requires?: string[];
663
+ when?: Template<TContext, TData>;
664
+ prepare?: string | Tool<TContext, unknown[], unknown, TData> | ((
665
+ context: TContext,
666
+ data?: Partial<TData>
667
+ ) => void | Promise<void>);
668
+ finalize?: string | Tool<TContext, unknown[], unknown, TData> | ((
669
+ context: TContext,
670
+ data?: Partial<TData>
671
+ ) => void | Promise<void>);
672
+ tools?: (string | Tool<TContext, unknown[], unknown, TData>)[];
673
+ }
674
+
675
+ // ==============================================================================
676
+ // LIFECYCLE HOOKS: prepare & finalize
677
+ // ==============================================================================
678
+
679
+ /**
680
+ * Step lifecycle hooks allow you to execute custom logic before and after AI responses.
681
+ * Both prepare and finalize can be functions, tool references, or inline tool definitions.
682
+ */
683
+
684
+ // Example: Using functions (traditional approach)
685
+ {
686
+ prepare: (context, data) => {
687
+ console.log("Preparing step execution...");
688
+ },
689
+ finalize: (context, data) => {
690
+ console.log("Finalizing step execution...");
691
+ }
692
+ }
693
+
694
+ // Example: Using existing tools (new approach)
695
+ {
696
+ prepare: "validate_user_data", // Tool ID string
697
+ finalize: myCustomTool, // Tool object
698
+ }
699
+
700
+ // Example: Inline tool definition
701
+ {
702
+ prepare: {
703
+ id: "setup_step_context",
704
+ description: "Prepare context for this step",
705
+ parameters: { type: "object", properties: {} },
706
+ handler: ({ context, data }) => {
707
+ // Custom logic here
708
+ return { data: "Setup complete" };
709
+ }
710
+ }
711
+ }
712
+ ```
713
+
714
+ ### Session Types
715
+
716
+ ```typescript
717
+ interface SessionState<TData = unknown> {
718
+ id?: string;
719
+ data: Partial<TData>;
720
+ dataByRoute: Record<string, Partial<TData>>;
721
+ routeHistory: RouteHistoryEntry[];
722
+ currentRoute?: RouteRef;
723
+ currentStep?: StepRef;
724
+ metadata?: SessionMetadata;
725
+ }
726
+
727
+ interface SessionData {
728
+ id: string;
729
+ userId?: string;
730
+ agentName?: string;
731
+ status: SessionStatus;
732
+ currentRoute?: string;
733
+ currentStep?: string;
734
+ collectedData?: Record<string, unknown>;
735
+ messageCount: number;
736
+ lastMessageAt?: Date;
737
+ completedAt?: Date;
738
+ createdAt: Date;
739
+ updatedAt: Date;
740
+ }
741
+ ```
742
+
743
+ ### Tool Types
744
+
745
+ ```typescript
746
+ interface Tool<TContext, TArgs extends unknown[], TResult, TData> {
747
+ id: string;
748
+ description: string;
749
+ parameters: StructuredSchema;
750
+ execute: ToolHandler<TContext, TArgs, TResult, TData>;
751
+ }
752
+
753
+ type ToolHandler<TContext, TArgs extends unknown[], TResult, TData> = (
754
+ args: TArgs[0],
755
+ context: {
756
+ context: TContext;
757
+ data: Partial<TData>;
758
+ }
759
+ ) => Promise<{
760
+ data: unknown;
761
+ contextUpdate?: Partial<TContext>;
762
+ dataUpdate?: Partial<TData>;
763
+ }>;
764
+ ```
765
+
766
+ ### AI Provider Types
767
+
768
+ ```typescript
769
+ interface AiProvider {
770
+ name: string;
771
+ generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>;
772
+ generateMessageStream(
773
+ input: GenerateMessageInput
774
+ ): AsyncGenerator<GenerateMessageStreamChunk>;
775
+ }
776
+
777
+ interface GenerateMessageInput<TContext = unknown> {
778
+ prompt: string;
779
+ history: Event[];
780
+ context?: TContext;
781
+ tools?: ToolDefinition[];
782
+ parameters?: {
783
+ jsonSchema?: StructuredSchema;
784
+ schemaName?: string;
785
+ maxOutputTokens?: number;
786
+ reasoning?: { effort: "low" | "medium" | "high" };
787
+ };
788
+ signal?: AbortSignal;
789
+ }
790
+ ```
791
+
792
+ ---
793
+
794
+ ## Utilities
795
+
796
+ ### Session Utilities
797
+
798
+ ```typescript
799
+ createSession<TData = unknown>(initialData?: {
800
+ data?: Partial<TData>;
801
+ metadata?: SessionMetadata;
802
+ }): SessionState<TData>
803
+
804
+ enterRoute<TData>(
805
+ session: SessionState<TData>,
806
+ routeId: string,
807
+ routeTitle: string
808
+ ): SessionState<TData>
809
+
810
+ enterStep<TData>(
811
+ session: SessionState<TData>,
812
+ stepId: string,
813
+ stepDescription?: string
814
+ ): SessionState<TData>
815
+
816
+ mergeCollected<TData>(
817
+ session: SessionState<TData>,
818
+ data: Partial<TData>
819
+ ): SessionState<TData>
820
+ ```
821
+
822
+ ### Template Utilities
823
+
824
+ ```typescript
825
+ render<TContext, TData>(
826
+ template: Template<TContext, TData> | undefined,
827
+ params: TemplateContext<TContext, TData>
828
+ ): Promise<string>
829
+
830
+ renderMany<TContext, TData>(
831
+ templates: Template<TContext, TData>[] | undefined,
832
+ params: TemplateContext<TContext, TData>
833
+ ): Promise<string[]>
834
+
835
+ formatKnowledgeBase(
836
+ data: Record<string, unknown>,
837
+ title?: string,
838
+ maxDepth?: number
839
+ ): string
840
+ ```
841
+
842
+ ### ID Generators
843
+
844
+ ```typescript
845
+ generateRouteId(title: string): string
846
+ generateStepId(routeId: string, description?: string): string
847
+ generateToolId(name: string): string
848
+ ```
849
+
850
+ ## Agent-Level Data Collection Example
851
+
852
+ Here's a comprehensive example showing the new agent-level data collection architecture:
853
+
854
+ ```typescript
855
+ import { Agent, OpenAIProvider } from "@falai/agent";
856
+
857
+ // Define comprehensive agent-level data interface
858
+ interface CustomerServiceData {
859
+ // Customer identification
860
+ customerId?: string;
861
+ customerName?: string;
862
+ email?: string;
863
+ phone?: string;
864
+
865
+ // Issue tracking
866
+ issueType?: 'booking' | 'billing' | 'technical' | 'other';
867
+ issueDescription?: string;
868
+ priority?: 'low' | 'medium' | 'high';
869
+
870
+ // Feedback
871
+ rating?: number;
872
+ comments?: string;
873
+ recommendToFriend?: boolean;
874
+ }
875
+
876
+ // Create agent with centralized schema
877
+ const agent = new Agent<{}, CustomerServiceData>({
878
+ name: "Customer Service Agent",
879
+ provider: new OpenAIProvider({ apiKey: process.env.OPENAI_API_KEY, model: "gpt-4" }),
880
+
881
+ // Agent-level schema defines all possible data fields
882
+ schema: {
883
+ type: "object",
884
+ properties: {
885
+ customerId: { type: "string" },
886
+ customerName: { type: "string" },
887
+ email: { type: "string", format: "email" },
888
+ phone: { type: "string" },
889
+ issueType: { type: "string", enum: ["booking", "billing", "technical", "other"] },
890
+ issueDescription: { type: "string" },
891
+ priority: { type: "string", enum: ["low", "medium", "high"] },
892
+ rating: { type: "number", minimum: 1, maximum: 5 },
893
+ comments: { type: "string" },
894
+ recommendToFriend: { type: "boolean" }
895
+ }
896
+ },
897
+
898
+ // Agent-level data validation and enrichment
899
+ hooks: {
900
+ onDataUpdate: async (data, previousData) => {
901
+ // Auto-set priority based on issue type
902
+ if (data.issueType === 'billing' && !data.priority) {
903
+ data.priority = 'high';
904
+ }
905
+
906
+ // Enrich customer data
907
+ if (data.customerName && !data.customerId) {
908
+ data.customerId = await lookupCustomerId(data.customerName);
909
+ }
910
+
911
+ return data;
912
+ }
913
+ }
914
+ });
915
+
916
+ // Routes specify required fields instead of schemas
917
+ const supportRoute = agent.createRoute({
918
+ title: "Customer Support",
919
+ requiredFields: ["customerName", "email", "issueType", "issueDescription"],
920
+ optionalFields: ["phone", "priority"],
921
+
922
+ initialStep: {
923
+ prompt: "I'm here to help with your issue. Can you tell me your name and email?",
924
+ collect: ["customerName", "email"]
925
+ }
926
+ });
927
+
928
+ const feedbackRoute = agent.createRoute({
929
+ title: "Feedback Collection",
930
+ requiredFields: ["customerName", "email", "rating"],
931
+ optionalFields: ["comments", "recommendToFriend"],
932
+
933
+ initialStep: {
934
+ prompt: "I'd love to get your feedback. What's your name and email?",
935
+ collect: ["customerName", "email"]
936
+ }
937
+ });
938
+
939
+ // Cross-route data sharing example
940
+ const response1 = await agent.respond("Hi, I'm John Doe, email john@example.com, I have a billing issue");
941
+ // Agent data: { customerName: "John Doe", email: "john@example.com", issueType: "billing" }
942
+
943
+ const response2 = await agent.respond("Actually, I want to leave feedback instead. I'd rate you 5 stars.");
944
+ // Feedback route completes immediately: already has name, email, and now rating
945
+ // { customerName: "John Doe", email: "john@example.com", rating: 5 }
946
+
947
+ // Check route completion
948
+ console.log(feedbackRoute.isComplete(agent.getCollectedData())); // true
949
+ console.log(feedbackRoute.getCompletionProgress(agent.getCollectedData())); // 1.0
950
+ ```
951
+
952
+ 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/).