@falai/agent 0.9.0 → 1.0.0

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 (654) hide show
  1. package/README.md +304 -72
  2. package/dist/adapters/MemoryAdapter.d.ts.map +1 -0
  3. package/dist/adapters/MemoryAdapter.js.map +1 -0
  4. package/dist/adapters/MongoAdapter.d.ts.map +1 -0
  5. package/dist/adapters/MongoAdapter.js.map +1 -0
  6. package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -0
  7. package/dist/adapters/OpenSearchAdapter.js.map +1 -0
  8. package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  9. package/dist/adapters/PostgreSQLAdapter.js.map +1 -0
  10. package/dist/adapters/PrismaAdapter.d.ts.map +1 -0
  11. package/dist/{src/adapters → adapters}/PrismaAdapter.js +3 -2
  12. package/dist/adapters/PrismaAdapter.js.map +1 -0
  13. package/dist/adapters/RedisAdapter.d.ts.map +1 -0
  14. package/dist/{src/adapters → adapters}/RedisAdapter.js +3 -3
  15. package/dist/adapters/RedisAdapter.js.map +1 -0
  16. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -0
  17. package/dist/adapters/SQLiteAdapter.js.map +1 -0
  18. package/dist/adapters/index.d.ts.map +1 -0
  19. package/dist/adapters/index.js.map +1 -0
  20. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -0
  21. package/dist/cjs/adapters/MongoAdapter.js.map +1 -0
  22. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -0
  23. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -0
  24. package/dist/{src → cjs}/adapters/PrismaAdapter.d.ts.map +1 -1
  25. package/dist/cjs/{src/adapters → adapters}/PrismaAdapter.js +3 -2
  26. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -0
  27. package/dist/cjs/{src/adapters → adapters}/RedisAdapter.js +2 -2
  28. package/dist/cjs/adapters/RedisAdapter.js.map +1 -0
  29. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -0
  30. package/dist/cjs/adapters/index.js.map +1 -0
  31. package/dist/cjs/constants/index.js.map +1 -0
  32. package/dist/{src → cjs}/core/Agent.d.ts +25 -6
  33. package/dist/cjs/core/Agent.d.ts.map +1 -0
  34. package/dist/cjs/{src/core → core}/Agent.js +121 -37
  35. package/dist/cjs/core/Agent.js.map +1 -0
  36. package/dist/cjs/core/BatchExecutor.d.ts +353 -0
  37. package/dist/cjs/core/BatchExecutor.d.ts.map +1 -0
  38. package/dist/cjs/core/BatchExecutor.js +842 -0
  39. package/dist/cjs/core/BatchExecutor.js.map +1 -0
  40. package/dist/cjs/core/BatchPromptBuilder.d.ts +86 -0
  41. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +1 -0
  42. package/dist/cjs/core/BatchPromptBuilder.js +201 -0
  43. package/dist/cjs/core/BatchPromptBuilder.js.map +1 -0
  44. package/dist/cjs/core/Events.js.map +1 -0
  45. package/dist/cjs/core/PersistenceManager.js.map +1 -0
  46. package/dist/{src → cjs}/core/PromptComposer.d.ts +1 -1
  47. package/dist/cjs/core/PromptComposer.d.ts.map +1 -0
  48. package/dist/cjs/{src/core → core}/PromptComposer.js +44 -7
  49. package/dist/cjs/core/PromptComposer.js.map +1 -0
  50. package/dist/{src → cjs}/core/ResponseEngine.d.ts.map +1 -1
  51. package/dist/cjs/core/ResponseEngine.js +202 -0
  52. package/dist/cjs/core/ResponseEngine.js.map +1 -0
  53. package/dist/{src → cjs}/core/ResponseModal.d.ts +54 -3
  54. package/dist/cjs/core/ResponseModal.d.ts.map +1 -0
  55. package/dist/cjs/{src/core → core}/ResponseModal.js +807 -121
  56. package/dist/cjs/core/ResponseModal.js.map +1 -0
  57. package/dist/{src → cjs}/core/ResponsePipeline.d.ts +10 -6
  58. package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -0
  59. package/dist/cjs/{src/core → core}/ResponsePipeline.js +60 -25
  60. package/dist/cjs/core/ResponsePipeline.js.map +1 -0
  61. package/dist/{src → cjs}/core/Route.d.ts +46 -10
  62. package/dist/cjs/core/Route.d.ts.map +1 -0
  63. package/dist/cjs/core/Route.js +541 -0
  64. package/dist/cjs/core/Route.js.map +1 -0
  65. package/dist/cjs/{src/core → core}/RoutingEngine.d.ts +35 -5
  66. package/dist/cjs/core/RoutingEngine.d.ts.map +1 -0
  67. package/dist/cjs/{src/core → core}/RoutingEngine.js +360 -98
  68. package/dist/cjs/core/RoutingEngine.js.map +1 -0
  69. package/dist/{src → cjs}/core/SessionManager.d.ts +9 -1
  70. package/dist/cjs/core/SessionManager.d.ts.map +1 -0
  71. package/dist/cjs/{src/core → core}/SessionManager.js +27 -5
  72. package/dist/cjs/core/SessionManager.js.map +1 -0
  73. package/dist/cjs/core/Step.d.ts +170 -0
  74. package/dist/cjs/core/Step.d.ts.map +1 -0
  75. package/dist/cjs/core/Step.js +448 -0
  76. package/dist/cjs/core/Step.js.map +1 -0
  77. package/dist/cjs/core/ToolManager.d.ts +234 -0
  78. package/dist/cjs/core/ToolManager.d.ts.map +1 -0
  79. package/dist/cjs/core/ToolManager.js +1117 -0
  80. package/dist/cjs/core/ToolManager.js.map +1 -0
  81. package/dist/{src → cjs}/index.d.ts +5 -3
  82. package/dist/cjs/index.d.ts.map +1 -0
  83. package/dist/cjs/{src/index.js → index.js} +16 -3
  84. package/dist/cjs/index.js.map +1 -0
  85. package/dist/cjs/{src/providers → providers}/AnthropicProvider.js +18 -18
  86. package/dist/cjs/providers/AnthropicProvider.js.map +1 -0
  87. package/dist/{src → cjs}/providers/GeminiProvider.d.ts.map +1 -1
  88. package/dist/cjs/{src/providers → providers}/GeminiProvider.js +123 -51
  89. package/dist/cjs/providers/GeminiProvider.js.map +1 -0
  90. package/dist/cjs/{src/providers → providers}/OpenAIProvider.js +19 -19
  91. package/dist/cjs/providers/OpenAIProvider.js.map +1 -0
  92. package/dist/cjs/{src/providers → providers}/OpenRouterProvider.js +19 -19
  93. package/dist/cjs/providers/OpenRouterProvider.js.map +1 -0
  94. package/dist/cjs/providers/index.js.map +1 -0
  95. package/dist/cjs/{src/types → types}/agent.d.ts +12 -4
  96. package/dist/cjs/types/agent.d.ts.map +1 -0
  97. package/dist/cjs/types/agent.js.map +1 -0
  98. package/dist/{src → cjs}/types/ai.js.map +1 -1
  99. package/dist/cjs/types/history.js.map +1 -0
  100. package/dist/cjs/{src/types → types}/index.d.ts +5 -3
  101. package/dist/{src → cjs}/types/index.d.ts.map +1 -1
  102. package/dist/cjs/{src/types → types}/index.js +8 -1
  103. package/dist/cjs/types/index.js.map +1 -0
  104. package/dist/cjs/types/persistence.js.map +1 -0
  105. package/dist/cjs/{src/types → types}/route.d.ts +116 -15
  106. package/dist/cjs/types/route.d.ts.map +1 -0
  107. package/dist/cjs/{src/types → types}/route.js.map +1 -1
  108. package/dist/cjs/types/session.js.map +1 -0
  109. package/dist/cjs/types/template.d.ts +88 -0
  110. package/dist/cjs/types/template.d.ts.map +1 -0
  111. package/dist/cjs/types/tool.d.ts +130 -0
  112. package/dist/cjs/types/tool.d.ts.map +1 -0
  113. package/dist/cjs/types/tool.js +19 -0
  114. package/dist/cjs/types/tool.js.map +1 -0
  115. package/dist/cjs/utils/clone.js.map +1 -0
  116. package/dist/cjs/utils/condition.d.ts +38 -0
  117. package/dist/cjs/utils/condition.d.ts.map +1 -0
  118. package/dist/cjs/utils/condition.js +168 -0
  119. package/dist/cjs/utils/condition.js.map +1 -0
  120. package/dist/cjs/utils/event.js.map +1 -0
  121. package/dist/cjs/utils/history.js.map +1 -0
  122. package/dist/cjs/utils/id.js.map +1 -0
  123. package/dist/cjs/{src/utils → utils}/index.d.ts +3 -1
  124. package/dist/cjs/utils/index.d.ts.map +1 -0
  125. package/dist/cjs/{src/utils → utils}/index.js +12 -1
  126. package/dist/cjs/utils/index.js.map +1 -0
  127. package/dist/cjs/utils/json.d.ts +16 -0
  128. package/dist/cjs/utils/json.d.ts.map +1 -0
  129. package/dist/cjs/utils/json.js +47 -0
  130. package/dist/cjs/utils/json.js.map +1 -0
  131. package/dist/cjs/utils/logger.js.map +1 -0
  132. package/dist/{src → cjs}/utils/retry.d.ts +0 -3
  133. package/dist/cjs/utils/retry.d.ts.map +1 -0
  134. package/dist/cjs/{src/utils → utils}/retry.js +8 -7
  135. package/dist/cjs/utils/retry.js.map +1 -0
  136. package/dist/cjs/utils/session.js.map +1 -0
  137. package/dist/{src → cjs}/utils/template.d.ts +48 -0
  138. package/dist/cjs/utils/template.d.ts.map +1 -0
  139. package/dist/cjs/{src/utils → utils}/template.js +100 -0
  140. package/dist/cjs/utils/template.js.map +1 -0
  141. package/dist/constants/index.d.ts.map +1 -0
  142. package/dist/constants/index.js.map +1 -0
  143. package/dist/{cjs/src/core → core}/Agent.d.ts +25 -6
  144. package/dist/core/Agent.d.ts.map +1 -0
  145. package/dist/{src/core → core}/Agent.js +122 -38
  146. package/dist/core/Agent.js.map +1 -0
  147. package/dist/core/BatchExecutor.d.ts +353 -0
  148. package/dist/core/BatchExecutor.d.ts.map +1 -0
  149. package/dist/core/BatchExecutor.js +837 -0
  150. package/dist/core/BatchExecutor.js.map +1 -0
  151. package/dist/core/BatchPromptBuilder.d.ts +86 -0
  152. package/dist/core/BatchPromptBuilder.d.ts.map +1 -0
  153. package/dist/core/BatchPromptBuilder.js +197 -0
  154. package/dist/core/BatchPromptBuilder.js.map +1 -0
  155. package/dist/core/Events.d.ts.map +1 -0
  156. package/dist/core/Events.js.map +1 -0
  157. package/dist/core/PersistenceManager.d.ts.map +1 -0
  158. package/dist/core/PersistenceManager.js.map +1 -0
  159. package/dist/{cjs/src/core → core}/PromptComposer.d.ts +1 -1
  160. package/dist/core/PromptComposer.d.ts.map +1 -0
  161. package/dist/{src/core → core}/PromptComposer.js +45 -8
  162. package/dist/core/PromptComposer.js.map +1 -0
  163. package/dist/core/ResponseEngine.d.ts.map +1 -0
  164. package/dist/core/ResponseEngine.js +198 -0
  165. package/dist/core/ResponseEngine.js.map +1 -0
  166. package/dist/{cjs/src/core → core}/ResponseModal.d.ts +54 -3
  167. package/dist/core/ResponseModal.d.ts.map +1 -0
  168. package/dist/{src/core → core}/ResponseModal.js +807 -121
  169. package/dist/core/ResponseModal.js.map +1 -0
  170. package/dist/{cjs/src/core → core}/ResponsePipeline.d.ts +10 -6
  171. package/dist/core/ResponsePipeline.d.ts.map +1 -0
  172. package/dist/{src/core → core}/ResponsePipeline.js +60 -25
  173. package/dist/core/ResponsePipeline.js.map +1 -0
  174. package/dist/{cjs/src/core → core}/Route.d.ts +46 -10
  175. package/dist/core/Route.d.ts.map +1 -0
  176. package/dist/core/Route.js +537 -0
  177. package/dist/core/Route.js.map +1 -0
  178. package/dist/{src/core → core}/RoutingEngine.d.ts +35 -5
  179. package/dist/core/RoutingEngine.d.ts.map +1 -0
  180. package/dist/{src/core → core}/RoutingEngine.js +343 -81
  181. package/dist/core/RoutingEngine.js.map +1 -0
  182. package/dist/{cjs/src/core → core}/SessionManager.d.ts +9 -1
  183. package/dist/core/SessionManager.d.ts.map +1 -0
  184. package/dist/{src/core → core}/SessionManager.js +27 -5
  185. package/dist/core/SessionManager.js.map +1 -0
  186. package/dist/core/Step.d.ts +170 -0
  187. package/dist/core/Step.d.ts.map +1 -0
  188. package/dist/core/Step.js +444 -0
  189. package/dist/core/Step.js.map +1 -0
  190. package/dist/core/ToolManager.d.ts +234 -0
  191. package/dist/core/ToolManager.d.ts.map +1 -0
  192. package/dist/core/ToolManager.js +1111 -0
  193. package/dist/core/ToolManager.js.map +1 -0
  194. package/dist/{cjs/src/index.d.ts → index.d.ts} +5 -3
  195. package/dist/index.d.ts.map +1 -0
  196. package/dist/{src/index.js → index.js} +4 -1
  197. package/dist/index.js.map +1 -0
  198. package/dist/providers/AnthropicProvider.d.ts.map +1 -0
  199. package/dist/{src/providers → providers}/AnthropicProvider.js +17 -17
  200. package/dist/providers/AnthropicProvider.js.map +1 -0
  201. package/dist/providers/GeminiProvider.d.ts.map +1 -0
  202. package/dist/{src/providers → providers}/GeminiProvider.js +123 -51
  203. package/dist/providers/GeminiProvider.js.map +1 -0
  204. package/dist/providers/OpenAIProvider.d.ts.map +1 -0
  205. package/dist/{src/providers → providers}/OpenAIProvider.js +18 -18
  206. package/dist/providers/OpenAIProvider.js.map +1 -0
  207. package/dist/providers/OpenRouterProvider.d.ts.map +1 -0
  208. package/dist/{src/providers → providers}/OpenRouterProvider.js +18 -18
  209. package/dist/providers/OpenRouterProvider.js.map +1 -0
  210. package/dist/providers/index.d.ts.map +1 -0
  211. package/dist/providers/index.js.map +1 -0
  212. package/dist/{src/types → types}/agent.d.ts +12 -4
  213. package/dist/types/agent.d.ts.map +1 -0
  214. package/dist/types/agent.js.map +1 -0
  215. package/dist/types/ai.d.ts.map +1 -0
  216. package/dist/types/ai.js.map +1 -0
  217. package/dist/types/history.d.ts.map +1 -0
  218. package/dist/types/history.js.map +1 -0
  219. package/dist/{src/types → types}/index.d.ts +5 -3
  220. package/dist/types/index.d.ts.map +1 -0
  221. package/dist/{src/types → types}/index.js +2 -0
  222. package/dist/types/index.js.map +1 -0
  223. package/dist/types/persistence.d.ts.map +1 -0
  224. package/dist/types/persistence.js.map +1 -0
  225. package/dist/{src/types → types}/route.d.ts +116 -15
  226. package/dist/types/route.d.ts.map +1 -0
  227. package/dist/{src/types → types}/route.js.map +1 -1
  228. package/dist/types/routing.d.ts.map +1 -0
  229. package/dist/{cjs/src/types → types}/routing.js.map +1 -1
  230. package/dist/types/schema.d.ts.map +1 -0
  231. package/dist/{cjs/src/types → types}/schema.js.map +1 -1
  232. package/dist/types/session.d.ts.map +1 -0
  233. package/dist/{src/types → types}/session.js.map +1 -1
  234. package/dist/types/template.d.ts +88 -0
  235. package/dist/types/template.d.ts.map +1 -0
  236. package/dist/{cjs/src/types → types}/template.js.map +1 -1
  237. package/dist/types/tool.d.ts +130 -0
  238. package/dist/types/tool.d.ts.map +1 -0
  239. package/dist/types/tool.js +16 -0
  240. package/dist/types/tool.js.map +1 -0
  241. package/dist/utils/clone.d.ts.map +1 -0
  242. package/dist/utils/clone.js.map +1 -0
  243. package/dist/utils/condition.d.ts +38 -0
  244. package/dist/utils/condition.d.ts.map +1 -0
  245. package/dist/utils/condition.js +161 -0
  246. package/dist/utils/condition.js.map +1 -0
  247. package/dist/utils/event.d.ts.map +1 -0
  248. package/dist/utils/event.js.map +1 -0
  249. package/dist/utils/history.d.ts.map +1 -0
  250. package/dist/utils/history.js.map +1 -0
  251. package/dist/utils/id.d.ts.map +1 -0
  252. package/dist/utils/id.js.map +1 -0
  253. package/dist/{src/utils → utils}/index.d.ts +3 -1
  254. package/dist/utils/index.d.ts.map +1 -0
  255. package/dist/{src/utils → utils}/index.js +5 -1
  256. package/dist/utils/index.js.map +1 -0
  257. package/dist/utils/json.d.ts +16 -0
  258. package/dist/utils/json.d.ts.map +1 -0
  259. package/dist/utils/json.js +43 -0
  260. package/dist/utils/json.js.map +1 -0
  261. package/dist/utils/logger.d.ts.map +1 -0
  262. package/dist/utils/logger.js.map +1 -0
  263. package/dist/{cjs/src/utils → utils}/retry.d.ts +0 -3
  264. package/dist/utils/retry.d.ts.map +1 -0
  265. package/dist/{src/utils → utils}/retry.js +5 -4
  266. package/dist/utils/retry.js.map +1 -0
  267. package/dist/utils/session.d.ts.map +1 -0
  268. package/dist/utils/session.js.map +1 -0
  269. package/dist/{cjs/src/utils → utils}/template.d.ts +48 -0
  270. package/dist/utils/template.d.ts.map +1 -0
  271. package/dist/{src/utils → utils}/template.js +98 -0
  272. package/dist/utils/template.js.map +1 -0
  273. package/docs/CONTRIBUTING.md +40 -0
  274. package/docs/README.md +12 -5
  275. package/docs/api/README.md +295 -56
  276. package/docs/api/overview.md +272 -31
  277. package/docs/architecture/data-extraction-flow.md +363 -0
  278. package/docs/architecture/multi-step-execution.md +243 -0
  279. package/docs/core/agent/README.md +120 -5
  280. package/docs/core/agent/session-management.md +153 -6
  281. package/docs/core/ai-integration/prompt-composition.md +135 -0
  282. package/docs/core/ai-integration/response-processing.md +261 -4
  283. package/docs/core/conversation-flows/data-collection.md +143 -0
  284. package/docs/core/conversation-flows/routes.md +132 -2
  285. package/docs/core/conversation-flows/step-transitions.md +132 -0
  286. package/docs/core/conversation-flows/steps.md +112 -0
  287. package/docs/core/error-handling.md +831 -0
  288. package/docs/core/routing/intelligent-routing.md +118 -0
  289. package/docs/core/tools/tool-definition.md +684 -60
  290. package/docs/core/tools/tool-scoping.md +244 -53
  291. package/docs/guides/error-handling-patterns.md +578 -0
  292. package/docs/guides/getting-started/README.md +423 -31
  293. package/docs/guides/migration/README.md +23 -0
  294. package/docs/guides/migration/flexible-routing-conditions.md +375 -0
  295. package/docs/guides/migration/multi-step-execution.md +303 -0
  296. package/examples/advanced-patterns/knowledge-based-agent.ts +107 -30
  297. package/examples/advanced-patterns/persistent-onboarding.ts +70 -48
  298. package/examples/advanced-patterns/route-lifecycle-hooks.ts +82 -12
  299. package/examples/advanced-patterns/streaming-responses.ts +2 -2
  300. package/examples/ai-providers/anthropic-integration.ts +13 -9
  301. package/examples/ai-providers/openai-integration.ts +12 -8
  302. package/examples/condition-patterns/function-only-conditions.ts +365 -0
  303. package/examples/condition-patterns/mixed-array-conditions.ts +477 -0
  304. package/examples/condition-patterns/route-skipif-patterns.ts +468 -0
  305. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  306. package/examples/condition-patterns/string-only-conditions.ts +296 -0
  307. package/examples/conversation-flows/completion-transitions.ts +48 -7
  308. package/examples/core-concepts/basic-agent.ts +158 -98
  309. package/examples/core-concepts/schema-driven-extraction.ts +43 -16
  310. package/examples/core-concepts/session-management.ts +117 -29
  311. package/examples/integrations/database-integration.ts +6 -6
  312. package/examples/integrations/healthcare-integration.ts +25 -39
  313. package/examples/integrations/search-integration.ts +8 -8
  314. package/examples/integrations/server-session-management.ts +11 -11
  315. package/examples/persistence/database-persistence.ts +15 -15
  316. package/examples/persistence/memory-sessions.ts +6 -6
  317. package/examples/persistence/redis-persistence.ts +7 -9
  318. package/examples/tools/basic-tools.ts +293 -89
  319. package/examples/tools/data-enrichment-tools.ts +189 -79
  320. package/package.json +6 -4
  321. package/src/adapters/PrismaAdapter.ts +3 -2
  322. package/src/adapters/RedisAdapter.ts +3 -3
  323. package/src/core/Agent.ts +152 -46
  324. package/src/core/BatchExecutor.ts +1156 -0
  325. package/src/core/BatchPromptBuilder.ts +275 -0
  326. package/src/core/PromptComposer.ts +53 -16
  327. package/src/core/ResponseEngine.ts +143 -4
  328. package/src/core/ResponseModal.ts +1035 -137
  329. package/src/core/ResponsePipeline.ts +99 -65
  330. package/src/core/Route.ts +262 -34
  331. package/src/core/RoutingEngine.ts +467 -120
  332. package/src/core/SessionManager.ts +39 -7
  333. package/src/core/Step.ts +338 -32
  334. package/src/core/ToolManager.ts +1394 -0
  335. package/src/index.ts +27 -3
  336. package/src/providers/AnthropicProvider.ts +17 -17
  337. package/src/providers/GeminiProvider.ts +129 -60
  338. package/src/providers/OpenAIProvider.ts +18 -18
  339. package/src/providers/OpenRouterProvider.ts +18 -18
  340. package/src/types/agent.ts +12 -4
  341. package/src/types/index.ts +25 -3
  342. package/src/types/route.ts +136 -15
  343. package/src/types/template.ts +70 -2
  344. package/src/types/tool.ts +116 -25
  345. package/src/utils/condition.ts +190 -0
  346. package/src/utils/index.ts +12 -0
  347. package/src/utils/json.ts +46 -0
  348. package/src/utils/retry.ts +5 -4
  349. package/src/utils/template.ts +109 -0
  350. package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +0 -1
  351. package/dist/cjs/src/adapters/MemoryAdapter.js.map +0 -1
  352. package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +0 -1
  353. package/dist/cjs/src/adapters/MongoAdapter.js.map +0 -1
  354. package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +0 -1
  355. package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +0 -1
  356. package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +0 -1
  357. package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +0 -1
  358. package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +0 -1
  359. package/dist/cjs/src/adapters/PrismaAdapter.js.map +0 -1
  360. package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +0 -1
  361. package/dist/cjs/src/adapters/RedisAdapter.js.map +0 -1
  362. package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +0 -1
  363. package/dist/cjs/src/adapters/SQLiteAdapter.js.map +0 -1
  364. package/dist/cjs/src/adapters/index.d.ts.map +0 -1
  365. package/dist/cjs/src/adapters/index.js.map +0 -1
  366. package/dist/cjs/src/constants/index.d.ts.map +0 -1
  367. package/dist/cjs/src/constants/index.js.map +0 -1
  368. package/dist/cjs/src/core/Agent.d.ts.map +0 -1
  369. package/dist/cjs/src/core/Agent.js.map +0 -1
  370. package/dist/cjs/src/core/Events.d.ts.map +0 -1
  371. package/dist/cjs/src/core/Events.js.map +0 -1
  372. package/dist/cjs/src/core/PersistenceManager.d.ts.map +0 -1
  373. package/dist/cjs/src/core/PersistenceManager.js.map +0 -1
  374. package/dist/cjs/src/core/PromptComposer.d.ts.map +0 -1
  375. package/dist/cjs/src/core/PromptComposer.js.map +0 -1
  376. package/dist/cjs/src/core/ResponseEngine.d.ts.map +0 -1
  377. package/dist/cjs/src/core/ResponseEngine.js +0 -84
  378. package/dist/cjs/src/core/ResponseEngine.js.map +0 -1
  379. package/dist/cjs/src/core/ResponseModal.d.ts.map +0 -1
  380. package/dist/cjs/src/core/ResponseModal.js.map +0 -1
  381. package/dist/cjs/src/core/ResponsePipeline.d.ts.map +0 -1
  382. package/dist/cjs/src/core/ResponsePipeline.js.map +0 -1
  383. package/dist/cjs/src/core/Route.d.ts.map +0 -1
  384. package/dist/cjs/src/core/Route.js +0 -343
  385. package/dist/cjs/src/core/Route.js.map +0 -1
  386. package/dist/cjs/src/core/RoutingEngine.d.ts.map +0 -1
  387. package/dist/cjs/src/core/RoutingEngine.js.map +0 -1
  388. package/dist/cjs/src/core/SessionManager.d.ts.map +0 -1
  389. package/dist/cjs/src/core/SessionManager.js.map +0 -1
  390. package/dist/cjs/src/core/Step.d.ts +0 -96
  391. package/dist/cjs/src/core/Step.d.ts.map +0 -1
  392. package/dist/cjs/src/core/Step.js +0 -206
  393. package/dist/cjs/src/core/Step.js.map +0 -1
  394. package/dist/cjs/src/core/ToolExecutor.d.ts +0 -45
  395. package/dist/cjs/src/core/ToolExecutor.d.ts.map +0 -1
  396. package/dist/cjs/src/core/ToolExecutor.js +0 -84
  397. package/dist/cjs/src/core/ToolExecutor.js.map +0 -1
  398. package/dist/cjs/src/index.d.ts.map +0 -1
  399. package/dist/cjs/src/index.js.map +0 -1
  400. package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +0 -1
  401. package/dist/cjs/src/providers/AnthropicProvider.js.map +0 -1
  402. package/dist/cjs/src/providers/GeminiProvider.d.ts.map +0 -1
  403. package/dist/cjs/src/providers/GeminiProvider.js.map +0 -1
  404. package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +0 -1
  405. package/dist/cjs/src/providers/OpenAIProvider.js.map +0 -1
  406. package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +0 -1
  407. package/dist/cjs/src/providers/OpenRouterProvider.js.map +0 -1
  408. package/dist/cjs/src/providers/index.d.ts.map +0 -1
  409. package/dist/cjs/src/providers/index.js.map +0 -1
  410. package/dist/cjs/src/types/agent.d.ts.map +0 -1
  411. package/dist/cjs/src/types/agent.js.map +0 -1
  412. package/dist/cjs/src/types/ai.d.ts.map +0 -1
  413. package/dist/cjs/src/types/ai.js.map +0 -1
  414. package/dist/cjs/src/types/history.d.ts.map +0 -1
  415. package/dist/cjs/src/types/history.js.map +0 -1
  416. package/dist/cjs/src/types/index.d.ts.map +0 -1
  417. package/dist/cjs/src/types/index.js.map +0 -1
  418. package/dist/cjs/src/types/persistence.d.ts.map +0 -1
  419. package/dist/cjs/src/types/persistence.js.map +0 -1
  420. package/dist/cjs/src/types/route.d.ts.map +0 -1
  421. package/dist/cjs/src/types/routing.d.ts.map +0 -1
  422. package/dist/cjs/src/types/schema.d.ts.map +0 -1
  423. package/dist/cjs/src/types/session.d.ts.map +0 -1
  424. package/dist/cjs/src/types/session.js.map +0 -1
  425. package/dist/cjs/src/types/template.d.ts +0 -30
  426. package/dist/cjs/src/types/template.d.ts.map +0 -1
  427. package/dist/cjs/src/types/tool.d.ts +0 -60
  428. package/dist/cjs/src/types/tool.d.ts.map +0 -1
  429. package/dist/cjs/src/types/tool.js +0 -6
  430. package/dist/cjs/src/types/tool.js.map +0 -1
  431. package/dist/cjs/src/utils/clone.d.ts.map +0 -1
  432. package/dist/cjs/src/utils/clone.js.map +0 -1
  433. package/dist/cjs/src/utils/event.d.ts.map +0 -1
  434. package/dist/cjs/src/utils/event.js.map +0 -1
  435. package/dist/cjs/src/utils/history.d.ts.map +0 -1
  436. package/dist/cjs/src/utils/history.js.map +0 -1
  437. package/dist/cjs/src/utils/id.d.ts.map +0 -1
  438. package/dist/cjs/src/utils/id.js.map +0 -1
  439. package/dist/cjs/src/utils/index.d.ts.map +0 -1
  440. package/dist/cjs/src/utils/index.js.map +0 -1
  441. package/dist/cjs/src/utils/logger.d.ts.map +0 -1
  442. package/dist/cjs/src/utils/logger.js.map +0 -1
  443. package/dist/cjs/src/utils/retry.d.ts.map +0 -1
  444. package/dist/cjs/src/utils/retry.js.map +0 -1
  445. package/dist/cjs/src/utils/session.d.ts.map +0 -1
  446. package/dist/cjs/src/utils/session.js.map +0 -1
  447. package/dist/cjs/src/utils/template.d.ts.map +0 -1
  448. package/dist/cjs/src/utils/template.js.map +0 -1
  449. package/dist/src/adapters/MemoryAdapter.js.map +0 -1
  450. package/dist/src/adapters/MongoAdapter.js.map +0 -1
  451. package/dist/src/adapters/OpenSearchAdapter.js.map +0 -1
  452. package/dist/src/adapters/PostgreSQLAdapter.js.map +0 -1
  453. package/dist/src/adapters/PrismaAdapter.js.map +0 -1
  454. package/dist/src/adapters/RedisAdapter.js.map +0 -1
  455. package/dist/src/adapters/SQLiteAdapter.js.map +0 -1
  456. package/dist/src/adapters/index.js.map +0 -1
  457. package/dist/src/constants/index.js.map +0 -1
  458. package/dist/src/core/Agent.d.ts.map +0 -1
  459. package/dist/src/core/Agent.js.map +0 -1
  460. package/dist/src/core/Events.js.map +0 -1
  461. package/dist/src/core/PersistenceManager.js.map +0 -1
  462. package/dist/src/core/PromptComposer.d.ts.map +0 -1
  463. package/dist/src/core/PromptComposer.js.map +0 -1
  464. package/dist/src/core/ResponseEngine.js +0 -80
  465. package/dist/src/core/ResponseEngine.js.map +0 -1
  466. package/dist/src/core/ResponseModal.d.ts.map +0 -1
  467. package/dist/src/core/ResponseModal.js.map +0 -1
  468. package/dist/src/core/ResponsePipeline.d.ts.map +0 -1
  469. package/dist/src/core/ResponsePipeline.js.map +0 -1
  470. package/dist/src/core/Route.d.ts.map +0 -1
  471. package/dist/src/core/Route.js +0 -339
  472. package/dist/src/core/Route.js.map +0 -1
  473. package/dist/src/core/RoutingEngine.d.ts.map +0 -1
  474. package/dist/src/core/RoutingEngine.js.map +0 -1
  475. package/dist/src/core/SessionManager.d.ts.map +0 -1
  476. package/dist/src/core/SessionManager.js.map +0 -1
  477. package/dist/src/core/Step.d.ts +0 -96
  478. package/dist/src/core/Step.d.ts.map +0 -1
  479. package/dist/src/core/Step.js +0 -202
  480. package/dist/src/core/Step.js.map +0 -1
  481. package/dist/src/core/ToolExecutor.d.ts +0 -45
  482. package/dist/src/core/ToolExecutor.d.ts.map +0 -1
  483. package/dist/src/core/ToolExecutor.js +0 -80
  484. package/dist/src/core/ToolExecutor.js.map +0 -1
  485. package/dist/src/index.d.ts.map +0 -1
  486. package/dist/src/index.js.map +0 -1
  487. package/dist/src/providers/AnthropicProvider.js.map +0 -1
  488. package/dist/src/providers/GeminiProvider.js.map +0 -1
  489. package/dist/src/providers/OpenAIProvider.js.map +0 -1
  490. package/dist/src/providers/OpenRouterProvider.js.map +0 -1
  491. package/dist/src/providers/index.js.map +0 -1
  492. package/dist/src/types/agent.d.ts.map +0 -1
  493. package/dist/src/types/agent.js.map +0 -1
  494. package/dist/src/types/history.js.map +0 -1
  495. package/dist/src/types/index.js.map +0 -1
  496. package/dist/src/types/persistence.js.map +0 -1
  497. package/dist/src/types/route.d.ts.map +0 -1
  498. package/dist/src/types/template.d.ts +0 -30
  499. package/dist/src/types/template.d.ts.map +0 -1
  500. package/dist/src/types/tool.d.ts +0 -60
  501. package/dist/src/types/tool.d.ts.map +0 -1
  502. package/dist/src/types/tool.js +0 -5
  503. package/dist/src/types/tool.js.map +0 -1
  504. package/dist/src/utils/clone.js.map +0 -1
  505. package/dist/src/utils/event.js.map +0 -1
  506. package/dist/src/utils/history.js.map +0 -1
  507. package/dist/src/utils/id.js.map +0 -1
  508. package/dist/src/utils/index.d.ts.map +0 -1
  509. package/dist/src/utils/index.js.map +0 -1
  510. package/dist/src/utils/logger.js.map +0 -1
  511. package/dist/src/utils/retry.d.ts.map +0 -1
  512. package/dist/src/utils/retry.js.map +0 -1
  513. package/dist/src/utils/session.js.map +0 -1
  514. package/dist/src/utils/template.d.ts.map +0 -1
  515. package/dist/src/utils/template.js.map +0 -1
  516. package/docs/core/tools/tool-execution.md +0 -815
  517. package/src/core/ToolExecutor.ts +0 -126
  518. /package/dist/{cjs/src/adapters → adapters}/MemoryAdapter.d.ts +0 -0
  519. /package/dist/{src/adapters → adapters}/MemoryAdapter.js +0 -0
  520. /package/dist/{cjs/src/adapters → adapters}/MongoAdapter.d.ts +0 -0
  521. /package/dist/{src/adapters → adapters}/MongoAdapter.js +0 -0
  522. /package/dist/{cjs/src/adapters → adapters}/OpenSearchAdapter.d.ts +0 -0
  523. /package/dist/{src/adapters → adapters}/OpenSearchAdapter.js +0 -0
  524. /package/dist/{cjs/src/adapters → adapters}/PostgreSQLAdapter.d.ts +0 -0
  525. /package/dist/{src/adapters → adapters}/PostgreSQLAdapter.js +0 -0
  526. /package/dist/{cjs/src/adapters → adapters}/PrismaAdapter.d.ts +0 -0
  527. /package/dist/{cjs/src/adapters → adapters}/RedisAdapter.d.ts +0 -0
  528. /package/dist/{cjs/src/adapters → adapters}/SQLiteAdapter.d.ts +0 -0
  529. /package/dist/{src/adapters → adapters}/SQLiteAdapter.js +0 -0
  530. /package/dist/{cjs/src/adapters → adapters}/index.d.ts +0 -0
  531. /package/dist/{src/adapters → adapters}/index.js +0 -0
  532. /package/dist/{src → cjs}/adapters/MemoryAdapter.d.ts +0 -0
  533. /package/dist/{src → cjs}/adapters/MemoryAdapter.d.ts.map +0 -0
  534. /package/dist/cjs/{src/adapters → adapters}/MemoryAdapter.js +0 -0
  535. /package/dist/{src → cjs}/adapters/MongoAdapter.d.ts +0 -0
  536. /package/dist/{src → cjs}/adapters/MongoAdapter.d.ts.map +0 -0
  537. /package/dist/cjs/{src/adapters → adapters}/MongoAdapter.js +0 -0
  538. /package/dist/{src → cjs}/adapters/OpenSearchAdapter.d.ts +0 -0
  539. /package/dist/{src → cjs}/adapters/OpenSearchAdapter.d.ts.map +0 -0
  540. /package/dist/cjs/{src/adapters → adapters}/OpenSearchAdapter.js +0 -0
  541. /package/dist/{src → cjs}/adapters/PostgreSQLAdapter.d.ts +0 -0
  542. /package/dist/{src → cjs}/adapters/PostgreSQLAdapter.d.ts.map +0 -0
  543. /package/dist/cjs/{src/adapters → adapters}/PostgreSQLAdapter.js +0 -0
  544. /package/dist/{src → cjs}/adapters/PrismaAdapter.d.ts +0 -0
  545. /package/dist/{src → cjs}/adapters/RedisAdapter.d.ts +0 -0
  546. /package/dist/{src → cjs}/adapters/RedisAdapter.d.ts.map +0 -0
  547. /package/dist/{src → cjs}/adapters/SQLiteAdapter.d.ts +0 -0
  548. /package/dist/{src → cjs}/adapters/SQLiteAdapter.d.ts.map +0 -0
  549. /package/dist/cjs/{src/adapters → adapters}/SQLiteAdapter.js +0 -0
  550. /package/dist/{src → cjs}/adapters/index.d.ts +0 -0
  551. /package/dist/{src → cjs}/adapters/index.d.ts.map +0 -0
  552. /package/dist/cjs/{src/adapters → adapters}/index.js +0 -0
  553. /package/dist/cjs/{src/constants → constants}/index.d.ts +0 -0
  554. /package/dist/{src → cjs}/constants/index.d.ts.map +0 -0
  555. /package/dist/cjs/{src/constants → constants}/index.js +0 -0
  556. /package/dist/cjs/{src/core → core}/Events.d.ts +0 -0
  557. /package/dist/{src → cjs}/core/Events.d.ts.map +0 -0
  558. /package/dist/cjs/{src/core → core}/Events.js +0 -0
  559. /package/dist/cjs/{src/core → core}/PersistenceManager.d.ts +0 -0
  560. /package/dist/{src → cjs}/core/PersistenceManager.d.ts.map +0 -0
  561. /package/dist/cjs/{src/core → core}/PersistenceManager.js +0 -0
  562. /package/dist/cjs/{src/core → core}/ResponseEngine.d.ts +0 -0
  563. /package/dist/cjs/{src/providers → providers}/AnthropicProvider.d.ts +0 -0
  564. /package/dist/{src → cjs}/providers/AnthropicProvider.d.ts.map +0 -0
  565. /package/dist/cjs/{src/providers → providers}/GeminiProvider.d.ts +0 -0
  566. /package/dist/cjs/{src/providers → providers}/OpenAIProvider.d.ts +0 -0
  567. /package/dist/{src → cjs}/providers/OpenAIProvider.d.ts.map +0 -0
  568. /package/dist/cjs/{src/providers → providers}/OpenRouterProvider.d.ts +0 -0
  569. /package/dist/{src → cjs}/providers/OpenRouterProvider.d.ts.map +0 -0
  570. /package/dist/cjs/{src/providers → providers}/index.d.ts +0 -0
  571. /package/dist/{src → cjs}/providers/index.d.ts.map +0 -0
  572. /package/dist/cjs/{src/providers → providers}/index.js +0 -0
  573. /package/dist/cjs/{src/types → types}/agent.js +0 -0
  574. /package/dist/cjs/{src/types → types}/ai.d.ts +0 -0
  575. /package/dist/{src → cjs}/types/ai.d.ts.map +0 -0
  576. /package/dist/cjs/{src/types → types}/ai.js +0 -0
  577. /package/dist/cjs/{src/types → types}/history.d.ts +0 -0
  578. /package/dist/{src → cjs}/types/history.d.ts.map +0 -0
  579. /package/dist/cjs/{src/types → types}/history.js +0 -0
  580. /package/dist/cjs/{src/types → types}/persistence.d.ts +0 -0
  581. /package/dist/{src → cjs}/types/persistence.d.ts.map +0 -0
  582. /package/dist/cjs/{src/types → types}/persistence.js +0 -0
  583. /package/dist/cjs/{src/types → types}/route.js +0 -0
  584. /package/dist/cjs/{src/types → types}/routing.d.ts +0 -0
  585. /package/dist/{src → cjs}/types/routing.d.ts.map +0 -0
  586. /package/dist/cjs/{src/types → types}/routing.js +0 -0
  587. /package/dist/{src → cjs}/types/routing.js.map +0 -0
  588. /package/dist/cjs/{src/types → types}/schema.d.ts +0 -0
  589. /package/dist/{src → cjs}/types/schema.d.ts.map +0 -0
  590. /package/dist/cjs/{src/types → types}/schema.js +0 -0
  591. /package/dist/{src → cjs}/types/schema.js.map +0 -0
  592. /package/dist/cjs/{src/types → types}/session.d.ts +0 -0
  593. /package/dist/{src → cjs}/types/session.d.ts.map +0 -0
  594. /package/dist/cjs/{src/types → types}/session.js +0 -0
  595. /package/dist/cjs/{src/types → types}/template.js +0 -0
  596. /package/dist/{src → cjs}/types/template.js.map +0 -0
  597. /package/dist/cjs/{src/utils → utils}/clone.d.ts +0 -0
  598. /package/dist/{src → cjs}/utils/clone.d.ts.map +0 -0
  599. /package/dist/cjs/{src/utils → utils}/clone.js +0 -0
  600. /package/dist/cjs/{src/utils → utils}/event.d.ts +0 -0
  601. /package/dist/{src → cjs}/utils/event.d.ts.map +0 -0
  602. /package/dist/cjs/{src/utils → utils}/event.js +0 -0
  603. /package/dist/cjs/{src/utils → utils}/history.d.ts +0 -0
  604. /package/dist/{src → cjs}/utils/history.d.ts.map +0 -0
  605. /package/dist/cjs/{src/utils → utils}/history.js +0 -0
  606. /package/dist/cjs/{src/utils → utils}/id.d.ts +0 -0
  607. /package/dist/{src → cjs}/utils/id.d.ts.map +0 -0
  608. /package/dist/cjs/{src/utils → utils}/id.js +0 -0
  609. /package/dist/cjs/{src/utils → utils}/logger.d.ts +0 -0
  610. /package/dist/{src → cjs}/utils/logger.d.ts.map +0 -0
  611. /package/dist/cjs/{src/utils → utils}/logger.js +0 -0
  612. /package/dist/cjs/{src/utils → utils}/session.d.ts +0 -0
  613. /package/dist/{src → cjs}/utils/session.d.ts.map +0 -0
  614. /package/dist/cjs/{src/utils → utils}/session.js +0 -0
  615. /package/dist/{src/constants → constants}/index.d.ts +0 -0
  616. /package/dist/{src/constants → constants}/index.js +0 -0
  617. /package/dist/{src/core → core}/Events.d.ts +0 -0
  618. /package/dist/{src/core → core}/Events.js +0 -0
  619. /package/dist/{src/core → core}/PersistenceManager.d.ts +0 -0
  620. /package/dist/{src/core → core}/PersistenceManager.js +0 -0
  621. /package/dist/{src/core → core}/ResponseEngine.d.ts +0 -0
  622. /package/dist/{src/providers → providers}/AnthropicProvider.d.ts +0 -0
  623. /package/dist/{src/providers → providers}/GeminiProvider.d.ts +0 -0
  624. /package/dist/{src/providers → providers}/OpenAIProvider.d.ts +0 -0
  625. /package/dist/{src/providers → providers}/OpenRouterProvider.d.ts +0 -0
  626. /package/dist/{src/providers → providers}/index.d.ts +0 -0
  627. /package/dist/{src/providers → providers}/index.js +0 -0
  628. /package/dist/{src/types → types}/agent.js +0 -0
  629. /package/dist/{src/types → types}/ai.d.ts +0 -0
  630. /package/dist/{src/types → types}/ai.js +0 -0
  631. /package/dist/{src/types → types}/history.d.ts +0 -0
  632. /package/dist/{src/types → types}/history.js +0 -0
  633. /package/dist/{src/types → types}/persistence.d.ts +0 -0
  634. /package/dist/{src/types → types}/persistence.js +0 -0
  635. /package/dist/{src/types → types}/route.js +0 -0
  636. /package/dist/{src/types → types}/routing.d.ts +0 -0
  637. /package/dist/{src/types → types}/routing.js +0 -0
  638. /package/dist/{src/types → types}/schema.d.ts +0 -0
  639. /package/dist/{src/types → types}/schema.js +0 -0
  640. /package/dist/{src/types → types}/session.d.ts +0 -0
  641. /package/dist/{src/types → types}/session.js +0 -0
  642. /package/dist/{src/types → types}/template.js +0 -0
  643. /package/dist/{src/utils → utils}/clone.d.ts +0 -0
  644. /package/dist/{src/utils → utils}/clone.js +0 -0
  645. /package/dist/{src/utils → utils}/event.d.ts +0 -0
  646. /package/dist/{src/utils → utils}/event.js +0 -0
  647. /package/dist/{src/utils → utils}/history.d.ts +0 -0
  648. /package/dist/{src/utils → utils}/history.js +0 -0
  649. /package/dist/{src/utils → utils}/id.d.ts +0 -0
  650. /package/dist/{src/utils → utils}/id.js +0 -0
  651. /package/dist/{src/utils → utils}/logger.d.ts +0 -0
  652. /package/dist/{src/utils → utils}/logger.js +0 -0
  653. /package/dist/{src/utils → utils}/session.d.ts +0 -0
  654. /package/dist/{src/utils → utils}/session.js +0 -0
