@falai/agent 1.2.8 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (522) hide show
  1. package/README.md +40 -886
  2. package/dist/adapters/MemoryAdapter.js +2 -2
  3. package/dist/adapters/MemoryAdapter.js.map +1 -1
  4. package/dist/adapters/MongoAdapter.js +2 -2
  5. package/dist/adapters/MongoAdapter.js.map +1 -1
  6. package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
  7. package/dist/adapters/OpenSearchAdapter.js +9 -7
  8. package/dist/adapters/OpenSearchAdapter.js.map +1 -1
  9. package/dist/adapters/PostgreSQLAdapter.d.ts +14 -0
  10. package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  11. package/dist/adapters/PostgreSQLAdapter.js +25 -9
  12. package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
  13. package/dist/adapters/PrismaAdapter.js +5 -5
  14. package/dist/adapters/PrismaAdapter.js.map +1 -1
  15. package/dist/adapters/RedisAdapter.js +2 -2
  16. package/dist/adapters/RedisAdapter.js.map +1 -1
  17. package/dist/adapters/SQLiteAdapter.d.ts +17 -0
  18. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
  19. package/dist/adapters/SQLiteAdapter.js +30 -11
  20. package/dist/adapters/SQLiteAdapter.js.map +1 -1
  21. package/dist/cjs/adapters/MemoryAdapter.js +2 -2
  22. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  23. package/dist/cjs/adapters/MongoAdapter.js +2 -2
  24. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  25. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
  26. package/dist/cjs/adapters/OpenSearchAdapter.js +9 -7
  27. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  28. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +14 -0
  29. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  30. package/dist/cjs/adapters/PostgreSQLAdapter.js +25 -9
  31. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  32. package/dist/cjs/adapters/PrismaAdapter.js +5 -5
  33. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  34. package/dist/cjs/adapters/RedisAdapter.js +2 -2
  35. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  36. package/dist/cjs/adapters/SQLiteAdapter.d.ts +17 -0
  37. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  38. package/dist/cjs/adapters/SQLiteAdapter.js +30 -11
  39. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  40. package/dist/cjs/constants/index.d.ts +0 -9
  41. package/dist/cjs/constants/index.d.ts.map +1 -1
  42. package/dist/cjs/constants/index.js +2 -11
  43. package/dist/cjs/constants/index.js.map +1 -1
  44. package/dist/cjs/core/Agent.d.ts +119 -153
  45. package/dist/cjs/core/Agent.d.ts.map +1 -1
  46. package/dist/cjs/core/Agent.js +471 -324
  47. package/dist/cjs/core/Agent.js.map +1 -1
  48. package/dist/cjs/core/AutoChainExecutor.d.ts +107 -0
  49. package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -0
  50. package/dist/cjs/core/AutoChainExecutor.js +297 -0
  51. package/dist/cjs/core/AutoChainExecutor.js.map +1 -0
  52. package/dist/cjs/core/BranchEvaluator.d.ts +54 -0
  53. package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -0
  54. package/dist/cjs/core/BranchEvaluator.js +130 -0
  55. package/dist/cjs/core/BranchEvaluator.js.map +1 -0
  56. package/dist/cjs/core/DirectiveBus.d.ts +88 -0
  57. package/dist/cjs/core/DirectiveBus.d.ts.map +1 -0
  58. package/dist/cjs/core/DirectiveBus.js +196 -0
  59. package/dist/cjs/core/DirectiveBus.js.map +1 -0
  60. package/dist/cjs/core/DirectiveChainTracker.d.ts +49 -0
  61. package/dist/cjs/core/DirectiveChainTracker.d.ts.map +1 -0
  62. package/dist/cjs/core/DirectiveChainTracker.js +121 -0
  63. package/dist/cjs/core/DirectiveChainTracker.js.map +1 -0
  64. package/dist/cjs/core/Flow.d.ts +186 -0
  65. package/dist/cjs/core/Flow.d.ts.map +1 -0
  66. package/dist/cjs/core/Flow.js +550 -0
  67. package/dist/cjs/core/Flow.js.map +1 -0
  68. package/dist/cjs/core/FlowRouter.d.ts +182 -0
  69. package/dist/cjs/core/FlowRouter.d.ts.map +1 -0
  70. package/dist/cjs/core/{RoutingEngine.js → FlowRouter.js} +323 -306
  71. package/dist/cjs/core/FlowRouter.js.map +1 -0
  72. package/dist/cjs/core/PersistenceManager.d.ts +2 -2
  73. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  74. package/dist/cjs/core/PersistenceManager.js +7 -7
  75. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  76. package/dist/cjs/core/PromptComposer.d.ts +21 -8
  77. package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
  78. package/dist/cjs/core/PromptComposer.js +182 -105
  79. package/dist/cjs/core/PromptComposer.js.map +1 -1
  80. package/dist/cjs/core/PromptSectionCache.d.ts +1 -1
  81. package/dist/cjs/core/PromptSectionCache.js +1 -1
  82. package/dist/cjs/core/ResponseEngine.d.ts +18 -8
  83. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  84. package/dist/cjs/core/ResponseEngine.js +38 -36
  85. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  86. package/dist/cjs/core/ResponseModal.d.ts +73 -56
  87. package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
  88. package/dist/cjs/core/ResponseModal.js +1191 -1014
  89. package/dist/cjs/core/ResponseModal.js.map +1 -1
  90. package/dist/cjs/core/ResponsePipeline.d.ts +124 -26
  91. package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
  92. package/dist/cjs/core/ResponsePipeline.js +509 -136
  93. package/dist/cjs/core/ResponsePipeline.js.map +1 -1
  94. package/dist/cjs/core/SignalEvaluator.d.ts +86 -0
  95. package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -0
  96. package/dist/cjs/core/SignalEvaluator.js +333 -0
  97. package/dist/cjs/core/SignalEvaluator.js.map +1 -0
  98. package/dist/cjs/core/SignalProcessor.d.ts +152 -0
  99. package/dist/cjs/core/SignalProcessor.d.ts.map +1 -0
  100. package/dist/cjs/core/SignalProcessor.js +562 -0
  101. package/dist/cjs/core/SignalProcessor.js.map +1 -0
  102. package/dist/cjs/core/Step.d.ts +43 -32
  103. package/dist/cjs/core/Step.d.ts.map +1 -1
  104. package/dist/cjs/core/Step.js +221 -126
  105. package/dist/cjs/core/Step.js.map +1 -1
  106. package/dist/cjs/core/StreamingToolExecutor.d.ts +2 -2
  107. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -1
  108. package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
  109. package/dist/cjs/core/ToolManager.d.ts +44 -13
  110. package/dist/cjs/core/ToolManager.d.ts.map +1 -1
  111. package/dist/cjs/core/ToolManager.js +174 -91
  112. package/dist/cjs/core/ToolManager.js.map +1 -1
  113. package/dist/cjs/core/createAgent.d.ts +35 -0
  114. package/dist/cjs/core/createAgent.d.ts.map +1 -0
  115. package/dist/cjs/core/createAgent.js +39 -0
  116. package/dist/cjs/core/createAgent.js.map +1 -0
  117. package/dist/cjs/core/flow-namespace.d.ts +49 -0
  118. package/dist/cjs/core/flow-namespace.d.ts.map +1 -0
  119. package/dist/cjs/core/flow-namespace.js +171 -0
  120. package/dist/cjs/core/flow-namespace.js.map +1 -0
  121. package/dist/cjs/index.d.ts +11 -14
  122. package/dist/cjs/index.d.ts.map +1 -1
  123. package/dist/cjs/index.js +18 -22
  124. package/dist/cjs/index.js.map +1 -1
  125. package/dist/cjs/providers/AnthropicProvider.d.ts +1 -1
  126. package/dist/cjs/providers/AnthropicProvider.js +1 -1
  127. package/dist/cjs/providers/GeminiProvider.d.ts +1 -1
  128. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  129. package/dist/cjs/providers/GeminiProvider.js +1 -1
  130. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  131. package/dist/cjs/providers/OpenAIProvider.d.ts +1 -1
  132. package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
  133. package/dist/cjs/providers/OpenAIProvider.js +1 -1
  134. package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
  135. package/dist/cjs/types/agent.d.ts +183 -54
  136. package/dist/cjs/types/agent.d.ts.map +1 -1
  137. package/dist/cjs/types/agent.js +0 -6
  138. package/dist/cjs/types/agent.js.map +1 -1
  139. package/dist/cjs/types/ai.d.ts +3 -3
  140. package/dist/cjs/types/ai.d.ts.map +1 -1
  141. package/dist/cjs/types/errors.d.ts +15 -0
  142. package/dist/cjs/types/errors.d.ts.map +1 -0
  143. package/dist/cjs/types/errors.js +22 -0
  144. package/dist/cjs/types/errors.js.map +1 -0
  145. package/dist/cjs/types/flow.d.ts +513 -0
  146. package/dist/cjs/types/flow.d.ts.map +1 -0
  147. package/dist/cjs/types/{route.js → flow.js} +2 -2
  148. package/dist/cjs/types/flow.js.map +1 -0
  149. package/dist/cjs/types/index.d.ts +7 -6
  150. package/dist/cjs/types/index.d.ts.map +1 -1
  151. package/dist/cjs/types/index.js +6 -2
  152. package/dist/cjs/types/index.js.map +1 -1
  153. package/dist/cjs/types/persistence.d.ts +11 -7
  154. package/dist/cjs/types/persistence.d.ts.map +1 -1
  155. package/dist/cjs/types/routing.d.ts +1 -1
  156. package/dist/cjs/types/routing.d.ts.map +1 -1
  157. package/dist/cjs/types/session.d.ts +24 -23
  158. package/dist/cjs/types/session.d.ts.map +1 -1
  159. package/dist/cjs/types/signals.d.ts +248 -0
  160. package/dist/cjs/types/signals.d.ts.map +1 -0
  161. package/dist/cjs/types/signals.js +11 -0
  162. package/dist/cjs/types/signals.js.map +1 -0
  163. package/dist/cjs/types/template.d.ts +2 -8
  164. package/dist/cjs/types/template.d.ts.map +1 -1
  165. package/dist/cjs/types/tool.d.ts +36 -29
  166. package/dist/cjs/types/tool.d.ts.map +1 -1
  167. package/dist/cjs/types/tool.js +1 -1
  168. package/dist/cjs/types/tool.js.map +1 -1
  169. package/dist/cjs/utils/condition.d.ts +7 -1
  170. package/dist/cjs/utils/condition.d.ts.map +1 -1
  171. package/dist/cjs/utils/condition.js.map +1 -1
  172. package/dist/cjs/utils/id.d.ts +13 -5
  173. package/dist/cjs/utils/id.d.ts.map +1 -1
  174. package/dist/cjs/utils/id.js +24 -10
  175. package/dist/cjs/utils/id.js.map +1 -1
  176. package/dist/cjs/utils/index.d.ts +2 -2
  177. package/dist/cjs/utils/index.d.ts.map +1 -1
  178. package/dist/cjs/utils/index.js +7 -3
  179. package/dist/cjs/utils/index.js.map +1 -1
  180. package/dist/cjs/utils/session.d.ts +44 -5
  181. package/dist/cjs/utils/session.d.ts.map +1 -1
  182. package/dist/cjs/utils/session.js +197 -38
  183. package/dist/cjs/utils/session.js.map +1 -1
  184. package/dist/constants/index.d.ts +0 -9
  185. package/dist/constants/index.d.ts.map +1 -1
  186. package/dist/constants/index.js +3 -9
  187. package/dist/constants/index.js.map +1 -1
  188. package/dist/core/Agent.d.ts +119 -153
  189. package/dist/core/Agent.d.ts.map +1 -1
  190. package/dist/core/Agent.js +472 -325
  191. package/dist/core/Agent.js.map +1 -1
  192. package/dist/core/AutoChainExecutor.d.ts +107 -0
  193. package/dist/core/AutoChainExecutor.d.ts.map +1 -0
  194. package/dist/core/AutoChainExecutor.js +293 -0
  195. package/dist/core/AutoChainExecutor.js.map +1 -0
  196. package/dist/core/BranchEvaluator.d.ts +54 -0
  197. package/dist/core/BranchEvaluator.d.ts.map +1 -0
  198. package/dist/core/BranchEvaluator.js +126 -0
  199. package/dist/core/BranchEvaluator.js.map +1 -0
  200. package/dist/core/DirectiveBus.d.ts +88 -0
  201. package/dist/core/DirectiveBus.d.ts.map +1 -0
  202. package/dist/core/DirectiveBus.js +192 -0
  203. package/dist/core/DirectiveBus.js.map +1 -0
  204. package/dist/core/DirectiveChainTracker.d.ts +49 -0
  205. package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
  206. package/dist/core/DirectiveChainTracker.js +117 -0
  207. package/dist/core/DirectiveChainTracker.js.map +1 -0
  208. package/dist/core/Flow.d.ts +186 -0
  209. package/dist/core/Flow.d.ts.map +1 -0
  210. package/dist/core/Flow.js +546 -0
  211. package/dist/core/Flow.js.map +1 -0
  212. package/dist/core/FlowRouter.d.ts +182 -0
  213. package/dist/core/FlowRouter.d.ts.map +1 -0
  214. package/dist/core/{RoutingEngine.js → FlowRouter.js} +322 -305
  215. package/dist/core/FlowRouter.js.map +1 -0
  216. package/dist/core/PersistenceManager.d.ts +2 -2
  217. package/dist/core/PersistenceManager.d.ts.map +1 -1
  218. package/dist/core/PersistenceManager.js +7 -7
  219. package/dist/core/PersistenceManager.js.map +1 -1
  220. package/dist/core/PromptComposer.d.ts +21 -8
  221. package/dist/core/PromptComposer.d.ts.map +1 -1
  222. package/dist/core/PromptComposer.js +183 -106
  223. package/dist/core/PromptComposer.js.map +1 -1
  224. package/dist/core/PromptSectionCache.d.ts +1 -1
  225. package/dist/core/PromptSectionCache.js +1 -1
  226. package/dist/core/ResponseEngine.d.ts +18 -8
  227. package/dist/core/ResponseEngine.d.ts.map +1 -1
  228. package/dist/core/ResponseEngine.js +38 -36
  229. package/dist/core/ResponseEngine.js.map +1 -1
  230. package/dist/core/ResponseModal.d.ts +73 -56
  231. package/dist/core/ResponseModal.d.ts.map +1 -1
  232. package/dist/core/ResponseModal.js +1193 -1016
  233. package/dist/core/ResponseModal.js.map +1 -1
  234. package/dist/core/ResponsePipeline.d.ts +124 -26
  235. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  236. package/dist/core/ResponsePipeline.js +509 -137
  237. package/dist/core/ResponsePipeline.js.map +1 -1
  238. package/dist/core/SignalEvaluator.d.ts +86 -0
  239. package/dist/core/SignalEvaluator.d.ts.map +1 -0
  240. package/dist/core/SignalEvaluator.js +326 -0
  241. package/dist/core/SignalEvaluator.js.map +1 -0
  242. package/dist/core/SignalProcessor.d.ts +152 -0
  243. package/dist/core/SignalProcessor.d.ts.map +1 -0
  244. package/dist/core/SignalProcessor.js +555 -0
  245. package/dist/core/SignalProcessor.js.map +1 -0
  246. package/dist/core/Step.d.ts +43 -32
  247. package/dist/core/Step.d.ts.map +1 -1
  248. package/dist/core/Step.js +220 -126
  249. package/dist/core/Step.js.map +1 -1
  250. package/dist/core/StreamingToolExecutor.d.ts +2 -2
  251. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  252. package/dist/core/StreamingToolExecutor.js.map +1 -1
  253. package/dist/core/ToolManager.d.ts +44 -13
  254. package/dist/core/ToolManager.d.ts.map +1 -1
  255. package/dist/core/ToolManager.js +174 -91
  256. package/dist/core/ToolManager.js.map +1 -1
  257. package/dist/core/createAgent.d.ts +35 -0
  258. package/dist/core/createAgent.d.ts.map +1 -0
  259. package/dist/core/createAgent.js +36 -0
  260. package/dist/core/createAgent.js.map +1 -0
  261. package/dist/core/flow-namespace.d.ts +49 -0
  262. package/dist/core/flow-namespace.d.ts.map +1 -0
  263. package/dist/core/flow-namespace.js +168 -0
  264. package/dist/core/flow-namespace.js.map +1 -0
  265. package/dist/index.d.ts +11 -14
  266. package/dist/index.d.ts.map +1 -1
  267. package/dist/index.js +9 -12
  268. package/dist/index.js.map +1 -1
  269. package/dist/providers/AnthropicProvider.d.ts +1 -1
  270. package/dist/providers/AnthropicProvider.js +1 -1
  271. package/dist/providers/GeminiProvider.d.ts +1 -1
  272. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  273. package/dist/providers/GeminiProvider.js +1 -1
  274. package/dist/providers/GeminiProvider.js.map +1 -1
  275. package/dist/providers/OpenAIProvider.d.ts +1 -1
  276. package/dist/providers/OpenAIProvider.d.ts.map +1 -1
  277. package/dist/providers/OpenAIProvider.js +1 -1
  278. package/dist/providers/OpenAIProvider.js.map +1 -1
  279. package/dist/types/agent.d.ts +183 -54
  280. package/dist/types/agent.d.ts.map +1 -1
  281. package/dist/types/agent.js +0 -6
  282. package/dist/types/agent.js.map +1 -1
  283. package/dist/types/ai.d.ts +3 -3
  284. package/dist/types/ai.d.ts.map +1 -1
  285. package/dist/types/errors.d.ts +15 -0
  286. package/dist/types/errors.d.ts.map +1 -0
  287. package/dist/types/errors.js +18 -0
  288. package/dist/types/errors.js.map +1 -0
  289. package/dist/types/flow.d.ts +513 -0
  290. package/dist/types/flow.d.ts.map +1 -0
  291. package/dist/types/flow.js +5 -0
  292. package/dist/types/flow.js.map +1 -0
  293. package/dist/types/index.d.ts +7 -6
  294. package/dist/types/index.d.ts.map +1 -1
  295. package/dist/types/index.js +4 -1
  296. package/dist/types/index.js.map +1 -1
  297. package/dist/types/persistence.d.ts +11 -7
  298. package/dist/types/persistence.d.ts.map +1 -1
  299. package/dist/types/routing.d.ts +1 -1
  300. package/dist/types/routing.d.ts.map +1 -1
  301. package/dist/types/session.d.ts +24 -23
  302. package/dist/types/session.d.ts.map +1 -1
  303. package/dist/types/signals.d.ts +248 -0
  304. package/dist/types/signals.d.ts.map +1 -0
  305. package/dist/types/signals.js +10 -0
  306. package/dist/types/signals.js.map +1 -0
  307. package/dist/types/template.d.ts +2 -8
  308. package/dist/types/template.d.ts.map +1 -1
  309. package/dist/types/tool.d.ts +36 -29
  310. package/dist/types/tool.d.ts.map +1 -1
  311. package/dist/types/tool.js +1 -1
  312. package/dist/types/tool.js.map +1 -1
  313. package/dist/utils/condition.d.ts +7 -1
  314. package/dist/utils/condition.d.ts.map +1 -1
  315. package/dist/utils/condition.js.map +1 -1
  316. package/dist/utils/id.d.ts +13 -5
  317. package/dist/utils/id.d.ts.map +1 -1
  318. package/dist/utils/id.js +22 -9
  319. package/dist/utils/id.js.map +1 -1
  320. package/dist/utils/index.d.ts +2 -2
  321. package/dist/utils/index.d.ts.map +1 -1
  322. package/dist/utils/index.js +2 -2
  323. package/dist/utils/index.js.map +1 -1
  324. package/dist/utils/session.d.ts +44 -5
  325. package/dist/utils/session.d.ts.map +1 -1
  326. package/dist/utils/session.js +193 -37
  327. package/dist/utils/session.js.map +1 -1
  328. package/docs/README.md +22 -200
  329. package/docs/concepts/architecture.md +281 -0
  330. package/docs/concepts/directives.md +400 -0
  331. package/docs/concepts/pipeline.md +399 -0
  332. package/docs/guides/branching.md +263 -0
  333. package/docs/guides/compaction.md +163 -0
  334. package/docs/guides/conditions.md +167 -0
  335. package/docs/guides/error-handling.md +176 -0
  336. package/docs/guides/flow-control.md +409 -0
  337. package/docs/guides/instructions.md +210 -0
  338. package/docs/guides/persistence.md +182 -0
  339. package/docs/guides/streaming.md +137 -0
  340. package/docs/migration/README.md +14 -0
  341. package/docs/migration/route-to-flow.md +561 -0
  342. package/docs/migration/v1-to-v2.md +909 -0
  343. package/docs/reference/adapters.md +481 -0
  344. package/docs/reference/branches.md +241 -0
  345. package/docs/reference/create-agent.md +186 -0
  346. package/docs/reference/directive.md +243 -0
  347. package/docs/reference/errors.md +122 -0
  348. package/docs/reference/flow.md +238 -0
  349. package/docs/reference/instruction.md +177 -0
  350. package/docs/reference/pre-directive.md +131 -0
  351. package/docs/reference/providers.md +227 -0
  352. package/docs/reference/signals.md +356 -0
  353. package/docs/reference/step.md +339 -0
  354. package/docs/reference/tool.md +269 -0
  355. package/docs/start/01-install.md +81 -0
  356. package/docs/start/02-first-agent.md +196 -0
  357. package/docs/start/03-collect-data.md +222 -0
  358. package/docs/start/04-add-tools.md +276 -0
  359. package/docs/start/05-go-to-production.md +216 -0
  360. package/examples/01-quickstart.ts +20 -0
  361. package/examples/02-data-extraction.ts +90 -0
  362. package/examples/03-tools.ts +136 -0
  363. package/examples/04-instructions.ts +100 -0
  364. package/examples/05-branching.ts +140 -0
  365. package/examples/06-flow-control.ts +103 -0
  366. package/examples/07-streaming.ts +69 -0
  367. package/examples/08-persistence.ts +98 -0
  368. package/examples/09-signals.ts +144 -0
  369. package/examples/tsconfig.json +30 -0
  370. package/package.json +2 -1
  371. package/src/adapters/MemoryAdapter.ts +3 -3
  372. package/src/adapters/MongoAdapter.ts +3 -3
  373. package/src/adapters/OpenSearchAdapter.ts +10 -8
  374. package/src/adapters/PostgreSQLAdapter.ts +26 -10
  375. package/src/adapters/PrismaAdapter.ts +6 -6
  376. package/src/adapters/RedisAdapter.ts +3 -3
  377. package/src/adapters/SQLiteAdapter.ts +31 -12
  378. package/src/constants/index.ts +2 -10
  379. package/src/core/Agent.ts +585 -374
  380. package/src/core/AutoChainExecutor.ts +440 -0
  381. package/src/core/BranchEvaluator.ts +167 -0
  382. package/src/core/DirectiveBus.ts +248 -0
  383. package/src/core/DirectiveChainTracker.ts +144 -0
  384. package/src/core/Flow.ts +666 -0
  385. package/src/core/{RoutingEngine.ts → FlowRouter.ts} +385 -365
  386. package/src/core/PersistenceManager.ts +8 -8
  387. package/src/core/PromptComposer.ts +209 -140
  388. package/src/core/PromptSectionCache.ts +1 -1
  389. package/src/core/ResponseEngine.ts +61 -46
  390. package/src/core/ResponseModal.ts +1453 -1240
  391. package/src/core/ResponsePipeline.ts +655 -175
  392. package/src/core/SignalEvaluator.ts +420 -0
  393. package/src/core/SignalProcessor.ts +723 -0
  394. package/src/core/Step.ts +279 -176
  395. package/src/core/StreamingToolExecutor.ts +4 -4
  396. package/src/core/ToolManager.ts +200 -97
  397. package/src/core/createAgent.ts +40 -0
  398. package/src/core/flow-namespace.ts +219 -0
  399. package/src/index.ts +42 -36
  400. package/src/providers/AnthropicProvider.ts +2 -2
  401. package/src/providers/GeminiProvider.ts +2 -2
  402. package/src/providers/OpenAIProvider.ts +2 -2
  403. package/src/types/agent.ts +182 -53
  404. package/src/types/ai.ts +3 -3
  405. package/src/types/errors.ts +18 -0
  406. package/src/types/flow.ts +590 -0
  407. package/src/types/index.ts +43 -16
  408. package/src/types/persistence.ts +12 -8
  409. package/src/types/routing.ts +1 -1
  410. package/src/types/session.ts +26 -23
  411. package/src/types/signals.ts +321 -0
  412. package/src/types/template.ts +3 -11
  413. package/src/types/tool.ts +50 -42
  414. package/src/utils/condition.ts +13 -4
  415. package/src/utils/id.ts +27 -9
  416. package/src/utils/index.ts +6 -2
  417. package/src/utils/session.ts +238 -42
  418. package/dist/cjs/core/BatchExecutor.d.ts +0 -359
  419. package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
  420. package/dist/cjs/core/BatchExecutor.js +0 -861
  421. package/dist/cjs/core/BatchExecutor.js.map +0 -1
  422. package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
  423. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
  424. package/dist/cjs/core/BatchPromptBuilder.js +0 -223
  425. package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
  426. package/dist/cjs/core/Route.d.ts +0 -180
  427. package/dist/cjs/core/Route.d.ts.map +0 -1
  428. package/dist/cjs/core/Route.js +0 -542
  429. package/dist/cjs/core/Route.js.map +0 -1
  430. package/dist/cjs/core/RoutingEngine.d.ts +0 -185
  431. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  432. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  433. package/dist/cjs/types/route.d.ts +0 -336
  434. package/dist/cjs/types/route.d.ts.map +0 -1
  435. package/dist/cjs/types/route.js.map +0 -1
  436. package/dist/core/BatchExecutor.d.ts +0 -359
  437. package/dist/core/BatchExecutor.d.ts.map +0 -1
  438. package/dist/core/BatchExecutor.js +0 -856
  439. package/dist/core/BatchExecutor.js.map +0 -1
  440. package/dist/core/BatchPromptBuilder.d.ts +0 -89
  441. package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
  442. package/dist/core/BatchPromptBuilder.js +0 -219
  443. package/dist/core/BatchPromptBuilder.js.map +0 -1
  444. package/dist/core/Route.d.ts +0 -180
  445. package/dist/core/Route.d.ts.map +0 -1
  446. package/dist/core/Route.js +0 -538
  447. package/dist/core/Route.js.map +0 -1
  448. package/dist/core/RoutingEngine.d.ts +0 -185
  449. package/dist/core/RoutingEngine.d.ts.map +0 -1
  450. package/dist/core/RoutingEngine.js.map +0 -1
  451. package/dist/types/route.d.ts +0 -336
  452. package/dist/types/route.d.ts.map +0 -1
  453. package/dist/types/route.js +0 -5
  454. package/dist/types/route.js.map +0 -1
  455. package/docs/CONTRIBUTING.md +0 -521
  456. package/docs/api/README.md +0 -3299
  457. package/docs/api/overview.md +0 -1410
  458. package/docs/architecture/data-extraction-flow.md +0 -360
  459. package/docs/architecture/multi-step-execution.md +0 -277
  460. package/docs/core/agent/README.md +0 -938
  461. package/docs/core/agent/context-management.md +0 -796
  462. package/docs/core/agent/rules-and-prohibitions.md +0 -113
  463. package/docs/core/agent/session-management.md +0 -693
  464. package/docs/core/ai-integration/prompt-composition.md +0 -355
  465. package/docs/core/ai-integration/providers.md +0 -515
  466. package/docs/core/ai-integration/response-processing.md +0 -433
  467. package/docs/core/conversation-flows/data-collection.md +0 -772
  468. package/docs/core/conversation-flows/route-dsl.md +0 -509
  469. package/docs/core/conversation-flows/routes.md +0 -249
  470. package/docs/core/conversation-flows/step-transitions.md +0 -731
  471. package/docs/core/conversation-flows/steps.md +0 -268
  472. package/docs/core/error-handling.md +0 -830
  473. package/docs/core/persistence/adapters.md +0 -255
  474. package/docs/core/persistence/session-storage.md +0 -656
  475. package/docs/core/routing/intelligent-routing.md +0 -470
  476. package/docs/core/tools/enhanced-tool.md +0 -186
  477. package/docs/core/tools/streaming-execution.md +0 -161
  478. package/docs/core/tools/tool-definition.md +0 -970
  479. package/docs/core/tools/tool-scoping.md +0 -819
  480. package/docs/guides/advanced-patterns/publishing.md +0 -186
  481. package/docs/guides/context-compaction.md +0 -96
  482. package/docs/guides/error-handling-patterns.md +0 -578
  483. package/docs/guides/getting-started/README.md +0 -795
  484. package/docs/guides/migration/README.md +0 -101
  485. package/docs/guides/migration/flexible-routing-conditions.md +0 -375
  486. package/docs/guides/migration/multi-step-execution.md +0 -393
  487. package/docs/guides/migration/response-modal-refactor.md +0 -518
  488. package/docs/guides/prompt-optimization.md +0 -164
  489. package/examples/advanced-patterns/context-compaction.ts +0 -223
  490. package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
  491. package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
  492. package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
  493. package/examples/advanced-patterns/streaming-responses.ts +0 -656
  494. package/examples/ai-providers/anthropic-integration.ts +0 -388
  495. package/examples/ai-providers/openai-integration.ts +0 -228
  496. package/examples/condition-patterns/function-only-conditions.ts +0 -365
  497. package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
  498. package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
  499. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  500. package/examples/condition-patterns/string-only-conditions.ts +0 -296
  501. package/examples/conversation-flows/completion-transitions.ts +0 -318
  502. package/examples/core-concepts/basic-agent.ts +0 -503
  503. package/examples/core-concepts/modern-streaming-api.ts +0 -309
  504. package/examples/core-concepts/schema-driven-extraction.ts +0 -332
  505. package/examples/core-concepts/session-management.ts +0 -494
  506. package/examples/integrations/database-integration.ts +0 -631
  507. package/examples/integrations/healthcare-integration.ts +0 -595
  508. package/examples/integrations/search-integration.ts +0 -530
  509. package/examples/integrations/server-session-management.ts +0 -307
  510. package/examples/persistence/custom-adapter.ts +0 -526
  511. package/examples/persistence/database-persistence.ts +0 -583
  512. package/examples/persistence/memory-sessions.ts +0 -495
  513. package/examples/persistence/prisma-schema.example.prisma +0 -74
  514. package/examples/persistence/redis-persistence.ts +0 -488
  515. package/examples/tools/basic-tools.ts +0 -765
  516. package/examples/tools/data-enrichment-tools.ts +0 -593
  517. package/examples/tools/enhanced-tool-metadata.ts +0 -268
  518. package/examples/tools/streaming-tool-execution.ts +0 -283
  519. package/src/core/BatchExecutor.ts +0 -1187
  520. package/src/core/BatchPromptBuilder.ts +0 -299
  521. package/src/core/Route.ts +0 -678
  522. package/src/types/route.ts +0 -392
