@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,86 @@
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 agent-level collected data from the current session
61
+ */
62
+ getData(): Partial<TData>;
63
+ /**
64
+ * Set/merge agent-level data into the current session
65
+ * This updates the single source of truth for all collected data
66
+ */
67
+ setData(data: Partial<TData>): Promise<void>;
68
+ /**
69
+ * Update specific fields in the agent-level data
70
+ * Provides a more explicit method for data updates
71
+ */
72
+ updateData(updates: Partial<TData>): Promise<void>;
73
+ /**
74
+ * Clear all collected data while preserving session structure
75
+ */
76
+ clearData(): Promise<void>;
77
+ /**
78
+ * Reset the session (creates new session, optionally preserving history)
79
+ */
80
+ reset(preserveHistory?: boolean): Promise<SessionState<TData>>;
81
+ /**
82
+ * Get the persistence manager (for testing purposes)
83
+ */
84
+ getPersistenceManager(): PersistenceManager<TData> | undefined;
85
+ }
86
+ //# 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;IA0BpB;;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,IAAI,OAAO,CAAC,KAAK,CAAC;IAIzB;;;OAGG;IACG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBlD;;;OAGG;IACG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAUhC;;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"}
@@ -0,0 +1,213 @@
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 { PersistenceManager } from "./PersistenceManager";
8
+ /**
9
+ * SessionManager handles session lifecycle and conversation history
10
+ */
11
+ export class SessionManager {
12
+ constructor(persistenceManagerOrAdapter) {
13
+ if (persistenceManagerOrAdapter) {
14
+ // Check if it's a PersistenceManager or an adapter
15
+ if ("saveSessionState" in persistenceManagerOrAdapter) {
16
+ this.persistenceManager = persistenceManagerOrAdapter;
17
+ }
18
+ else {
19
+ // It's an adapter, create a PersistenceManager
20
+ this.persistenceManager = new PersistenceManager({
21
+ adapter: persistenceManagerOrAdapter,
22
+ });
23
+ }
24
+ }
25
+ }
26
+ /**
27
+ * Core method: getOrCreate handles both existing and new sessions
28
+ * Works for sessionIds that exist, don't exist, or auto-generated IDs
29
+ */
30
+ async getOrCreate(sessionId) {
31
+ // If we already have a session and no sessionId specified, return it
32
+ if (this.currentSession && !sessionId) {
33
+ return this.currentSession;
34
+ }
35
+ // If sessionId provided, try to load it first
36
+ if (sessionId && this.persistenceManager) {
37
+ try {
38
+ const session = await this.persistenceManager.loadSessionState(sessionId);
39
+ if (session) {
40
+ this.currentSession = session;
41
+ return session;
42
+ }
43
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
44
+ }
45
+ catch (_error) {
46
+ // Session doesn't exist, will create new one with this ID
47
+ }
48
+ }
49
+ // Create new session (with provided ID or auto-generated)
50
+ return this.create(sessionId);
51
+ }
52
+ /**
53
+ * Create a new session with optional custom ID
54
+ */
55
+ async create(sessionId) {
56
+ const id = sessionId ||
57
+ `session_${Date.now()}_${Math.random().toString(36).slice(2)}`;
58
+ const session = {
59
+ id,
60
+ data: {}, // Agent-level data structure
61
+ routeHistory: [],
62
+ history: [], // Session manages its own history
63
+ metadata: {
64
+ createdAt: new Date(),
65
+ lastUpdatedAt: new Date(),
66
+ },
67
+ };
68
+ this.currentSession = session;
69
+ // Save to persistence if available
70
+ if (this.persistenceManager) {
71
+ await this.persistenceManager.saveSessionState(session.id, session);
72
+ }
73
+ return session;
74
+ }
75
+ /**
76
+ * Add a message to the session history
77
+ */
78
+ async addMessage(role, content, name) {
79
+ const session = await this.getOrCreate();
80
+ if (!session.history) {
81
+ session.history = [];
82
+ }
83
+ const historyItem = {
84
+ role,
85
+ content,
86
+ ...(name && { name }),
87
+ };
88
+ session.history.push(historyItem);
89
+ session.metadata.lastUpdatedAt = new Date();
90
+ // Auto-save to persistence
91
+ await this.save();
92
+ }
93
+ /**
94
+ * Get the current conversation history
95
+ */
96
+ getHistory() {
97
+ return this.currentSession?.history || [];
98
+ }
99
+ /**
100
+ * Set the entire conversation history
101
+ */
102
+ setHistory(history) {
103
+ if (this.currentSession) {
104
+ this.currentSession.history = history ? [...history] : [];
105
+ this.currentSession.metadata.lastUpdatedAt = new Date();
106
+ }
107
+ }
108
+ /**
109
+ * Clear all conversation history
110
+ */
111
+ clearHistory() {
112
+ if (this.currentSession) {
113
+ this.currentSession.history = [];
114
+ this.currentSession.metadata.lastUpdatedAt = new Date();
115
+ }
116
+ }
117
+ /**
118
+ * Save the current session to persistence
119
+ */
120
+ async save() {
121
+ if (this.currentSession && this.persistenceManager) {
122
+ await this.persistenceManager.saveSessionState(this.currentSession.id, this.currentSession);
123
+ }
124
+ }
125
+ /**
126
+ * Delete the current session from persistence
127
+ */
128
+ async delete() {
129
+ if (this.currentSession && this.persistenceManager) {
130
+ await this.persistenceManager.deleteSession(this.currentSession.id);
131
+ this.currentSession = undefined;
132
+ }
133
+ }
134
+ /**
135
+ * Get the current session
136
+ */
137
+ get current() {
138
+ return this.currentSession;
139
+ }
140
+ /**
141
+ * Get the current session ID
142
+ */
143
+ get id() {
144
+ return this.currentSession?.id;
145
+ }
146
+ /**
147
+ * Get agent-level collected data from the current session
148
+ */
149
+ getData() {
150
+ return this.currentSession?.data || {};
151
+ }
152
+ /**
153
+ * Set/merge agent-level data into the current session
154
+ * This updates the single source of truth for all collected data
155
+ */
156
+ async setData(data) {
157
+ // Ensure session exists
158
+ await this.getOrCreate();
159
+ if (this.currentSession && data) {
160
+ this.currentSession.data = {
161
+ ...this.currentSession.data,
162
+ ...data,
163
+ };
164
+ this.currentSession.metadata.lastUpdatedAt = new Date();
165
+ // Auto-save to persistence
166
+ await this.save();
167
+ }
168
+ }
169
+ /**
170
+ * Update specific fields in the agent-level data
171
+ * Provides a more explicit method for data updates
172
+ */
173
+ async updateData(updates) {
174
+ await this.setData(updates);
175
+ }
176
+ /**
177
+ * Clear all collected data while preserving session structure
178
+ */
179
+ async clearData() {
180
+ if (this.currentSession) {
181
+ this.currentSession.data = {};
182
+ this.currentSession.metadata.lastUpdatedAt = new Date();
183
+ // Auto-save to persistence
184
+ await this.save();
185
+ }
186
+ }
187
+ /**
188
+ * Reset the session (creates new session, optionally preserving history)
189
+ */
190
+ async reset(preserveHistory = false) {
191
+ const oldId = this.currentSession?.id;
192
+ const history = preserveHistory ? this.currentSession?.history : [];
193
+ // Create new session
194
+ const newSession = await this.create();
195
+ // Preserve history if requested
196
+ if (preserveHistory && history) {
197
+ newSession.history = [...history];
198
+ }
199
+ // Clean up old session from persistence
200
+ if (oldId && this.persistenceManager) {
201
+ await this.persistenceManager.deleteSession(oldId);
202
+ }
203
+ await this.save();
204
+ return newSession;
205
+ }
206
+ /**
207
+ * Get the persistence manager (for testing purposes)
208
+ */
209
+ getPersistenceManager() {
210
+ return this.persistenceManager;
211
+ }
212
+ }
213
+ //# sourceMappingURL=SessionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionManager.js","sourceRoot":"","sources":["../../../src/core/SessionManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D;;GAEG;AACH,MAAM,OAAO,cAAc;IAIzB,YACE,2BAE6B;QAE7B,IAAI,2BAA2B,EAAE,CAAC;YAChC,mDAAmD;YACnD,IAAI,kBAAkB,IAAI,2BAA2B,EAAE,CAAC;gBACtD,IAAI,CAAC,kBAAkB,GAAG,2BAA2B,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,+CAA+C;gBAC/C,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC;oBAC/C,OAAO,EAAE,2BAA2B;iBACrC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,SAAkB;QAClC,qEAAqE;QACrE,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;QAED,8CAA8C;QAC9C,IAAI,SAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAC5D,SAAS,CACV,CAAC;gBACF,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;oBAC9B,OAAO,OAAO,CAAC;gBACjB,CAAC;gBACD,6DAA6D;YAC/D,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,0DAA0D;YAC5D,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,MAAM,CAAC,SAAkB;QACrC,MAAM,EAAE,GACN,SAAS;YACT,WAAW,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjE,MAAM,OAAO,GAAwB;YACnC,EAAE;YACF,IAAI,EAAE,EAAoB,EAAE,6BAA6B;YACzD,YAAY,EAAE,EAAE;YAChB,OAAO,EAAE,EAAE,EAAE,kCAAkC;YAC/C,QAAQ,EAAE;gBACR,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,aAAa,EAAE,IAAI,IAAI,EAAE;aAC1B;SACF,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAE9B,mCAAmC;QACnC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACd,IAA0B,EAC1B,OAAe,EACf,IAAa;QAEb,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;QACvB,CAAC;QAED,MAAM,WAAW,GAAgB;YAC/B,IAAI;YACJ,OAAO;YACP,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;SACtB,CAAC;QAEF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClC,OAAO,CAAC,QAAS,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC;QAE7C,2BAA2B;QAC3B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,cAAc,EAAE,OAAO,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAgB;QACzB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,cAAc,CAAC,QAAS,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,EAAE,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,QAAS,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACnD,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAC5C,IAAI,CAAC,cAAc,CAAC,EAAE,EACtB,IAAI,CAAC,cAAc,CACpB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACnD,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAK,EAAqB,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,IAAoB;QAChC,wBAAwB;QACxB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG;gBACzB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI;gBAC3B,GAAG,IAAI;aACR,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,QAAS,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC;YAEzD,2BAA2B;YAC3B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,OAAuB;QACtC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,EAAoB,CAAC;YAChD,IAAI,CAAC,cAAc,CAAC,QAAS,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC;YAEzD,2BAA2B;YAC3B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpE,qBAAqB;QACrB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEvC,gCAAgC;QAChC,IAAI,eAAe,IAAI,OAAO,EAAE,CAAC;YAC/B,UAAU,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,wCAAwC;QACxC,IAAI,KAAK,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;CACF"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Step in the route DSL
3
+ */
4
+ import type { StepRef, StepOptions, StepResult, BranchSpec, BranchResult, Guideline, Tool } from "../types";
5
+ import { Template } from "../types/template";
6
+ /**
7
+ * Represents a step within a route
8
+ */
9
+ export declare class Step<TContext = unknown, TData = unknown> {
10
+ readonly id: string;
11
+ private nextSteps;
12
+ private guidelines;
13
+ readonly routeId: string;
14
+ collect?: (keyof TData)[];
15
+ description?: string;
16
+ when?: Template<TContext, TData>;
17
+ skipIf?: (data: Partial<TData>) => boolean;
18
+ requires?: (keyof TData)[];
19
+ prompt?: Template<TContext, TData>;
20
+ prepare?: string | Tool<TContext, TData, unknown[], unknown> | ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
21
+ finalize?: string | Tool<TContext, TData, unknown[], unknown> | ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
22
+ tools?: (string | Tool<TContext, TData, unknown[], unknown>)[];
23
+ constructor(routeId: string, options?: StepOptions<TContext, TData>);
24
+ /**
25
+ * Configure the step properties after creation
26
+ * Useful for overriding initial step configuration
27
+ */
28
+ configure(config: {
29
+ description?: string;
30
+ collect?: (keyof TData)[];
31
+ skipIf?: (data: Partial<TData>) => boolean;
32
+ requires?: (keyof TData)[];
33
+ prompt?: Template<TContext, TData>;
34
+ prepare?: string | Tool<TContext, TData, unknown[], unknown> | ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
35
+ finalize?: string | Tool<TContext, TData, unknown[], unknown> | ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
36
+ tools?: (string | Tool<TContext, TData, unknown[], unknown>)[];
37
+ }): this;
38
+ /**
39
+ * Shortcut to end the current route
40
+ *
41
+ * @param options - Optional step options for the end step
42
+ * @returns Terminal step result
43
+ */
44
+ endRoute(options?: Omit<StepOptions<TContext, TData>, "step">): StepResult<TContext, TData>;
45
+ /**
46
+ * Create a transition from this step to another
47
+ *
48
+ * @param spec - Transition specification (prompt, tool, or direct step)
49
+ * @returns StepResult that supports chaining
50
+ */
51
+ nextStep(spec: StepOptions<TContext, TData>): StepResult<TContext, TData>;
52
+ /**
53
+ * Create multiple branches from this step
54
+ *
55
+ * @param branches - Array of branch specifications
56
+ * @returns BranchResult mapping branch names to their step results
57
+ */
58
+ branch(branches: BranchSpec<TContext, TData>[]): BranchResult<TContext, TData>;
59
+ /**
60
+ * Add a guideline specific to this step
61
+ */
62
+ addGuideline(guideline: Guideline<TContext>): void;
63
+ /**
64
+ * Get guidelines for this step
65
+ */
66
+ getGuidelines(): Guideline<TContext>[];
67
+ /**
68
+ * Get all transitions from this step
69
+ */
70
+ getTransitions(): Step<TContext, TData>[];
71
+ /**
72
+ * Check if this step should be skipped based on collected data
73
+ */
74
+ shouldSkip(data: Partial<TData>): boolean;
75
+ /**
76
+ * Check if this step has all required data to proceed
77
+ */
78
+ hasRequires(data: Partial<TData>): boolean;
79
+ /**
80
+ * Get step reference
81
+ */
82
+ getRef(): StepRef;
83
+ /**
84
+ * Create a step reference with nextStep capability for chaining
85
+ */
86
+ private createStepRefWithTransition;
87
+ /**
88
+ * Create a terminal step reference (for END_ROUTE)
89
+ */
90
+ private createTerminalRef;
91
+ /**
92
+ * Create a transition result for this step
93
+ */
94
+ asStepResult(): StepResult<TContext, TData>;
95
+ }
96
+ //# sourceMappingURL=Step.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Step.d.ts","sourceRoot":"","sources":["../../../src/core/Step.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Step in the route DSL
3
+ */
4
+ import { END_ROUTE, END_ROUTE_ID } from "../constants";
5
+ import { generateStepId } from "../utils/id";
6
+ /**
7
+ * Represents a step within a route
8
+ */
9
+ export class Step {
10
+ constructor(routeId, options = {}) {
11
+ this.nextSteps = [];
12
+ this.guidelines = [];
13
+ // Use provided ID or generate a deterministic one
14
+ this.id = options.id || generateStepId(routeId, options.description);
15
+ this.routeId = routeId;
16
+ this.description = options.description;
17
+ this.collect = options.collect;
18
+ this.skipIf = options.skipIf;
19
+ this.requires = options.requires;
20
+ this.prompt = options.prompt;
21
+ this.when = options.when;
22
+ this.prepare = options.prepare;
23
+ this.finalize = options.finalize;
24
+ this.tools = options.tools;
25
+ }
26
+ /**
27
+ * Configure the step properties after creation
28
+ * Useful for overriding initial step configuration
29
+ */
30
+ configure(config) {
31
+ if (config.description !== undefined) {
32
+ this.description = config.description;
33
+ }
34
+ if (config.collect !== undefined) {
35
+ this.collect = config.collect;
36
+ }
37
+ if (config.skipIf !== undefined) {
38
+ this.skipIf = config.skipIf;
39
+ }
40
+ if (config.requires !== undefined) {
41
+ this.requires = config.requires;
42
+ }
43
+ if (config.prompt !== undefined) {
44
+ this.prompt = config.prompt;
45
+ }
46
+ if (config.prepare !== undefined) {
47
+ this.prepare = config.prepare;
48
+ }
49
+ if (config.finalize !== undefined) {
50
+ this.finalize = config.finalize;
51
+ }
52
+ if (config.tools !== undefined) {
53
+ this.tools = config.tools;
54
+ }
55
+ return this;
56
+ }
57
+ /**
58
+ * Shortcut to end the current route
59
+ *
60
+ * @param options - Optional step options for the end step
61
+ * @returns Terminal step result
62
+ */
63
+ endRoute(options = {}) {
64
+ return this.nextStep({
65
+ ...options,
66
+ step: END_ROUTE,
67
+ });
68
+ }
69
+ /**
70
+ * Create a transition from this step to another
71
+ *
72
+ * @param spec - Transition specification (prompt, tool, or direct step)
73
+ * @returns StepResult that supports chaining
74
+ */
75
+ nextStep(spec) {
76
+ // Handle END_ROUTE
77
+ if (spec.step && typeof spec.step === "symbol" && spec.step === END_ROUTE) {
78
+ const endStep = new Step(this.routeId, {
79
+ ...spec,
80
+ id: END_ROUTE_ID,
81
+ });
82
+ this.nextSteps.push(endStep);
83
+ return this.createTerminalRef();
84
+ }
85
+ // Handle direct step reference
86
+ if (spec.step && typeof spec.step !== "symbol") {
87
+ // This is a bit tricky. We need to find the actual Step instance.
88
+ // For now, let's assume the user will provide a Step instance directly.
89
+ // This part might need to be revisited.
90
+ }
91
+ // Create new target step for prompt or tool
92
+ const targetStep = new Step(this.routeId, spec);
93
+ this.nextSteps.push(targetStep);
94
+ return this.createStepRefWithTransition(targetStep.getRef(), targetStep);
95
+ }
96
+ /**
97
+ * Create multiple branches from this step
98
+ *
99
+ * @param branches - Array of branch specifications
100
+ * @returns BranchResult mapping branch names to their step results
101
+ */
102
+ branch(branches) {
103
+ const result = {};
104
+ for (const branchSpec of branches) {
105
+ // Create step options with optional ID
106
+ const stepOptions = branchSpec.id
107
+ ? { ...branchSpec.step, id: branchSpec.id }
108
+ : branchSpec.step;
109
+ // Create a new step for this branch
110
+ const branchStep = new Step(this.routeId, stepOptions);
111
+ // Add it to our transitions
112
+ this.nextSteps.push(branchStep);
113
+ // Create a step result for chaining
114
+ const branchName = branchSpec.name;
115
+ result[branchName] = this.createStepRefWithTransition(branchStep.getRef(), branchStep);
116
+ }
117
+ return result;
118
+ }
119
+ /**
120
+ * Add a guideline specific to this step
121
+ */
122
+ addGuideline(guideline) {
123
+ this.guidelines.push(guideline);
124
+ }
125
+ /**
126
+ * Get guidelines for this step
127
+ */
128
+ getGuidelines() {
129
+ return [...this.guidelines];
130
+ }
131
+ /**
132
+ * Get all transitions from this step
133
+ */
134
+ getTransitions() {
135
+ return [...this.nextSteps];
136
+ }
137
+ /**
138
+ * Check if this step should be skipped based on collected data
139
+ */
140
+ shouldSkip(data) {
141
+ if (!this.skipIf)
142
+ return false;
143
+ return this.skipIf(data);
144
+ }
145
+ /**
146
+ * Check if this step has all required data to proceed
147
+ */
148
+ hasRequires(data) {
149
+ if (!this.requires || this.requires.length === 0)
150
+ return true;
151
+ return this.requires.every((key) => data[key] !== undefined);
152
+ }
153
+ /**
154
+ * Get step reference
155
+ */
156
+ getRef() {
157
+ return {
158
+ id: this.id,
159
+ routeId: this.routeId,
160
+ };
161
+ }
162
+ /**
163
+ * Create a step reference with nextStep capability for chaining
164
+ */
165
+ createStepRefWithTransition(ref, step) {
166
+ const stepInstance = step || this;
167
+ return {
168
+ ...ref,
169
+ nextStep: (spec) => stepInstance.nextStep(spec),
170
+ branch: (branches) => stepInstance.branch(branches),
171
+ };
172
+ }
173
+ /**
174
+ * Create a terminal step reference (for END_ROUTE)
175
+ */
176
+ createTerminalRef() {
177
+ const terminalRef = {
178
+ id: END_ROUTE_ID,
179
+ routeId: this.routeId,
180
+ };
181
+ return {
182
+ ...terminalRef,
183
+ nextStep: () => {
184
+ throw new Error("Cannot transition from END_ROUTE step");
185
+ },
186
+ branch: () => {
187
+ throw new Error("Cannot branch from END_ROUTE step");
188
+ },
189
+ };
190
+ }
191
+ /**
192
+ * Create a transition result for this step
193
+ */
194
+ asStepResult() {
195
+ return {
196
+ ...this.getRef(),
197
+ nextStep: (spec) => this.nextStep(spec),
198
+ branch: (branches) => this.branch(branches),
199
+ };
200
+ }
201
+ }
202
+ //# sourceMappingURL=Step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Step.js","sourceRoot":"","sources":["../../../src/core/Step.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * ToolExecutor - Simple utility for executing tools with context
3
+ *
4
+ * Tools execute BEFORE message generation to enrich context with data.
5
+ * The LLM sees the enriched context when generating responses.
6
+ */
7
+ import type { Event, Tool } from "../types";
8
+ export interface ToolExecutionResult {
9
+ toolName: string;
10
+ success: boolean;
11
+ data?: unknown;
12
+ contextUpdate?: Record<string, unknown>;
13
+ dataUpdate?: Record<string, unknown>;
14
+ error?: string;
15
+ }
16
+ export interface ExecuteToolParams<TContext = unknown, TData = unknown> {
17
+ tool: Tool<TContext, TData, unknown[], unknown>;
18
+ context: TContext;
19
+ updateContext: (updates: Partial<TContext>) => Promise<void>;
20
+ updateData: (updates: Partial<TData>) => Promise<void>;
21
+ history: Event[];
22
+ data?: Partial<TData>;
23
+ toolArguments?: Record<string, unknown>;
24
+ }
25
+ export interface ExecuteToolsParams<TContext = unknown, TData = unknown> {
26
+ tools: Array<Tool<TContext, TData, unknown[], unknown>>;
27
+ context: TContext;
28
+ updateContext: (updates: Partial<TContext>) => Promise<void>;
29
+ updateData: (updates: Partial<TData>) => Promise<void>;
30
+ history: Event[];
31
+ data?: Partial<TData>;
32
+ }
33
+ export declare class ToolExecutor<TContext = unknown, TData = unknown> {
34
+ /**
35
+ * Execute a single tool with context and collected data
36
+ * @param params - Execution parameters
37
+ */
38
+ executeTool(params: ExecuteToolParams<TContext, TData>): Promise<ToolExecutionResult>;
39
+ /**
40
+ * Execute multiple tools in sequence
41
+ * @param params - Execution parameters
42
+ */
43
+ executeTools(params: ExecuteToolsParams<TContext, TData>): Promise<ToolExecutionResult[]>;
44
+ }
45
+ //# sourceMappingURL=ToolExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolExecutor.d.ts","sourceRoot":"","sources":["../../../src/core/ToolExecutor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAe,MAAM,UAAU,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB,CAAC,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IACpE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,EAAE,QAAQ,CAAC;IAClB,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,kBAAkB,CAAC,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IACrE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,OAAO,EAAE,QAAQ,CAAC;IAClB,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACvB;AAED,qBAAa,YAAY,CAAC,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAC3D;;;OAGG;IACG,WAAW,CACf,MAAM,EAAE,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,GACzC,OAAO,CAAC,mBAAmB,CAAC;IAsC/B;;;OAGG;IACG,YAAY,CAChB,MAAM,EAAE,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,GAC1C,OAAO,CAAC,mBAAmB,EAAE,CAAC;CAqClC"}