@falai/agent 0.8.1 → 0.9.0-alpha-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (652) hide show
  1. package/README.md +306 -133
  2. package/dist/{adapters → cjs/src/adapters}/MemoryAdapter.d.ts +4 -4
  3. package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +1 -0
  4. package/dist/cjs/{adapters → src/adapters}/MemoryAdapter.js +41 -21
  5. package/dist/cjs/src/adapters/MemoryAdapter.js.map +1 -0
  6. package/dist/{adapters → cjs/src/adapters}/MongoAdapter.d.ts +3 -3
  7. package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +1 -0
  8. package/dist/cjs/{adapters → src/adapters}/MongoAdapter.js +2 -1
  9. package/dist/cjs/src/adapters/MongoAdapter.js.map +1 -0
  10. package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
  11. package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
  12. package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
  13. package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +1 -0
  14. package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
  15. package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  16. package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
  17. package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +1 -0
  18. package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
  19. package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +1 -0
  20. package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.js +35 -5
  21. package/dist/cjs/src/adapters/PrismaAdapter.js.map +1 -0
  22. package/dist/cjs/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
  23. package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +1 -0
  24. package/dist/cjs/{adapters → src/adapters}/RedisAdapter.js +3 -2
  25. package/dist/cjs/src/adapters/RedisAdapter.js.map +1 -0
  26. package/dist/{adapters → cjs/src/adapters}/SQLiteAdapter.d.ts +3 -3
  27. package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +1 -0
  28. package/dist/cjs/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
  29. package/dist/cjs/src/adapters/SQLiteAdapter.js.map +1 -0
  30. package/dist/cjs/src/adapters/index.d.ts.map +1 -0
  31. package/dist/cjs/src/adapters/index.js.map +1 -0
  32. package/dist/cjs/src/constants/index.d.ts.map +1 -0
  33. package/dist/cjs/src/constants/index.js.map +1 -0
  34. package/dist/{core → cjs/src/core}/Agent.d.ts +65 -67
  35. package/dist/cjs/src/core/Agent.d.ts.map +1 -0
  36. package/dist/cjs/src/core/Agent.js +1433 -0
  37. package/dist/cjs/src/core/Agent.js.map +1 -0
  38. package/dist/cjs/src/core/Events.d.ts +26 -0
  39. package/dist/cjs/src/core/Events.d.ts.map +1 -0
  40. package/dist/cjs/src/core/Events.js +144 -0
  41. package/dist/cjs/src/core/Events.js.map +1 -0
  42. package/dist/{core → cjs/src/core}/PersistenceManager.d.ts +21 -19
  43. package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
  44. package/dist/cjs/{core → src/core}/PersistenceManager.js +50 -20
  45. package/dist/cjs/src/core/PersistenceManager.js.map +1 -0
  46. package/dist/cjs/src/core/PromptComposer.d.ts +27 -0
  47. package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -0
  48. package/dist/cjs/src/core/PromptComposer.js +157 -0
  49. package/dist/cjs/src/core/PromptComposer.js.map +1 -0
  50. package/dist/cjs/src/core/ResponseEngine.d.ts +31 -0
  51. package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -0
  52. package/dist/cjs/src/core/ResponseEngine.js +84 -0
  53. package/dist/cjs/src/core/ResponseEngine.js.map +1 -0
  54. package/dist/cjs/src/core/ResponsePipeline.d.ts +143 -0
  55. package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
  56. package/dist/cjs/src/core/ResponsePipeline.js +446 -0
  57. package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
  58. package/dist/cjs/src/core/Route.d.ts +126 -0
  59. package/dist/cjs/src/core/Route.d.ts.map +1 -0
  60. package/dist/cjs/{core → src/core}/Route.js +116 -20
  61. package/dist/cjs/src/core/Route.js.map +1 -0
  62. package/dist/{core → cjs/src/core}/RoutingEngine.d.ts +33 -38
  63. package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
  64. package/dist/cjs/{core → src/core}/RoutingEngine.js +102 -108
  65. package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
  66. package/dist/cjs/src/core/SessionManager.d.ts +76 -0
  67. package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
  68. package/dist/cjs/src/core/SessionManager.js +197 -0
  69. package/dist/cjs/src/core/SessionManager.js.map +1 -0
  70. package/dist/cjs/src/core/Step.d.ts +96 -0
  71. package/dist/cjs/src/core/Step.d.ts.map +1 -0
  72. package/dist/cjs/src/core/Step.js +206 -0
  73. package/dist/cjs/src/core/Step.js.map +1 -0
  74. package/dist/cjs/src/core/ToolExecutor.d.ts +43 -0
  75. package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -0
  76. package/dist/cjs/{core → src/core}/ToolExecutor.js +19 -18
  77. package/dist/cjs/src/core/ToolExecutor.js.map +1 -0
  78. package/dist/{index.d.ts → cjs/src/index.d.ts} +7 -15
  79. package/dist/cjs/src/index.d.ts.map +1 -0
  80. package/dist/cjs/{index.js → src/index.js} +21 -19
  81. package/dist/cjs/src/index.js.map +1 -0
  82. package/dist/cjs/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
  83. package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +1 -0
  84. package/dist/cjs/{providers → src/providers}/AnthropicProvider.js +54 -2
  85. package/dist/cjs/src/providers/AnthropicProvider.js.map +1 -0
  86. package/dist/{providers → cjs/src/providers}/GeminiProvider.d.ts +1 -1
  87. package/dist/cjs/src/providers/GeminiProvider.d.ts.map +1 -0
  88. package/dist/cjs/{providers → src/providers}/GeminiProvider.js +65 -0
  89. package/dist/cjs/src/providers/GeminiProvider.js.map +1 -0
  90. package/dist/cjs/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
  91. package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +1 -0
  92. package/dist/cjs/{providers → src/providers}/OpenAIProvider.js +70 -1
  93. package/dist/cjs/src/providers/OpenAIProvider.js.map +1 -0
  94. package/dist/{providers → cjs/src/providers}/OpenRouterProvider.d.ts +1 -1
  95. package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +1 -0
  96. package/dist/cjs/{providers → src/providers}/OpenRouterProvider.js +76 -0
  97. package/dist/cjs/src/providers/OpenRouterProvider.js.map +1 -0
  98. package/dist/cjs/src/providers/index.d.ts.map +1 -0
  99. package/dist/cjs/src/providers/index.js.map +1 -0
  100. package/dist/cjs/{types → src/types}/agent.d.ts +52 -33
  101. package/dist/cjs/src/types/agent.d.ts.map +1 -0
  102. package/dist/cjs/src/types/agent.js.map +1 -0
  103. package/dist/cjs/{types → src/types}/ai.d.ts +7 -0
  104. package/dist/cjs/src/types/ai.d.ts.map +1 -0
  105. package/dist/cjs/src/types/ai.js.map +1 -0
  106. package/dist/{types → cjs/src/types}/history.d.ts +76 -18
  107. package/dist/cjs/src/types/history.d.ts.map +1 -0
  108. package/dist/cjs/src/types/history.js +33 -0
  109. package/dist/cjs/src/types/history.js.map +1 -0
  110. package/dist/cjs/src/types/index.d.ts +20 -0
  111. package/dist/cjs/src/types/index.d.ts.map +1 -0
  112. package/dist/cjs/src/types/index.js +30 -0
  113. package/dist/cjs/src/types/index.js.map +1 -0
  114. package/dist/{types → cjs/src/types}/persistence.d.ts +39 -23
  115. package/dist/cjs/src/types/persistence.d.ts.map +1 -0
  116. package/dist/cjs/src/types/persistence.js.map +1 -0
  117. package/dist/cjs/{types → src/types}/route.d.ts +85 -31
  118. package/dist/cjs/src/types/route.d.ts.map +1 -0
  119. package/dist/cjs/{types → src/types}/route.js.map +1 -1
  120. package/dist/cjs/src/types/routing.d.ts.map +1 -0
  121. package/dist/{types → cjs/src/types}/routing.js.map +1 -1
  122. package/dist/cjs/src/types/schema.d.ts.map +1 -0
  123. package/dist/{types → cjs/src/types}/schema.js.map +1 -1
  124. package/dist/cjs/src/types/session.d.ts +70 -0
  125. package/dist/cjs/src/types/session.d.ts.map +1 -0
  126. package/dist/cjs/src/types/session.js +6 -0
  127. package/dist/cjs/src/types/session.js.map +1 -0
  128. package/dist/cjs/src/types/template.d.ts +30 -0
  129. package/dist/cjs/src/types/template.d.ts.map +1 -0
  130. package/dist/cjs/src/types/template.js +3 -0
  131. package/dist/cjs/src/types/template.js.map +1 -0
  132. package/dist/cjs/{types → src/types}/tool.d.ts +6 -8
  133. package/dist/cjs/src/types/tool.d.ts.map +1 -0
  134. package/dist/cjs/{types → src/types}/tool.js.map +1 -1
  135. package/dist/cjs/src/utils/clone.d.ts +8 -0
  136. package/dist/cjs/src/utils/clone.d.ts.map +1 -0
  137. package/dist/cjs/src/utils/clone.js +36 -0
  138. package/dist/cjs/src/utils/clone.js.map +1 -0
  139. package/dist/{utils → cjs/src/utils}/event.d.ts +1 -1
  140. package/dist/cjs/src/utils/event.d.ts.map +1 -0
  141. package/dist/cjs/{utils → src/utils}/event.js +2 -2
  142. package/dist/cjs/src/utils/event.js.map +1 -0
  143. package/dist/cjs/src/utils/history.d.ts +31 -0
  144. package/dist/cjs/src/utils/history.d.ts.map +1 -0
  145. package/dist/cjs/src/utils/history.js +128 -0
  146. package/dist/cjs/src/utils/history.js.map +1 -0
  147. package/dist/cjs/src/utils/id.d.ts.map +1 -0
  148. package/dist/cjs/src/utils/id.js.map +1 -0
  149. package/dist/cjs/src/utils/index.d.ts +13 -0
  150. package/dist/cjs/src/utils/index.d.ts.map +1 -0
  151. package/dist/cjs/src/utils/index.js +49 -0
  152. package/dist/cjs/src/utils/index.js.map +1 -0
  153. package/dist/cjs/src/utils/logger.d.ts.map +1 -0
  154. package/dist/cjs/src/utils/logger.js.map +1 -0
  155. package/dist/cjs/src/utils/retry.d.ts.map +1 -0
  156. package/dist/cjs/src/utils/retry.js.map +1 -0
  157. package/dist/cjs/src/utils/session.d.ts +51 -0
  158. package/dist/cjs/src/utils/session.d.ts.map +1 -0
  159. package/dist/cjs/{types → src/utils}/session.js +34 -11
  160. package/dist/cjs/src/utils/session.js.map +1 -0
  161. package/dist/cjs/src/utils/template.d.ts +107 -0
  162. package/dist/cjs/src/utils/template.d.ts.map +1 -0
  163. package/dist/cjs/src/utils/template.js +283 -0
  164. package/dist/cjs/src/utils/template.js.map +1 -0
  165. package/dist/{cjs → src}/adapters/MemoryAdapter.d.ts +4 -4
  166. package/dist/src/adapters/MemoryAdapter.d.ts.map +1 -0
  167. package/dist/{adapters → src/adapters}/MemoryAdapter.js +41 -21
  168. package/dist/src/adapters/MemoryAdapter.js.map +1 -0
  169. package/dist/{cjs → src}/adapters/MongoAdapter.d.ts +3 -3
  170. package/dist/src/adapters/MongoAdapter.d.ts.map +1 -0
  171. package/dist/{adapters → src/adapters}/MongoAdapter.js +2 -1
  172. package/dist/src/adapters/MongoAdapter.js.map +1 -0
  173. package/dist/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
  174. package/dist/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
  175. package/dist/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
  176. package/dist/src/adapters/OpenSearchAdapter.js.map +1 -0
  177. package/dist/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
  178. package/dist/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  179. package/dist/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
  180. package/dist/src/adapters/PostgreSQLAdapter.js.map +1 -0
  181. package/dist/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
  182. package/dist/src/adapters/PrismaAdapter.d.ts.map +1 -0
  183. package/dist/{adapters → src/adapters}/PrismaAdapter.js +35 -5
  184. package/dist/src/adapters/PrismaAdapter.js.map +1 -0
  185. package/dist/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
  186. package/dist/src/adapters/RedisAdapter.d.ts.map +1 -0
  187. package/dist/{adapters → src/adapters}/RedisAdapter.js +3 -2
  188. package/dist/src/adapters/RedisAdapter.js.map +1 -0
  189. package/dist/{cjs → src}/adapters/SQLiteAdapter.d.ts +3 -3
  190. package/dist/src/adapters/SQLiteAdapter.d.ts.map +1 -0
  191. package/dist/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
  192. package/dist/src/adapters/SQLiteAdapter.js.map +1 -0
  193. package/dist/src/adapters/index.js.map +1 -0
  194. package/dist/src/constants/index.js.map +1 -0
  195. package/dist/{cjs → src}/core/Agent.d.ts +65 -67
  196. package/dist/src/core/Agent.d.ts.map +1 -0
  197. package/dist/src/core/Agent.js +1429 -0
  198. package/dist/src/core/Agent.js.map +1 -0
  199. package/dist/src/core/Events.d.ts +26 -0
  200. package/dist/src/core/Events.d.ts.map +1 -0
  201. package/dist/src/core/Events.js +137 -0
  202. package/dist/src/core/Events.js.map +1 -0
  203. package/dist/{cjs → src}/core/PersistenceManager.d.ts +21 -19
  204. package/dist/src/core/PersistenceManager.d.ts.map +1 -0
  205. package/dist/{core → src/core}/PersistenceManager.js +47 -17
  206. package/dist/src/core/PersistenceManager.js.map +1 -0
  207. package/dist/src/core/PromptComposer.d.ts +27 -0
  208. package/dist/src/core/PromptComposer.d.ts.map +1 -0
  209. package/dist/src/core/PromptComposer.js +153 -0
  210. package/dist/src/core/PromptComposer.js.map +1 -0
  211. package/dist/src/core/ResponseEngine.d.ts +31 -0
  212. package/dist/src/core/ResponseEngine.d.ts.map +1 -0
  213. package/dist/src/core/ResponseEngine.js +80 -0
  214. package/dist/src/core/ResponseEngine.js.map +1 -0
  215. package/dist/src/core/ResponsePipeline.d.ts +143 -0
  216. package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
  217. package/dist/src/core/ResponsePipeline.js +442 -0
  218. package/dist/src/core/ResponsePipeline.js.map +1 -0
  219. package/dist/src/core/Route.d.ts +126 -0
  220. package/dist/src/core/Route.d.ts.map +1 -0
  221. package/dist/{core → src/core}/Route.js +116 -20
  222. package/dist/src/core/Route.js.map +1 -0
  223. package/dist/{cjs → src}/core/RoutingEngine.d.ts +33 -38
  224. package/dist/src/core/RoutingEngine.d.ts.map +1 -0
  225. package/dist/{core → src/core}/RoutingEngine.js +98 -104
  226. package/dist/src/core/RoutingEngine.js.map +1 -0
  227. package/dist/src/core/SessionManager.d.ts +76 -0
  228. package/dist/src/core/SessionManager.d.ts.map +1 -0
  229. package/dist/src/core/SessionManager.js +193 -0
  230. package/dist/src/core/SessionManager.js.map +1 -0
  231. package/dist/src/core/Step.d.ts +96 -0
  232. package/dist/src/core/Step.d.ts.map +1 -0
  233. package/dist/src/core/Step.js +202 -0
  234. package/dist/src/core/Step.js.map +1 -0
  235. package/dist/src/core/ToolExecutor.d.ts +43 -0
  236. package/dist/src/core/ToolExecutor.d.ts.map +1 -0
  237. package/dist/src/core/ToolExecutor.js +70 -0
  238. package/dist/src/core/ToolExecutor.js.map +1 -0
  239. package/dist/{cjs → src}/index.d.ts +7 -15
  240. package/dist/src/index.d.ts.map +1 -0
  241. package/dist/{index.js → src/index.js} +6 -7
  242. package/dist/src/index.js.map +1 -0
  243. package/dist/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
  244. package/dist/src/providers/AnthropicProvider.d.ts.map +1 -0
  245. package/dist/{providers → src/providers}/AnthropicProvider.js +54 -2
  246. package/dist/src/providers/AnthropicProvider.js.map +1 -0
  247. package/dist/{cjs → src}/providers/GeminiProvider.d.ts +1 -1
  248. package/dist/{cjs → src}/providers/GeminiProvider.d.ts.map +1 -1
  249. package/dist/{providers → src/providers}/GeminiProvider.js +65 -0
  250. package/dist/src/providers/GeminiProvider.js.map +1 -0
  251. package/dist/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
  252. package/dist/{cjs → src}/providers/OpenAIProvider.d.ts.map +1 -1
  253. package/dist/{providers → src/providers}/OpenAIProvider.js +70 -1
  254. package/dist/src/providers/OpenAIProvider.js.map +1 -0
  255. package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts +1 -1
  256. package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts.map +1 -1
  257. package/dist/{providers → src/providers}/OpenRouterProvider.js +76 -0
  258. package/dist/src/providers/OpenRouterProvider.js.map +1 -0
  259. package/dist/src/providers/index.js.map +1 -0
  260. package/dist/{types → src/types}/agent.d.ts +52 -33
  261. package/dist/src/types/agent.d.ts.map +1 -0
  262. package/dist/src/types/agent.js.map +1 -0
  263. package/dist/{types → src/types}/ai.d.ts +7 -0
  264. package/dist/src/types/ai.d.ts.map +1 -0
  265. package/dist/{cjs → src}/types/ai.js.map +1 -1
  266. package/dist/{cjs → src}/types/history.d.ts +76 -18
  267. package/dist/src/types/history.d.ts.map +1 -0
  268. package/dist/src/types/history.js +30 -0
  269. package/dist/src/types/history.js.map +1 -0
  270. package/dist/src/types/index.d.ts +20 -0
  271. package/dist/src/types/index.d.ts.map +1 -0
  272. package/dist/src/types/index.js +10 -0
  273. package/dist/src/types/index.js.map +1 -0
  274. package/dist/{cjs → src}/types/persistence.d.ts +39 -23
  275. package/dist/src/types/persistence.d.ts.map +1 -0
  276. package/dist/src/types/persistence.js.map +1 -0
  277. package/dist/{types → src/types}/route.d.ts +85 -31
  278. package/dist/src/types/route.d.ts.map +1 -0
  279. package/dist/{types → src/types}/route.js.map +1 -1
  280. package/dist/src/types/session.d.ts +70 -0
  281. package/dist/src/types/session.d.ts.map +1 -0
  282. package/dist/src/types/session.js +5 -0
  283. package/dist/src/types/session.js.map +1 -0
  284. package/dist/src/types/template.d.ts +30 -0
  285. package/dist/src/types/template.d.ts.map +1 -0
  286. package/dist/src/types/template.js +2 -0
  287. package/dist/src/types/template.js.map +1 -0
  288. package/dist/{types → src/types}/tool.d.ts +6 -8
  289. package/dist/{cjs → src}/types/tool.d.ts.map +1 -1
  290. package/dist/{types → src/types}/tool.js.map +1 -1
  291. package/dist/src/utils/clone.d.ts +8 -0
  292. package/dist/src/utils/clone.d.ts.map +1 -0
  293. package/dist/src/utils/clone.js +33 -0
  294. package/dist/src/utils/clone.js.map +1 -0
  295. package/dist/{cjs → src}/utils/event.d.ts +1 -1
  296. package/dist/{cjs → src}/utils/event.d.ts.map +1 -1
  297. package/dist/{utils → src/utils}/event.js +1 -1
  298. package/dist/src/utils/event.js.map +1 -0
  299. package/dist/src/utils/history.d.ts +31 -0
  300. package/dist/src/utils/history.d.ts.map +1 -0
  301. package/dist/src/utils/history.js +121 -0
  302. package/dist/src/utils/history.js.map +1 -0
  303. package/dist/src/utils/id.js.map +1 -0
  304. package/dist/src/utils/index.d.ts +13 -0
  305. package/dist/src/utils/index.d.ts.map +1 -0
  306. package/dist/src/utils/index.js +19 -0
  307. package/dist/src/utils/index.js.map +1 -0
  308. package/dist/src/utils/logger.js.map +1 -0
  309. package/dist/src/utils/retry.js.map +1 -0
  310. package/dist/src/utils/session.d.ts +51 -0
  311. package/dist/src/utils/session.d.ts.map +1 -0
  312. package/dist/{types → src/utils}/session.js +32 -11
  313. package/dist/src/utils/session.js.map +1 -0
  314. package/dist/src/utils/template.d.ts +107 -0
  315. package/dist/src/utils/template.d.ts.map +1 -0
  316. package/dist/src/utils/template.js +276 -0
  317. package/dist/src/utils/template.js.map +1 -0
  318. package/docs/README.md +174 -68
  319. package/docs/{API_REFERENCE.md → api/README.md} +890 -251
  320. package/docs/api/overview.md +798 -0
  321. package/docs/core/agent/README.md +642 -0
  322. package/docs/{CONTEXT_MANAGEMENT.md → core/agent/context-management.md} +143 -94
  323. package/docs/{ARCHITECTURE.md → core/agent/session-management.md} +74 -59
  324. package/docs/core/ai-integration/prompt-composition.md +196 -0
  325. package/docs/core/ai-integration/providers.md +515 -0
  326. package/docs/core/ai-integration/response-processing.md +165 -0
  327. package/docs/core/conversation-flows/data-collection.md +545 -0
  328. package/docs/core/conversation-flows/route-dsl.md +479 -0
  329. package/docs/core/conversation-flows/routes.md +61 -0
  330. package/docs/core/conversation-flows/step-transitions.md +595 -0
  331. package/docs/core/conversation-flows/steps.md +130 -0
  332. package/docs/{ADAPTERS.md → core/persistence/adapters.md} +1 -1
  333. package/docs/core/persistence/session-storage.md +644 -0
  334. package/docs/core/routing/intelligent-routing.md +339 -0
  335. package/docs/core/tools/tool-definition.md +346 -0
  336. package/docs/core/tools/tool-execution.md +815 -0
  337. package/docs/core/tools/tool-scoping.md +628 -0
  338. package/docs/guides/getting-started/README.md +384 -0
  339. package/examples/{company-qna-agent.ts → advanced-patterns/knowledge-based-agent.ts} +104 -69
  340. package/examples/{persistent-onboarding.ts → advanced-patterns/persistent-onboarding.ts} +181 -103
  341. package/examples/{rules-prohibitions.ts → advanced-patterns/route-lifecycle-hooks.ts} +102 -82
  342. package/examples/{streaming-agent.ts → advanced-patterns/streaming-responses.ts} +90 -69
  343. package/examples/ai-providers/anthropic-integration.ts +377 -0
  344. package/examples/{openai-agent.ts → ai-providers/openai-integration.ts} +37 -43
  345. package/examples/{route-transitions.ts → conversation-flows/completion-transitions.ts} +112 -105
  346. package/examples/{declarative-agent.ts → core-concepts/basic-agent.ts} +175 -131
  347. package/examples/core-concepts/schema-driven-extraction.ts +301 -0
  348. package/examples/core-concepts/session-management.ts +394 -0
  349. package/examples/integrations/database-integration.ts +615 -0
  350. package/examples/{healthcare-agent.ts → integrations/healthcare-integration.ts} +204 -111
  351. package/examples/{opensearch-persistence.ts → integrations/search-integration.ts} +159 -128
  352. package/examples/integrations/server-session-management.ts +299 -0
  353. package/examples/persistence/custom-adapter.ts +529 -0
  354. package/examples/{prisma-persistence.ts → persistence/database-persistence.ts} +168 -241
  355. package/examples/persistence/memory-sessions.ts +506 -0
  356. package/examples/{prisma-schema.example.prisma → persistence/prisma-schema.example.prisma} +1 -1
  357. package/examples/{redis-persistence.ts → persistence/redis-persistence.ts} +152 -173
  358. package/examples/tools/basic-tools.ts +550 -0
  359. package/examples/{extracted-data-modification.ts → tools/data-enrichment-tools.ts} +82 -79
  360. package/package.json +14 -10
  361. package/src/adapters/MemoryAdapter.ts +74 -46
  362. package/src/adapters/MongoAdapter.ts +33 -24
  363. package/src/adapters/OpenSearchAdapter.ts +41 -37
  364. package/src/adapters/PostgreSQLAdapter.ts +35 -24
  365. package/src/adapters/PrismaAdapter.ts +69 -27
  366. package/src/adapters/RedisAdapter.ts +38 -26
  367. package/src/adapters/SQLiteAdapter.ts +32 -22
  368. package/src/core/Agent.ts +1093 -478
  369. package/src/core/Events.ts +100 -112
  370. package/src/core/PersistenceManager.ts +77 -47
  371. package/src/core/PromptComposer.ts +158 -85
  372. package/src/core/ResponseEngine.ts +118 -38
  373. package/src/core/ResponsePipeline.ts +715 -0
  374. package/src/core/Route.ts +168 -51
  375. package/src/core/RoutingEngine.ts +178 -209
  376. package/src/core/SessionManager.ts +241 -0
  377. package/src/core/Step.ts +149 -67
  378. package/src/core/ToolExecutor.ts +37 -42
  379. package/src/index.ts +31 -37
  380. package/src/providers/AnthropicProvider.ts +71 -5
  381. package/src/providers/GeminiProvider.ts +83 -2
  382. package/src/providers/OpenAIProvider.ts +95 -3
  383. package/src/providers/OpenRouterProvider.ts +102 -2
  384. package/src/types/agent.ts +48 -36
  385. package/src/types/ai.ts +7 -0
  386. package/src/types/history.ts +91 -18
  387. package/src/types/index.ts +43 -7
  388. package/src/types/persistence.ts +46 -28
  389. package/src/types/route.ts +104 -45
  390. package/src/types/session.ts +19 -213
  391. package/src/types/template.ts +36 -0
  392. package/src/types/tool.ts +9 -11
  393. package/src/utils/clone.ts +36 -0
  394. package/src/utils/event.ts +1 -1
  395. package/src/utils/history.ts +143 -0
  396. package/src/utils/index.ts +53 -0
  397. package/src/utils/session.ts +229 -0
  398. package/src/utils/template.ts +335 -0
  399. package/dist/adapters/MemoryAdapter.d.ts.map +0 -1
  400. package/dist/adapters/MemoryAdapter.js.map +0 -1
  401. package/dist/adapters/MongoAdapter.d.ts.map +0 -1
  402. package/dist/adapters/MongoAdapter.js.map +0 -1
  403. package/dist/adapters/OpenSearchAdapter.d.ts.map +0 -1
  404. package/dist/adapters/OpenSearchAdapter.js.map +0 -1
  405. package/dist/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  406. package/dist/adapters/PostgreSQLAdapter.js.map +0 -1
  407. package/dist/adapters/PrismaAdapter.d.ts.map +0 -1
  408. package/dist/adapters/PrismaAdapter.js.map +0 -1
  409. package/dist/adapters/RedisAdapter.d.ts.map +0 -1
  410. package/dist/adapters/RedisAdapter.js.map +0 -1
  411. package/dist/adapters/SQLiteAdapter.d.ts.map +0 -1
  412. package/dist/adapters/SQLiteAdapter.js.map +0 -1
  413. package/dist/adapters/index.d.ts.map +0 -1
  414. package/dist/adapters/index.js.map +0 -1
  415. package/dist/cjs/adapters/MemoryAdapter.d.ts.map +0 -1
  416. package/dist/cjs/adapters/MemoryAdapter.js.map +0 -1
  417. package/dist/cjs/adapters/MongoAdapter.d.ts.map +0 -1
  418. package/dist/cjs/adapters/MongoAdapter.js.map +0 -1
  419. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +0 -1
  420. package/dist/cjs/adapters/OpenSearchAdapter.js.map +0 -1
  421. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  422. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +0 -1
  423. package/dist/cjs/adapters/PrismaAdapter.d.ts.map +0 -1
  424. package/dist/cjs/adapters/PrismaAdapter.js.map +0 -1
  425. package/dist/cjs/adapters/RedisAdapter.d.ts.map +0 -1
  426. package/dist/cjs/adapters/RedisAdapter.js.map +0 -1
  427. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +0 -1
  428. package/dist/cjs/adapters/SQLiteAdapter.js.map +0 -1
  429. package/dist/cjs/adapters/index.js.map +0 -1
  430. package/dist/cjs/constants/index.js.map +0 -1
  431. package/dist/cjs/core/Agent.d.ts.map +0 -1
  432. package/dist/cjs/core/Agent.js +0 -966
  433. package/dist/cjs/core/Agent.js.map +0 -1
  434. package/dist/cjs/core/DomainRegistry.d.ts +0 -36
  435. package/dist/cjs/core/DomainRegistry.d.ts.map +0 -1
  436. package/dist/cjs/core/DomainRegistry.js +0 -72
  437. package/dist/cjs/core/DomainRegistry.js.map +0 -1
  438. package/dist/cjs/core/Events.d.ts +0 -41
  439. package/dist/cjs/core/Events.d.ts.map +0 -1
  440. package/dist/cjs/core/Events.js +0 -99
  441. package/dist/cjs/core/Events.js.map +0 -1
  442. package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
  443. package/dist/cjs/core/PersistenceManager.js.map +0 -1
  444. package/dist/cjs/core/PromptComposer.d.ts +0 -24
  445. package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
  446. package/dist/cjs/core/PromptComposer.js +0 -127
  447. package/dist/cjs/core/PromptComposer.js.map +0 -1
  448. package/dist/cjs/core/ResponseEngine.d.ts +0 -14
  449. package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
  450. package/dist/cjs/core/ResponseEngine.js +0 -56
  451. package/dist/cjs/core/ResponseEngine.js.map +0 -1
  452. package/dist/cjs/core/Route.d.ts +0 -90
  453. package/dist/cjs/core/Route.d.ts.map +0 -1
  454. package/dist/cjs/core/Route.js.map +0 -1
  455. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  456. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  457. package/dist/cjs/core/Step.d.ts +0 -72
  458. package/dist/cjs/core/Step.d.ts.map +0 -1
  459. package/dist/cjs/core/Step.js +0 -150
  460. package/dist/cjs/core/Step.js.map +0 -1
  461. package/dist/cjs/core/Tool.d.ts +0 -39
  462. package/dist/cjs/core/Tool.d.ts.map +0 -1
  463. package/dist/cjs/core/Tool.js +0 -34
  464. package/dist/cjs/core/Tool.js.map +0 -1
  465. package/dist/cjs/core/ToolExecutor.d.ts +0 -29
  466. package/dist/cjs/core/ToolExecutor.d.ts.map +0 -1
  467. package/dist/cjs/core/ToolExecutor.js.map +0 -1
  468. package/dist/cjs/core/Transition.d.ts +0 -32
  469. package/dist/cjs/core/Transition.d.ts.map +0 -1
  470. package/dist/cjs/core/Transition.js +0 -89
  471. package/dist/cjs/core/Transition.js.map +0 -1
  472. package/dist/cjs/index.d.ts.map +0 -1
  473. package/dist/cjs/index.js.map +0 -1
  474. package/dist/cjs/providers/AnthropicProvider.d.ts.map +0 -1
  475. package/dist/cjs/providers/AnthropicProvider.js.map +0 -1
  476. package/dist/cjs/providers/GeminiProvider.js.map +0 -1
  477. package/dist/cjs/providers/OpenAIProvider.js.map +0 -1
  478. package/dist/cjs/providers/OpenRouterProvider.js.map +0 -1
  479. package/dist/cjs/providers/index.js.map +0 -1
  480. package/dist/cjs/types/agent.d.ts.map +0 -1
  481. package/dist/cjs/types/agent.js.map +0 -1
  482. package/dist/cjs/types/ai.d.ts.map +0 -1
  483. package/dist/cjs/types/history.d.ts.map +0 -1
  484. package/dist/cjs/types/history.js +0 -37
  485. package/dist/cjs/types/history.js.map +0 -1
  486. package/dist/cjs/types/index.d.ts +0 -12
  487. package/dist/cjs/types/index.d.ts.map +0 -1
  488. package/dist/cjs/types/index.js +0 -12
  489. package/dist/cjs/types/index.js.map +0 -1
  490. package/dist/cjs/types/persistence.d.ts.map +0 -1
  491. package/dist/cjs/types/persistence.js.map +0 -1
  492. package/dist/cjs/types/route.d.ts.map +0 -1
  493. package/dist/cjs/types/session.d.ts +0 -104
  494. package/dist/cjs/types/session.d.ts.map +0 -1
  495. package/dist/cjs/types/session.js.map +0 -1
  496. package/dist/cjs/utils/event.js.map +0 -1
  497. package/dist/cjs/utils/id.js.map +0 -1
  498. package/dist/cjs/utils/logger.js.map +0 -1
  499. package/dist/cjs/utils/retry.js.map +0 -1
  500. package/dist/constants/index.d.ts.map +0 -1
  501. package/dist/constants/index.js.map +0 -1
  502. package/dist/core/Agent.d.ts.map +0 -1
  503. package/dist/core/Agent.js +0 -962
  504. package/dist/core/Agent.js.map +0 -1
  505. package/dist/core/DomainRegistry.d.ts +0 -36
  506. package/dist/core/DomainRegistry.d.ts.map +0 -1
  507. package/dist/core/DomainRegistry.js +0 -68
  508. package/dist/core/DomainRegistry.js.map +0 -1
  509. package/dist/core/Events.d.ts +0 -41
  510. package/dist/core/Events.d.ts.map +0 -1
  511. package/dist/core/Events.js +0 -94
  512. package/dist/core/Events.js.map +0 -1
  513. package/dist/core/PersistenceManager.d.ts.map +0 -1
  514. package/dist/core/PersistenceManager.js.map +0 -1
  515. package/dist/core/PromptComposer.d.ts +0 -24
  516. package/dist/core/PromptComposer.d.ts.map +0 -1
  517. package/dist/core/PromptComposer.js +0 -123
  518. package/dist/core/PromptComposer.js.map +0 -1
  519. package/dist/core/ResponseEngine.d.ts +0 -14
  520. package/dist/core/ResponseEngine.d.ts.map +0 -1
  521. package/dist/core/ResponseEngine.js +0 -52
  522. package/dist/core/ResponseEngine.js.map +0 -1
  523. package/dist/core/Route.d.ts +0 -90
  524. package/dist/core/Route.d.ts.map +0 -1
  525. package/dist/core/Route.js.map +0 -1
  526. package/dist/core/RoutingEngine.d.ts.map +0 -1
  527. package/dist/core/RoutingEngine.js.map +0 -1
  528. package/dist/core/Step.d.ts +0 -72
  529. package/dist/core/Step.d.ts.map +0 -1
  530. package/dist/core/Step.js +0 -146
  531. package/dist/core/Step.js.map +0 -1
  532. package/dist/core/Tool.d.ts +0 -39
  533. package/dist/core/Tool.d.ts.map +0 -1
  534. package/dist/core/Tool.js +0 -31
  535. package/dist/core/Tool.js.map +0 -1
  536. package/dist/core/ToolExecutor.d.ts +0 -29
  537. package/dist/core/ToolExecutor.d.ts.map +0 -1
  538. package/dist/core/ToolExecutor.js +0 -69
  539. package/dist/core/ToolExecutor.js.map +0 -1
  540. package/dist/core/Transition.d.ts +0 -32
  541. package/dist/core/Transition.d.ts.map +0 -1
  542. package/dist/core/Transition.js +0 -85
  543. package/dist/core/Transition.js.map +0 -1
  544. package/dist/index.d.ts.map +0 -1
  545. package/dist/index.js.map +0 -1
  546. package/dist/providers/AnthropicProvider.d.ts.map +0 -1
  547. package/dist/providers/AnthropicProvider.js.map +0 -1
  548. package/dist/providers/GeminiProvider.d.ts.map +0 -1
  549. package/dist/providers/GeminiProvider.js.map +0 -1
  550. package/dist/providers/OpenAIProvider.d.ts.map +0 -1
  551. package/dist/providers/OpenAIProvider.js.map +0 -1
  552. package/dist/providers/OpenRouterProvider.d.ts.map +0 -1
  553. package/dist/providers/OpenRouterProvider.js.map +0 -1
  554. package/dist/providers/index.d.ts.map +0 -1
  555. package/dist/providers/index.js.map +0 -1
  556. package/dist/types/agent.d.ts.map +0 -1
  557. package/dist/types/agent.js.map +0 -1
  558. package/dist/types/ai.d.ts.map +0 -1
  559. package/dist/types/ai.js.map +0 -1
  560. package/dist/types/history.d.ts.map +0 -1
  561. package/dist/types/history.js +0 -34
  562. package/dist/types/history.js.map +0 -1
  563. package/dist/types/index.d.ts +0 -12
  564. package/dist/types/index.d.ts.map +0 -1
  565. package/dist/types/index.js +0 -6
  566. package/dist/types/index.js.map +0 -1
  567. package/dist/types/persistence.d.ts.map +0 -1
  568. package/dist/types/persistence.js.map +0 -1
  569. package/dist/types/route.d.ts.map +0 -1
  570. package/dist/types/routing.d.ts.map +0 -1
  571. package/dist/types/schema.d.ts.map +0 -1
  572. package/dist/types/session.d.ts +0 -104
  573. package/dist/types/session.d.ts.map +0 -1
  574. package/dist/types/session.js.map +0 -1
  575. package/dist/types/tool.d.ts.map +0 -1
  576. package/dist/utils/event.d.ts.map +0 -1
  577. package/dist/utils/event.js.map +0 -1
  578. package/dist/utils/id.d.ts.map +0 -1
  579. package/dist/utils/id.js.map +0 -1
  580. package/dist/utils/logger.d.ts.map +0 -1
  581. package/dist/utils/logger.js.map +0 -1
  582. package/dist/utils/retry.d.ts.map +0 -1
  583. package/dist/utils/retry.js.map +0 -1
  584. package/docs/AGENT.md +0 -535
  585. package/docs/DOCS.md +0 -263
  586. package/docs/DOMAINS.md +0 -735
  587. package/docs/EXAMPLES.md +0 -467
  588. package/docs/GETTING_STARTED.md +0 -424
  589. package/docs/PERSISTENCE.md +0 -815
  590. package/docs/PROVIDERS.md +0 -612
  591. package/docs/ROUTES.md +0 -1085
  592. package/docs/STEPS.md +0 -883
  593. package/examples/business-onboarding.ts +0 -791
  594. package/examples/custom-database-persistence.ts +0 -574
  595. package/examples/domain-scoping.ts +0 -366
  596. package/examples/travel-agent.ts +0 -584
  597. package/src/core/DomainRegistry.ts +0 -80
  598. package/src/core/Tool.ts +0 -112
  599. package/src/core/Transition.ts +0 -115
  600. /package/dist/{adapters → cjs/src/adapters}/index.d.ts +0 -0
  601. /package/dist/cjs/{adapters → src/adapters}/index.js +0 -0
  602. /package/dist/cjs/{constants → src/constants}/index.d.ts +0 -0
  603. /package/dist/cjs/{constants → src/constants}/index.js +0 -0
  604. /package/dist/cjs/{providers → src/providers}/index.d.ts +0 -0
  605. /package/dist/cjs/{providers → src/providers}/index.js +0 -0
  606. /package/dist/cjs/{types → src/types}/agent.js +0 -0
  607. /package/dist/cjs/{types → src/types}/ai.js +0 -0
  608. /package/dist/cjs/{types → src/types}/persistence.js +0 -0
  609. /package/dist/cjs/{types → src/types}/route.js +0 -0
  610. /package/dist/cjs/{types → src/types}/routing.d.ts +0 -0
  611. /package/dist/cjs/{types → src/types}/routing.js +0 -0
  612. /package/dist/cjs/{types → src/types}/schema.d.ts +0 -0
  613. /package/dist/cjs/{types → src/types}/schema.js +0 -0
  614. /package/dist/cjs/{types → src/types}/tool.js +0 -0
  615. /package/dist/cjs/{utils → src/utils}/id.d.ts +0 -0
  616. /package/dist/cjs/{utils → src/utils}/id.js +0 -0
  617. /package/dist/cjs/{utils → src/utils}/logger.d.ts +0 -0
  618. /package/dist/cjs/{utils → src/utils}/logger.js +0 -0
  619. /package/dist/cjs/{utils → src/utils}/retry.d.ts +0 -0
  620. /package/dist/cjs/{utils → src/utils}/retry.js +0 -0
  621. /package/dist/{cjs → src}/adapters/index.d.ts +0 -0
  622. /package/dist/{cjs → src}/adapters/index.d.ts.map +0 -0
  623. /package/dist/{adapters → src/adapters}/index.js +0 -0
  624. /package/dist/{constants → src/constants}/index.d.ts +0 -0
  625. /package/dist/{cjs → src}/constants/index.d.ts.map +0 -0
  626. /package/dist/{constants → src/constants}/index.js +0 -0
  627. /package/dist/{providers → src/providers}/index.d.ts +0 -0
  628. /package/dist/{cjs → src}/providers/index.d.ts.map +0 -0
  629. /package/dist/{providers → src/providers}/index.js +0 -0
  630. /package/dist/{types → src/types}/agent.js +0 -0
  631. /package/dist/{types → src/types}/ai.js +0 -0
  632. /package/dist/{types → src/types}/persistence.js +0 -0
  633. /package/dist/{types → src/types}/route.js +0 -0
  634. /package/dist/{types → src/types}/routing.d.ts +0 -0
  635. /package/dist/{cjs → src}/types/routing.d.ts.map +0 -0
  636. /package/dist/{types → src/types}/routing.js +0 -0
  637. /package/dist/{cjs → src}/types/routing.js.map +0 -0
  638. /package/dist/{types → src/types}/schema.d.ts +0 -0
  639. /package/dist/{cjs → src}/types/schema.d.ts.map +0 -0
  640. /package/dist/{types → src/types}/schema.js +0 -0
  641. /package/dist/{cjs → src}/types/schema.js.map +0 -0
  642. /package/dist/{types → src/types}/tool.js +0 -0
  643. /package/dist/{utils → src/utils}/id.d.ts +0 -0
  644. /package/dist/{cjs → src}/utils/id.d.ts.map +0 -0
  645. /package/dist/{utils → src/utils}/id.js +0 -0
  646. /package/dist/{utils → src/utils}/logger.d.ts +0 -0
  647. /package/dist/{cjs → src}/utils/logger.d.ts.map +0 -0
  648. /package/dist/{utils → src/utils}/logger.js +0 -0
  649. /package/dist/{utils → src/utils}/retry.d.ts +0 -0
  650. /package/dist/{cjs → src}/utils/retry.d.ts.map +0 -0
  651. /package/dist/{utils → src/utils}/retry.js +0 -0
  652. /package/docs/{PUBLISHING.md → guides/advanced-patterns/publishing.md} +0 -0
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RoutingEngine = void 0;
4
- const session_1 = require("../types/session");
4
+ const utils_1 = require("../utils");
5
5
  const PromptComposer_1 = require("./PromptComposer");
