@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
@@ -5,13 +5,10 @@
5
5
 
6
6
  import {
7
7
  Agent,
8
- defineTool,
8
+ type Tool,
9
9
  GeminiProvider,
10
10
  END_ROUTE,
11
- EventSource,
12
- createMessageEvent,
13
- createSession,
14
- } from "../src/index";
11
+ } from "../../src";
15
12
 
16
13
  // ============================================================================
17
14
  // DATABASE SIMULATION
@@ -35,14 +32,11 @@ const database = new Map<string, SessionData>();
35
32
 
36
33
  const db = {
37
34
  sessions: {
38
- async findById(sessionId: string): Promise<SessionData | undefined> {
35
+ findById(sessionId: string): SessionData | undefined {
39
36
  return database.get(sessionId);
40
37
  },
41
38
 
42
- async update(
43
- sessionId: string,
44
- updates: Partial<SessionData>
45
- ): Promise<void> {
39
+ update(sessionId: string, updates: Partial<SessionData>): void {
46
40
  const existing = database.get(sessionId);
47
41
  if (existing) {
48
42
  database.set(sessionId, {
@@ -53,7 +47,7 @@ const db = {
53
47
  }
54
48
  },
55
49
 
56
- async create(sessionData: SessionData): Promise<void> {
50
+ create(sessionData: SessionData): void {
57
51
  database.set(sessionData.sessionId, sessionData);
58
52
  },
59
53
  },
@@ -90,9 +84,9 @@ interface OnboardingContext {
90
84
  * - Load fresh context from database before each response
91
85
  * - Persist context updates automatically after changes
92
86
  */
93
- async function createPersistentOnboardingAgent(sessionId: string) {
87
+ function createPersistentOnboardingAgent(sessionId: string) {
94
88
  // Load session from database
95
- const session = await db.sessions.findById(sessionId);
89
+ const session = db.sessions.findById(sessionId);
96
90
 
97
91
  if (!session) {
98
92
  throw new Error(`Session ${sessionId} not found`);
@@ -101,7 +95,7 @@ async function createPersistentOnboardingAgent(sessionId: string) {
101
95
  // Define lifecycle hooks for automatic persistence
102
96
  const hooks = {
103
97
  // Called after data extraction - validate and enrich collected data
104
- onDataUpdate: async (data: Partial<OnboardingData>) => {
98
+ onDataUpdate: (data: Partial<OnboardingData>) => {
105
99
  console.log("🔄 Processing collected data...");
106
100
 
107
101
  // Update completed steps based on what's been data
@@ -112,7 +106,7 @@ async function createPersistentOnboardingAgent(sessionId: string) {
112
106
  if (data.contactEmail) completedSteps.push("contact");
113
107
 
114
108
  // Persist to database
115
- await db.sessions.update(sessionId, {
109
+ db.sessions.update(sessionId, {
116
110
  collectedData: data,
117
111
  completedSteps,
118
112
  });
@@ -126,15 +120,94 @@ async function createPersistentOnboardingAgent(sessionId: string) {
126
120
  model: "models/gemini-2.5-flash",
127
121
  });
128
122
 
129
- const agent = new Agent<OnboardingContext>({
123
+ // Define the onboarding schema
124
+ const onboardingSchema = {
125
+ type: "object",
126
+ properties: {
127
+ businessName: {
128
+ type: "string",
129
+ description: "Name of the business",
130
+ },
131
+ businessDescription: {
132
+ type: "string",
133
+ description: "Brief description of what the business does",
134
+ },
135
+ industry: {
136
+ type: "string",
137
+ description: "Industry the business operates in",
138
+ },
139
+ contactEmail: {
140
+ type: "string",
141
+ description: "Contact email for the business",
142
+ },
143
+ },
144
+ required: ["businessName", "businessDescription"],
145
+ };
146
+
147
+ const agent = new Agent<OnboardingContext, OnboardingData>({
130
148
  name: "OnboardingBot",
131
149
  description: "A friendly assistant that helps businesses get started",
132
150
  goal: "Collect business information efficiently while being conversational",
133
151
  provider: provider,
152
+ // NEW: Agent-level schema
153
+ schema: onboardingSchema,
154
+
155
+ // Knowledge base with onboarding best practices
156
+ knowledgeBase: {
157
+ onboardingFlow: {
158
+ stages: [
159
+ "Business identification",
160
+ "Industry classification",
161
+ "Contact information collection",
162
+ "Verification and confirmation",
163
+ ],
164
+ averageCompletion: "3-5 minutes",
165
+ dropOffPoints: ["Contact email collection", "Industry classification"],
166
+ },
167
+ businessTypes: {
168
+ retail: {
169
+ commonIndustries: [
170
+ "Fashion",
171
+ "Electronics",
172
+ "Home goods",
173
+ "Food service",
174
+ ],
175
+ keyQuestions: ["Store location", "Target customers", "Peak hours"],
176
+ },
177
+ professional: {
178
+ commonIndustries: ["Consulting", "Legal", "Accounting", "Healthcare"],
179
+ keyQuestions: ["Service areas", "Certifications", "Client types"],
180
+ },
181
+ manufacturing: {
182
+ commonIndustries: [
183
+ "Electronics",
184
+ "Automotive",
185
+ "Food processing",
186
+ "Textiles",
187
+ ],
188
+ keyQuestions: [
189
+ "Production capacity",
190
+ "Supply chain",
191
+ "Quality standards",
192
+ ],
193
+ },
194
+ },
195
+ dataValidation: {
196
+ email: "Must contain @ symbol and valid domain",
197
+ businessName: "2-100 characters, no special characters",
198
+ description: "10-500 characters, describes what the business does",
199
+ },
200
+ completionCriteria: [
201
+ "Business name provided",
202
+ "Business description provided",
203
+ "Industry category selected",
204
+ "Valid contact email provided",
205
+ ],
206
+ },
134
207
  // Context is loaded fresh from database on each respond() call
135
- contextProvider: async () => {
208
+ contextProvider: () => {
136
209
  console.log("🔄 Loading fresh context from database...");
137
- const freshSession = await db.sessions.findById(sessionId);
210
+ const freshSession = db.sessions.findById(sessionId);
138
211
 
139
212
  if (!freshSession) {
140
213
  throw new Error(`Session ${sessionId} not found`);
@@ -155,13 +228,25 @@ async function createPersistentOnboardingAgent(sessionId: string) {
155
228
  // ============================================================================
156
229
 
157
230
  // OPTION 1: Using contextUpdate in return value
158
- const saveBusinessInfo = defineTool<
231
+ const saveBusinessInfo: Tool<
159
232
  OnboardingContext,
160
- [name: string, description: string],
161
- boolean
162
- >(
163
- "save_business_info",
164
- async (toolContext, name, description) => {
233
+ OnboardingData,
234
+ unknown[],
235
+ unknown
236
+ > = {
237
+ id: "save_business_info",
238
+ name: "Business Info Saver",
239
+ description: "Save business name and description",
240
+ parameters: {
241
+ type: "object",
242
+ properties: {
243
+ name: { type: "string", description: "Business name" },
244
+ description: { type: "string", description: "Business description" },
245
+ },
246
+ required: ["name", "description"],
247
+ },
248
+ handler: (toolContext, ...args) => {
249
+ const [name, description] = args as [string, string];
165
250
  console.log(`📝 Saving business info: ${name}`);
166
251
 
167
252
  return {
@@ -180,19 +265,27 @@ async function createPersistentOnboardingAgent(sessionId: string) {
180
265
  },
181
266
  };
182
267
  },
183
- {
184
- description: "Save business name and description",
185
- }
186
- );
268
+ };
187
269
 
188
270
  // OPTION 2: Using updateContext method directly
189
- const saveIndustry = defineTool<
271
+ const saveIndustry: Tool<
190
272
  OnboardingContext,
191
- [industry: string],
192
- boolean
193
- >(
194
- "save_industry",
195
- async (toolContext, industry) => {
273
+ OnboardingData,
274
+ unknown[],
275
+ unknown
276
+ > = {
277
+ id: "save_industry",
278
+ name: "Industry Classifier",
279
+ description: "Save business industry",
280
+ parameters: {
281
+ type: "object",
282
+ properties: {
283
+ industry: { type: "string", description: "Business industry" },
284
+ },
285
+ required: ["industry"],
286
+ },
287
+ handler: async (toolContext, ...args) => {
288
+ const [industry] = args as [string];
196
289
  console.log(`🏭 Saving industry: ${industry}`);
197
290
 
198
291
  // Direct context update (triggers onContextUpdate hook)
@@ -206,18 +299,26 @@ async function createPersistentOnboardingAgent(sessionId: string) {
206
299
 
207
300
  return { data: true };
208
301
  },
209
- {
210
- description: "Save business industry",
211
- }
212
- );
302
+ };
213
303
 
214
- const saveContactEmail = defineTool<
304
+ const saveContactEmail: Tool<
215
305
  OnboardingContext,
216
- [email: string],
217
- boolean
218
- >(
219
- "save_contact_email",
220
- async (toolContext, email) => {
306
+ OnboardingData,
307
+ unknown[],
308
+ unknown
309
+ > = {
310
+ id: "save_contact_email",
311
+ name: "Contact Email Saver",
312
+ description: "Save contact email",
313
+ parameters: {
314
+ type: "object",
315
+ properties: {
316
+ email: { type: "string", description: "Contact email address" },
317
+ },
318
+ required: ["email"],
319
+ },
320
+ handler: async (toolContext, ...args) => {
321
+ const [email] = args as [string];
221
322
  console.log(`📧 Saving contact email: ${email}`);
222
323
 
223
324
  await toolContext.updateContext({
@@ -230,85 +331,64 @@ async function createPersistentOnboardingAgent(sessionId: string) {
230
331
 
231
332
  return { data: true };
232
333
  },
233
- {
234
- description: "Save contact email",
235
- }
236
- );
334
+ };
237
335
 
238
336
  // ============================================================================
239
337
  // ONBOARDING ROUTE WITH DATA EXTRACTION
240
338
  // ============================================================================
241
339
 
242
- const onboardingRoute = agent.createRoute<OnboardingData>({
340
+ const onboardingRoute = agent.createRoute({
243
341
  title: "Business Onboarding",
244
342
  description: "Guide user through business information collection",
245
343
  conditions: ["User is onboarding their business"],
246
- schema: {
247
- type: "object",
248
- properties: {
249
- businessName: {
250
- type: "string",
251
- description: "Name of the business",
252
- },
253
- businessDescription: {
254
- type: "string",
255
- description: "Brief description of what the business does",
256
- },
257
- industry: {
258
- type: "string",
259
- description: "Industry the business operates in",
260
- },
261
- contactEmail: {
262
- type: "string",
263
- description: "Contact email for the business",
264
- },
265
- },
266
- required: ["businessName", "businessDescription"],
267
- },
344
+ // NEW: Required fields for route completion
345
+ requiredFields: ["businessName", "businessDescription"],
346
+ // NEW: Optional fields that enhance the experience
347
+ optionalFields: ["industry", "contactEmail"],
268
348
  endStep: {
269
- instructions:
349
+ prompt:
270
350
  "Summarize all collected information warmly and confirm onboarding is complete",
271
351
  },
272
352
  });
273
353
 
274
354
  // Step 1: Collect business name and description
275
355
  const collectBusinessInfo = onboardingRoute.initialStep.nextStep({
276
- instructions: "Ask for business name and a brief description",
356
+ prompt: "Ask for business name and a brief description",
277
357
  collect: ["businessName", "businessDescription"],
278
358
  skipIf: (data) => !!data.businessName && !!data.businessDescription,
279
- condition: "Need to collect basic business information first",
359
+ when: "Need to collect basic business information first",
280
360
  });
281
361
 
282
362
  // Step 2: Save business info (tool execution)
283
363
  const saveBusiness = collectBusinessInfo.nextStep({
284
- tool: saveBusinessInfo,
364
+ tools: [saveBusinessInfo],
285
365
  requires: ["businessName", "businessDescription"],
286
- condition: "Business name and description provided, save to database",
366
+ when: "Business name and description provided, save to database",
287
367
  });
288
368
 
289
369
  // Step 3: Collect industry
290
370
  const collectIndustry = saveBusiness.nextStep({
291
- instructions: "Ask what industry the business operates in",
371
+ prompt: "Ask what industry the business operates in",
292
372
  collect: ["industry"],
293
373
  skipIf: (data) => !!data.industry,
294
374
  });
295
375
 
296
376
  // Step 4: Save industry (tool execution)
297
377
  const saveIndustryStep = collectIndustry.nextStep({
298
- tool: saveIndustry,
378
+ tools: [saveIndustry],
299
379
  requires: ["industry"],
300
380
  });
301
381
 
302
382
  // Step 5: Collect contact email
303
383
  const collectContact = saveIndustryStep.nextStep({
304
- instructions: "Ask for their contact email",
384
+ prompt: "Ask for their contact email",
305
385
  collect: ["contactEmail"],
306
386
  skipIf: (data) => !!data.contactEmail,
307
387
  });
308
388
 
309
389
  // Step 6: Save contact (tool execution)
310
390
  const saveContact = collectContact.nextStep({
311
- tool: saveContactEmail,
391
+ tools: [saveContactEmail],
312
392
  requires: ["contactEmail"],
313
393
  });
314
394
 
@@ -350,20 +430,46 @@ async function createPersistentOnboardingAgent(sessionId: string) {
350
430
  * - No need for beforeRespond hook
351
431
  * - Still use onContextUpdate for persistence
352
432
  */
353
- async function createOnboardingAgentWithProvider(sessionId: string) {
433
+ function createOnboardingAgentWithProvider(sessionId: string) {
354
434
  const provider = new GeminiProvider({
355
435
  apiKey: process.env.GEMINI_API_KEY || "test-key",
356
436
  model: "models/gemini-2.5-flash",
357
437
  });
358
438
 
359
- const agent = new Agent<OnboardingContext>({
439
+ // Define the onboarding schema
440
+ const onboardingSchema = {
441
+ type: "object",
442
+ properties: {
443
+ businessName: {
444
+ type: "string",
445
+ description: "Name of the business",
446
+ },
447
+ businessDescription: {
448
+ type: "string",
449
+ description: "Brief description of what the business does",
450
+ },
451
+ industry: {
452
+ type: "string",
453
+ description: "Industry the business operates in",
454
+ },
455
+ contactEmail: {
456
+ type: "string",
457
+ description: "Contact email for the business",
458
+ },
459
+ },
460
+ required: ["businessName", "businessDescription"],
461
+ };
462
+
463
+ const agent = new Agent<OnboardingContext, OnboardingData>({
360
464
  name: "OnboardingBot",
361
465
  description: "A friendly assistant that helps businesses get started",
362
466
  provider: provider,
467
+ // NEW: Agent-level schema
468
+ schema: onboardingSchema,
363
469
 
364
470
  // Context is always fetched fresh from database
365
- contextProvider: async () => {
366
- const session = await db.sessions.findById(sessionId);
471
+ contextProvider: () => {
472
+ const session = db.sessions.findById(sessionId);
367
473
  if (!session) {
368
474
  throw new Error(`Session ${sessionId} not found`);
369
475
  }
@@ -378,8 +484,8 @@ async function createOnboardingAgentWithProvider(sessionId: string) {
378
484
 
379
485
  // Still persist updates
380
486
  hooks: {
381
- onContextUpdate: async (newContext) => {
382
- await db.sessions.update(sessionId, {
487
+ onContextUpdate: (newContext) => {
488
+ db.sessions.update(sessionId, {
383
489
  collectedData: newContext.collectedData,
384
490
  completedSteps: newContext.completedSteps,
385
491
  });
@@ -401,7 +507,7 @@ async function main() {
401
507
  const userId = "user_456";
402
508
 
403
509
  // Initialize session in database
404
- await db.sessions.create({
510
+ db.sessions.create({
405
511
  sessionId,
406
512
  userId,
407
513
  collectedData: {},
@@ -410,27 +516,24 @@ async function main() {
410
516
  });
411
517
 
412
518
  // Create agent with fresh context loading
413
- const agent = await createPersistentOnboardingAgent(sessionId);
519
+ const agent = createPersistentOnboardingAgent(sessionId);
414
520
 
415
521
  console.log("=== MULTI-TURN CONVERSATION SIMULATION ===\n");
416
522
 
417
- // Initialize session step for multi-turn conversation
418
- let session = createSession<OnboardingData>();
523
+ // Session is automatically managed by the agent
524
+ console.log("✨ Session ready:", agent.session.id);
419
525
 
420
526
  // Turn 1: Start onboarding
421
527
  console.log("📱 Turn 1: User starts onboarding");
528
+
529
+ await agent.session.addMessage("user", "Hi, I want to onboard my business", "Alice");
530
+
422
531
  const response1 = await agent.respond({
423
- history: [
424
- createMessageEvent(
425
- EventSource.CUSTOMER,
426
- "Alice",
427
- "Hi, I want to onboard my business"
428
- ),
429
- ],
430
- session,
532
+ history: agent.session.getHistory(),
431
533
  });
534
+
432
535
  console.log("🤖 Bot:", response1.message);
433
- console.log("📊 Data after turn 1:", response1.session?.data);
536
+ console.log("📊 Data after turn 1:", agent.session.getData());
434
537
  console.log("📊 Route:", response1.session?.currentRoute?.title);
435
538
 
436
539
  // Check route completion after turn 1
@@ -443,25 +546,28 @@ async function main() {
443
546
 
444
547
  console.log();
445
548
 
446
- // Update session with progress
447
- session = response1.session!;
549
+ await agent.session.addMessage("assistant", response1.message);
448
550
 
449
551
  // Turn 2: User provides business info
450
552
  console.log("📱 Turn 2: User provides business info");
451
553
  const history2 = [
452
- createMessageEvent(
453
- EventSource.CUSTOMER,
454
- "Alice",
455
- "Hi, I want to onboard my business"
456
- ),
457
- createMessageEvent(EventSource.AI_AGENT, "Agent", response1.message),
458
- createMessageEvent(
459
- EventSource.CUSTOMER,
460
- "Alice",
461
- "My business is called 'TechFlow' and we build AI-powered workflow automation tools"
462
- ),
554
+ {
555
+ role: "user" as const,
556
+ content: "Hi, I want to onboard my business",
557
+ name: "Alice",
558
+ },
559
+ {
560
+ role: "assistant" as const,
561
+ content: response1.message,
562
+ },
563
+ {
564
+ role: "user" as const,
565
+ content:
566
+ "My business is called 'TechFlow' and we build AI-powered workflow automation tools",
567
+ name: "Alice",
568
+ },
463
569
  ];
464
- const response2 = await agent.respond({ history: history2, session });
570
+ const response2 = await agent.respond({ history: history2 });
465
571
  console.log("🤖 Bot:", response2.message);
466
572
  console.log("📊 Data after turn 2:", response2.session?.data);
467
573
 
@@ -475,21 +581,22 @@ async function main() {
475
581
 
476
582
  console.log();
477
583
 
478
- // Update session again
479
- session = response2.session!;
480
584
 
481
585
  // Turn 3: User provides industry
482
586
  console.log("📱 Turn 3: User provides industry");
483
587
  const history3 = [
484
588
  ...history2,
485
- createMessageEvent(EventSource.AI_AGENT, "Agent", response2.message),
486
- createMessageEvent(
487
- EventSource.CUSTOMER,
488
- "Alice",
489
- "We're in the SaaS industry"
490
- ),
589
+ {
590
+ role: "assistant" as const,
591
+ content: response2.message,
592
+ },
593
+ {
594
+ role: "user" as const,
595
+ content: "We're in the SaaS industry",
596
+ name: "Alice",
597
+ },
491
598
  ];
492
- const response3 = await agent.respond({ history: history3, session });
599
+ const response3 = await agent.respond({ history: history3 });
493
600
  console.log("🤖 Bot:", response3.message);
494
601
  console.log("📊 Data after turn 3:", response3.session?.data);
495
602
 
@@ -503,21 +610,21 @@ async function main() {
503
610
 
504
611
  console.log();
505
612
 
506
- // Update session again
507
- session = response3.session!;
508
-
509
613
  // Turn 4: User provides contact email, completing the flow
510
614
  console.log("📱 Turn 4: User provides contact email");
511
615
  const history4 = [
512
616
  ...history3,
513
- createMessageEvent(EventSource.AI_AGENT, "Agent", response3.message),
514
- createMessageEvent(
515
- EventSource.CUSTOMER,
516
- "Alice",
517
- "Our contact email is contact@techflow.ai"
518
- ),
617
+ {
618
+ role: "assistant" as const,
619
+ content: response3.message,
620
+ },
621
+ {
622
+ role: "user" as const,
623
+ content: "Our contact email is contact@techflow.ai",
624
+ name: "Alice",
625
+ },
519
626
  ];
520
- const response4 = await agent.respond({ history: history4, session });
627
+ const response4 = await agent.respond({ history: history4 });
521
628
  console.log("🤖 Bot:", response4.message);
522
629
  console.log("📊 Data after turn 4:", response4.session?.data);
523
630
 
@@ -525,13 +632,13 @@ async function main() {
525
632
  if (response4.isRouteComplete) {
526
633
  console.log("\n✅ Onboarding complete!");
527
634
  await finalizeOnboarding(
528
- agent.getData(response4.session?.id) as unknown as OnboardingData
635
+ agent.getData() as unknown as OnboardingData
529
636
  );
530
637
  }
531
638
 
532
639
  // Verify persistence
533
640
  console.log("=== PERSISTENCE VERIFICATION ===");
534
- const finalSession = await db.sessions.findById(sessionId);
641
+ const finalSession = db.sessions.findById(sessionId);
535
642
  console.log(
536
643
  "💾 Final persisted session:",
537
644
  JSON.stringify(finalSession, null, 2)
@@ -543,9 +650,9 @@ async function main() {
543
650
  // ============================================================================
544
651
 
545
652
  /*
546
- * ✅ PATTERN 1: Session Step Management (Core v2 pattern)
547
- * - createSession<T>(): Initialize typed session step
548
- * - Pass session to respond() calls
653
+ * ✅ PATTERN 1: Session Management (New SessionManager pattern)
654
+ * - agent.session: Automatic session management
655
+ * - agent.session.addMessage(): Add messages to history
549
656
  * - Session tracks collected data across turns
550
657
  * - Always-on routing respects intent changes
551
658
  *