@@ -1,503 +0,0 @@
1
- /**
2
- * Example: Declarative Agent Configuration with Sequential Steps
3
- *
4
- * This example demonstrates how to configure an entire agent
5
- * using declarative syntax in the constructor, including:
6
- * - Terms (domain glossary)
7
- * - Guidelines (behavior rules) with flexible ConditionTemplate patterns
8
- * - Tools (capabilities)
9
- * - Routes with data extraction schemas and sequential steps
10
- * - Session management for multi-turn conversations
11
- * - NEW: Flexible routing conditions with ConditionTemplate patterns:
12
- * - String-only conditions: "user wants to book" (AI context only)
13
- * - Function-only conditions: (ctx) => ctx.data?.hasPayment (programmatic only)
14
- * - Mixed arrays: ["user wants to book", (ctx) => !ctx.data?.complete] (hybrid)
15
- * - Route skipIf: Dynamic route exclusion based on conditions
16
- * - Step skipIf: Enhanced conditional step skipping
17
- */
18
-
19
- import {
20
- Agent,
21
- GeminiProvider,
22
- Tool,
23
- ValidationError,
24
- type Term,
25
- type Guideline,
26
- } from "../../src/index";
27
-
28
- // Context type
29
- interface HealthcareContext {
30
- patientId: string;
31
- patientName: string;
32
- }
33
-
34
- // Data extraction types
35
- interface AppointmentData {
36
- appointmentType: "checkup" | "consultation" | "followup";
37
- preferredDate: string;
38
- preferredTime: string;
39
- symptoms?: string;
40
- urgency: "low" | "medium" | "high";
41
- }
42
-
43
- interface LabData {
44
- testType: string;
45
- testDate: string;
46
- resultsNeeded: boolean;
47
- }
48
-
49
- // Define tools using unified Tool interface
50
- const getInsuranceProvidersTool: Tool<HealthcareContext, HealthcareData> = {
51
- id: "healthcare_insurance_providers",
52
- description: "Retrieves list of accepted insurance providers",
53
- parameters: {
54
- type: "object",
55
- properties: {},
56
- },
57
- handler: async (context, args) => {
58
- return {
59
- data: "Available insurance providers: MegaCare Insurance, HealthFirst, WellnessPlus",
60
- };
61
- },
62
- };
63
-
64
- const getAvailableSlotsTool: Tool<HealthcareContext, HealthcareData> = {
65
- id: "healthcare_available_slots",
66
- description: "Gets available appointment slots",
67
- parameters: {
68
- type: "object",
69
- properties: {},
70
- },
71
- handler: async (context, args) => {
72
- return {
73
- data: "Available slots: Oct 20 at 10:00 AM, Oct 20 at 2:00 PM, Oct 21 at 1:00 PM",
74
- };
75
- },
76
- };
77
-
78
- const getLabResultsTool: Tool<HealthcareContext, HealthcareData> = {
79
- id: "healthcare_lab_results",
80
- description: "Retrieves patient lab results",
81
- parameters: {
82
- type: "object",
83
- properties: {},
84
- },
85
- handler: async (toolContext, args) => {
86
- // Tools can access collected data and context
87
- if (toolContext.data?.testType) {
88
- return {
89
- data: `${toolContext.data.testType} results for ${toolContext.context.patientName}: All values within normal range`,
90
- };
91
- }
92
-
93
- return {
94
- data: `Lab results for ${toolContext.context.patientName}: All values within normal range`,
95
- };
96
- },
97
- };
98
-
99
- const scheduleAppointmentTool: Tool<HealthcareContext, HealthcareData> = {
100
- id: "healthcare_schedule_appointment",
101
- description: "Schedules patient appointments",
102
- parameters: {
103
- type: "object",
104
- properties: {},
105
- },
106
- handler: async (context, args) => {
107
- // Tools access collected appointment data
108
- if (!context.data?.preferredDate || !context.data?.preferredTime) {
109
- return { data: "Please provide appointment details" };
110
- }
111
-
112
- return {
113
- data: `Appointment scheduled for ${context.data.preferredDate} at ${context.data.preferredTime}`,
114
- };
115
- },
116
- };
117
-
118
- // Declarative configuration
119
- const terms: Term<HealthcareContext>[] = [
120
- {
121
- name: "Office Phone Number",
122
- description: "The phone number of our office, at +1-234-567-8900",
123
- },
124
- {
125
- name: "Office Hours",
126
- description: "Office hours are Monday to Friday, 9 AM to 5 PM",
127
- },
128
- {
129
- name: "Dr. Charles Xavier",
130
- description: ({ context }) =>
131
- `Neurologist specializing in brain disorders for patient ${context?.patientName}`,
132
- synonyms: ["Professor X", "Dr. Xavier"],
133
- },
134
- ];
135
-
136
- const guidelines: Guideline<HealthcareContext>[] = [
137
- {
138
- // String-only condition for AI context
139
- condition: "The patient asks about insurance",
140
- action:
141
- "List the insurance providers we accept and tell them to call the office for more details",
142
- tags: ["insurance", "billing"],
143
- },
144
- {
145
- // Mixed condition: AI context + programmatic check
146
- condition: [
147
- "The patient asks to talk to a human agent",
148
- (ctx) => ctx.context?.patientName !== undefined // Only if we have patient info
149
- ],
150
- action: ({ context }: { context?: HealthcareContext }) =>
151
- `Of course. You can reach our office at +1-234-567-8900 during office hours (Monday to Friday, 9 AM to 5 PM). I've noted that you'd like to speak with someone, and I can have a representative call you back if you'd like, ${context?.patientName}.`,
152
- tags: ["escalation"],
153
- },
154
- {
155
- // Function-only condition for programmatic logic
156
- condition: (ctx) => {
157
- const event = ctx.history?.[ctx.history.length - 1]
158
- if(event && "content" in event){
159
- const message = (event.content as string).toLocaleLowerCase() || '';
160
- return !message.includes('health') && !message.includes('medical') && !message.includes('appointment');
161
- }
162
- return false
163
- },
164
- action:
165
- "Kindly tell them you cannot assist with off-topic inquiries - do not engage",
166
- tags: ["off-topic"],
167
- },
168
- ];
169
-
170
- const routes = [
171
- {
172
- id: "route_schedule_appointment",
173
- title: "Schedule Appointment",
174
- description: "Helps the patient schedule an appointment",
175
- // Mixed condition: AI context + programmatic check
176
- when: [
177
- "The patient wants to schedule an appointment",
178
- (ctx) => !ctx.data?.orderId // Only if no existing order
179
- ],
180
- // Skip if patient already has urgent medical needs
181
- skipIf: [
182
- "patient has urgent medical emergency",
183
- (ctx) => ctx.data?.urgency === "high"
184
- ],
185
- // NEW: Required fields for route completion (instead of schema)
186
- requiredFields: ["appointmentType", "preferredDate", "preferredTime"],
187
- // NEW: Optional fields that enhance the experience
188
- optionalFields: ["symptoms", "urgency"],
189
- guidelines: [
190
- {
191
- condition: "The patient says their visit is urgent",
192
- action: "Tell them to call the office immediately",
193
- tags: ["urgent"],
194
- enabled: true,
195
- },
196
- ],
197
- // Sequential steps for a linear booking flow
198
- steps: [
199
- {
200
- id: "ask_appointment_type",
201
- description: "Ask for appointment type",
202
- prompt:
203
- "What type of appointment do you need? (checkup, consultation, or followup)",
204
- collect: ["appointmentType"],
205
- },
206
- {
207
- id: "ask_date_time",
208
- description: "Ask for preferred date and time",
209
- prompt: "When would you like to come in?",
210
- collect: ["preferredDate", "preferredTime"],
211
- requires: ["appointmentType"], // Must have appointment type first
212
- },
213
- {
214
- id: "ask_symptoms",
215
- description: "Ask about symptoms",
216
- prompt: "Are you experiencing any symptoms?",
217
- collect: ["symptoms"],
218
- // Mixed skipIf: AI context + programmatic logic
219
- skipIf: [
220
- "routine checkup doesn't need symptom details",
221
- (data: Partial<HealthcareData>) => data.appointmentType === "checkup"
222
- ],
223
- },
224
- {
225
- id: "schedule_appointment",
226
- description: "Schedule the appointment",
227
- prompt: "I'll schedule your appointment now.",
228
- tools: [scheduleAppointmentTool], // Inline tool - only available on this step
229
- requires: ["preferredDate", "preferredTime"],
230
- prepare: "healthcare_insurance_providers", // Reference by ID
231
- finalize: "finalize_appointment", // Reference by ID - will be registered later
232
- },
233
- ],
234
- tools: ["healthcare_available_slots"], // Reference by ID
235
- },
236
- {
237
- id: "route_check_lab_results",
238
- title: "Check Lab Results",
239
- description: "Retrieves and explains patient lab results",
240
- // Function-only condition for programmatic logic
241
- when: (ctx) => {
242
- const message = ctx.helpers.getLastUserMessage()?.toLowerCase() || '';
243
- return message.includes('lab') || message.includes('test') || message.includes('results');
244
- },
245
- // Skip if no patient ID available
246
- skipIf: (ctx) => !ctx.context?.patientId,
247
- // NEW: Required fields for route completion
248
- requiredFields: ["testType"],
249
- // NEW: Optional fields
250
- optionalFields: ["testDate", "resultsNeeded"],
251
- guidelines: [
252
- {
253
- condition: "The patient presses for more conclusions about results",
254
- action:
255
- "Assertively tell them they should call the office to speak with a doctor",
256
- tags: ["escalation"],
257
- },
258
- ],
259
- tools: ["healthcare_lab_results"], // Reference by ID
260
- },
261
- {
262
- title: "General Healthcare Questions",
263
- description: "Answer general healthcare questions",
264
- // String-only condition for AI context
265
- when: "Patient asks general healthcare questions",
266
- // No required fields - conversational Q&A
267
- },
268
- ];
269
-
270
- // Define a unified data schema for all healthcare interactions
271
- interface HealthcareData extends AppointmentData, LabData {}
272
-
273
- const healthcareSchema = {
274
- type: "object",
275
- properties: {
276
- // Appointment fields
277
- appointmentType: {
278
- type: "string",
279
- enum: ["checkup", "consultation", "followup"],
280
- description: "Type of appointment needed",
281
- },
282
- preferredDate: {
283
- type: "string",
284
- description: "Preferred appointment date",
285
- },
286
- preferredTime: {
287
- type: "string",
288
- description: "Preferred appointment time",
289
- },
290
- symptoms: {
291
- type: "string",
292
- description: "Description of symptoms (if applicable)",
293
- },
294
- urgency: {
295
- type: "string",
296
- enum: ["low", "medium", "high"],
297
- default: "medium",
298
- },
299
- // Lab fields
300
- testType: {
301
- type: "string",
302
- description: "Type of lab test",
303
- },
304
- testDate: {
305
- type: "string",
306
- description: "Date of the lab test",
307
- },
308
- resultsNeeded: {
309
- type: "boolean",
310
- default: true,
311
- description: "Whether detailed results are needed",
312
- },
313
- },
314
- };
315
-
316
- // Create the fully configured agent with agent-level schema
317
- const agent = new Agent<HealthcareContext, HealthcareData>({
318
- name: "HealthBot",
319
- description: "A compassionate healthcare assistant",
320
- goal: "Provide helpful information and assist with appointments",
321
- context: {
322
- patientId: "p_12345",
323
- patientName: "Alice Johnson",
324
- },
325
- provider: new GeminiProvider({
326
- apiKey: process.env.GEMINI_API_KEY || "demo-key",
327
- model: "models/gemini-2.5-flash",
328
- }),
329
- // NEW: Agent-level schema
330
- schema: healthcareSchema,
331
- // Declarative initialization
332
- terms,
333
- guidelines,
334
- // Enable debug logging
335
- debug: true,
336
- });
337
-
338
- // Demonstrate different tool registration approaches
339
-
340
- // Method 1: Register tools for ID-based reference in routes
341
- // Note: scheduleAppointmentTool is NOT registered globally - it's only available on the specific step
342
- agent.tool.registerMany([
343
- getInsuranceProvidersTool,
344
- getAvailableSlotsTool,
345
- getLabResultsTool,
346
- // scheduleAppointmentTool, // Commented out - will be added to specific step only
347
- ]);
348
-
349
- // Method 2: Create and register specialized tools
350
- const appointmentValidator = agent.tool.createValidation({
351
- id: "validate_appointment",
352
- fields: ["appointmentType", "preferredDate", "preferredTime"] as const,
353
- validator: async (context, data) => {
354
- const errors: ValidationError[] = [];
355
- if (!data.appointmentType) errors.push({
356
- field: "appointmentType",
357
- value: data.appointmentType,
358
- message: "Appointment type is required",
359
- schemaPath: "appointmentType"
360
- });
361
- if (!data.preferredDate) errors.push({
362
- field: "preferredDate",
363
- value: data.preferredDate,
364
- message: "Preferred date is required",
365
- schemaPath: "preferredDate"
366
- });
367
- if (!data.preferredTime) errors.push({
368
- field: "preferredTime",
369
- value: data.preferredTime,
370
- message: "Preferred time is required",
371
- schemaPath: "preferredTime"
372
- });
373
-
374
- return {
375
- valid: errors.length === 0,
376
- errors,
377
- warnings: [],
378
- };
379
- },
380
- });
381
-
382
- // Method 3: Create data enrichment tool
383
- const patientDataEnricher = agent.tool.createDataEnrichment({
384
- id: "enrich_patient_data",
385
- fields: ["appointmentType", "symptoms"] as const,
386
- enricher: async (context, data) => {
387
- // Add urgency classification based on symptoms - return fields that exist in HealthcareData
388
- const urgentKeywords = ["chest pain", "difficulty breathing", "severe", "emergency"];
389
- const hasUrgentSymptoms = data.symptoms && urgentKeywords.some(keyword =>
390
- data.symptoms!.toLowerCase().includes(keyword)
391
- );
392
-
393
- return {
394
- urgency: hasUrgentSymptoms ? "high" : "medium", // This matches the urgency field in HealthcareData
395
- };
396
- },
397
- });
398
-
399
- // Method 4: Create tool using tool.create()
400
- const finalizeAppointmentTool = agent.tool.create({
401
- id: "finalize_appointment",
402
- description: "Complete the appointment booking process",
403
- parameters: { type: "object", properties: {} },
404
- handler: async (context, args) => {
405
- console.log(`✅ Appointment finalized for ${context.context.patientName}`);
406
- console.log(`📅 Details: ${JSON.stringify(context.data, null, 2)}`);
407
-
408
- // Could send confirmation email, update calendar, etc.
409
- return {
410
- data: `Appointment confirmed for ${context.context.patientName}`,
411
- };
412
- },
413
- });
414
-
415
- // Add routes after tools are registered
416
- routes.forEach((route: any) => {
417
- agent.createRoute(route);
418
- });
419
-
420
- // You can still add more dynamically after construction
421
- agent
422
- .createGuideline({
423
- condition: "The patient seems confused or distressed",
424
- action: "Speak slowly, clearly, and offer to connect them with a human",
425
- tags: ["empathy", "support"],
426
- })
427
- .createTerm({
428
- name: "Telemedicine",
429
- description: "Remote medical consultation via video call",
430
- synonyms: ["virtual visit", "video appointment"],
431
- });
432
-
433
- // Example usage with session management
434
-
435
- async function main() {
436
- // Session is automatically managed by the agent
437
- console.log("✨ Session ready:", agent.session.id);
438
-
439
- // Turn 1 - Agent responds and routes to appropriate flow
440
- console.log("🔄 Turn 1: Initial inquiry");
441
- const response1 = await agent.chat("Hi, I need to follow up on my recent visit");
442
-
443
- console.log("🤖 Agent:", response1.message);
444
- console.log("🛤️ Route chosen:", response1.session?.currentRoute?.title);
445
-
446
- // Turn 2 - User provides more details
447
- console.log("\n🔄 Turn 2: Providing appointment details");
448
- const response2 = await agent.chat("I need a checkup next Tuesday at 2 PM");
449
-
450
- console.log("🤖 Agent:", response2.message);
451
- console.log("📊 Collected data:", agent.session.getData());
452
- console.log("📍 Current step:", response2.session?.currentStep?.id);
453
-
454
- // Turn 3 - Continue the conversation flow
455
- console.log("\n🔄 Turn 3: Continuing appointment booking");
456
- const response3 = await agent.chat("I'm feeling a bit anxious about the visit");
457
-
458
- console.log("🤖 Agent:", response3.message);
459
- console.log("📊 Updated data:", agent.session.getData());
460
- console.log("📍 Current step:", response3.session?.currentStep?.id);
461
-
462
- // Check for route completion
463
- if (response3.isRouteComplete && response3.session) {
464
- console.log("\n✅ Appointment scheduling complete!");
465
- await sendAppointmentConfirmation(
466
- agent.getCollectedData() as HealthcareData
467
- );
468
- }
469
-
470
- console.log("\n📋 Session Summary:");
471
- console.log(
472
- "- Agent-level tools:",
473
- agent.getTools().map((t) => t.id)
474
- );
475
- console.log(
476
- "- Available routes:",
477
- agent.getRoutes().map((r) => r.title)
478
- );
479
- console.log("- Agent guidelines:", agent.getGuidelines().length);
480
- console.log("- Agent terms:", agent.getTerms().length);
481
- }
482
-
483
- /**
484
- * Mock function to send an appointment confirmation.
485
- * @param data - The healthcare data.
486
- */
487
- async function sendAppointmentConfirmation(data: HealthcareData) {
488
- console.log("\n" + "=".repeat(60));
489
- console.log("🚀 Sending Appointment Confirmation...");
490
- console.log("=".repeat(60));
491
- console.log("Appointment Details:", JSON.stringify(data, null, 2));
492
- console.log(
493
- ` - Confirmation sent for ${data.preferredDate} at ${data.preferredTime}`
494
- );
495
- await new Promise((resolve) => setTimeout(resolve, 500));
496
- console.log("✨ Confirmation delivered!");
497
- }
498
-
499
- export { agent };
500
-
501
- if (import.meta.url === `file://${process.argv[1]}`) {
502
- main().catch(console.error);
503
- }