@@ -9,6 +9,7 @@ import type { SessionState } from "../types/session";
9
9
  import type { History, HistoryItem } from "../types/history";
10
10
  import { PersistenceManager } from "./PersistenceManager";
11
11
  import type { PersistenceAdapter } from "../types/persistence";
12
+ import type { Agent } from "./Agent";
12
13
 
13
14
  /**
14
15
  * SessionManager handles session lifecycle and conversation history
@@ -16,11 +17,16 @@ import type { PersistenceAdapter } from "../types/persistence";
16
17
  export class SessionManager<TData = unknown> {
17
18
  private currentSession?: SessionState<TData>;
18
19
  private persistenceManager?: PersistenceManager<TData>;
20
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
+ private agent?: Agent<any, TData>;
22
+ private defaultSessionId?: string;
19
23
 
20
24
  constructor(
21
25
  persistenceManagerOrAdapter?:
22
26
  | PersistenceManager<TData>
23
- | PersistenceAdapter<TData>
27
+ | PersistenceAdapter<TData>,
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
+ agent?: Agent<any, TData>
24
30
  ) {
25
31
  if (persistenceManagerOrAdapter) {
26
32
  // Check if it's a PersistenceManager or an adapter
@@ -33,6 +39,16 @@ export class SessionManager<TData = unknown> {
33
39
  });
34
40
  }
35
41
  }
42
+
43
+ this.agent = agent;
44
+ }
45
+
46
+ /**
47
+ * Set the default session ID to use when getOrCreate is called without parameters
48
+ * @internal Used by Agent to set the sessionId from constructor options
49
+ */
50
+ setDefaultSessionId(sessionId: string): void {
51
+ this.defaultSessionId = sessionId;
36
52
  }
