@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
@@ -10,6 +10,11 @@
10
10
  * - Data persistence across turns
11
11
  * - Session restoration
12
12
  * - Route transitions with session state
13
+ * - NEW: Flexible ConditionTemplate patterns for session-aware routing:
14
+ * - String-only conditions: "user wants to order" (AI context only)
15
+ * - Function-only conditions: (ctx) => !!ctx.data?.orderId (session state checks)
16
+ * - Mixed arrays: ["payment needed", (ctx) => !ctx.data?.confirmed] (hybrid)
17
+ * - Session-aware skipIf conditions for flow control
13
18
  */
14
19
 
15
20
  import {
@@ -17,6 +22,7 @@ import {
17
22
  GeminiProvider,
18
23
  MemoryAdapter,
19
24
  type Tool,
25
+ ValidationError,
20
26
  } from "../../src/index";
21
27
 
22
28
  // Define data types for our multi-step process
@@ -36,23 +42,23 @@ interface OrderContext {
36
42
  }
37
43
 
38
44
  interface PaymentData {
39
- orderId: string;
45
+ orderId?: string; // Make this optional to match OrderData
40
46
  paymentMethod: "credit_card" | "paypal" | "bank_transfer";
41
47
  amount: number;
42
48
  confirmed: boolean;
43
49
  }
44
50
 
45
- // Tools for order processing
46
- const createOrder: Tool<unknown, UnifiedOrderData, [], string> = {
51
+ // Tools for order processing - using unified Tool interface
52
+ const createOrderTool: Tool<unknown, UnifiedOrderData> = {
47
53
  id: "create_order",
48
54
  description: "Create a new order from the collected order data",
49
55
  parameters: {
50
56
  type: "object",
51
57
  properties: {},
52
58
  },
53
- handler: ({ data }) => {
59
+ handler: (context, args) => {
54
60
  const orderId = `ORD-${Date.now()}`;
55
- console.log(`Creating order ${orderId} for ${data?.customerName}`);
61
+ console.log(`Creating order ${orderId} for ${context.data?.customerName}`);
56
62
 
57
63
  return {
58
64
  data: `Order ${orderId} created successfully!`,
@@ -63,22 +69,22 @@ const createOrder: Tool<unknown, UnifiedOrderData, [], string> = {
63
69
  },
64
70
  };
65
71
 
66
- const processPayment: Tool<unknown, UnifiedOrderData, [], string> = {
72
+ const processPaymentTool: Tool<unknown, UnifiedOrderData> = {
67
73
  id: "process_payment",
68
74
  description: "Process payment for an order",
69
75
  parameters: {
70
76
  type: "object",
71
77
  properties: {},
72
78
  },
73
- handler: ({ data }) => {
74
- console.log(`Processing payment for order ${data?.orderId}`);
79
+ handler: (context, args) => {
80
+ console.log(`Processing payment for order ${context.data?.orderId}`);
75
81
 
76
82
  // Simulate payment processing
77
83
  const success = Math.random() > 0.1; // 90% success rate
78
84
 
79
85
  if (success) {
80
86
  return {
81
- data: `Payment processed successfully! Order ${data?.orderId} is now confirmed.`,
87
+ data: `Payment processed successfully! Order ${context.data?.orderId} is now confirmed.`,
82
88
  dataUpdate: {
83
89
  confirmed: true,
84
90
  },
@@ -95,7 +101,7 @@ const processPayment: Tool<unknown, UnifiedOrderData, [], string> = {
95
101
  };
96
102
 
97
103
  // Define unified data schema for all order-related interactions
98
- interface UnifiedOrderData extends OrderData, PaymentData {}
104
+ interface UnifiedOrderData extends OrderData, PaymentData { }
99
105
 
100
106
  const orderSchema = {
101
107
  type: "object",
@@ -133,10 +139,75 @@ const agent = new Agent<unknown, UnifiedOrderData>({
133
139
  },
134
140
  });
135
141
 
142
+ // Demonstrate different tool registration patterns
143
+
144
+ // Method 1: Register tools for ID-based reference in steps
145
+ agent.tool.register(createOrderTool);
146
+ agent.tool.register(processPaymentTool);
147
+
148
+ // Method 2: Create specialized validation tool
149
+ const orderValidationTool = agent.tool.createValidation({
150
+ id: "validate_order",
151
+ fields: ["customerName", "productType", "budget"] as const,
152
+ validator: async (context, data) => {
153
+ const errors: ValidationError[] = [];
154
+ if (!data.customerName || data.customerName.length < 2) {
155
+ errors.push({
156
+ field: "customerName",
157
+ value: data.customerName,
158
+ message: "Customer name must be at least 2 characters",
159
+ schemaPath: "customerName"
160
+ });
161
+ }
162
+ if (!data.budget || data.budget < 100) {
163
+ errors.push({
164
+ field: "budget",
165
+ value: data.budget,
166
+ message: "Budget must be at least $100",
167
+ schemaPath: "budget"
168
+ });
169
+ }
170
+ return {
171
+ valid: errors.length === 0,
172
+ errors,
173
+ warnings: [],
174
+ };
175
+ },
176
+ });
177
+
178
+ // Method 3: Create data enrichment tool
179
+ const orderEnrichmentTool = agent.tool.createDataEnrichment({
180
+ id: "enrich_order",
181
+ fields: ["productType", "budget"] as const,
182
+ enricher: async (context, data) => {
183
+ // Enrich with fields that exist in UnifiedOrderData
184
+ const urgentDelivery = data.budget > 1000; // Premium orders get urgent delivery
185
+ const preferredColor = data.productType === "laptop" ? "silver" : "black";
186
+
187
+ return {
188
+ urgentDelivery,
189
+ preferredColor,
190
+ };
191
+ },
192
+ });
193
+
136
194
  // Order collection route with sequential steps
137
195
  agent.createRoute({
138
196
  title: "Product Order",
139
197
  description: "Collect order details and create an order",
198
+ // Mixed condition: AI context + programmatic validation
199
+ when: [
200
+ "user wants to place an order or buy something",
201
+ (ctx) => {
202
+ const message = ctx.helpers.getLastUserMessage()?.toLowerCase() || '';
203
+ return message.includes('order') || message.includes('buy') || message.includes('purchase');
204
+ }
205
+ ],
206
+ // Skip if user already has a pending order
207
+ skipIf: [
208
+ "user already has an active order",
209
+ (ctx) => !!ctx.data?.orderId && !ctx.data?.confirmed
210
+ ],
140
211
  // NEW: Required fields for route completion
141
212
  requiredFields: ["customerName", "productType", "budget"],
142
213
  // NEW: Optional fields that enhance the experience
@@ -148,7 +219,8 @@ agent.createRoute({
148
219
  description: "Ask for customer name",
149
220
  prompt: "Hi! I'd like to help you place an order. What's your name?",
150
221
  collect: ["customerName"],
151
- skipIf: (data: Partial<UnifiedOrderData>) => !!data.customerName,
222
+ // String-only skipIf for AI context
223
+ skipIf: "customer name already provided",
152
224
  },
153
225
  {
154
226
  id: "ask_product",
@@ -156,7 +228,8 @@ agent.createRoute({
156
228
  prompt: "What would you like to order? (laptop, phone, or tablet)",
157
229
  collect: ["productType"],
158
230
  requires: ["customerName"],
159
- skipIf: (data: Partial<UnifiedOrderData>) => !!data.productType,
231
+ // Function-only skipIf for programmatic check
232
+ skipIf: (ctx) => !!ctx.data?.productType,
160
233
  },
161
234
  {
162
235
  id: "ask_budget",
@@ -164,7 +237,11 @@ agent.createRoute({
164
237
  prompt: "What's your budget for this purchase?",
165
238
  collect: ["budget"],
166
239
  requires: ["customerName", "productType"],
167
- skipIf: (data: Partial<UnifiedOrderData>) => data.budget !== undefined,
240
+ // Mixed skipIf: AI context + programmatic logic
241
+ skipIf: [
242
+ "budget already specified",
243
+ (ctx) => ctx.data?.budget !== undefined
244
+ ],
168
245
  },
169
246
  {
170
247
  id: "ask_color",
@@ -172,7 +249,8 @@ agent.createRoute({
172
249
  prompt: "Do you have a preferred color?",
173
250
  collect: ["preferredColor"],
174
251
  requires: ["customerName", "productType", "budget"],
175
- skipIf: (data: Partial<UnifiedOrderData>) => !!data.preferredColor,
252
+ // Function-only skipIf
253
+ skipIf: (ctx) => !!ctx.data?.preferredColor,
176
254
  },
177
255
  {
178
256
  id: "ask_urgent",
@@ -180,13 +258,14 @@ agent.createRoute({
180
258
  prompt: "Do you need urgent delivery?",
181
259
  collect: ["urgentDelivery"],
182
260
  requires: ["customerName", "productType", "budget"],
183
- skipIf: (data: Partial<UnifiedOrderData>) => data.urgentDelivery !== undefined,
261
+ // String-only skipIf for simple cases
262
+ skipIf: "delivery preference already collected",
184
263
  },
185
264
  {
186
265
  id: "create_order",
187
266
  description: "Create the order",
188
267
  prompt: "Great! Let me create your order.",
189
- tools: [createOrder],
268
+ tools: ["create_order"], // Reference by ID
190
269
  requires: ["customerName", "productType", "budget"],
191
270
  },
192
271
  ],
@@ -200,6 +279,10 @@ agent.createRoute({
200
279
  agent.createRoute({
201
280
  title: "Payment Processing",
202
281
  description: "Process payment for an order",
282
+ // Function-only condition for programmatic logic
283
+ when: (ctx) => !!ctx.data?.orderId && !ctx.data?.confirmed,
284
+ // Skip if payment already processed
285
+ skipIf: (ctx) => !!ctx.data?.confirmed,
203
286
  // NEW: Required fields for route completion
204
287
  requiredFields: ["orderId", "paymentMethod", "amount"],
205
288
  // NEW: Optional fields
@@ -212,7 +295,11 @@ agent.createRoute({
212
295
  prompt:
213
296
  "Now let's process payment for your order. What payment method would you prefer?",
214
297
  collect: ["paymentMethod"],
215
- skipIf: (data: Partial<UnifiedOrderData>) => !!data.paymentMethod,
298
+ // Mixed skipIf: AI context + programmatic check
299
+ skipIf: [
300
+ "payment method already selected",
301
+ (ctx) => !!ctx.data?.paymentMethod
302
+ ],
216
303
  },
217
304
  {
218
305
  id: "ask_amount",
@@ -220,13 +307,14 @@ agent.createRoute({
220
307
  prompt: "What's the payment amount?",
221
308
  collect: ["amount"],
222
309
  requires: ["paymentMethod"],
223
- skipIf: (data: Partial<UnifiedOrderData>) => data.amount !== undefined,
310
+ // Function-only skipIf
311
+ skipIf: (ctx) => ctx.data?.amount !== undefined,
224
312
  },
225
313
  {
226
314
  id: "process_payment",
227
315
  description: "Process the payment",
228
316
  prompt: "Processing your payment...",
229
- tools: [processPayment],
317
+ tools: ["process_payment"], // Reference by ID
230
318
  requires: ["orderId", "paymentMethod", "amount"],
231
319
  },
232
320
  ],
@@ -255,7 +343,7 @@ async function demonstrateSessionManagement() {
255
343
 
256
344
  // Copy routes to the session agent
257
345
  agent.getRoutes().forEach(route => {
258
- sessionAgent.createRoute(route);
346
+ sessionAgent.createRoute(route.toOptions());
259
347
  });
260
348
 
261
349
  // Turn 1: Start order process - simple message API
@@ -266,7 +354,7 @@ async function demonstrateSessionManagement() {
266
354
 
267
355
  console.log("Bot:", response1.message);
268
356
  console.log("Session ID:", sessionAgent.session.id);
269
- console.log("Session data:", JSON.stringify(sessionAgent.session.getData<UnifiedOrderData>(), null, 2));
357
+ console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
270
358
  console.log("History length:", sessionAgent.session.getHistory().length);
271
359
  console.log();
272
360
 
@@ -277,7 +365,7 @@ async function demonstrateSessionManagement() {
277
365
  const response2 = await sessionAgent.chat("My budget is $1500");
278
366
 
279
367
  console.log("Bot:", response2.message);
280
- console.log("Session data:", JSON.stringify(sessionAgent.session.getData<UnifiedOrderData>(), null, 2));
368
+ console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
281
369
  console.log("History length:", sessionAgent.session.getHistory().length);
282
370
  console.log();
283
371
 
@@ -288,7 +376,7 @@ async function demonstrateSessionManagement() {
288
376
  const response3 = await sessionAgent.chat("I want black color and urgent delivery please");
289
377
 
290
378
  console.log("Bot:", response3.message);
291
- console.log("Session data:", JSON.stringify(sessionAgent.session.getData<UnifiedOrderData>(), null, 2));
379
+ console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
292
380
  console.log("Route complete:", response3.isRouteComplete);
293
381
  console.log("History length:", sessionAgent.session.getHistory().length);
294
382
  console.log();
@@ -300,7 +388,7 @@ async function demonstrateSessionManagement() {
300
388
  const response4 = await sessionAgent.chat("I'll pay with credit card, amount is $1599");
301
389
 
302
390
  console.log("Bot:", response4.message);
303
- console.log("Session data:", JSON.stringify(sessionAgent.session.getData<UnifiedOrderData>(), null, 2));
391
+ console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
304
392
  console.log("Route complete:", response4.isRouteComplete);
305
393
  console.log("Final history length:", sessionAgent.session.getHistory().length);
306
394
  }
@@ -334,7 +422,7 @@ async function demonstrateSessionPersistence() {
334
422
 
335
423
  // Copy routes to the persistent agent
336
424
  agent.getRoutes().forEach(route => {
337
- persistentAgent.createRoute(route);
425
+ persistentAgent.createRoute(route.toOptions());
338
426
  });
339
427
 
340
428
  console.log("Session ready:", persistentAgent.session.id);
@@ -344,7 +432,7 @@ async function demonstrateSessionPersistence() {
344
432
 
345
433
  console.log("After first interaction:");
346
434
  console.log("🤖 Agent:", response1.message);
347
- console.log("Session data:", JSON.stringify(persistentAgent.session.getData<UnifiedOrderData>(), null, 2));
435
+ console.log("Session data:", JSON.stringify(persistentAgent.session.getData(), null, 2));
348
436
  console.log("History length:", persistentAgent.session.getHistory().length);
349
437
  console.log("Session automatically saved to persistence ✓");
350
438
 
@@ -373,20 +461,20 @@ async function demonstrateSessionPersistence() {
373
461
 
374
462
  // Copy routes to the restored agent
375
463
  agent.getRoutes().forEach(route => {
376
- restoredAgent.createRoute(route);
464
+ restoredAgent.createRoute(route.toOptions());
377
465
  });
378
466
 
379
467
  console.log("Session automatically restored:");
380
468
  console.log("- Session ID:", restoredAgent.session.id);
381
469
  console.log("- History length:", restoredAgent.session.getHistory().length);
382
- console.log("- Restored data:", JSON.stringify(restoredAgent.session.getData<UnifiedOrderData>(), null, 2));
470
+ console.log("- Restored data:", JSON.stringify(restoredAgent.session.getData(), null, 2));
383
471
 
384
472
  // Continue conversation seamlessly
385
473
  const response2 = await restoredAgent.chat("Actually, make it urgent delivery");
386
474
 
387
475
  console.log("\nAfter continuing with restored session:");
388
476
  console.log("🤖 Agent:", response2.message);
389
- console.log("Session data:", JSON.stringify(restoredAgent.session.getData<UnifiedOrderData>(), null, 2));
477
+ console.log("Session data:", JSON.stringify(restoredAgent.session.getData(), null, 2));
390
478
  console.log("History length:", restoredAgent.session.getHistory().length);
391
479
  console.log("Session automatically saved again ✓");
392
480
  }
@@ -155,7 +155,7 @@ async function example() {
155
155
  const onboardingRoute = agent.createRoute({
156
156
  title: "Customer Onboarding",
157
157
  description: "Collect customer information",
158
- conditions: [
158
+ when: [
159
159
  "User is a new customer",
160
160
  "User needs to set up their account",
161
161
  ],
@@ -171,19 +171,19 @@ async function example() {
171
171
  id: "ask_name",
172
172
  prompt: "Ask for full name",
173
173
  collect: ["fullName"],
174
- skipIf: (data: Partial<OnboardingData>) => !!data.fullName,
174
+ skipIf: (ctx) => !!ctx.data?.fullName,
175
175
  })
176
176
  .nextStep({
177
177
  id: "ask_email",
178
178
  prompt: "Ask for email address",
179
179
  collect: ["email"],
180
- skipIf: (data: Partial<OnboardingData>) => !!data.email,
180
+ skipIf: (ctx) => !!ctx.data?.email,
181
181
  })
182
182
  .nextStep({
183
183
  id: "ask_company",
184
184
  prompt: "Ask for company name",
185
185
  collect: ["companyName"],
186
- skipIf: (data: Partial<OnboardingData>) => !!data.companyName,
186
+ skipIf: (ctx) => !!ctx.data?.companyName,
187
187
  })
188
188
  .nextStep({
189
189
  id: "ask_phone",
@@ -414,7 +414,7 @@ async function syncSessionToDatabase(
414
414
  /**
415
415
  * Mock function to simulate processing the completed onboarding data.
416
416
  */
417
- async function processOnboarding(data: Partial<OnboardingData> | undefined) {
417
+ async function processOnboarding(data) {
418
418
  console.log("\n🚀 Processing onboarding data...");
419
419
  console.log(
420
420
  ` - Creating account for ${data?.fullName} at ${data?.companyName}`
@@ -453,7 +453,7 @@ async function advancedExample() {
453
453
  schema: smartOnboardingSchema,
454
454
  hooks: {
455
455
  // Validate and enrich collected data
456
- onDataUpdate: (data: Partial<OnboardingData>, _previous: Partial<OnboardingData>) => {
456
+ onDataUpdate: (data, _previous: Partial<OnboardingData>) => {
457
457
  console.log("🔄 Data collected, validating...");
458
458
 
459
459
  // Normalize email
@@ -39,7 +39,7 @@ interface SatisfactionData {
39
39
 
40
40
  // Tools
41
41
 
42
- const getUpcomingSlots: Tool<HealthcareContext, HealthcareData, unknown[], unknown> = {
42
+ const getUpcomingSlots: Tool<HealthcareContext, HealthcareData> = {
43
43
  id: "get_upcoming_slots",
44
44
  name: "Available Appointment Slots",
45
45
  description: "Get upcoming appointment slots",
@@ -47,12 +47,12 @@ const getUpcomingSlots: Tool<HealthcareContext, HealthcareData, unknown[], unkno
47
47
  type: "object",
48
48
  properties: {},
49
49
  },
50
- handler: () => {
51
- return { data: ["Monday 10 AM", "Tuesday 2 PM", "Wednesday 1 PM"] };
50
+ handler: (context, args) => {
51
+ return { data: "Available slots: Monday 10 AM, Tuesday 2 PM, Wednesday 1 PM" };
52
52
  },
53
53
  };
54
54
 
55
- const getLaterSlots: Tool<HealthcareContext, HealthcareData, unknown[], unknown> = {
55
+ const getLaterSlots: Tool<HealthcareContext, HealthcareData> = {
56
56
  id: "get_later_slots",
57
57
  name: "Extended Appointment Slots",
58
58
  description: "Get later appointment slots",
@@ -60,17 +60,12 @@ const getLaterSlots: Tool<HealthcareContext, HealthcareData, unknown[], unknown>
60
60
  type: "object",
61
61
  properties: {},
62
62
  },
63
- handler: () => {
64
- return { data: ["November 3, 11:30 AM", "November 12, 3 PM"] };
63
+ handler: (context, args) => {
64
+ return { data: "Later slots: November 3, 11:30 AM, November 12, 3 PM" };
65
65
  },
66
66
  };
67
67
 
68
- const scheduleAppointment: Tool<
69
- HealthcareContext,
70
- HealthcareData,
71
- unknown[],
72
- unknown
73
- > = {
68
+ const scheduleAppointment: Tool<HealthcareContext, HealthcareData> = {
74
69
  id: "schedule_appointment",
75
70
  name: "Appointment Scheduler",
76
71
  description: "Schedule an appointment with a healthcare provider",
@@ -81,26 +76,21 @@ const scheduleAppointment: Tool<
81
76
  },
82
77
  required: ["datetime"],
83
78
  },
84
- handler: ({ data }) => {
85
- if (!data?.preferredDate || !data?.preferredTime) {
79
+ handler: (context, args) => {
80
+ if (!context.data?.preferredDate || !context.data?.preferredTime) {
86
81
  return {
87
82
  data: "Please specify preferred date and time for the appointment",
88
83
  };
89
84
  }
90
85
  return {
91
- data: `Appointment scheduled for ${data.preferredDate} at ${
92
- data.preferredTime
93
- } for ${data.appointmentReason || "consultation"}`,
86
+ data: `Appointment scheduled for ${context.data.preferredDate} at ${
87
+ context.data.preferredTime
88
+ } for ${context.data.appointmentReason || "consultation"}`,
94
89
  };
95
90
  },
96
91
  };
97
92
 
98
- const getLabResults: Tool<
99
- HealthcareContext,
100
- HealthcareData,
101
- unknown[],
102
- unknown
103
- > = {
93
+ const getLabResults: Tool<HealthcareContext, HealthcareData> = {
104
94
  id: "get_lab_results",
105
95
  name: "Lab Results Retriever",
106
96
  description: "Get lab test results",
@@ -108,13 +98,9 @@ const getLabResults: Tool<
108
98
  type: "object",
109
99
  properties: {},
110
100
  },
111
- handler: ({ context, data }) => {
101
+ handler: (context, args) => {
112
102
  return {
113
- data: {
114
- report: `Lab results for ${data?.testType || "general"} tests`,
115
- prognosis: "All tests are within the valid range",
116
- patientName: context.patientName,
117
- },
103
+ data: `Lab results for ${context.data?.testType || "general"} tests: All tests are within the valid range for ${context.context.patientName}`,
118
104
  };
119
105
  },
120
106
  };
@@ -262,7 +248,7 @@ function createHealthcareAgent() {
262
248
  const schedulingRoute = agent.createRoute({
263
249
  title: "Schedule an Appointment",
264
250
  description: "Helps the patient find a time for their appointment.",
265
- conditions: ["The patient wants to schedule an appointment"],
251
+ when: ["The patient wants to schedule an appointment"],
266
252
  // Route-level identity for healthcare scheduling
267
253
  identity:
268
254
  "You are a compassionate healthcare scheduling assistant who helps patients book appointments. Be empathetic, prioritize urgent cases, and ensure patients feel supported throughout the process.",
@@ -295,7 +281,7 @@ function createHealthcareAgent() {
295
281
  const collectReason = schedulingRoute.initialStep.nextStep({
296
282
  prompt: "Ask what the patient needs an appointment for",
297
283
  collect: ["appointmentReason"],
298
- skipIf: (data) => !!data.appointmentReason,
284
+ skipIf: (ctx) => !!ctx.data?.appointmentReason,
299
285
  when: "Patient hasn't specified reason for appointment yet",
300
286
  });
301
287
 
@@ -303,7 +289,7 @@ function createHealthcareAgent() {
303
289
  const checkUrgency = collectReason.nextStep({
304
290
  prompt: "Check if this is urgent and show available slots",
305
291
  collect: ["urgency"],
306
- skipIf: (data) => !!data.urgency,
292
+ skipIf: (ctx) => !!ctx.data?.urgency,
307
293
  requires: ["appointmentReason"],
308
294
  when: "Reason provided, now assess urgency level",
309
295
  });
@@ -321,14 +307,14 @@ function createHealthcareAgent() {
321
307
  const collectPreferences = presentTimes.nextStep({
322
308
  prompt: "Collect preferred time and date",
323
309
  collect: ["preferredTime", "preferredDate"],
324
- skipIf: (data) => !!data.preferredTime && !!data.preferredDate,
310
+ skipIf: (ctx) => !!ctx.data?.preferredTime && !!ctx.data?.preferredDate,
325
311
  });
326
312
 
327
313
  // Step 5: Confirm details and schedule
328
314
  const confirmDetails = collectPreferences.nextStep({
329
315
  prompt: "Confirm the details with the patient before scheduling",
330
316
  collect: ["appointmentType"],
331
- skipIf: (data) => !!data.appointmentType,
317
+ skipIf: (ctx) => !!ctx.data?.appointmentType,
332
318
  requires: ["appointmentReason", "preferredTime", "preferredDate"],
333
319
  });
334
320
 
@@ -372,7 +358,7 @@ function createHealthcareAgent() {
372
358
  const labResultsRoute = agent.createRoute({
373
359
  title: "Lab Results",
374
360
  description: "Retrieves the patient's lab results and explains them.",
375
- conditions: ["The patient wants to see their lab results"],
361
+ when: ["The patient wants to see their lab results"],
376
362
  // NEW: Required fields for route completion
377
363
  requiredFields: ["testType"],
378
364
  // NEW: Optional fields
@@ -383,14 +369,14 @@ function createHealthcareAgent() {
383
369
  const collectTestInfo = labResultsRoute.initialStep.nextStep({
384
370
  prompt: "Ask what type of test results they want to see",
385
371
  collect: ["testType"],
386
- skipIf: (data) => !!data.testType,
372
+ skipIf: (ctx) => !!ctx.data?.testType,
387
373
  });
388
374
 
389
375
  // Step 2: Optional: collect test date
390
376
  const collectTestDate = collectTestInfo.nextStep({
391
377
  prompt: "Ask for the test date if they remember it",
392
378
  collect: ["testDate"],
393
- skipIf: (data) => !!data.testDate,
379
+ skipIf: (ctx) => !!ctx.data?.testDate,
394
380
  requires: ["testType"],
395
381
  });
396
382
 
@@ -418,7 +404,7 @@ function createHealthcareAgent() {
418
404
  const satisfactionRoute = agent.createRoute({
419
405
  title: "Satisfaction Survey",
420
406
  description: "Quick satisfaction survey after scheduling",
421
- conditions: ["Collect patient satisfaction feedback"],
407
+ when: ["Collect patient satisfaction feedback"],
422
408
 
423
409
  // Route-specific knowledge base for patient feedback
424
410
  knowledgeBase: {
@@ -456,7 +442,7 @@ function createHealthcareAgent() {
456
442
  prompt:
457
443
  "Ask for overall satisfaction rating from 1 to 5 with the scheduling experience",
458
444
  collect: ["rating"],
459
- skipIf: (data) => !!data.rating,
445
+ skipIf: (ctx) => !!ctx.data?.rating,
460
446
  });
461
447
 
462
448
  const askComments = askRating.nextStep({
@@ -76,7 +76,7 @@ async function example() {
76
76
  const userId = "user_123";
77
77
 
78
78
  // Create adapter
79
- const adapter = new OpenSearchAdapter<ConversationContext>(client, {
79
+ const adapter = new OpenSearchAdapter(client, {
80
80
  indices: {
81
81
  sessions: "agent_sessions",
82
82
  messages: "agent_messages",
@@ -145,7 +145,7 @@ async function example() {
145
145
  const complaintRoute = agent.createRoute({
146
146
  title: "Handle Customer Complaint",
147
147
  description: "Process and resolve customer complaints",
148
- conditions: [
148
+ when: [
149
149
  "User has a complaint",
150
150
  "User reports an issue or problem",
151
151
  "User is dissatisfied",
@@ -161,18 +161,18 @@ async function example() {
161
161
  .nextStep({
162
162
  prompt: "Understand the complaint",
163
163
  collect: ["category", "severity", "description"],
164
- skipIf: (data: Partial<ComplaintData>) => !!data.description,
164
+ skipIf: (ctx) => !!ctx.data?.description,
165
165
  })
166
166
  .nextStep({
167
167
  prompt: "Identify affected service",
168
168
  collect: ["affectedService"],
169
- skipIf: (data: Partial<ComplaintData>) => !!data.affectedService,
169
+ skipIf: (ctx) => !!ctx.data?.affectedService,
170
170
  requires: ["description"],
171
171
  })
172
172
  .nextStep({
173
173
  prompt: "Ask for desired resolution",
174
174
  collect: ["requestedResolution"],
175
- skipIf: (data: Partial<ComplaintData>) => !!data.requestedResolution,
175
+ skipIf: (ctx) => !!ctx.data?.requestedResolution,
176
176
  requires: ["category", "description"],
177
177
  })
178
178
  .nextStep({
@@ -254,7 +254,7 @@ async function example() {
254
254
  recoveredAgent.createRoute({
255
255
  title: "Handle Customer Complaint",
256
256
  description: "Process and resolve customer complaints",
257
- conditions: [
257
+ when: [
258
258
  "User has a complaint",
259
259
  "User reports an issue or problem",
260
260
  "User is dissatisfied",
@@ -324,7 +324,7 @@ async function analyticsExample() {
324
324
  auth: { username: "admin", password: "admin" },
325
325
  });
326
326
 
327
- const adapter = new OpenSearchAdapter<ConversationContext>(client, {
327
+ const adapter = new OpenSearchAdapter(client, {
328
328
  indices: {
329
329
  sessions: "support_sessions",
330
330
  messages: "support_messages",
@@ -396,7 +396,7 @@ async function analyticsExample() {
396
396
  // NEW: Agent-level schema
397
397
  schema: ticketSchema,
398
398
  persistence: {
399
- adapter: new OpenSearchAdapter<AnalyticsContext>(client),
399
+ adapter: new OpenSearchAdapter(client),
400
400
  autoSave: true,
401
401
  },
402
402
  });