@falai/agent 1.2.8 → 2.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 (499) 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/types/agent.d.ts +183 -54
  126. package/dist/cjs/types/agent.d.ts.map +1 -1
  127. package/dist/cjs/types/agent.js +0 -6
  128. package/dist/cjs/types/agent.js.map +1 -1
  129. package/dist/cjs/types/ai.d.ts +3 -3
  130. package/dist/cjs/types/ai.d.ts.map +1 -1
  131. package/dist/cjs/types/errors.d.ts +15 -0
  132. package/dist/cjs/types/errors.d.ts.map +1 -0
  133. package/dist/cjs/types/errors.js +22 -0
  134. package/dist/cjs/types/errors.js.map +1 -0
  135. package/dist/cjs/types/flow.d.ts +513 -0
  136. package/dist/cjs/types/flow.d.ts.map +1 -0
  137. package/dist/cjs/types/{route.js → flow.js} +2 -2
  138. package/dist/cjs/types/flow.js.map +1 -0
  139. package/dist/cjs/types/index.d.ts +7 -6
  140. package/dist/cjs/types/index.d.ts.map +1 -1
  141. package/dist/cjs/types/index.js +6 -2
  142. package/dist/cjs/types/index.js.map +1 -1
  143. package/dist/cjs/types/persistence.d.ts +11 -7
  144. package/dist/cjs/types/persistence.d.ts.map +1 -1
  145. package/dist/cjs/types/routing.d.ts +1 -1
  146. package/dist/cjs/types/routing.d.ts.map +1 -1
  147. package/dist/cjs/types/session.d.ts +24 -23
  148. package/dist/cjs/types/session.d.ts.map +1 -1
  149. package/dist/cjs/types/signals.d.ts +248 -0
  150. package/dist/cjs/types/signals.d.ts.map +1 -0
  151. package/dist/cjs/types/signals.js +11 -0
  152. package/dist/cjs/types/signals.js.map +1 -0
  153. package/dist/cjs/types/template.d.ts +2 -8
  154. package/dist/cjs/types/template.d.ts.map +1 -1
  155. package/dist/cjs/types/tool.d.ts +36 -29
  156. package/dist/cjs/types/tool.d.ts.map +1 -1
  157. package/dist/cjs/types/tool.js +1 -1
  158. package/dist/cjs/types/tool.js.map +1 -1
  159. package/dist/cjs/utils/condition.d.ts +7 -1
  160. package/dist/cjs/utils/condition.d.ts.map +1 -1
  161. package/dist/cjs/utils/condition.js.map +1 -1
  162. package/dist/cjs/utils/id.d.ts +13 -5
  163. package/dist/cjs/utils/id.d.ts.map +1 -1
  164. package/dist/cjs/utils/id.js +24 -10
  165. package/dist/cjs/utils/id.js.map +1 -1
  166. package/dist/cjs/utils/index.d.ts +2 -2
  167. package/dist/cjs/utils/index.d.ts.map +1 -1
  168. package/dist/cjs/utils/index.js +7 -3
  169. package/dist/cjs/utils/index.js.map +1 -1
  170. package/dist/cjs/utils/session.d.ts +44 -5
  171. package/dist/cjs/utils/session.d.ts.map +1 -1
  172. package/dist/cjs/utils/session.js +197 -38
  173. package/dist/cjs/utils/session.js.map +1 -1
  174. package/dist/constants/index.d.ts +0 -9
  175. package/dist/constants/index.d.ts.map +1 -1
  176. package/dist/constants/index.js +3 -9
  177. package/dist/constants/index.js.map +1 -1
  178. package/dist/core/Agent.d.ts +119 -153
  179. package/dist/core/Agent.d.ts.map +1 -1
  180. package/dist/core/Agent.js +472 -325
  181. package/dist/core/Agent.js.map +1 -1
  182. package/dist/core/AutoChainExecutor.d.ts +107 -0
  183. package/dist/core/AutoChainExecutor.d.ts.map +1 -0
  184. package/dist/core/AutoChainExecutor.js +293 -0
  185. package/dist/core/AutoChainExecutor.js.map +1 -0
  186. package/dist/core/BranchEvaluator.d.ts +54 -0
  187. package/dist/core/BranchEvaluator.d.ts.map +1 -0
  188. package/dist/core/BranchEvaluator.js +126 -0
  189. package/dist/core/BranchEvaluator.js.map +1 -0
  190. package/dist/core/DirectiveBus.d.ts +88 -0
  191. package/dist/core/DirectiveBus.d.ts.map +1 -0
  192. package/dist/core/DirectiveBus.js +192 -0
  193. package/dist/core/DirectiveBus.js.map +1 -0
  194. package/dist/core/DirectiveChainTracker.d.ts +49 -0
  195. package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
  196. package/dist/core/DirectiveChainTracker.js +117 -0
  197. package/dist/core/DirectiveChainTracker.js.map +1 -0
  198. package/dist/core/Flow.d.ts +186 -0
  199. package/dist/core/Flow.d.ts.map +1 -0
  200. package/dist/core/Flow.js +546 -0
  201. package/dist/core/Flow.js.map +1 -0
  202. package/dist/core/FlowRouter.d.ts +182 -0
  203. package/dist/core/FlowRouter.d.ts.map +1 -0
  204. package/dist/core/{RoutingEngine.js → FlowRouter.js} +322 -305
  205. package/dist/core/FlowRouter.js.map +1 -0
  206. package/dist/core/PersistenceManager.d.ts +2 -2
  207. package/dist/core/PersistenceManager.d.ts.map +1 -1
  208. package/dist/core/PersistenceManager.js +7 -7
  209. package/dist/core/PersistenceManager.js.map +1 -1
  210. package/dist/core/PromptComposer.d.ts +21 -8
  211. package/dist/core/PromptComposer.d.ts.map +1 -1
  212. package/dist/core/PromptComposer.js +183 -106
  213. package/dist/core/PromptComposer.js.map +1 -1
  214. package/dist/core/PromptSectionCache.d.ts +1 -1
  215. package/dist/core/PromptSectionCache.js +1 -1
  216. package/dist/core/ResponseEngine.d.ts +18 -8
  217. package/dist/core/ResponseEngine.d.ts.map +1 -1
  218. package/dist/core/ResponseEngine.js +38 -36
  219. package/dist/core/ResponseEngine.js.map +1 -1
  220. package/dist/core/ResponseModal.d.ts +73 -56
  221. package/dist/core/ResponseModal.d.ts.map +1 -1
  222. package/dist/core/ResponseModal.js +1193 -1016
  223. package/dist/core/ResponseModal.js.map +1 -1
  224. package/dist/core/ResponsePipeline.d.ts +124 -26
  225. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  226. package/dist/core/ResponsePipeline.js +509 -137
  227. package/dist/core/ResponsePipeline.js.map +1 -1
  228. package/dist/core/SignalEvaluator.d.ts +86 -0
  229. package/dist/core/SignalEvaluator.d.ts.map +1 -0
  230. package/dist/core/SignalEvaluator.js +326 -0
  231. package/dist/core/SignalEvaluator.js.map +1 -0
  232. package/dist/core/SignalProcessor.d.ts +152 -0
  233. package/dist/core/SignalProcessor.d.ts.map +1 -0
  234. package/dist/core/SignalProcessor.js +555 -0
  235. package/dist/core/SignalProcessor.js.map +1 -0
  236. package/dist/core/Step.d.ts +43 -32
  237. package/dist/core/Step.d.ts.map +1 -1
  238. package/dist/core/Step.js +220 -126
  239. package/dist/core/Step.js.map +1 -1
  240. package/dist/core/StreamingToolExecutor.d.ts +2 -2
  241. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  242. package/dist/core/StreamingToolExecutor.js.map +1 -1
  243. package/dist/core/ToolManager.d.ts +44 -13
  244. package/dist/core/ToolManager.d.ts.map +1 -1
  245. package/dist/core/ToolManager.js +174 -91
  246. package/dist/core/ToolManager.js.map +1 -1
  247. package/dist/core/createAgent.d.ts +35 -0
  248. package/dist/core/createAgent.d.ts.map +1 -0
  249. package/dist/core/createAgent.js +36 -0
  250. package/dist/core/createAgent.js.map +1 -0
  251. package/dist/core/flow-namespace.d.ts +49 -0
  252. package/dist/core/flow-namespace.d.ts.map +1 -0
  253. package/dist/core/flow-namespace.js +168 -0
  254. package/dist/core/flow-namespace.js.map +1 -0
  255. package/dist/index.d.ts +11 -14
  256. package/dist/index.d.ts.map +1 -1
  257. package/dist/index.js +9 -12
  258. package/dist/index.js.map +1 -1
  259. package/dist/types/agent.d.ts +183 -54
  260. package/dist/types/agent.d.ts.map +1 -1
  261. package/dist/types/agent.js +0 -6
  262. package/dist/types/agent.js.map +1 -1
  263. package/dist/types/ai.d.ts +3 -3
  264. package/dist/types/ai.d.ts.map +1 -1
  265. package/dist/types/errors.d.ts +15 -0
  266. package/dist/types/errors.d.ts.map +1 -0
  267. package/dist/types/errors.js +18 -0
  268. package/dist/types/errors.js.map +1 -0
  269. package/dist/types/flow.d.ts +513 -0
  270. package/dist/types/flow.d.ts.map +1 -0
  271. package/dist/types/flow.js +5 -0
  272. package/dist/types/flow.js.map +1 -0
  273. package/dist/types/index.d.ts +7 -6
  274. package/dist/types/index.d.ts.map +1 -1
  275. package/dist/types/index.js +4 -1
  276. package/dist/types/index.js.map +1 -1
  277. package/dist/types/persistence.d.ts +11 -7
  278. package/dist/types/persistence.d.ts.map +1 -1
  279. package/dist/types/routing.d.ts +1 -1
  280. package/dist/types/routing.d.ts.map +1 -1
  281. package/dist/types/session.d.ts +24 -23
  282. package/dist/types/session.d.ts.map +1 -1
  283. package/dist/types/signals.d.ts +248 -0
  284. package/dist/types/signals.d.ts.map +1 -0
  285. package/dist/types/signals.js +10 -0
  286. package/dist/types/signals.js.map +1 -0
  287. package/dist/types/template.d.ts +2 -8
  288. package/dist/types/template.d.ts.map +1 -1
  289. package/dist/types/tool.d.ts +36 -29
  290. package/dist/types/tool.d.ts.map +1 -1
  291. package/dist/types/tool.js +1 -1
  292. package/dist/types/tool.js.map +1 -1
  293. package/dist/utils/condition.d.ts +7 -1
  294. package/dist/utils/condition.d.ts.map +1 -1
  295. package/dist/utils/condition.js.map +1 -1
  296. package/dist/utils/id.d.ts +13 -5
  297. package/dist/utils/id.d.ts.map +1 -1
  298. package/dist/utils/id.js +22 -9
  299. package/dist/utils/id.js.map +1 -1
  300. package/dist/utils/index.d.ts +2 -2
  301. package/dist/utils/index.d.ts.map +1 -1
  302. package/dist/utils/index.js +2 -2
  303. package/dist/utils/index.js.map +1 -1
  304. package/dist/utils/session.d.ts +44 -5
  305. package/dist/utils/session.d.ts.map +1 -1
  306. package/dist/utils/session.js +193 -37
  307. package/dist/utils/session.js.map +1 -1
  308. package/docs/README.md +15 -202
  309. package/docs/concepts/architecture.md +281 -0
  310. package/docs/concepts/directives.md +400 -0
  311. package/docs/concepts/pipeline.md +399 -0
  312. package/docs/guides/branching.md +263 -0
  313. package/docs/guides/compaction.md +163 -0
  314. package/docs/guides/conditions.md +167 -0
  315. package/docs/guides/error-handling.md +176 -0
  316. package/docs/guides/flow-control.md +409 -0
  317. package/docs/guides/instructions.md +210 -0
  318. package/docs/guides/persistence.md +182 -0
  319. package/docs/guides/streaming.md +137 -0
  320. package/docs/migration/README.md +15 -0
  321. package/docs/migration/route-to-flow.md +560 -0
  322. package/docs/migration/v1-to-v2.md +909 -0
  323. package/docs/reference/adapters.md +481 -0
  324. package/docs/reference/branches.md +241 -0
  325. package/docs/reference/create-agent.md +186 -0
  326. package/docs/reference/directive.md +243 -0
  327. package/docs/reference/errors.md +122 -0
  328. package/docs/reference/flow.md +238 -0
  329. package/docs/reference/instruction.md +177 -0
  330. package/docs/reference/pre-directive.md +131 -0
  331. package/docs/reference/providers.md +227 -0
  332. package/docs/reference/signals.md +356 -0
  333. package/docs/reference/step.md +339 -0
  334. package/docs/reference/tool.md +269 -0
  335. package/docs/start/01-install.md +81 -0
  336. package/docs/start/02-first-agent.md +196 -0
  337. package/docs/start/03-collect-data.md +222 -0
  338. package/docs/start/04-add-tools.md +276 -0
  339. package/docs/start/05-go-to-production.md +216 -0
  340. package/examples/01-quickstart.ts +20 -0
  341. package/examples/02-data-extraction.ts +90 -0
  342. package/examples/03-tools.ts +136 -0
  343. package/examples/04-instructions.ts +100 -0
  344. package/examples/05-branching.ts +140 -0
  345. package/examples/06-flow-control.ts +103 -0
  346. package/examples/07-streaming.ts +69 -0
  347. package/examples/08-persistence.ts +98 -0
  348. package/examples/09-signals.ts +144 -0
  349. package/examples/tsconfig.json +30 -0
  350. package/package.json +2 -1
  351. package/src/adapters/MemoryAdapter.ts +3 -3
  352. package/src/adapters/MongoAdapter.ts +3 -3
  353. package/src/adapters/OpenSearchAdapter.ts +10 -8
  354. package/src/adapters/PostgreSQLAdapter.ts +26 -10
  355. package/src/adapters/PrismaAdapter.ts +6 -6
  356. package/src/adapters/RedisAdapter.ts +3 -3
  357. package/src/adapters/SQLiteAdapter.ts +31 -12
  358. package/src/constants/index.ts +2 -10
  359. package/src/core/Agent.ts +585 -374
  360. package/src/core/AutoChainExecutor.ts +440 -0
  361. package/src/core/BranchEvaluator.ts +167 -0
  362. package/src/core/DirectiveBus.ts +248 -0
  363. package/src/core/DirectiveChainTracker.ts +144 -0
  364. package/src/core/Flow.ts +666 -0
  365. package/src/core/{RoutingEngine.ts → FlowRouter.ts} +385 -365
  366. package/src/core/PersistenceManager.ts +8 -8
  367. package/src/core/PromptComposer.ts +209 -140
  368. package/src/core/PromptSectionCache.ts +1 -1
  369. package/src/core/ResponseEngine.ts +61 -46
  370. package/src/core/ResponseModal.ts +1453 -1240
  371. package/src/core/ResponsePipeline.ts +655 -175
  372. package/src/core/SignalEvaluator.ts +420 -0
  373. package/src/core/SignalProcessor.ts +723 -0
  374. package/src/core/Step.ts +279 -176
  375. package/src/core/StreamingToolExecutor.ts +4 -4
  376. package/src/core/ToolManager.ts +200 -97
  377. package/src/core/createAgent.ts +40 -0
  378. package/src/core/flow-namespace.ts +219 -0
  379. package/src/index.ts +42 -36
  380. package/src/types/agent.ts +182 -53
  381. package/src/types/ai.ts +3 -3
  382. package/src/types/errors.ts +18 -0
  383. package/src/types/flow.ts +590 -0
  384. package/src/types/index.ts +43 -16
  385. package/src/types/persistence.ts +12 -8
  386. package/src/types/routing.ts +1 -1
  387. package/src/types/session.ts +26 -23
  388. package/src/types/signals.ts +321 -0
  389. package/src/types/template.ts +3 -11
  390. package/src/types/tool.ts +50 -42
  391. package/src/utils/condition.ts +13 -4
  392. package/src/utils/id.ts +27 -9
  393. package/src/utils/index.ts +6 -2
  394. package/src/utils/session.ts +238 -42
  395. package/dist/cjs/core/BatchExecutor.d.ts +0 -359
  396. package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
  397. package/dist/cjs/core/BatchExecutor.js +0 -861
  398. package/dist/cjs/core/BatchExecutor.js.map +0 -1
  399. package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
  400. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
  401. package/dist/cjs/core/BatchPromptBuilder.js +0 -223
  402. package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
  403. package/dist/cjs/core/Route.d.ts +0 -180
  404. package/dist/cjs/core/Route.d.ts.map +0 -1
  405. package/dist/cjs/core/Route.js +0 -542
  406. package/dist/cjs/core/Route.js.map +0 -1
  407. package/dist/cjs/core/RoutingEngine.d.ts +0 -185
  408. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  409. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  410. package/dist/cjs/types/route.d.ts +0 -336
  411. package/dist/cjs/types/route.d.ts.map +0 -1
  412. package/dist/cjs/types/route.js.map +0 -1
  413. package/dist/core/BatchExecutor.d.ts +0 -359
  414. package/dist/core/BatchExecutor.d.ts.map +0 -1
  415. package/dist/core/BatchExecutor.js +0 -856
  416. package/dist/core/BatchExecutor.js.map +0 -1
  417. package/dist/core/BatchPromptBuilder.d.ts +0 -89
  418. package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
  419. package/dist/core/BatchPromptBuilder.js +0 -219
  420. package/dist/core/BatchPromptBuilder.js.map +0 -1
  421. package/dist/core/Route.d.ts +0 -180
  422. package/dist/core/Route.d.ts.map +0 -1
  423. package/dist/core/Route.js +0 -538
  424. package/dist/core/Route.js.map +0 -1
  425. package/dist/core/RoutingEngine.d.ts +0 -185
  426. package/dist/core/RoutingEngine.d.ts.map +0 -1
  427. package/dist/core/RoutingEngine.js.map +0 -1
  428. package/dist/types/route.d.ts +0 -336
  429. package/dist/types/route.d.ts.map +0 -1
  430. package/dist/types/route.js +0 -5
  431. package/dist/types/route.js.map +0 -1
  432. package/docs/CONTRIBUTING.md +0 -521
  433. package/docs/api/README.md +0 -3299
  434. package/docs/api/overview.md +0 -1410
  435. package/docs/architecture/data-extraction-flow.md +0 -360
  436. package/docs/architecture/multi-step-execution.md +0 -277
  437. package/docs/core/agent/README.md +0 -938
  438. package/docs/core/agent/context-management.md +0 -796
  439. package/docs/core/agent/rules-and-prohibitions.md +0 -113
  440. package/docs/core/agent/session-management.md +0 -693
  441. package/docs/core/ai-integration/prompt-composition.md +0 -355
  442. package/docs/core/ai-integration/providers.md +0 -515
  443. package/docs/core/ai-integration/response-processing.md +0 -433
  444. package/docs/core/conversation-flows/data-collection.md +0 -772
  445. package/docs/core/conversation-flows/route-dsl.md +0 -509
  446. package/docs/core/conversation-flows/routes.md +0 -249
  447. package/docs/core/conversation-flows/step-transitions.md +0 -731
  448. package/docs/core/conversation-flows/steps.md +0 -268
  449. package/docs/core/error-handling.md +0 -830
  450. package/docs/core/persistence/adapters.md +0 -255
  451. package/docs/core/persistence/session-storage.md +0 -656
  452. package/docs/core/routing/intelligent-routing.md +0 -470
  453. package/docs/core/tools/enhanced-tool.md +0 -186
  454. package/docs/core/tools/streaming-execution.md +0 -161
  455. package/docs/core/tools/tool-definition.md +0 -970
  456. package/docs/core/tools/tool-scoping.md +0 -819
  457. package/docs/guides/advanced-patterns/publishing.md +0 -186
  458. package/docs/guides/context-compaction.md +0 -96
  459. package/docs/guides/error-handling-patterns.md +0 -578
  460. package/docs/guides/getting-started/README.md +0 -795
  461. package/docs/guides/migration/README.md +0 -101
  462. package/docs/guides/migration/flexible-routing-conditions.md +0 -375
  463. package/docs/guides/migration/multi-step-execution.md +0 -393
  464. package/docs/guides/migration/response-modal-refactor.md +0 -518
  465. package/docs/guides/prompt-optimization.md +0 -164
  466. package/examples/advanced-patterns/context-compaction.ts +0 -223
  467. package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
  468. package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
  469. package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
  470. package/examples/advanced-patterns/streaming-responses.ts +0 -656
  471. package/examples/ai-providers/anthropic-integration.ts +0 -388
  472. package/examples/ai-providers/openai-integration.ts +0 -228
  473. package/examples/condition-patterns/function-only-conditions.ts +0 -365
  474. package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
  475. package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
  476. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  477. package/examples/condition-patterns/string-only-conditions.ts +0 -296
  478. package/examples/conversation-flows/completion-transitions.ts +0 -318
  479. package/examples/core-concepts/basic-agent.ts +0 -503
  480. package/examples/core-concepts/modern-streaming-api.ts +0 -309
  481. package/examples/core-concepts/schema-driven-extraction.ts +0 -332
  482. package/examples/core-concepts/session-management.ts +0 -494
  483. package/examples/integrations/database-integration.ts +0 -631
  484. package/examples/integrations/healthcare-integration.ts +0 -595
  485. package/examples/integrations/search-integration.ts +0 -530
  486. package/examples/integrations/server-session-management.ts +0 -307
  487. package/examples/persistence/custom-adapter.ts +0 -526
  488. package/examples/persistence/database-persistence.ts +0 -583
  489. package/examples/persistence/memory-sessions.ts +0 -495
  490. package/examples/persistence/prisma-schema.example.prisma +0 -74
  491. package/examples/persistence/redis-persistence.ts +0 -488
  492. package/examples/tools/basic-tools.ts +0 -765
  493. package/examples/tools/data-enrichment-tools.ts +0 -593
  494. package/examples/tools/enhanced-tool-metadata.ts +0 -268
  495. package/examples/tools/streaming-tool-execution.ts +0 -283
  496. package/src/core/BatchExecutor.ts +0 -1187
  497. package/src/core/BatchPromptBuilder.ts +0 -299
  498. package/src/core/Route.ts +0 -678
  499. 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
- }