37
53
 
38
54
  /**
@@ -40,16 +56,24 @@ export class SessionManager<TData = unknown> {
40
56
  * Works for sessionIds that exist, don't exist, or auto-generated IDs
41
57
  */
42
58
  async getOrCreate(sessionId?: string): Promise<SessionState<TData>> {
59
+ // Use provided sessionId or fall back to default
60
+ const effectiveSessionId = sessionId || this.defaultSessionId;
61
+
43
62
  // If we already have a session and no sessionId specified, return it
44
- if (this.currentSession && !sessionId) {
63
+ if (this.currentSession && !effectiveSessionId) {
64
+ return this.currentSession;
65
+ }
66
+
67
+ // If we have a session with the same ID, return it
68
+ if (this.currentSession && this.currentSession.id === effectiveSessionId) {
45
69
  return this.currentSession;
46
70
  }
47
71
 
48
72
  // If sessionId provided, try to load it first
49
- if (sessionId && this.persistenceManager) {
73
+ if (effectiveSessionId && this.persistenceManager) {
50
74
  try {
51
75
  const session = await this.persistenceManager.loadSessionState(
52
- sessionId
76
+ effectiveSessionId
53
77
  );
54
78
  if (session) {
55
79
  this.currentSession = session;
@@ -62,7 +86,7 @@ export class SessionManager<TData = unknown> {
62
86
  }
63
87
 
64
88
  // Create new session (with provided ID or auto-generated)
65
- return this.create(sessionId);
89
+ return this.create(effectiveSessionId);
66
90
  }
67
91
 
68
92
  /**
@@ -117,6 +141,9 @@ export class SessionManager<TData = unknown> {
117
141
  session.history.push(historyItem);
118
142
  session.metadata!.lastUpdatedAt = new Date();
119
143
 
144
+ // Ensure currentSession is updated
145
+ this.currentSession = session;
146
+
120
147
  // Auto-save to persistence
121
148
  await this.save();
122
149
  }
@@ -205,7 +232,12 @@ export class SessionManager<TData = unknown> {
205
232
  ...data,
206
233
  };
207
234
  this.currentSession.metadata!.lastUpdatedAt = new Date();
208
-
235
+
236
+ // Synchronize with agent's collected data for bidirectional sync
237
+ if (this.agent) {
238
+ await this.agent.updateCollectedData(this.currentSession.data);
239
+ }
240
+
209
241
  // Auto-save to persistence
210
242
  await this.save();
211
243
  }
@@ -226,7 +258,7 @@ export class SessionManager<TData = unknown> {
226
258
  if (this.currentSession) {
227
259
  this.currentSession.data = {} as Partial<TData>;
228
260
  this.currentSession.metadata!.lastUpdatedAt = new Date();
229
-
261
+
230
262
  // Auto-save to persistence
231
263
  await this.save();
232
264
  }
package/src/core/Step.ts CHANGED
@@ -9,12 +9,15 @@ import type {
9
9
  BranchSpec,
10
10
  BranchResult,
11
11
  Guideline,
12
+ GuidelineMatch,
12
13
  Tool,
14
+ SessionState,
15
+ Event,
13
16
  } from "../types";
14
- import { Template } from "../types/template";
15
-
17
+ import { ToolScope, Template, ConditionTemplate, TemplateContext } from "../types";
18
+ import { createConditionEvaluator, generateStepId, logger } from "../utils";
19
+ import { Agent } from './Agent'
16
20
  import { END_ROUTE, END_ROUTE_ID } from "../constants";
17
- import { generateStepId } from "../utils/id";
18
21
 
19
22
  /**
20
23
  * Represents a step within a route
@@ -22,27 +25,31 @@ import { generateStepId } from "../utils/id";
22
25
  export class Step<TContext = unknown, TData = unknown> {
23
26
  public readonly id: string;
24
27
  private nextSteps: Step<TContext, TData>[] = [];
25
- private guidelines: Guideline<TContext>[] = [];
28
+ private guidelines: Guideline<TContext, TData>[] = [];
26
29
  public readonly routeId: string;
27
30
  public collect?: (keyof TData)[];
28
31
  public description?: string;
29
- public when?: Template<TContext, TData>;
30
- public skipIf?: (data: Partial<TData>) => boolean;
32
+ public when?: ConditionTemplate<TContext, TData>;
33
+ public skipIf?: ConditionTemplate<TContext, TData>;
31
34
  public requires?: (keyof TData)[];
32
35
  public prompt?: Template<TContext, TData>;
33
36
  public prepare?:
34
37
  | string
35
- | Tool<TContext, TData, unknown[], unknown>
38
+ | Tool<TContext, TData>
36
39
  | ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
37
40
  public finalize?:
38
41
  | string
39
- | Tool<TContext, TData, unknown[], unknown>
42
+ | Tool<TContext, TData>
40
43
  | ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
41
- public tools?: (string | Tool<TContext, TData, unknown[], unknown>)[];
44
+ public tools?: (string | Tool<TContext, TData>)[];
45
+
46
+ // Reference to parent agent for ToolManager access
47
+ private parentAgent?: Agent<TContext, TData>;
42
48
 
43
49
  constructor(
44
- routeId: string,
45
- options: StepOptions<TContext, TData> = {}
50
+ routeId: string,
51
+ options: StepOptions<TContext, TData> = {},
52
+ parentAgent?: Agent<TContext, TData>
46
53
  ) {
47
54
  // Use provided ID or generate a deterministic one
48
55
  this.id = options.id || generateStepId(routeId, options.description);
@@ -57,6 +64,16 @@ export class Step<TContext = unknown, TData = unknown> {
57
64
  this.prepare = options.prepare;
58
65
  this.finalize = options.finalize;
59
66
  this.tools = options.tools;
67
+
68
+ // Initialize guidelines from options
69
+ if (options.guidelines) {
70
+ options.guidelines.forEach((guideline) => {
71
+ this.addGuideline(guideline);
72
+ });
73
+ }
74
+
75
+ // Store reference to parent agent for ToolManager access
76
+ this.parentAgent = parentAgent;
60
77
  }
61
78
 
62
79
  /**
@@ -66,35 +83,35 @@ export class Step<TContext = unknown, TData = unknown> {
66
83
  configure(config: {
67
84
  description?: string;
68
85
  collect?: (keyof TData)[];
69
- skipIf?: (data: Partial<TData>) => boolean;
86
+ skipIf?: ConditionTemplate<TContext, TData>;
70
87
  requires?: (keyof TData)[];
71
88
  prompt?: Template<TContext, TData>;
72
89
  prepare?:
73
- | string
74
- | Tool<TContext, TData, unknown[], unknown>
75
- | ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
90
+ | string
91
+ | Tool<TContext, TData>
92
+ | ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
76
93
  finalize?:
77
- | string
78
- | Tool<TContext, TData, unknown[], unknown>
79
- | ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
80
- tools?: (string | Tool<TContext, TData, unknown[], unknown>)[];
94
+ | string
95
+ | Tool<TContext, TData>
96
+ | ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
97
+ tools?: (string | Tool<TContext, TData>)[];
81
98
  }): this {
82
99
  if (config.description !== undefined) {
83
100
  this.description = config.description;
84
101
  }
85
-
102
+
86
103
  if (config.collect !== undefined) {
87
104
  this.collect = config.collect;
88
105
  }
89
-
106
+
90
107
  if (config.skipIf !== undefined) {
91
108
  this.skipIf = config.skipIf;
92
109
  }
93
-
110
+
94
111
  if (config.requires !== undefined) {
95
112
  this.requires = config.requires;
96
113
  }
97
-
114
+
98
115
  if (config.prompt !== undefined) {
99
116
  this.prompt = config.prompt;
100
117
  }
@@ -137,7 +154,7 @@ export class Step<TContext = unknown, TData = unknown> {
137
154
  const endStep = new Step<TContext, TData>(this.routeId, {
138
155
  ...spec,
139
156
  id: END_ROUTE_ID,
140
- });
157
+ }, this.parentAgent);
141
158
  this.nextSteps.push(endStep);
142
159
  return this.createTerminalRef();
143
160
  }
@@ -150,7 +167,7 @@ export class Step<TContext = unknown, TData = unknown> {
150
167
  }
151
168
 
152
169
  // Create new target step for prompt or tool
153
- const targetStep = new Step<TContext, TData>(this.routeId, spec);
170
+ const targetStep = new Step<TContext, TData>(this.routeId, spec, this.parentAgent);
154
171
  this.nextSteps.push(targetStep);
155
172
 
156
173
  return this.createStepRefWithTransition(targetStep.getRef(), targetStep);
@@ -174,7 +191,7 @@ export class Step<TContext = unknown, TData = unknown> {
174
191
  : branchSpec.step;
175
192
 
176
193
  // Create a new step for this branch
177
- const branchStep = new Step<TContext, TData>(this.routeId, stepOptions);
194
+ const branchStep = new Step<TContext, TData>(this.routeId, stepOptions, this.parentAgent);
178
195
  // Add it to our transitions
179
196
  this.nextSteps.push(branchStep);
180
197
  // Create a step result for chaining
@@ -191,17 +208,230 @@ export class Step<TContext = unknown, TData = unknown> {
191
208
  /**
192
209
  * Add a guideline specific to this step
193
210
  */
194
- addGuideline(guideline: Guideline<TContext>): void {
211
+ addGuideline(guideline: Guideline<TContext, TData>): void {
195
212
  this.guidelines.push(guideline);
196
213
  }
197
214
 
198
215
  /**
199
216
  * Get guidelines for this step
200
217
  */
201
- getGuidelines(): Guideline<TContext>[] {
218
+ getGuidelines(): Guideline<TContext, TData>[] {
202
219
  return [...this.guidelines];
203
220
  }
204
221
 
222
+ /**
223
+ * Evaluate and match active guidelines based on their conditions
224
+ * Returns guidelines that should be active given the current context
225
+ */
226
+ async evaluateGuidelines(
227
+ context?: TContext,
228
+ session?: SessionState<TData>,
229
+ history?: Event[]
230
+ ): Promise<GuidelineMatch<TContext, TData>[]> {
231
+ const templateContext = { context, session, history, data: session?.data || {} };
232
+ const evaluator = createConditionEvaluator(templateContext);
233
+ const matches: GuidelineMatch<TContext, TData>[] = [];
234
+
235
+ for (const guideline of this.guidelines) {
236
+ // Skip disabled guidelines
237
+ if (guideline.enabled === false) {
238
+ continue;
239
+ }
240
+
241
+ if (guideline.condition) {
242
+ const evaluation = await evaluator.evaluateCondition(guideline.condition, 'AND');
243
+
244
+ // Include guideline if:
245
+ // 1. No programmatic conditions (only strings) - always active
246
+ // 2. Programmatic conditions evaluate to true
247
+ if (!evaluation.hasProgrammaticConditions || evaluation.programmaticResult) {
248
+ const rationale = evaluation.aiContextStrings.length > 0
249
+ ? `Condition met: ${evaluation.aiContextStrings.join(" AND ")}`
250
+ : evaluation.hasProgrammaticConditions
251
+ ? "Programmatic condition evaluated to true"
252
+ : "Always active (no conditions)";
253
+
254
+ matches.push({
255
+ guideline,
256
+ rationale
257
+ });
258
+ }
259
+ } else {
260
+ // No condition means always active
261
+ matches.push({
262
+ guideline,
263
+ rationale: "Always active (no conditions)"
264
+ });
265
+ }
266
+ }
267
+
268
+ return matches;
269
+ }
270
+
271
+ /**
272
+ * Add a tool to this step using the unified Tool interface
273
+ * Creates and adds the tool to step scope in one operation
274
+ */
275
+ addTool(
276
+ tool: Tool<TContext, TData>
277
+ ): this {
278
+ // Validate tool before adding
279
+ if (!tool || !tool.id || !tool.handler) {
280
+ throw new Error('Invalid tool: must have id and handler properties');
281
+ }
282
+
283
+ // Add to step's tools array
284
+ if (!this.tools) {
285
+ this.tools = [];
286
+ }
287
+ this.tools.push(tool);
288
+
289
+ return this;
290
+ }
291
+
292
+ /**
293
+ * Resolve tool references in the tools array
294
+ * Supports both string IDs (resolved from registry) and inline tool objects
295
+ */
296
+ resolveTools(): Tool<TContext, TData>[] {
297
+ if (!this.tools) {
298
+ return [];
299
+ }
300
+
301
+ const resolvedTools: Tool<TContext, TData>[] = [];
302
+
303
+ for (const toolRef of this.tools) {
304
+ if (typeof toolRef === 'string') {
305
+ // Tool ID - try to resolve from ToolManager using proper scope resolution
306
+ if (this.parentAgent?.tool) {
307
+ const registeredTool = this.parentAgent.tool.find(toolRef);
308
+ if (registeredTool) {
309
+ resolvedTools.push(registeredTool);
310
+ } else {
311
+ // Tool not found - log warning but don't fail
312
+ logger.warn(`[Step] Tool ID '${toolRef}' not found in any scope for step ${this.id}`);
313
+ }
314
+ } else {
315
+ logger.warn(`[Step] No parent agent available to resolve tool ID '${toolRef}' for step ${this.id}`);
316
+ }
317
+ } else {
318
+ // Inline tool object - validate and use directly
319
+ if (toolRef && toolRef.id && typeof toolRef.handler === 'function') {
320
+ resolvedTools.push(toolRef);
321
+ } else {
322
+ logger.warn(`[Step] Invalid inline tool object in step ${this.id}:`, toolRef);
323
+ }
324
+ }
325
+ }
326
+
327
+ return resolvedTools;
328
+ }
329
+
330
+ /**
331
+ * Get all tools available to this step (both inline and resolved from registry)
332
+ */
333
+ getAvailableTools(): (string | Tool<TContext, TData>)[] {
334
+ return this.tools ? [...this.tools] : [];
335
+ }
336
+
337
+ /**
338
+ * Get all resolved tools available to this step using ToolManager
339
+ * This method provides the complete set of tools accessible from this step
340
+ */
341
+ getAllAvailableTools(): Tool<TContext, TData>[] {
342
+ if (!this.parentAgent?.tool) {
343
+ // Fallback to local resolution if no ToolManager available
344
+ return this.resolveTools();
345
+ }
346
+
347
+ // Use ToolManager to get all available tools for this step context
348
+ return this.parentAgent.tool.getAvailable(ToolScope.ALL, this, undefined);
349
+ }
350
+
351
+ /**
352
+ * Find a specific tool by ID using ToolManager resolution
353
+ * This method respects the tool resolution hierarchy: step → route → agent → registry
354
+ */
355
+ findTool(toolId: string, scope?: ToolScope): Tool<TContext, TData> | undefined {
356
+ if (!this.parentAgent?.tool) {
357
+ // Fallback to local resolution if no ToolManager available
358
+ const resolved = this.resolveTools();
359
+ return resolved.find(tool => tool.id === toolId || tool.name === toolId);
360
+ }
361
+
362
+ // Use ToolManager to find the tool with proper scope resolution
363
+ return this.parentAgent.tool.find(toolId, scope || ToolScope.ALL, this, undefined);
364
+ }
365
+
366
+ /**
367
+ * Get tools from a specific scope
368
+ */
369
+ getToolsFromScope(scope: ToolScope): Tool<TContext, TData>[] {
370
+ if (!this.parentAgent?.tool) {
371
+ // Fallback to local resolution if no ToolManager available
372
+ return scope === ToolScope.STEP ? this.resolveTools() : [];
373
+ }
374
+
375
+ return this.parentAgent.tool.getAvailable(scope, this, undefined);
376
+ }
377
+
378
+ /**
379
+ * Get only step-level tools (inline tools in this step)
380
+ */
381
+ getStepTools(): Tool<TContext, TData>[] {
382
+ return this.getToolsFromScope(ToolScope.STEP);
383
+ }
384
+
385
+ /**
386
+ * Get only registered tools accessible from this step
387
+ */
388
+ getRegisteredTools(): Tool<TContext, TData>[] {
389
+ return this.getToolsFromScope(ToolScope.REGISTERED);
390
+ }
391
+
392
+ /**
393
+ * Validate that all tool references in this step can be resolved
394
+ * Returns validation result with details about missing tools
395
+ */
396
+ validateToolReferences(): {
397
+ valid: boolean;
398
+ missing: string[];
399
+ found: string[];
400
+ details: Array<{ id: string; found: boolean; scope?: string; }>;
401
+ } {
402
+ if (!this.tools || this.tools.length === 0) {
403
+ return { valid: true, missing: [], found: [], details: [] };
404
+ }
405
+
406
+ // Extract tool IDs from the tools array
407
+ const toolIds: string[] = [];
408
+ for (const toolRef of this.tools) {
409
+ if (typeof toolRef === 'string') {
410
+ toolIds.push(toolRef);
411
+ } else if (toolRef && toolRef.id) {
412
+ toolIds.push(toolRef.id);
413
+ }
414
+ }
415
+
416
+ if (!this.parentAgent?.tool) {
417
+ // Fallback validation without ToolManager
418
+ const resolved = this.resolveTools();
419
+ const resolvedIds = resolved.map(tool => tool.id);
420
+ const missing = toolIds.filter(id => !resolvedIds.includes(id));
421
+ const found = toolIds.filter(id => resolvedIds.includes(id));
422
+
423
+ return {
424
+ valid: missing.length === 0,
425
+ missing,
426
+ found,
427
+ details: toolIds.map(id => ({ id, found: resolvedIds.includes(id) }))
428
+ };
429
+ }
430
+
431
+ // Use ToolManager validation
432
+ return this.parentAgent.tool.validateToolReferences(toolIds, this);
433
+ }
434
+
205
435
  /**
206
436
  * Get all transitions from this step
207
437
  */
@@ -210,13 +440,63 @@ export class Step<TContext = unknown, TData = unknown> {
210
440
  }
211
441
 
212
442
  /**
213
- * Check if this step should be skipped based on collected data
443
+ * Evaluate when condition using ConditionEvaluator
214
444
  */
215
- shouldSkip(data: Partial<TData>): boolean {
216
- if (!this.skipIf) return false;
217
- return this.skipIf(data);
445
+ async evaluateWhen(
446
+ templateContext: TemplateContext<TContext, TData>
447
+ ): Promise<{
448
+ shouldActivate: boolean;
449
+ aiContextStrings: string[];
450
+ hasProgrammaticConditions: boolean;
451
+ }> {
452
+ if (!this.when) {
453
+ return {
454
+ shouldActivate: true,
455
+ aiContextStrings: [],
456
+ hasProgrammaticConditions: false
457
+ };
458
+ }
459
+
460
+ const evaluator = createConditionEvaluator(templateContext);
461
+ const result = await evaluator.evaluateCondition(this.when, 'AND');
462
+
463
+ return {
464
+ shouldActivate: result.programmaticResult,
465
+ aiContextStrings: result.aiContextStrings,
466
+ hasProgrammaticConditions: result.hasProgrammaticConditions
467
+ };
218
468
  }
219
469
 
470
+ /**
471
+ * Evaluate skipIf condition using ConditionEvaluator
472
+ */
473
+ async evaluateSkipIf(
474
+ templateContext: TemplateContext<TContext, TData>
475
+ ): Promise<{
476
+ shouldSkip: boolean;
477
+ aiContextStrings: string[];
478
+ hasProgrammaticConditions: boolean;
479
+ }> {
480
+ if (!this.skipIf) {
481
+ return {
482
+ shouldSkip: false,
483
+ aiContextStrings: [],
484
+ hasProgrammaticConditions: false
485
+ };
486
+ }
487
+
488
+ const evaluator = createConditionEvaluator(templateContext);
489
+ const result = await evaluator.evaluateCondition(this.skipIf, 'OR');
490
+
491
+ return {
492
+ shouldSkip: result.programmaticResult,
493
+ aiContextStrings: result.aiContextStrings,
494
+ hasProgrammaticConditions: result.hasProgrammaticConditions
495
+ };
496
+ }
497
+
498
+
499
+
220
500
  /**
221
501
  * Check if this step has all required data to proceed
222
502
  */
@@ -250,6 +530,8 @@ export class Step<TContext = unknown, TData = unknown> {
250
530
  stepInstance.nextStep(spec),
251
531
  branch: (branches: BranchSpec<TContext, TData>[]) =>
252
532
  stepInstance.branch(branches),
533
+ endRoute: (options?: Omit<StepOptions<TContext, TData>, "step">) =>
534
+ stepInstance.endRoute(options),
253
535
  };
254
536
  }
255
537
 
@@ -270,6 +552,8 @@ export class Step<TContext = unknown, TData = unknown> {
270
552
  branch: () => {
271
553
  throw new Error("Cannot branch from END_ROUTE step");
272
554
  },
555
+ endRoute: (options?: Omit<StepOptions<TContext, TData>, "step">) =>
556
+ this.endRoute(options),
273
557
  };
274
558
  }
275
559
 
@@ -282,6 +566,28 @@ export class Step<TContext = unknown, TData = unknown> {
282
566
  nextStep: (spec: StepOptions<TContext, TData>) => this.nextStep(spec),
283
567
  branch: (branches: BranchSpec<TContext, TData>[]) =>
284
568
  this.branch(branches),
569
+ endRoute: (options?: Omit<StepOptions<TContext, TData>, "step">) =>
570
+ this.endRoute(options),
571
+ };
572
+ }
573
+
574
+ /**
575
+ * Export step configuration as StepOptions for copying/cloning
576
+ * @returns StepOptions that can be used to create a new step with identical configuration
577
+ */
578
+ toOptions(): StepOptions<TContext, TData> {
579
+ return {
580
+ id: this.id,
581
+ description: this.description,
582
+ prompt: this.prompt,
583
+ tools: this.tools,
584
+ prepare: this.prepare,
585
+ finalize: this.finalize,
586
+ collect: this.collect,
587
+ skipIf: this.skipIf,
588
+ requires: this.requires,
589
+ when: this.when,
590
+ guidelines: this.getGuidelines(),
285
591
  };
286
592
  }
287
593
  }