6
6
  const event_1 = require("../utils/event");
7
7
  const logger_1 = require("../utils/logger");
8
+ const template_1 = require("../utils/template");
9
+ const constants_1 = require("../constants");
8
10
  class RoutingEngine {
9
11
  constructor(options) {
10
12
  this.options = options;
@@ -15,14 +17,14 @@ class RoutingEngine {
15
17
  * @private
16
18
  */
17
19
  async decideSingleRouteStep(params) {
18
- const { route, session, history, agentMeta, provider, context, signal } = params;
20
+ const { route, session, history, agentOptions, provider, context, signal } = params;
19
21
  let updatedSession = session;
20
22
  const selectedRoute = route;
21
23
  // Enter route if not already in it
22
24
  if (!session.currentRoute || session.currentRoute.id !== route.id) {
23
- updatedSession = (0, session_1.enterRoute)(session, route.id, route.title);
25
+ updatedSession = (0, utils_1.enterRoute)(session, route.id, route.title);
24
26
  if (route.initialData) {
25
- updatedSession = (0, session_1.mergeCollected)(updatedSession, route.initialData);
27
+ updatedSession = (0, utils_1.mergeCollected)(updatedSession, route.initialData);
26
28
  logger_1.logger.debug(`[RoutingEngine] Single-route: Merged initial data:`, route.initialData);
27
29
  }
28
30
  logger_1.logger.debug(`[RoutingEngine] Single-route: Entered route: ${route.title}`);
@@ -61,8 +63,18 @@ class RoutingEngine {
61
63
  }
62
64
  // Multiple candidates - use AI to select best step
63
65
  const lastUserMessage = (0, event_1.getLastMessageFromHistory)(history);
64
- const stepPrompt = this.buildStepSelectionPrompt(route, currentStep, candidates, updatedSession.data || {}, history, lastUserMessage, agentMeta);
65
- const stepSchema = this.buildStepSelectionSchema(candidates.map((c) => c.step.id));
66
+ const stepPrompt = await this.buildStepSelectionPrompt({
67
+ route,
68
+ currentStep,
69
+ candidates,
70
+ data: updatedSession.data || {},
71
+ history,
72
+ lastMessage: lastUserMessage,
73
+ agentOptions,
74
+ context,
75
+ session: updatedSession,
76
+ });
77
+ const stepSchema = this.buildStepSelectionSchema(candidates.map((c) => c.step));
66
78
  const stepResult = await provider.generateMessage({
67
79
  prompt: stepPrompt,
68
80
  history,
@@ -74,9 +86,9 @@ class RoutingEngine {
74
86
  },
75
87
  });
76
88
  const selectedStepId = stepResult.structured?.selectedStepId;
77
- const selectedStep = candidates.find((c) => c.step.id === selectedStepId)?.step;
89
+ const selectedStep = candidates.find((c) => c.step.id === selectedStepId);
78
90
  if (selectedStep) {
79
- logger_1.logger.debug(`[RoutingEngine] Single-route: AI selected step: ${selectedStep.id}`);
91
+ logger_1.logger.debug(`[RoutingEngine] Single-route: AI selected step: ${selectedStep.step.id}`);
80
92
  logger_1.logger.debug(`[RoutingEngine] Single-route: Reasoning: ${stepResult.structured?.reasoning}`);
81
93
  }
82
94
  else {
@@ -84,7 +96,7 @@ class RoutingEngine {
84
96
  }
85
97
  return {
86
98
  selectedRoute,
87
- selectedStep: selectedStep || candidates[0].step,
99
+ selectedStep: selectedStep?.step || candidates[0].step,
88
100
  responseDirectives: stepResult.structured?.responseDirectives,
89
101
  session: updatedSession,
90
102
  };
@@ -101,11 +113,9 @@ class RoutingEngine {
101
113
  visited.add(currentStep.id);
102
114
  const transitions = currentStep.getTransitions();
103
115
  for (const transition of transitions) {
104
- const target = transition.getTarget();
116
+ const target = transition;
105
117
  // Check for END_ROUTE transition
106
- if (!target &&
107
- transition.spec.step &&
108
- typeof transition.spec.step === "symbol") {
118
+ if (target && target.id === constants_1.END_ROUTE_ID) {
109
119
  // Found END_ROUTE - route is complete
110
120
  return {
111
121
  isRouteComplete: true,
@@ -118,7 +128,7 @@ class RoutingEngine {
118
128
  logger_1.logger.debug(`[RoutingEngine] Found valid step after skipping: ${target.id}`);
119
129
  return {
120
130
  step: target,
121
- condition: transition.condition,
131
+ isRouteComplete: false,
122
132
  };
123
133
  }
124
134
  // Target should be skipped too - recurse deeper
@@ -146,21 +156,16 @@ class RoutingEngine {
146
156
  if (result.isRouteComplete) {
147
157
  // All steps are skipped and we reached END_ROUTE
148
158
  logger_1.logger.debug(`[RoutingEngine] Route complete on entry: all steps skipped, END_ROUTE reached`);
149
- return [
150
- {
151
- step: initialStep,
152
- condition: "Route complete - all data collected on entry",
153
- isRouteComplete: true,
154
- },
155
- ];
159
+ candidates.push({
160
+ step: initialStep,
161
+ isRouteComplete: true,
162
+ });
156
163
  }
157
164
  else if (result.step) {
158
165
  // Found a non-skipped step
159
166
  candidates.push({
160
167
  step: result.step,
161
- condition: result.condition,
162
- requires: result.step.requires,
163
- collectFields: result.step.collectFields,
168
+ isRouteComplete: result.isRouteComplete || false,
164
169
  });
165
170
  }
166
171
  // If no step found and not complete, fall through to return empty candidates
@@ -168,8 +173,7 @@ class RoutingEngine {
168
173
  else {
169
174
  candidates.push({
170
175
  step: initialStep,
171
- requires: initialStep.requires,
172
- collectFields: initialStep.collectFields,
176
+ isRouteComplete: false,
173
177
  });
174
178
  }
175
179
  return candidates;
@@ -177,11 +181,9 @@ class RoutingEngine {
177
181
  const transitions = currentStep.getTransitions();
178
182
  let hasEndRoute = false;
179
183
  for (const transition of transitions) {
180
- const target = transition.getTarget();
184
+ const target = transition;
181
185
  // Check for END_ROUTE transition (no target step)
182
- if (!target &&
183
- transition.spec.step &&
184
- typeof transition.spec.step === "symbol") {
186
+ if (target && target.id === constants_1.END_ROUTE_ID) {
185
187
  hasEndRoute = true;
186
188
  continue;
187
189
  }
@@ -199,18 +201,14 @@ class RoutingEngine {
199
201
  // Found a non-skipped step deeper in the chain
200
202
  candidates.push({
201
203
  step: result.step,
202
- condition: result.condition || transition.condition,
203
- requires: result.step.requires,
204
- collectFields: result.step.collectFields,
204
+ isRouteComplete: result.isRouteComplete || false,
205
205
  });
206
206
  }
207
207
  continue;
208
208
  }
209
209
  candidates.push({
210
210
  step: target,
211
- condition: transition.condition,
212
- requires: target.requires,
213
- collectFields: target.collectFields,
211
+ isRouteComplete: hasEndRoute || false,
214
212
  });
215
213
  }
216
214
  // If no valid candidates found
@@ -222,7 +220,6 @@ class RoutingEngine {
222
220
  return [
223
221
  {
224
222
  step: currentStep,
225
- condition: "Route complete - all data collected",
226
223
  isRouteComplete: true,
227
224
  },
228
225
  ];
@@ -231,9 +228,7 @@ class RoutingEngine {
231
228
  if (!currentStep.shouldSkip(data)) {
232
229
  candidates.push({
233
230
  step: currentStep,
234
- condition: "Continue in current step (no valid transitions)",
235
- requires: currentStep.requires,
236
- collectFields: currentStep.collectFields,
231
+ isRouteComplete: hasEndRoute || false,
237
232
  });
238
233
  }
239
234
  }
@@ -246,7 +241,7 @@ class RoutingEngine {
246
241
  * OPTIMIZATION: If there's only 1 route, skips route scoring and only does step selection.
247
242
  */
248
243
  async decideRouteAndStep(params) {
249
- const { routes, session, history, agentMeta, provider, context, signal } = params;
244
+ const { routes, session, history, agentOptions, provider, context, signal, } = params;
250
245
  if (routes.length === 0) {
251
246
  return { session };
252
247
  }
@@ -256,7 +251,7 @@ class RoutingEngine {
256
251
  route: routes[0],
257
252
  session,
258
253
  history,
259
- agentMeta,
254
+ agentOptions,
260
255
  provider,
261
256
  context,
262
257
  signal,
@@ -281,19 +276,21 @@ class RoutingEngine {
281
276
  activeRouteSteps = undefined;
282
277
  }
283
278
  else {
284
- activeRouteSteps = candidates.map((c) => ({
285
- stepId: c.step.id,
286
- description: c.step.description || "",
287
- condition: c.condition,
288
- requires: c.requires,
289
- collectFields: c.collectFields,
290
- }));
279
+ activeRouteSteps = candidates.map((c) => c.step);
291
280
  logger_1.logger.debug(`[RoutingEngine] Found ${activeRouteSteps.length} candidate steps for active route`);
292
281
  }
293
282
  }
294
283
  }
295
284
  const routingSchema = this.buildDynamicRoutingSchema(routes, undefined, activeRouteSteps);
296
- const routingPrompt = this.buildRoutingPrompt(history, routes, lastUserMessage, agentMeta, session, activeRouteSteps);
285
+ const routingPrompt = await this.buildRoutingPrompt({
286
+ history,
287
+ routes,
288
+ lastMessage: lastUserMessage,
289
+ agentOptions,
290
+ session,
291
+ activeRouteSteps,
292
+ context,
293
+ });
297
294
  const routingResult = await provider.generateMessage({
298
295
  prompt: routingPrompt,
299
296
  history,
@@ -329,9 +326,9 @@ class RoutingEngine {
329
326
  logger_1.logger.debug(`[RoutingEngine] Selected route: ${selectedRoute.title}`);
330
327
  if (!session.currentRoute ||
331
328
  session.currentRoute.id !== selectedRoute.id) {
332
- updatedSession = (0, session_1.enterRoute)(session, selectedRoute.id, selectedRoute.title);
329
+ updatedSession = (0, utils_1.enterRoute)(session, selectedRoute.id, selectedRoute.title);
333
330
  if (selectedRoute.initialData) {
334
- updatedSession = (0, session_1.mergeCollected)(updatedSession, selectedRoute.initialData);
331
+ updatedSession = (0, utils_1.mergeCollected)(updatedSession, selectedRoute.initialData);
335
332
  logger_1.logger.debug(`[RoutingEngine] Merged initial data:`, selectedRoute.initialData);
336
333
  }
337
334
  logger_1.logger.debug(`[RoutingEngine] Entered route: ${selectedRoute.title}`);
@@ -350,57 +347,56 @@ class RoutingEngine {
350
347
  * Build prompt for step selection within a single route
351
348
  * @private
352
349
  */
353
- buildStepSelectionPrompt(route, currentStep, candidates, data, history, lastMessage, agentMeta) {
354
- const pc = new PromptComposer_1.PromptComposer();
350
+ async buildStepSelectionPrompt(params) {
351
+ const { route, currentStep, candidates, data, history, lastMessage, agentOptions, context, session, } = params;
352
+ const templateContext = { context, session, history };
353
+ const pc = new PromptComposer_1.PromptComposer(templateContext);
355
354
  // Add agent metadata
356
- if (agentMeta?.name || agentMeta?.goal || agentMeta?.description) {
357
- pc.addAgentMeta({
358
- name: agentMeta?.name || "Agent",
359
- description: agentMeta?.description,
360
- goal: agentMeta?.goal,
361
- });
355
+ if (agentOptions) {
356
+ await pc.addAgentMeta(agentOptions);
362
357
  }
363
- const personality = agentMeta?.personality || "Tone: brief, natural, 1-2 short sentences.";
364
- pc.addPersonality(personality);
365
358
  // Add route context
366
- pc.addInstruction(`Active Route: ${route.title}\nDescription: ${route.description || "N/A"}`);
359
+ await pc.addInstruction(`Active Route: ${route.title}\nDescription: ${route.description || "N/A"}`);
367
360
  // Add current step context
368
361
  if (currentStep) {
369
- pc.addInstruction(`Current Step: ${currentStep.id}\nDescription: ${currentStep.description || "N/A"}`);
362
+ await pc.addInstruction(`Current Step: ${currentStep.id}\nDescription: ${currentStep.description || "N/A"}`);
370
363
  }
371
364
  else {
372
- pc.addInstruction("Current Step: None (entering route)");
365
+ await pc.addInstruction("Current Step: None (entering route)");
373
366
  }
374
367
  // Add collected data context
375
368
  if (Object.keys(data).length > 0) {
376
- pc.addInstruction(`Collected Data So Far:\n${JSON.stringify(data, null, 2)}`);
369
+ await pc.addInstruction(`Collected Data So Far:\n${JSON.stringify(data, null, 2)}`);
377
370
  }
378
371
  else {
379
- pc.addInstruction("Collected Data: None yet");
372
+ await pc.addInstruction("Collected Data: None yet");
380
373
  }
381
374
  // Add conversation history
382
- pc.addInteractionHistory(history);
383
- pc.addLastMessage(lastMessage);
375
+ await pc.addInteractionHistory(history);
376
+ await pc.addLastMessage(lastMessage);
384
377
  // Add candidate steps
385
- const stepDescriptions = candidates.map((candidate, idx) => {
378
+ const stepDescriptions = [];
379
+ for (const candidate of candidates) {
380
+ const idx = candidates.indexOf(candidate);
386
381
  const parts = [
387
382
  `${idx + 1}. Step ID: ${candidate.step.id}`,
388
383
  ` Description: ${candidate.step.description || "N/A"}`,
389
384
  ];
390
- if (candidate.condition) {
391
- parts.push(` Condition: ${candidate.condition}`);
385
+ if (candidate.step.when) {
386
+ const renderedWhen = await (0, template_1.render)(candidate.step.when, templateContext);
387
+ parts.push(` When this step should be completed: ${renderedWhen}`);
392
388
  }
393
- if (candidate.requires && candidate.requires.length > 0) {
394
- parts.push(` Required Data: ${candidate.requires.join(", ")}`);
389
+ if (candidate.step.requires && candidate.step.requires.length > 0) {
390
+ parts.push(` Required Data: ${candidate.step.requires.join(", ")}`);
395
391
  }
396
- if (candidate.collectFields && candidate.collectFields.length > 0) {
397
- parts.push(` Collects: ${candidate.collectFields.join(", ")}`);
392
+ if (candidate.step.collect && candidate.step.collect.length > 0) {
393
+ parts.push(` Collects: ${candidate.step.collect.join(", ")}`);
398
394
  }
399
- return parts.join("\n");
400
- });
401
- pc.addInstruction(`Available Steps to Transition To:\n${stepDescriptions.join("\n\n")}`);
402
- // Add decision instructions
403
- pc.addInstruction([
395
+ stepDescriptions.push(parts.join("\n"));
396
+ }
397
+ await pc.addInstruction(`Available Steps to Transition To:\n${stepDescriptions.join("\n\n")}`);
398
+ // Add decision prompt
399
+ await pc.addInstruction([
404
400
  "Task: Decide which step to transition to based on:",
405
401
  "1. The user's current message and intent",
406
402
  "2. The conversation history and context",
@@ -422,7 +418,7 @@ class RoutingEngine {
422
418
  * Build schema for step selection
423
419
  * @private
424
420
  */
425
- buildStepSelectionSchema(validStepIds) {
421
+ buildStepSelectionSchema(validSteps) {
426
422
  return {
427
423
  description: "Step transition decision based on conversation context and collected data",
428
424
  type: "object",
@@ -436,7 +432,7 @@ class RoutingEngine {
436
432
  type: "string",
437
433
  nullable: false,
438
434
  description: "The ID of the selected step to transition to",
439
- enum: validStepIds,
435
+ enum: validSteps.map((s) => s.id),
440
436
  },
441
437
  responseDirectives: {
442
438
  type: "array",
@@ -492,7 +488,7 @@ class RoutingEngine {
492
488
  type: "string",
493
489
  nullable: false,
494
490
  description: "The step ID to transition to within the active route (required if continuing in current route)",
495
- enum: activeRouteSteps.map((s) => s.stepId),
491
+ enum: activeRouteSteps.map((s) => s.id),
496
492
  };
497
493
  base.properties.stepReasoning = {
498
494
  type: "string",
@@ -511,18 +507,14 @@ class RoutingEngine {
511
507
  }
512
508
  return base;
513
509
  }
514
- buildRoutingPrompt(history, routes, lastMessage, agentMeta, session, activeRouteSteps) {
515
- const pc = new PromptComposer_1.PromptComposer();
516
- if (agentMeta?.name || agentMeta?.goal || agentMeta?.description) {
517
- pc.addAgentMeta({
518
- name: agentMeta?.name || "Agent",
519
- description: agentMeta?.description,
520
- goal: agentMeta?.goal,
521
- });
510
+ async buildRoutingPrompt(params) {
511
+ const { history, routes, lastMessage, agentOptions, session, activeRouteSteps, context, } = params;
512
+ const templateContext = { context, session, history };
513
+ const pc = new PromptComposer_1.PromptComposer(templateContext);
514
+ if (agentOptions) {
515
+ await pc.addAgentMeta(agentOptions);
522
516
  }
523
- const personality = agentMeta?.personality || "Tone: brief, natural, 1-2 short sentences.";
524
- pc.addPersonality(personality);
525
- pc.addInstruction("Task: Intent analysis and route scoring (0-100). Score ALL listed routes.");
517
+ await pc.addInstruction("Task: Intent analysis and route scoring (0-100). Score ALL listed routes.");
526
518
  // Add session context if available
527
519
  if (session?.currentRoute) {
528
520
  const sessionInfo = [
@@ -539,43 +531,45 @@ class RoutingEngine {
539
531
  sessionInfo.push(`- Collected data: ${JSON.stringify(session.data)}`);
540
532
  }
541
533
  sessionInfo.push("Note: User is mid-conversation. They may want to continue current route or switch to a new one based on their intent.");
542
- pc.addInstruction(sessionInfo.join("\n"));
534
+ await pc.addInstruction(sessionInfo.join("\n"));
543
535
  // Add available steps for the active route
544
536
  if (activeRouteSteps && activeRouteSteps.length > 0) {
545
537
  const stepInfo = [
546
538
  "",
547
539
  "Available steps in active route (choose one to transition to):",
548
540
  ];
549
- activeRouteSteps.forEach((step, idx) => {
550
- stepInfo.push(`${idx + 1}. Step: ${step.stepId}`);
541
+ for (const step of activeRouteSteps) {
542
+ const idx = activeRouteSteps.indexOf(step);
543
+ stepInfo.push(`${idx + 1}. Step: ${step.id}`);
551
544
  if (step.description) {
552
545
  stepInfo.push(` Description: ${step.description}`);
553
546
  }
554
- if (step.condition) {
555
- stepInfo.push(` Condition: ${step.condition}`);
547
+ const renderedWhen = await (0, template_1.render)(step.when, templateContext);
548
+ if (step.when) {
549
+ stepInfo.push(` When this step should be completed: ${renderedWhen}`);
556
550
  }
557
551
  if (step.requires && step.requires.length > 0) {
558
552
  stepInfo.push(` Required data: ${step.requires.join(", ")}`);
559
553
  }
560
- if (step.collectFields && step.collectFields.length > 0) {
561
- stepInfo.push(` Will collect: ${step.collectFields.join(", ")}`);
554
+ if (step.collect && step.collect.length > 0) {
555
+ stepInfo.push(` Will collect: ${step.collect.join(", ")}`);
562
556
  }
563
- });
557
+ }
564
558
  stepInfo.push("");
565
559
  stepInfo.push("IMPORTANT: You MUST select a step to transition to. Evaluate which step makes the most sense based on:");
566
560
  stepInfo.push("- The conversation flow and what's been collected");
567
561
  stepInfo.push("- What data is still needed vs already present");
568
562
  stepInfo.push("- The logical next step in the conversation");
569
563
  stepInfo.push("- Whether conditions for steps are met");
570
- pc.addInstruction(stepInfo.join("\n"));
564
+ await pc.addInstruction(stepInfo.join("\n"));
571
565
  }
572
566
  }
573
- pc.addInteractionHistory(history);
574
- pc.addLastMessage(lastMessage);
567
+ await pc.addInteractionHistory(history);
568
+ await pc.addLastMessage(lastMessage);
575
569
  // Cast to unknown to satisfy generic constraints in composer
576
570
  // This is safe because PromptComposer only reads route metadata (id, title, description)
577
- pc.addRoutingOverview(routes);
578
- pc.addInstruction([
571
+ await pc.addRoutingOverview(routes);
572
+ await pc.addInstruction([
579
573
  "Scoring rules:",
580
574
  "- 90-100: explicit keywords + clear intent",
581
575
  "- 70-89: strong contextual evidence + relevant keywords",
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoutingEngine.js","sourceRoot":"","sources":["../../../../src/core/RoutingEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * SessionManager - Simplified session management with history
3
+ *
4
+ * Provides a clean, pragmatic API for managing sessions and conversation history
5
+ * in both server and client environments.
6
+ */
7
+ import type { SessionState } from "../types/session";
8
+ import type { History } from "../types/history";
9
+ import { PersistenceManager } from "./PersistenceManager";
10
+ import type { PersistenceAdapter } from "../types/persistence";
11
+ /**
12
+ * SessionManager handles session lifecycle and conversation history
13
+ */
14
+ export declare class SessionManager<TData = unknown> {
15
+ private currentSession?;
16
+ private persistenceManager?;
17
+ constructor(persistenceManagerOrAdapter?: PersistenceManager<TData> | PersistenceAdapter<TData>);
18
+ /**
19
+ * Core method: getOrCreate handles both existing and new sessions
20
+ * Works for sessionIds that exist, don't exist, or auto-generated IDs
21
+ */
22
+ getOrCreate(sessionId?: string): Promise<SessionState<TData>>;
23
+ /**
24
+ * Create a new session with optional custom ID
25
+ */
26
+ private create;
27
+ /**
28
+ * Add a message to the session history
29
+ */
30
+ addMessage(role: "user" | "assistant", content: string, name?: string): Promise<void>;
31
+ /**
32
+ * Get the current conversation history
33
+ */
34
+ getHistory(): History;
35
+ /**
36
+ * Set the entire conversation history
37
+ */
38
+ setHistory(history: History): void;
39
+ /**
40
+ * Clear all conversation history
41
+ */
42
+ clearHistory(): void;
43
+ /**
44
+ * Save the current session to persistence
45
+ */
46
+ save(): Promise<void>;
47
+ /**
48
+ * Delete the current session from persistence
49
+ */
50
+ delete(): Promise<void>;
51
+ /**
52
+ * Get the current session
53
+ */
54
+ get current(): SessionState<TData> | undefined;
55
+ /**
56
+ * Get the current session ID
57
+ */
58
+ get id(): string | undefined;
59
+ /**
60
+ * Get collected data from the current session
61
+ */
62
+ getData<T = TData>(): Partial<T> | undefined;
63
+ /**
64
+ * Set/merge data into the current session
65
+ */
66
+ setData<T = TData>(data: Partial<T>): Promise<void>;
67
+ /**
68
+ * Reset the session (creates new session, optionally preserving history)
69
+ */
70
+ reset(preserveHistory?: boolean): Promise<SessionState<TData>>;
71
+ /**
72
+ * Get the persistence manager (for testing purposes)
73
+ */
74
+ getPersistenceManager(): PersistenceManager<TData> | undefined;
75
+ }
76
+ //# sourceMappingURL=SessionManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../../../../src/core/SessionManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;GAEG;AACH,qBAAa,cAAc,CAAC,KAAK,GAAG,OAAO;IACzC,OAAO,CAAC,cAAc,CAAC,CAAsB;IAC7C,OAAO,CAAC,kBAAkB,CAAC,CAA4B;gBAGrD,2BAA2B,CAAC,EACxB,kBAAkB,CAAC,KAAK,CAAC,GACzB,kBAAkB,CAAC,KAAK,CAAC;IAe/B;;;OAGG;IACG,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IA0BnE;;OAEG;YACW,MAAM;IA2BpB;;OAEG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,GAAG,WAAW,EAC1B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAoBhB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAOlC;;OAEG;IACH,YAAY,IAAI,IAAI;IAOpB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAO7B;;OAEG;IACH,IAAI,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,SAAS,CAE7C;IAED;;OAEG;IACH,IAAI,EAAE,IAAI,MAAM,GAAG,SAAS,CAE3B;IAED;;OAEG;IACH,OAAO,CAAC,CAAC,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS;IAI5C;;OAEG;IACG,OAAO,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD;;OAEG;IACG,KAAK,CAAC,eAAe,UAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAqBlE;;OAEG;IACH,qBAAqB,IAAI,kBAAkB,CAAC,KAAK,CAAC,GAAG,SAAS;CAG/D"}