@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,510 @@
1
+ /**
2
+ * Response processing utilities shared between respond() and respondStream() methods
3
+ */
4
+ import { EventKind, MessageRole } from "../types/history";
5
+ import { createSession, enterRoute, enterStep, mergeCollected, logger, render, } from "../utils";
6
+ import { ToolExecutor } from "../core/ToolExecutor";
7
+ import { END_ROUTE_ID } from "../constants";
8
+ /**
9
+ * Shared response processing logic between respond() and respondStream() methods
10
+ */
11
+ export class ResponsePipeline {
12
+ constructor(options, routes, tools, routingEngine, updateContext, updateData, updateCollectedData) {
13
+ this.options = options;
14
+ this.routes = routes;
15
+ this.tools = tools;
16
+ this.routingEngine = routingEngine;
17
+ this.updateContext = updateContext;
18
+ this.updateData = updateData;
19
+ this.updateCollectedData = updateCollectedData;
20
+ }
21
+ /**
22
+ * Prepare context and session for response generation
23
+ */
24
+ async prepareResponseContext(params) {
25
+ const { contextOverride, session } = params;
26
+ // Get current context (may fetch from provider)
27
+ let currentContext = await this.getContext();
28
+ // Call beforeRespond hook if configured
29
+ if (this.options.hooks?.beforeRespond && currentContext !== undefined) {
30
+ currentContext = await this.options.hooks.beforeRespond(currentContext);
31
+ // Update stored context with the result from beforeRespond
32
+ this.context = currentContext;
33
+ }
34
+ // Merge context with override
35
+ const effectiveContext = {
36
+ ...currentContext,
37
+ ...contextOverride,
38
+ };
39
+ // Initialize or get session (use current session if available)
40
+ const targetSession = session || this.currentSession || createSession();
41
+ return {
42
+ effectiveContext,
43
+ session: targetSession,
44
+ };
45
+ }
46
+ /**
47
+ * Handle routing and step selection logic
48
+ */
49
+ async handleRoutingAndStepSelection(params) {
50
+ const { session, history, context, signal } = params;
51
+ // PHASE 2: ROUTING + STEP SELECTION - Determine which route and step to use (combined)
52
+ let selectedRoute;
53
+ let responseDirectives;
54
+ let selectedStep;
55
+ let isRouteComplete = false;
56
+ let completedRoutes = [];
57
+ let targetSession = session;
58
+ // Check for pending transition from previous route completion
59
+ if (targetSession.pendingTransition) {
60
+ const targetRoute = this.routes.find((r) => r.id === targetSession.pendingTransition?.targetRouteId);
61
+ if (targetRoute) {
62
+ logger.debug(`[ResponseHandler] Auto-transitioning from pending transition to route: ${targetRoute.title}`);
63
+ // Clear pending transition and enter new route
64
+ targetSession = {
65
+ ...targetSession,
66
+ pendingTransition: undefined,
67
+ };
68
+ targetSession = enterRoute(targetSession, targetRoute.id, targetRoute.title);
69
+ // Merge initial data if available
70
+ if (targetRoute.initialData) {
71
+ targetSession = mergeCollected(targetSession, targetRoute.initialData);
72
+ }
73
+ selectedRoute = targetRoute;
74
+ }
75
+ else {
76
+ logger.warn(`[ResponseHandler] Pending transition target route not found: ${targetSession.pendingTransition.targetRouteId}`);
77
+ // Clear invalid transition
78
+ targetSession = {
79
+ ...targetSession,
80
+ pendingTransition: undefined,
81
+ };
82
+ }
83
+ }
84
+ // If no pending transition or transition handled, do normal routing
85
+ if (this.routes.length > 0 && !selectedRoute) {
86
+ const orchestration = await this.routingEngine.decideRouteAndStep({
87
+ routes: this.routes,
88
+ session: targetSession,
89
+ history,
90
+ agentOptions: this.options,
91
+ provider: this.options.provider,
92
+ context,
93
+ signal,
94
+ });
95
+ selectedRoute = orchestration.selectedRoute;
96
+ selectedStep = orchestration.selectedStep;
97
+ responseDirectives = orchestration.responseDirectives;
98
+ targetSession = orchestration.session;
99
+ isRouteComplete = orchestration.isRouteComplete || false;
100
+ completedRoutes = orchestration.completedRoutes || [];
101
+ // Log if route is complete
102
+ if (isRouteComplete) {
103
+ logger.debug(`[ResponseHandler] Route complete: all required data collected, END_ROUTE reached`);
104
+ }
105
+ }
106
+ return {
107
+ selectedRoute,
108
+ selectedStep,
109
+ responseDirectives,
110
+ session: targetSession,
111
+ isRouteComplete,
112
+ completedRoutes,
113
+ };
114
+ }
115
+ /**
116
+ * Determine next step and update session
117
+ */
118
+ determineNextStep(params) {
119
+ const { selectedRoute, selectedStep, session, isRouteComplete } = params;
120
+ if (!selectedRoute || isRouteComplete) {
121
+ return { nextStep: undefined, session };
122
+ }
123
+ let nextStep;
124
+ // If we have a selected step from the combined routing decision, use it
125
+ if (selectedStep) {
126
+ nextStep = selectedStep;
127
+ }
128
+ else {
129
+ // New route or no step selected - get initial step or first valid step
130
+ const candidates = this.routingEngine.getCandidateSteps(selectedRoute, undefined, session.data || {});
131
+ if (candidates.length > 0) {
132
+ nextStep = candidates[0].step;
133
+ logger.debug(`[ResponseHandler] Using first valid step: ${nextStep.id} for new route`);
134
+ }
135
+ else {
136
+ // Fallback to initial step even if it should be skipped
137
+ nextStep = selectedRoute.initialStep;
138
+ logger.warn(`[ResponseHandler] No valid steps found, using initial step: ${nextStep.id}`);
139
+ }
140
+ }
141
+ // Update session with next step
142
+ const updatedSession = enterStep(session, nextStep.id, nextStep.description);
143
+ logger.debug(`[ResponseHandler] Entered step: ${nextStep.id}`);
144
+ return { nextStep, session: updatedSession };
145
+ }
146
+ /**
147
+ * Execute tool calls and handle results
148
+ */
149
+ async executeToolCalls(params) {
150
+ const { toolCalls, selectedRoute, context, session, history, isStreaming = false, } = params;
151
+ if (toolCalls.length === 0) {
152
+ return { session, toolCalls: undefined };
153
+ }
154
+ logger.debug(`[ResponseHandler] Executing ${toolCalls.length} ${isStreaming ? "streaming " : ""}tool calls`);
155
+ let updatedSession = session;
156
+ const executedToolCalls = [];
157
+ for (const toolCall of toolCalls) {
158
+ const tool = this.findAvailableTool(toolCall.toolName, selectedRoute);
159
+ if (!tool) {
160
+ logger.warn(`[ResponseHandler] Tool not found: ${toolCall.toolName}`);
161
+ continue;
162
+ }
163
+ const toolExecutor = new ToolExecutor();
164
+ const result = await toolExecutor.executeTool({
165
+ tool,
166
+ context,
167
+ updateContext: this.updateContext,
168
+ updateData: this.updateCollectedData || (async () => { }),
169
+ history,
170
+ data: updatedSession.data,
171
+ });
172
+ executedToolCalls.push(toolCall);
173
+ // Update context with tool results
174
+ if (result.contextUpdate) {
175
+ await this.updateContext(result.contextUpdate);
176
+ }
177
+ // Update collected data with tool results
178
+ if (result.dataUpdate) {
179
+ updatedSession = await this.updateData(updatedSession, result.dataUpdate);
180
+ logger.debug(`[ResponseHandler] ${isStreaming ? "Streaming " : ""}Tool updated collected data:`, result.dataUpdate);
181
+ }
182
+ logger.debug(`[ResponseHandler] Executed ${isStreaming ? "streaming " : ""}tool: ${result.toolName} (success: ${result.success})`);
183
+ }
184
+ return {
185
+ session: updatedSession,
186
+ toolCalls: executedToolCalls.length > 0 ? executedToolCalls : undefined,
187
+ };
188
+ }
189
+ /**
190
+ * Execute tool loop for follow-up tool calls
191
+ */
192
+ async executeToolLoop(params) {
193
+ const { initialToolCalls, selectedRoute, nextStep, responsePrompt, history, context, session, responseSchema, isStreaming = false, } = params;
194
+ const MAX_TOOL_LOOPS = 5;
195
+ let toolLoopCount = 0;
196
+ let currentToolCalls = initialToolCalls;
197
+ let hasToolCalls = currentToolCalls && currentToolCalls.length > 0;
198
+ let currentSession = session;
199
+ while (hasToolCalls && toolLoopCount < MAX_TOOL_LOOPS) {
200
+ toolLoopCount++;
201
+ logger.debug(`[ResponseHandler] Starting ${isStreaming ? "streaming " : ""}tool loop ${toolLoopCount}/${MAX_TOOL_LOOPS}`);
202
+ // Add tool execution results to history so AI knows what happened
203
+ const toolResultsEvents = [];
204
+ for (const toolCall of currentToolCalls || []) {
205
+ const tool = this.findAvailableTool(toolCall.toolName, selectedRoute);
206
+ if (tool) {
207
+ toolResultsEvents.push({
208
+ kind: EventKind.TOOL,
209
+ source: MessageRole.AGENT,
210
+ timestamp: new Date().toISOString(),
211
+ data: {
212
+ tool_calls: [
213
+ {
214
+ tool_id: toolCall.toolName,
215
+ arguments: toolCall.arguments,
216
+ result: {
217
+ data: "Tool executed successfully",
218
+ },
219
+ },
220
+ ],
221
+ },
222
+ });
223
+ }
224
+ }
225
+ // Create updated history with tool results
226
+ const updatedHistory = [...history, ...toolResultsEvents];
227
+ // Make follow-up AI call to see if more tools are needed
228
+ const followUpResult = await this.options.provider.generateMessage({
229
+ prompt: responsePrompt,
230
+ history: updatedHistory,
231
+ context,
232
+ tools: this.collectAvailableTools(selectedRoute, nextStep),
233
+ parameters: {
234
+ jsonSchema: responseSchema,
235
+ schemaName: isStreaming ? "tool_followup_streaming" : "tool_followup",
236
+ },
237
+ });
238
+ // Check if follow-up call has more tool calls
239
+ const followUpToolCalls = followUpResult.structured?.toolCalls;
240
+ hasToolCalls = followUpToolCalls && followUpToolCalls.length > 0;
241
+ if (hasToolCalls) {
242
+ logger.debug(`[ResponseHandler] Follow-up call produced ${followUpToolCalls.length} additional tool calls`);
243
+ // Execute the follow-up tool calls
244
+ const toolResult = await this.executeToolCalls({
245
+ toolCalls: followUpToolCalls,
246
+ selectedRoute,
247
+ context,
248
+ session: currentSession,
249
+ history: updatedHistory,
250
+ isStreaming,
251
+ });
252
+ currentSession = toolResult.session;
253
+ currentToolCalls = followUpToolCalls;
254
+ }
255
+ else {
256
+ logger.debug(`[ResponseHandler] ${isStreaming ? "Streaming " : ""}Tool loop completed after ${toolLoopCount} iterations`);
257
+ // Update final toolCalls from follow-up result if no more tools
258
+ currentToolCalls = followUpToolCalls || [];
259
+ break;
260
+ }
261
+ }
262
+ if (toolLoopCount >= MAX_TOOL_LOOPS) {
263
+ logger.warn(`[ResponseHandler] ${isStreaming ? "Streaming " : ""}Tool loop limit reached (${MAX_TOOL_LOOPS}), stopping`);
264
+ }
265
+ return {
266
+ session: currentSession,
267
+ toolCalls: currentToolCalls,
268
+ };
269
+ }
270
+ /**
271
+ * Handle data collection from structured response
272
+ */
273
+ async handleDataCollection(params) {
274
+ const { structured, nextStep, session } = params;
275
+ if (!structured || !nextStep.collect) {
276
+ return { session };
277
+ }
278
+ const collectedData = {};
279
+ // The structured response includes both base fields and collected extraction fields
280
+ const structuredData = structured;
281
+ for (const field of nextStep.collect) {
282
+ const fieldKey = field;
283
+ if (fieldKey in structuredData) {
284
+ collectedData[fieldKey] = structuredData[fieldKey];
285
+ }
286
+ }
287
+ let updatedSession = session;
288
+ if (Object.keys(collectedData).length > 0) {
289
+ // Update agent-level collected data with validation if available
290
+ if (this.updateCollectedData) {
291
+ await this.updateCollectedData(collectedData);
292
+ }
293
+ // Update session with validated data
294
+ updatedSession = await this.updateData(session, collectedData);
295
+ logger.debug(`[ResponseHandler] Collected data:`, collectedData);
296
+ }
297
+ return {
298
+ session: updatedSession,
299
+ collectedData,
300
+ };
301
+ }
302
+ /**
303
+ * Handle context updates from structured response
304
+ */
305
+ async handleContextUpdate(structured) {
306
+ if (structured &&
307
+ typeof structured === "object" &&
308
+ "contextUpdate" in structured) {
309
+ await this.updateContext(structured
310
+ .contextUpdate);
311
+ }
312
+ }
313
+ /**
314
+ * Handle route completion logic
315
+ */
316
+ async handleRouteCompletion(params) {
317
+ const { selectedRoute, session, context, history } = params;
318
+ // Check for onComplete transition
319
+ const transitionConfig = await selectedRoute.evaluateOnComplete({ data: session.data }, context);
320
+ if (transitionConfig) {
321
+ // Find target route by ID or title
322
+ const targetRoute = this.routes.find((r) => r.id === transitionConfig.nextStep ||
323
+ r.title === transitionConfig.nextStep);
324
+ if (targetRoute) {
325
+ const templateContext = {
326
+ context,
327
+ session,
328
+ history,
329
+ };
330
+ const renderedCondition = (await render(transitionConfig.condition, templateContext)) ||
331
+ (typeof transitionConfig.condition === "string"
332
+ ? transitionConfig.condition
333
+ : "");
334
+ // Set pending transition in session
335
+ const updatedSession = {
336
+ ...session,
337
+ pendingTransition: {
338
+ targetRouteId: targetRoute.id,
339
+ condition: renderedCondition,
340
+ reason: "route_complete",
341
+ },
342
+ };
343
+ logger.debug(`[ResponseHandler] Route ${selectedRoute.title} completed with pending transition to: ${targetRoute.title}`);
344
+ return { session: updatedSession, hasTransition: true };
345
+ }
346
+ else {
347
+ logger.warn(`[ResponseHandler] Route ${selectedRoute.title} completed but target route not found: ${transitionConfig.nextStep}`);
348
+ }
349
+ }
350
+ // Set step to END_ROUTE marker
351
+ const updatedSession = enterStep(session, END_ROUTE_ID, "Route completed");
352
+ logger.debug(`[ResponseHandler] Route ${selectedRoute.title} completed. Entered END_ROUTE step.`);
353
+ return { session: updatedSession, hasTransition: false };
354
+ }
355
+ /**
356
+ * Find an available tool by name for the given route
357
+ */
358
+ findAvailableTool(toolName, route) {
359
+ // Check route-level tools first (if route provided)
360
+ if (route) {
361
+ const routeTool = route
362
+ .getTools()
363
+ .find((tool) => tool.id === toolName || tool.name === toolName);
364
+ if (routeTool)
365
+ return routeTool;
366
+ }
367
+ // Fall back to agent-level tools
368
+ return this.tools.find((tool) => tool.id === toolName || tool.name === toolName);
369
+ }
370
+ /**
371
+ * Collect all available tools for the given route and step context
372
+ */
373
+ collectAvailableTools(route, step) {
374
+ const availableTools = new Map();
375
+ // Add agent-level tools
376
+ this.tools.forEach((tool) => {
377
+ availableTools.set(tool.id, tool);
378
+ });
379
+ // Add route-level tools (these take precedence)
380
+ if (route) {
381
+ route.getTools().forEach((tool) => {
382
+ availableTools.set(tool.id, tool);
383
+ });
384
+ }
385
+ // Filter by step-level allowed tools if specified
386
+ if (step?.tools) {
387
+ const allowedToolIds = new Set();
388
+ const stepTools = [];
389
+ for (const toolRef of step.tools) {
390
+ if (typeof toolRef === "string") {
391
+ // Reference to registered tool
392
+ allowedToolIds.add(toolRef);
393
+ }
394
+ else {
395
+ // Inline tool definition
396
+ if (toolRef.id) {
397
+ allowedToolIds.add(toolRef.id);
398
+ stepTools.push(toolRef);
399
+ }
400
+ }
401
+ }
402
+ // If step specifies tools, only include those
403
+ if (allowedToolIds.size > 0) {
404
+ const filteredTools = new Map();
405
+ for (const toolId of allowedToolIds) {
406
+ const tool = availableTools.get(toolId);
407
+ if (tool) {
408
+ filteredTools.set(toolId, tool);
409
+ }
410
+ }
411
+ // Add inline tools
412
+ stepTools.forEach((tool) => {
413
+ if (tool.id) {
414
+ filteredTools.set(tool.id, tool);
415
+ }
416
+ });
417
+ availableTools.clear();
418
+ filteredTools.forEach((tool, id) => availableTools.set(id, tool));
419
+ }
420
+ }
421
+ // Convert to the format expected by AI providers
422
+ return Array.from(availableTools.values()).map((tool) => ({
423
+ id: tool.id,
424
+ description: tool.description,
425
+ parameters: tool.parameters,
426
+ }));
427
+ }
428
+ /**
429
+ * Get current context (fetches from provider if configured)
430
+ */
431
+ async getContext() {
432
+ // If context provider is configured, use it to fetch fresh context
433
+ if (this.options.contextProvider) {
434
+ return await this.options.contextProvider();
435
+ }
436
+ // Otherwise return the stored context
437
+ return this.context;
438
+ }
439
+ // Setters for context and current session (needed for beforeRespond hook)
440
+ setContext(context) {
441
+ this.context = context;
442
+ }
443
+ setCurrentSession(session) {
444
+ this.currentSession = session;
445
+ }
446
+ getStoredContext() {
447
+ return this.context;
448
+ }
449
+ getCurrentSession() {
450
+ return this.currentSession;
451
+ }
452
+ /**
453
+ * Handle cross-route completion evaluation and notifications
454
+ * This method evaluates all routes for completion and can trigger completion handlers
455
+ */
456
+ async handleCrossRouteCompletion(params) {
457
+ const { routes, session, context } = params;
458
+ // Evaluate all routes for completion
459
+ const completedRoutes = [];
460
+ const pendingTransitions = [];
461
+ for (const route of routes) {
462
+ if (route.isComplete(session.data || {})) {
463
+ completedRoutes.push(route);
464
+ // Check for onComplete transitions
465
+ const transitionConfig = await route.evaluateOnComplete({ data: session.data }, context);
466
+ if (transitionConfig) {
467
+ pendingTransitions.push({ route, transitionConfig });
468
+ }
469
+ logger.debug(`[ResponsePipeline] Route completed: ${route.title} ` +
470
+ `(${Math.round(route.getCompletionProgress(session.data || {}) * 100)}%)`);
471
+ }
472
+ }
473
+ // Log completion status for all routes
474
+ if (completedRoutes.length > 0) {
475
+ logger.debug(`[ResponsePipeline] Cross-route completion evaluation: ` +
476
+ `${completedRoutes.length}/${routes.length} routes complete`);
477
+ }
478
+ return {
479
+ session,
480
+ completedRoutes,
481
+ pendingTransitions,
482
+ };
483
+ }
484
+ /**
485
+ * Update data flow to ensure agent-level data consistency
486
+ * This method ensures that data updates are properly validated and propagated
487
+ */
488
+ async updateDataFlow(params) {
489
+ const { session, dataUpdate, routes } = params;
490
+ // Update session data
491
+ const updatedSession = await this.updateData(session, dataUpdate);
492
+ // Update agent-level data if handler is available
493
+ if (this.updateCollectedData) {
494
+ await this.updateCollectedData(dataUpdate);
495
+ }
496
+ // Evaluate route completions after data update
497
+ const completionResults = await this.handleCrossRouteCompletion({
498
+ routes,
499
+ session: updatedSession,
500
+ context: this.context,
501
+ history: [],
502
+ });
503
+ // Log any newly completed routes
504
+ if (completionResults.completedRoutes.length > 0) {
505
+ logger.debug(`[ResponsePipeline] Data update resulted in ${completionResults.completedRoutes.length} completed routes`);
506
+ }
507
+ return completionResults.session;
508
+ }
509
+ }
510
+ //# sourceMappingURL=ResponsePipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponsePipeline.js","sourceRoot":"","sources":["../../../src/core/ResponsePipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Route (Journey) DSL implementation
3
+ */
4
+ import type { RouteOptions, RouteRef, StepOptions, RouteTransitionConfig, RouteCompletionHandler, RouteLifecycleHooks, StructuredSchema, Guideline, Term, Tool, Template } from "../types";
5
+ import { Step } from "./Step";
6
+ /**
7
+ * Represents a conversational route/journey
8
+ */
9
+ export declare class Route<TContext = unknown, TData = unknown> {
10
+ readonly id: string;
11
+ readonly title: string;
12
+ readonly description?: string;
13
+ readonly identity?: Template<TContext, TData>;
14
+ readonly personality?: Template<TContext, TData>;
15
+ readonly conditions: Template<TContext, TData>[];
16
+ readonly rules: Template<TContext, TData>[];
17
+ readonly prohibitions: Template<TContext, TData>[];
18
+ readonly initialStep: Step<TContext, TData>;
19
+ readonly endStepSpec: Omit<StepOptions<TContext, TData>, "step" | "condition" | "skipIf">;
20
+ readonly responseOutputSchema?: StructuredSchema;
21
+ readonly initialData?: Partial<TData>;
22
+ readonly requiredFields?: (keyof TData)[];
23
+ readonly optionalFields?: (keyof TData)[];
24
+ readonly onComplete?: string | RouteTransitionConfig<TContext, TData> | RouteCompletionHandler<TContext, TData>;
25
+ readonly hooks?: RouteLifecycleHooks<TContext, TData>;
26
+ routingExtrasSchema?: StructuredSchema;
27
+ guidelines: Guideline<TContext>[];
28
+ terms: Term<TContext>[];
29
+ tools: Tool<TContext, TData, unknown[], unknown>[];
30
+ knowledgeBase: Record<string, unknown>;
31
+ constructor(options: RouteOptions<TContext, TData>);
32
+ /**
33
+ * Build a sequential step machine from an array of steps
34
+ * @private
35
+ */
36
+ private buildSequentialSteps;
37
+ /**
38
+ * Create a guideline specific to this route
39
+ */
40
+ createGuideline(guideline: Guideline<TContext>): this;
41
+ /**
42
+ * Create a term for the route's domain glossary
43
+ */
44
+ createTerm(term: Term<TContext>): this;
45
+ /**
46
+ * Register a tool for this route
47
+ */
48
+ createTool(tool: Tool<TContext, TData, unknown[], unknown>): this;
49
+ /**
50
+ * Register multiple tools for this route
51
+ */
52
+ registerTools(tools: Tool<TContext, TData, unknown[], unknown>[]): this;
53
+ /**
54
+ * Get all guidelines for this route
55
+ */
56
+ getGuidelines(): Guideline<TContext>[];
57
+ /**
58
+ * Get all terms for this route
59
+ */
60
+ getTerms(): Term<TContext>[];
61
+ /**
62
+ * Get all tools for this route
63
+ */
64
+ getTools(): Tool<TContext, TData, unknown[], unknown>[];
65
+ /**
66
+ * Get the route's knowledge base
67
+ */
68
+ getKnowledgeBase(): Record<string, unknown>;
69
+ /**
70
+ * Get rules for this route
71
+ */
72
+ getRules(): Template<TContext, TData>[];
73
+ /**
74
+ * Get prohibitions for this route
75
+ */
76
+ getProhibitions(): Template<TContext, TData>[];
77
+ /**
78
+ * Get optional extras schema requested during routing
79
+ */
80
+ getRoutingExtrasSchema(): StructuredSchema | undefined;
81
+ /**
82
+ * Get optional structured response schema for this route's message
83
+ */
84
+ getResponseOutputSchema(): StructuredSchema | undefined;
85
+ getSteps(): Step<TContext, TData>[];
86
+ /**
87
+ * Get route reference
88
+ */
89
+ getRef(): RouteRef;
90
+ /**
91
+ * Get all steps in this route (via traversal from initial step)
92
+ */
93
+ getAllSteps(): Step<TContext, TData>[];
94
+ /**
95
+ * Get a specific step by ID
96
+ * @param stepId - The step ID to find
97
+ * @returns The step if found, undefined otherwise
98
+ */
99
+ getStep(stepId: string): Step<TContext, TData> | undefined;
100
+ /**
101
+ * Get a description of the route structure for debugging
102
+ */
103
+ describe(): string;
104
+ /**
105
+ * Handle data updates for this route, calling the onDataUpdate hook if configured
106
+ * @param data - New collected data
107
+ * @param previousCollected - Previously collected data
108
+ * @returns Modified data after hook processing, or original data if no hook
109
+ */
110
+ handleDataUpdate(data: Partial<TData>, previousCollected: Partial<TData>): Promise<Partial<TData>>;
111
+ /**
112
+ * Handle context updates for this route, calling the onContextUpdate hook if configured
113
+ * @param newContext - New context
114
+ * @param previousContext - Previous context
115
+ */
116
+ handleContextUpdate(newContext: TContext, previousContext: TContext): Promise<void>;
117
+ /**
118
+ * Check if this route is complete based on the provided data
119
+ * @param data - Currently collected agent-level data
120
+ * @returns true if all required fields are present, false otherwise
121
+ */
122
+ isComplete(data: Partial<TData>): boolean;
123
+ /**
124
+ * Get the list of missing required fields for this route
125
+ * @param data - Currently collected agent-level data
126
+ * @returns Array of missing required field keys
127
+ */
128
+ getMissingRequiredFields(data: Partial<TData>): (keyof TData)[];
129
+ /**
130
+ * Get the completion progress for this route as a percentage
131
+ * @param data - Currently collected agent-level data
132
+ * @returns Completion progress as a number between 0 and 1
133
+ */
134
+ getCompletionProgress(data: Partial<TData>): number;
135
+ /**
136
+ * Evaluate the onComplete handler and return transition config
137
+ * @param session - Current session step
138
+ * @param context - Agent context
139
+ * @returns Transition config or undefined if no transition
140
+ */
141
+ evaluateOnComplete(session: {
142
+ data?: Partial<TData>;
143
+ }, context?: TContext): Promise<RouteTransitionConfig<TContext, TData> | undefined>;
144
+ }
145
+ //# sourceMappingURL=Route.d.ts.map