@falai/agent 1.2.7 → 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 (508) 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 +1196 -1015
  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 +524 -134
  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/GeminiProvider.d.ts +3 -3
  126. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  127. package/dist/cjs/providers/GeminiProvider.js +16 -14
  128. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  129. package/dist/cjs/types/agent.d.ts +183 -54
  130. package/dist/cjs/types/agent.d.ts.map +1 -1
  131. package/dist/cjs/types/agent.js +0 -6
  132. package/dist/cjs/types/agent.js.map +1 -1
  133. package/dist/cjs/types/ai.d.ts +3 -3
  134. package/dist/cjs/types/ai.d.ts.map +1 -1
  135. package/dist/cjs/types/errors.d.ts +15 -0
  136. package/dist/cjs/types/errors.d.ts.map +1 -0
  137. package/dist/cjs/types/errors.js +22 -0
  138. package/dist/cjs/types/errors.js.map +1 -0
  139. package/dist/cjs/types/flow.d.ts +513 -0
  140. package/dist/cjs/types/flow.d.ts.map +1 -0
  141. package/dist/cjs/types/{route.js → flow.js} +2 -2
  142. package/dist/cjs/types/flow.js.map +1 -0
  143. package/dist/cjs/types/index.d.ts +7 -6
  144. package/dist/cjs/types/index.d.ts.map +1 -1
  145. package/dist/cjs/types/index.js +6 -2
  146. package/dist/cjs/types/index.js.map +1 -1
  147. package/dist/cjs/types/persistence.d.ts +11 -7
  148. package/dist/cjs/types/persistence.d.ts.map +1 -1
  149. package/dist/cjs/types/routing.d.ts +1 -1
  150. package/dist/cjs/types/routing.d.ts.map +1 -1
  151. package/dist/cjs/types/session.d.ts +24 -23
  152. package/dist/cjs/types/session.d.ts.map +1 -1
  153. package/dist/cjs/types/signals.d.ts +248 -0
  154. package/dist/cjs/types/signals.d.ts.map +1 -0
  155. package/dist/cjs/types/signals.js +11 -0
  156. package/dist/cjs/types/signals.js.map +1 -0
  157. package/dist/cjs/types/template.d.ts +2 -8
  158. package/dist/cjs/types/template.d.ts.map +1 -1
  159. package/dist/cjs/types/tool.d.ts +36 -29
  160. package/dist/cjs/types/tool.d.ts.map +1 -1
  161. package/dist/cjs/types/tool.js +1 -1
  162. package/dist/cjs/types/tool.js.map +1 -1
  163. package/dist/cjs/utils/condition.d.ts +7 -1
  164. package/dist/cjs/utils/condition.d.ts.map +1 -1
  165. package/dist/cjs/utils/condition.js.map +1 -1
  166. package/dist/cjs/utils/id.d.ts +13 -5
  167. package/dist/cjs/utils/id.d.ts.map +1 -1
  168. package/dist/cjs/utils/id.js +24 -10
  169. package/dist/cjs/utils/id.js.map +1 -1
  170. package/dist/cjs/utils/index.d.ts +2 -2
  171. package/dist/cjs/utils/index.d.ts.map +1 -1
  172. package/dist/cjs/utils/index.js +7 -3
  173. package/dist/cjs/utils/index.js.map +1 -1
  174. package/dist/cjs/utils/session.d.ts +44 -5
  175. package/dist/cjs/utils/session.d.ts.map +1 -1
  176. package/dist/cjs/utils/session.js +197 -38
  177. package/dist/cjs/utils/session.js.map +1 -1
  178. package/dist/constants/index.d.ts +0 -9
  179. package/dist/constants/index.d.ts.map +1 -1
  180. package/dist/constants/index.js +3 -9
  181. package/dist/constants/index.js.map +1 -1
  182. package/dist/core/Agent.d.ts +119 -153
  183. package/dist/core/Agent.d.ts.map +1 -1
  184. package/dist/core/Agent.js +472 -325
  185. package/dist/core/Agent.js.map +1 -1
  186. package/dist/core/AutoChainExecutor.d.ts +107 -0
  187. package/dist/core/AutoChainExecutor.d.ts.map +1 -0
  188. package/dist/core/AutoChainExecutor.js +293 -0
  189. package/dist/core/AutoChainExecutor.js.map +1 -0
  190. package/dist/core/BranchEvaluator.d.ts +54 -0
  191. package/dist/core/BranchEvaluator.d.ts.map +1 -0
  192. package/dist/core/BranchEvaluator.js +126 -0
  193. package/dist/core/BranchEvaluator.js.map +1 -0
  194. package/dist/core/DirectiveBus.d.ts +88 -0
  195. package/dist/core/DirectiveBus.d.ts.map +1 -0
  196. package/dist/core/DirectiveBus.js +192 -0
  197. package/dist/core/DirectiveBus.js.map +1 -0
  198. package/dist/core/DirectiveChainTracker.d.ts +49 -0
  199. package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
  200. package/dist/core/DirectiveChainTracker.js +117 -0
  201. package/dist/core/DirectiveChainTracker.js.map +1 -0
  202. package/dist/core/Flow.d.ts +186 -0
  203. package/dist/core/Flow.d.ts.map +1 -0
  204. package/dist/core/Flow.js +546 -0
  205. package/dist/core/Flow.js.map +1 -0
  206. package/dist/core/FlowRouter.d.ts +182 -0
  207. package/dist/core/FlowRouter.d.ts.map +1 -0
  208. package/dist/core/{RoutingEngine.js → FlowRouter.js} +322 -305
  209. package/dist/core/FlowRouter.js.map +1 -0
  210. package/dist/core/PersistenceManager.d.ts +2 -2
  211. package/dist/core/PersistenceManager.d.ts.map +1 -1
  212. package/dist/core/PersistenceManager.js +7 -7
  213. package/dist/core/PersistenceManager.js.map +1 -1
  214. package/dist/core/PromptComposer.d.ts +21 -8
  215. package/dist/core/PromptComposer.d.ts.map +1 -1
  216. package/dist/core/PromptComposer.js +183 -106
  217. package/dist/core/PromptComposer.js.map +1 -1
  218. package/dist/core/PromptSectionCache.d.ts +1 -1
  219. package/dist/core/PromptSectionCache.js +1 -1
  220. package/dist/core/ResponseEngine.d.ts +18 -8
  221. package/dist/core/ResponseEngine.d.ts.map +1 -1
  222. package/dist/core/ResponseEngine.js +38 -36
  223. package/dist/core/ResponseEngine.js.map +1 -1
  224. package/dist/core/ResponseModal.d.ts +73 -56
  225. package/dist/core/ResponseModal.d.ts.map +1 -1
  226. package/dist/core/ResponseModal.js +1198 -1017
  227. package/dist/core/ResponseModal.js.map +1 -1
  228. package/dist/core/ResponsePipeline.d.ts +124 -26
  229. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  230. package/dist/core/ResponsePipeline.js +524 -135
  231. package/dist/core/ResponsePipeline.js.map +1 -1
  232. package/dist/core/SignalEvaluator.d.ts +86 -0
  233. package/dist/core/SignalEvaluator.d.ts.map +1 -0
  234. package/dist/core/SignalEvaluator.js +326 -0
  235. package/dist/core/SignalEvaluator.js.map +1 -0
  236. package/dist/core/SignalProcessor.d.ts +152 -0
  237. package/dist/core/SignalProcessor.d.ts.map +1 -0
  238. package/dist/core/SignalProcessor.js +555 -0
  239. package/dist/core/SignalProcessor.js.map +1 -0
  240. package/dist/core/Step.d.ts +43 -32
  241. package/dist/core/Step.d.ts.map +1 -1
  242. package/dist/core/Step.js +220 -126
  243. package/dist/core/Step.js.map +1 -1
  244. package/dist/core/StreamingToolExecutor.d.ts +2 -2
  245. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  246. package/dist/core/StreamingToolExecutor.js.map +1 -1
  247. package/dist/core/ToolManager.d.ts +44 -13
  248. package/dist/core/ToolManager.d.ts.map +1 -1
  249. package/dist/core/ToolManager.js +174 -91
  250. package/dist/core/ToolManager.js.map +1 -1
  251. package/dist/core/createAgent.d.ts +35 -0
  252. package/dist/core/createAgent.d.ts.map +1 -0
  253. package/dist/core/createAgent.js +36 -0
  254. package/dist/core/createAgent.js.map +1 -0
  255. package/dist/core/flow-namespace.d.ts +49 -0
  256. package/dist/core/flow-namespace.d.ts.map +1 -0
  257. package/dist/core/flow-namespace.js +168 -0
  258. package/dist/core/flow-namespace.js.map +1 -0
  259. package/dist/index.d.ts +11 -14
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +9 -12
  262. package/dist/index.js.map +1 -1
  263. package/dist/providers/GeminiProvider.d.ts +3 -3
  264. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  265. package/dist/providers/GeminiProvider.js +16 -14
  266. package/dist/providers/GeminiProvider.js.map +1 -1
  267. package/dist/types/agent.d.ts +183 -54
  268. package/dist/types/agent.d.ts.map +1 -1
  269. package/dist/types/agent.js +0 -6
  270. package/dist/types/agent.js.map +1 -1
  271. package/dist/types/ai.d.ts +3 -3
  272. package/dist/types/ai.d.ts.map +1 -1
  273. package/dist/types/errors.d.ts +15 -0
  274. package/dist/types/errors.d.ts.map +1 -0
  275. package/dist/types/errors.js +18 -0
  276. package/dist/types/errors.js.map +1 -0
  277. package/dist/types/flow.d.ts +513 -0
  278. package/dist/types/flow.d.ts.map +1 -0
  279. package/dist/types/flow.js +5 -0
  280. package/dist/types/flow.js.map +1 -0
  281. package/dist/types/index.d.ts +7 -6
  282. package/dist/types/index.d.ts.map +1 -1
  283. package/dist/types/index.js +4 -1
  284. package/dist/types/index.js.map +1 -1
  285. package/dist/types/persistence.d.ts +11 -7
  286. package/dist/types/persistence.d.ts.map +1 -1
  287. package/dist/types/routing.d.ts +1 -1
  288. package/dist/types/routing.d.ts.map +1 -1
  289. package/dist/types/session.d.ts +24 -23
  290. package/dist/types/session.d.ts.map +1 -1
  291. package/dist/types/signals.d.ts +248 -0
  292. package/dist/types/signals.d.ts.map +1 -0
  293. package/dist/types/signals.js +10 -0
  294. package/dist/types/signals.js.map +1 -0
  295. package/dist/types/template.d.ts +2 -8
  296. package/dist/types/template.d.ts.map +1 -1
  297. package/dist/types/tool.d.ts +36 -29
  298. package/dist/types/tool.d.ts.map +1 -1
  299. package/dist/types/tool.js +1 -1
  300. package/dist/types/tool.js.map +1 -1
  301. package/dist/utils/condition.d.ts +7 -1
  302. package/dist/utils/condition.d.ts.map +1 -1
  303. package/dist/utils/condition.js.map +1 -1
  304. package/dist/utils/id.d.ts +13 -5
  305. package/dist/utils/id.d.ts.map +1 -1
  306. package/dist/utils/id.js +22 -9
  307. package/dist/utils/id.js.map +1 -1
  308. package/dist/utils/index.d.ts +2 -2
  309. package/dist/utils/index.d.ts.map +1 -1
  310. package/dist/utils/index.js +2 -2
  311. package/dist/utils/index.js.map +1 -1
  312. package/dist/utils/session.d.ts +44 -5
  313. package/dist/utils/session.d.ts.map +1 -1
  314. package/dist/utils/session.js +193 -37
  315. package/dist/utils/session.js.map +1 -1
  316. package/docs/README.md +15 -202
  317. package/docs/concepts/architecture.md +281 -0
  318. package/docs/concepts/directives.md +400 -0
  319. package/docs/concepts/pipeline.md +399 -0
  320. package/docs/guides/branching.md +263 -0
  321. package/docs/guides/compaction.md +163 -0
  322. package/docs/guides/conditions.md +167 -0
  323. package/docs/guides/error-handling.md +176 -0
  324. package/docs/guides/flow-control.md +409 -0
  325. package/docs/guides/instructions.md +210 -0
  326. package/docs/guides/persistence.md +182 -0
  327. package/docs/guides/streaming.md +137 -0
  328. package/docs/migration/README.md +15 -0
  329. package/docs/migration/route-to-flow.md +560 -0
  330. package/docs/migration/v1-to-v2.md +909 -0
  331. package/docs/reference/adapters.md +481 -0
  332. package/docs/reference/branches.md +241 -0
  333. package/docs/reference/create-agent.md +186 -0
  334. package/docs/reference/directive.md +243 -0
  335. package/docs/reference/errors.md +122 -0
  336. package/docs/reference/flow.md +238 -0
  337. package/docs/reference/instruction.md +177 -0
  338. package/docs/reference/pre-directive.md +131 -0
  339. package/docs/reference/providers.md +227 -0
  340. package/docs/reference/signals.md +356 -0
  341. package/docs/reference/step.md +339 -0
  342. package/docs/reference/tool.md +269 -0
  343. package/docs/start/01-install.md +81 -0
  344. package/docs/start/02-first-agent.md +196 -0
  345. package/docs/start/03-collect-data.md +222 -0
  346. package/docs/start/04-add-tools.md +276 -0
  347. package/docs/start/05-go-to-production.md +216 -0
  348. package/examples/01-quickstart.ts +20 -0
  349. package/examples/02-data-extraction.ts +90 -0
  350. package/examples/03-tools.ts +136 -0
  351. package/examples/04-instructions.ts +100 -0
  352. package/examples/05-branching.ts +140 -0
  353. package/examples/06-flow-control.ts +103 -0
  354. package/examples/07-streaming.ts +69 -0
  355. package/examples/08-persistence.ts +98 -0
  356. package/examples/09-signals.ts +144 -0
  357. package/examples/tsconfig.json +30 -0
  358. package/package.json +2 -1
  359. package/src/adapters/MemoryAdapter.ts +3 -3
  360. package/src/adapters/MongoAdapter.ts +3 -3
  361. package/src/adapters/OpenSearchAdapter.ts +10 -8
  362. package/src/adapters/PostgreSQLAdapter.ts +26 -10
  363. package/src/adapters/PrismaAdapter.ts +6 -6
  364. package/src/adapters/RedisAdapter.ts +3 -3
  365. package/src/adapters/SQLiteAdapter.ts +31 -12
  366. package/src/constants/index.ts +2 -10
  367. package/src/core/Agent.ts +585 -374
  368. package/src/core/AutoChainExecutor.ts +440 -0
  369. package/src/core/BranchEvaluator.ts +167 -0
  370. package/src/core/DirectiveBus.ts +248 -0
  371. package/src/core/DirectiveChainTracker.ts +144 -0
  372. package/src/core/Flow.ts +666 -0
  373. package/src/core/{RoutingEngine.ts → FlowRouter.ts} +385 -365
  374. package/src/core/PersistenceManager.ts +8 -8
  375. package/src/core/PromptComposer.ts +209 -140
  376. package/src/core/PromptSectionCache.ts +1 -1
  377. package/src/core/ResponseEngine.ts +61 -46
  378. package/src/core/ResponseModal.ts +1458 -1241
  379. package/src/core/ResponsePipeline.ts +675 -173
  380. package/src/core/SignalEvaluator.ts +420 -0
  381. package/src/core/SignalProcessor.ts +723 -0
  382. package/src/core/Step.ts +279 -176
  383. package/src/core/StreamingToolExecutor.ts +4 -4
  384. package/src/core/ToolManager.ts +200 -97
  385. package/src/core/createAgent.ts +40 -0
  386. package/src/core/flow-namespace.ts +219 -0
  387. package/src/index.ts +42 -36
  388. package/src/providers/GeminiProvider.ts +17 -15
  389. package/src/types/agent.ts +182 -53
  390. package/src/types/ai.ts +3 -3
  391. package/src/types/errors.ts +18 -0
  392. package/src/types/flow.ts +590 -0
  393. package/src/types/index.ts +43 -16
  394. package/src/types/persistence.ts +12 -8
  395. package/src/types/routing.ts +1 -1
  396. package/src/types/session.ts +26 -23
  397. package/src/types/signals.ts +321 -0
  398. package/src/types/template.ts +3 -11
  399. package/src/types/tool.ts +50 -42
  400. package/src/utils/condition.ts +13 -4
  401. package/src/utils/id.ts +27 -9
  402. package/src/utils/index.ts +6 -2
  403. package/src/utils/session.ts +238 -42
  404. package/dist/cjs/core/BatchExecutor.d.ts +0 -359
  405. package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
  406. package/dist/cjs/core/BatchExecutor.js +0 -861
  407. package/dist/cjs/core/BatchExecutor.js.map +0 -1
  408. package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
  409. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
  410. package/dist/cjs/core/BatchPromptBuilder.js +0 -223
  411. package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
  412. package/dist/cjs/core/Route.d.ts +0 -180
  413. package/dist/cjs/core/Route.d.ts.map +0 -1
  414. package/dist/cjs/core/Route.js +0 -542
  415. package/dist/cjs/core/Route.js.map +0 -1
  416. package/dist/cjs/core/RoutingEngine.d.ts +0 -185
  417. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  418. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  419. package/dist/cjs/types/route.d.ts +0 -336
  420. package/dist/cjs/types/route.d.ts.map +0 -1
  421. package/dist/cjs/types/route.js.map +0 -1
  422. package/dist/core/BatchExecutor.d.ts +0 -359
  423. package/dist/core/BatchExecutor.d.ts.map +0 -1
  424. package/dist/core/BatchExecutor.js +0 -856
  425. package/dist/core/BatchExecutor.js.map +0 -1
  426. package/dist/core/BatchPromptBuilder.d.ts +0 -89
  427. package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
  428. package/dist/core/BatchPromptBuilder.js +0 -219
  429. package/dist/core/BatchPromptBuilder.js.map +0 -1
  430. package/dist/core/Route.d.ts +0 -180
  431. package/dist/core/Route.d.ts.map +0 -1
  432. package/dist/core/Route.js +0 -538
  433. package/dist/core/Route.js.map +0 -1
  434. package/dist/core/RoutingEngine.d.ts +0 -185
  435. package/dist/core/RoutingEngine.d.ts.map +0 -1
  436. package/dist/core/RoutingEngine.js.map +0 -1
  437. package/dist/types/route.d.ts +0 -336
  438. package/dist/types/route.d.ts.map +0 -1
  439. package/dist/types/route.js +0 -5
  440. package/dist/types/route.js.map +0 -1
  441. package/docs/CONTRIBUTING.md +0 -521
  442. package/docs/api/README.md +0 -3299
  443. package/docs/api/overview.md +0 -1410
  444. package/docs/architecture/data-extraction-flow.md +0 -360
  445. package/docs/architecture/multi-step-execution.md +0 -277
  446. package/docs/core/agent/README.md +0 -938
  447. package/docs/core/agent/context-management.md +0 -796
  448. package/docs/core/agent/rules-and-prohibitions.md +0 -113
  449. package/docs/core/agent/session-management.md +0 -693
  450. package/docs/core/ai-integration/prompt-composition.md +0 -355
  451. package/docs/core/ai-integration/providers.md +0 -515
  452. package/docs/core/ai-integration/response-processing.md +0 -433
  453. package/docs/core/conversation-flows/data-collection.md +0 -772
  454. package/docs/core/conversation-flows/route-dsl.md +0 -509
  455. package/docs/core/conversation-flows/routes.md +0 -249
  456. package/docs/core/conversation-flows/step-transitions.md +0 -731
  457. package/docs/core/conversation-flows/steps.md +0 -268
  458. package/docs/core/error-handling.md +0 -830
  459. package/docs/core/persistence/adapters.md +0 -255
  460. package/docs/core/persistence/session-storage.md +0 -656
  461. package/docs/core/routing/intelligent-routing.md +0 -470
  462. package/docs/core/tools/enhanced-tool.md +0 -186
  463. package/docs/core/tools/streaming-execution.md +0 -161
  464. package/docs/core/tools/tool-definition.md +0 -970
  465. package/docs/core/tools/tool-scoping.md +0 -819
  466. package/docs/guides/advanced-patterns/publishing.md +0 -186
  467. package/docs/guides/context-compaction.md +0 -96
  468. package/docs/guides/error-handling-patterns.md +0 -578
  469. package/docs/guides/getting-started/README.md +0 -795
  470. package/docs/guides/migration/README.md +0 -101
  471. package/docs/guides/migration/flexible-routing-conditions.md +0 -375
  472. package/docs/guides/migration/multi-step-execution.md +0 -393
  473. package/docs/guides/migration/response-modal-refactor.md +0 -518
  474. package/docs/guides/prompt-optimization.md +0 -164
  475. package/examples/advanced-patterns/context-compaction.ts +0 -223
  476. package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
  477. package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
  478. package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
  479. package/examples/advanced-patterns/streaming-responses.ts +0 -656
  480. package/examples/ai-providers/anthropic-integration.ts +0 -388
  481. package/examples/ai-providers/openai-integration.ts +0 -228
  482. package/examples/condition-patterns/function-only-conditions.ts +0 -365
  483. package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
  484. package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
  485. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  486. package/examples/condition-patterns/string-only-conditions.ts +0 -296
  487. package/examples/conversation-flows/completion-transitions.ts +0 -318
  488. package/examples/core-concepts/basic-agent.ts +0 -503
  489. package/examples/core-concepts/modern-streaming-api.ts +0 -309
  490. package/examples/core-concepts/schema-driven-extraction.ts +0 -332
  491. package/examples/core-concepts/session-management.ts +0 -494
  492. package/examples/integrations/database-integration.ts +0 -631
  493. package/examples/integrations/healthcare-integration.ts +0 -595
  494. package/examples/integrations/search-integration.ts +0 -530
  495. package/examples/integrations/server-session-management.ts +0 -307
  496. package/examples/persistence/custom-adapter.ts +0 -526
  497. package/examples/persistence/database-persistence.ts +0 -583
  498. package/examples/persistence/memory-sessions.ts +0 -495
  499. package/examples/persistence/prisma-schema.example.prisma +0 -74
  500. package/examples/persistence/redis-persistence.ts +0 -488
  501. package/examples/tools/basic-tools.ts +0 -765
  502. package/examples/tools/data-enrichment-tools.ts +0 -593
  503. package/examples/tools/enhanced-tool-metadata.ts +0 -268
  504. package/examples/tools/streaming-tool-execution.ts +0 -283
  505. package/src/core/BatchExecutor.ts +0 -1187
  506. package/src/core/BatchPromptBuilder.ts +0 -299
  507. package/src/core/Route.ts +0 -678
  508. package/src/types/route.ts +0 -392
@@ -1,556 +0,0 @@
1
- /**
2
- * Rules & Prohibitions Example
3
- * Updated for v2 architecture with session step management
4
- *
5
- * Demonstrates how to use rules and prohibitions to control agent behavior
6
- * in different conversation routes (e.g., WhatsApp bot with different styles)
7
- *
8
- * NEW: Enhanced with complex ConditionTemplate patterns:
9
- * - Mixed conditions: ["AI context", (ctx) => keyword_detection]
10
- * - Route skipIf: Dynamic route exclusion based on message analysis
11
- * - Function-only conditions: (ctx) => sophisticated_routing_logic
12
- * - String-only conditions: "simple AI context for general chat"
13
- * - Emergency routing with never-skip logic (skipIf: false)
14
- * - Performance patterns for real-time condition evaluation
15
- */
16
-
17
- import { Agent, type History, END_ROUTE, OpenAIProvider } from "../../src";
18
-
19
- /**
20
- * Configuration for the AI provider
21
- */
22
- const provider = new OpenAIProvider({
23
- apiKey: process.env.OPENAI_API_KEY || "your-api-key-here",
24
- model: "gpt-5",
25
- });
26
-
27
- // Define data schema for feedback collection
28
- interface ServiceData {
29
- feedbackRating?: number;
30
- feedbackComments?: string;
31
- }
32
-
33
- const serviceSchema = {
34
- type: "object",
35
- properties: {
36
- feedbackRating: {
37
- type: "number",
38
- description: "Rating from 1-5",
39
- minimum: 1,
40
- maximum: 5,
41
- },
42
- feedbackComments: {
43
- type: "string",
44
- description: "Additional feedback comments",
45
- },
46
- },
47
- };
48
-
49
- /**
50
- * Create a new agent instance with predefined routes and rules/prohibitions.
51
- */
52
- const agent = new Agent<unknown, ServiceData>({
53
- name: "CustomerServiceAgent",
54
- description:
55
- "A versatile customer service agent that adapts its behavior based on the conversation's context.",
56
- goal: "Provide excellent customer service by following route-specific rules and prohibitions.",
57
- provider,
58
- // NEW: Agent-level schema
59
- schema: serviceSchema,
60
- debug: true,
61
-
62
- // Knowledge base with customer service best practices
63
- knowledgeBase: {
64
- communicationGuidelines: {
65
- channels: {
66
- whatsapp: {
67
- maxMessageLength: "1000 characters",
68
- supports: ["text", "images", "documents"],
69
- bestFor: [
70
- "Quick questions",
71
- "Personal communication",
72
- "Mobile users",
73
- ],
74
- },
75
- email: {
76
- maxMessageLength: "No limit",
77
- supports: ["text", "attachments", "formatting"],
78
- bestFor: [
79
- "Detailed inquiries",
80
- "Documentation",
81
- "Formal communication",
82
- ],
83
- },
84
- chat: {
85
- maxMessageLength: "Real-time",
86
- supports: ["text", "quick responses"],
87
- bestFor: ["Immediate help", "Simple questions", "Live support"],
88
- },
89
- },
90
- toneGuidelines: {
91
- professional: "Formal language, complete sentences, proper grammar",
92
- casual: "Friendly language, contractions, emojis allowed",
93
- urgent: "Direct, clear, action-oriented language",
94
- },
95
- },
96
- escalationPaths: {
97
- technical: "Route to technical support team",
98
- billing: "Route to billing department",
99
- complaint: "Route to customer success manager",
100
- legal: "Route to legal/compliance team",
101
- },
102
- responseTimeTargets: {
103
- whatsapp: "Within 5 minutes during business hours",
104
- email: "Within 24 hours",
105
- chat: "Immediate response",
106
- emergency: "Immediate escalation",
107
- },
108
- customerSegments: {
109
- new: "Welcome warmly, provide overview, offer help",
110
- returning: "Personalize greeting, reference history, anticipate needs",
111
- vip: "Priority service, direct manager access, special offers",
112
- enterprise: "Dedicated account manager, SLA guarantees, custom solutions",
113
- },
114
- },
115
- });
116
-
117
- /**
118
- * Add routes to the agent.
119
- */
120
- agent.createRoute({
121
- title: "Quick Support",
122
- description: "Fast answers for common questions",
123
- // Mixed condition: AI context + programmatic validation
124
- when: [
125
- "User has a simple question",
126
- "User wants quick help",
127
- (ctx) => {
128
- const message = ctx.helpers.getLastUserMessage()?.toLowerCase() || '';
129
- return message.includes('quick') || message.includes('simple') || message.length < 50;
130
- }
131
- ],
132
- // Skip if user seems to need detailed help
133
- skipIf: [
134
- "user needs detailed or complex assistance",
135
- (ctx) => {
136
- const message = ctx.helpers.getLastUserMessage()?.toLowerCase() || '';
137
- return message.includes('detailed') || message.includes('complex') || message.length > 100;
138
- }
139
- ],
140
- rules: [
141
- "Keep messages extremely short (1-2 lines maximum)",
142
- "Use bullet points for lists",
143
- "Maximum 1 emoji per message šŸ‘",
144
- "Be direct and to the point",
145
- ],
146
- prohibitions: [
147
- "Never send long paragraphs",
148
- "Do not over-explain",
149
- "Never use more than 2 emojis",
150
- "Do not ask follow-up questions unless necessary",
151
- ],
152
- });
153
-
154
- agent.createRoute({
155
- title: "Sales Consultation",
156
- description: "Help customer discover needs and present solutions",
157
- // Function-only condition for programmatic sales detection
158
- when: (ctx) => {
159
- const message = ctx.helpers.getLastUserMessage()?.toLowerCase() || '';
160
- return message.includes('buy') || message.includes('purchase') ||
161
- message.includes('price') || message.includes('cost') ||
162
- message.includes('product') || message.includes('interested');
163
- },
164
- // Skip if user is having technical issues
165
- skipIf: [
166
- "user has technical problems that need solving first",
167
- (ctx) => {
168
- const message = ctx.helpers.getLastUserMessage()?.toLowerCase() || '';
169
- return message.includes('broken') || message.includes('error') ||
170
- message.includes('not working') || message.includes('problem');
171
- }
172
- ],
173
- rules: [
174
- "Ask open-ended questions to discover needs",
175
- "Use storytelling when presenting solutions",
176
- "Emoji to reinforce positive emotions 😊✨",
177
- "Present value before mentioning price",
178
- "Make customer feel special and understood",
179
- ],
180
- prohibitions: [
181
- "Never talk about price before showing value",
182
- "Do not pressure or push",
183
- "Avoid technical jargon",
184
- "Never send more than 2 messages without waiting for response",
185
- "Do not make promises you cannot keep",
186
- ],
187
- // Route-level guidelines for sales behavior
188
- guidelines: [
189
- {
190
- condition: "Customer mentions budget concerns",
191
- action: "Focus on ROI and long-term value rather than upfront cost",
192
- },
193
- {
194
- condition: "Customer seems hesitant or unsure",
195
- action: "Offer a free trial or consultation to reduce risk",
196
- },
197
- {
198
- condition: "Customer asks for competitors comparison",
199
- action:
200
- "Highlight unique strengths and differentiators without negative comments",
201
- },
202
- ],
203
- });
204
-
205
- agent.createRoute({
206
- title: "Technical Support",
207
- description: "Help with technical issues and troubleshooting",
208
- // Mixed condition: AI context + technical keyword detection
209
- when: [
210
- "User has technical problem",
211
- "User needs step-by-step help",
212
- (ctx) => {
213
- const message = ctx.helpers.getLastUserMessage()?.toLowerCase() || '';
214
- return message.includes('help') || message.includes('problem') ||
215
- message.includes('error') || message.includes('not working') ||
216
- message.includes('broken') || message.includes('fix');
217
- }
218
- ],
219
- // Skip if user is just browsing or asking about sales
220
- skipIf: (ctx) => {
221
- const message = ctx.helpers.getLastUserMessage()?.toLowerCase() || '';
222
- return message.includes('price') || message.includes('buy') || message.includes('cost');
223
- },
224
- rules: [
225
- "Provide clear, numbered steps",
226
- "Use simple language for technical concepts",
227
- "Confirm understanding after each major step",
228
- "Offer screenshots or visual aids when helpful",
229
- "Be patient and thorough",
230
- ],
231
- prohibitions: [
232
- "Never skip steps or assume knowledge",
233
- "Do not use excessive technical terms without explanation",
234
- "Never blame the user for the issue",
235
- "Do not rush through explanations",
236
- ],
237
- });
238
-
239
- // Add a stepful feedback flow to the Technical Support route
240
- const techSupportRoute = agent
241
- .getRoutes()
242
- .find((r) => r.title === "Technical Support")!;
243
- techSupportRoute.initialStep
244
- .nextStep({
245
- prompt: "Provide step-by-step technical assistance.",
246
- })
247
- .nextStep({
248
- prompt: "Ask for a rating of the support provided (1-5).",
249
- collect: ["feedbackRating"],
250
- })
251
- .nextStep({
252
- prompt: "Ask for any additional comments.",
253
- collect: ["feedbackComments"],
254
- })
255
- .nextStep({
256
- prompt: "Thank the user for their feedback.",
257
- })
258
- .nextStep({ step: END_ROUTE });
259
-
260
- agent.createRoute({
261
- title: "Emergency Support",
262
- description: "Handle urgent customer issues",
263
- // Mixed condition: AI context + urgency detection
264
- when: [
265
- "Customer is frustrated",
266
- "Urgent issue",
267
- "Service down",
268
- (ctx) => {
269
- const message = ctx.helpers.getLastUserMessage()?.toLowerCase() || '';
270
- const urgentWords = ['urgent', 'emergency', 'critical', 'down', 'broken', 'frustrated', 'angry'];
271
- return urgentWords.some(word => message.includes(word)) || message.includes('!!!');
272
- }
273
- ],
274
- // Never skip emergency support
275
- skipIf: ()=>false,
276
- rules: [
277
- "Acknowledge the urgency immediately",
278
- "Express empathy and understanding",
279
- "Provide concrete next steps",
280
- "Set clear expectations on resolution time",
281
- "Keep customer updated",
282
- ],
283
- prohibitions: [
284
- "Never downplay the customer's concern",
285
- "Do not use emojis (keep it professional)",
286
- 'Never say "calm down" or similar dismissive phrases',
287
- "Do not transfer without explaining why",
288
- "Never make excuses or blame others",
289
- ],
290
- });
291
-
292
- agent.createRoute({
293
- title: "General Chat",
294
- description: "Casual conversation and general questions",
295
- // String-only condition for AI context
296
- when: "User is just chatting, greeting, or asking general questions",
297
- // Skip if user has specific needs that other routes can handle
298
- skipIf: (ctx) => {
299
- const message = ctx.helpers.getLastUserMessage()?.toLowerCase() || '';
300
- return message.includes('help') || message.includes('buy') ||
301
- message.includes('problem') || message.includes('urgent');
302
- },
303
- rules: [
304
- "Be friendly and conversational",
305
- "Use emojis naturally 😊",
306
- "Mirror the customer's tone and energy",
307
- "Keep it light and positive",
308
- ],
309
- prohibitions: [
310
- "Do not be overly formal",
311
- "Never ignore the customer's mood",
312
- "Do not push products unless asked",
313
- ],
314
- });
315
-
316
- /**
317
- * Demonstration function to show how the agent responds to different scenarios.
318
- */
319
- async function demonstrateRulesAndProhibitions() {
320
- const agent = new Agent<unknown, ServiceData>({
321
- name: "CustomerServiceAgent",
322
- description:
323
- "A versatile customer service agent that adapts its behavior based on the conversation's context.",
324
- goal: "Provide excellent customer service by following route-specific rules and prohibitions.",
325
- provider,
326
- // NEW: Agent-level schema
327
- schema: serviceSchema,
328
- debug: true,
329
- });
330
-
331
- // Add domains
332
- agent.createRoute({
333
- title: "Quick Support",
334
- description: "Fast answers for common questions",
335
- when: ["User has a simple question", "User wants quick help"],
336
- rules: [
337
- "Keep messages extremely short (1-2 lines maximum)",
338
- "Use bullet points for lists",
339
- "Maximum 1 emoji per message šŸ‘",
340
- "Be direct and to the point",
341
- ],
342
- prohibitions: [
343
- "Never send long paragraphs",
344
- "Do not over-explain",
345
- "Never use more than 2 emojis",
346
- "Do not ask follow-up questions unless necessary",
347
- ],
348
- });
349
-
350
- agent.createRoute({
351
- title: "Sales Consultation",
352
- description: "Help customer discover needs and present solutions",
353
- when: [
354
- "User is interested in buying",
355
- "User wants product information",
356
- ],
357
- rules: [
358
- "Ask open-ended questions to discover needs",
359
- "Use storytelling when presenting solutions",
360
- "Emoji to reinforce positive emotions 😊✨",
361
- "Present value before mentioning price",
362
- "Make customer feel special and understood",
363
- ],
364
- prohibitions: [
365
- "Never talk about price before showing value",
366
- "Do not pressure or push",
367
- "Avoid technical jargon",
368
- "Never send more than 2 messages without waiting for response",
369
- "Do not make promises you cannot keep",
370
- ],
371
- });
372
-
373
- agent.createRoute({
374
- title: "Technical Support",
375
- description: "Help with technical issues and troubleshooting",
376
- when: ["User has technical problem", "User needs step-by-step help"],
377
- rules: [
378
- "Provide clear, numbered steps",
379
- "Use simple language for technical concepts",
380
- "Confirm understanding after each major step",
381
- "Offer screenshots or visual aids when helpful",
382
- "Be patient and thorough",
383
- ],
384
- prohibitions: [
385
- "Never skip steps or assume knowledge",
386
- "Do not use excessive technical terms without explanation",
387
- "Never blame the user for the issue",
388
- "Do not rush through explanations",
389
- ],
390
- });
391
-
392
- // Add a stepful feedback flow to the Technical Support route
393
- const techSupportRoute = agent
394
- .getRoutes()
395
- .find((r) => r.title === "Technical Support")!;
396
- techSupportRoute.initialStep
397
- .nextStep({
398
- prompt: "Provide step-by-step technical assistance.",
399
- })
400
- .nextStep({
401
- prompt: "Ask for a rating of the support provided (1-5).",
402
- collect: ["feedbackRating"],
403
- })
404
- .nextStep({
405
- prompt: "Ask for any additional comments.",
406
- collect: ["feedbackComments"],
407
- })
408
- .nextStep({
409
- prompt: "Thank the user for their feedback.",
410
- })
411
- .nextStep({ step: END_ROUTE });
412
-
413
- agent.createRoute({
414
- title: "Emergency Support",
415
- description: "Handle urgent customer issues",
416
- when: ["Customer is frustrated", "Urgent issue", "Service down"],
417
- rules: [
418
- "Acknowledge the urgency immediately",
419
- "Express empathy and understanding",
420
- "Provide concrete next steps",
421
- "Set clear expectations on resolution time",
422
- "Keep customer updated",
423
- ],
424
- prohibitions: [
425
- "Never downplay the customer's concern",
426
- "Do not use emojis (keep it professional)",
427
- 'Never say "calm down" or similar dismissive phrases',
428
- "Do not transfer without explaining why",
429
- "Never make excuses or blame others",
430
- ],
431
- });
432
-
433
- agent.createRoute({
434
- title: "General Chat",
435
- description: "Casual conversation and general questions",
436
- when: ["User is just chatting", "Greeting", "General question"],
437
- rules: [
438
- "Be friendly and conversational",
439
- "Use emojis naturally 😊",
440
- "Mirror the customer's tone and energy",
441
- "Keep it light and positive",
442
- ],
443
- prohibitions: [
444
- "Do not be overly formal",
445
- "Never ignore the customer's mood",
446
- "Do not push products unless asked",
447
- ],
448
- });
449
-
450
- console.info("\n=== Rules & Prohibitions Demo ===\n");
451
-
452
- // --- Quick Support ---
453
- console.info("1ļøāƒ£ Quick Support Route (short, direct)");
454
- const quickSupportMessages: History = [
455
- {
456
- role: "user",
457
- content: "How do I reset my password?",
458
- },
459
- ];
460
- const response1 = await agent.respond({ history: quickSupportMessages });
461
- console.info(`Route: ${response1.session?.currentRoute?.title}`);
462
- console.info(`Response: ${response1.message}`);
463
- console.info(`Expected: Short, direct, max 1 emoji\n`);
464
-
465
- // --- Sales Consultation ---
466
- console.info("2ļøāƒ£ Sales Consultation Route (conversational, value-first)");
467
- const salesMessages: History = [
468
- {
469
- role: "user",
470
- content: "How much does your premium plan cost?",
471
- },
472
- ];
473
- const response2 = await agent.respond({ history: salesMessages });
474
- console.info(`Route: ${response2.session?.currentRoute?.title}`);
475
- console.info(`Response: ${response2.message}`);
476
- console.info(`Expected: Ask about needs, show value before price\n`);
477
-
478
- // --- Technical Support ---
479
- console.info("3ļøāƒ£ Technical Support Route (detailed, step-by-step)");
480
- const techSupportMessages: History = [
481
- {
482
- role: "user",
483
- content: "My new headphones won't connect to Bluetooth.",
484
- },
485
- ];
486
- const response3 = await agent.respond({ history: techSupportMessages });
487
- console.info(`Route: ${response3.session?.currentRoute?.title}`);
488
- console.info(`Response: ${response3.message}`);
489
- console.info(`Expected: Clear steps, simple language, patient\n`);
490
- if (response3.isRouteComplete) {
491
- console.info("\nāœ… Technical support feedback collected!");
492
- }
493
-
494
- // --- Emergency Support ---
495
- console.info("4ļøāƒ£ Emergency Support Route (urgent, professional)");
496
- const emergencyMessages: History = [
497
- {
498
- role: "user",
499
- content: "My account has been compromised!",
500
- },
501
- ];
502
- const response4 = await agent.respond({ history: emergencyMessages });
503
- console.info(`Route: ${response4.session?.currentRoute?.title}`);
504
- console.info(`Response: ${response4.message}`);
505
- console.info(`Expected: Acknowledge urgency, no emojis, concrete steps\n`);
506
-
507
- // --- General Chat ---
508
- console.info("5ļøāƒ£ General Chat Route (friendly, casual)");
509
- const generalMessages: History = [
510
- {
511
- role: "user",
512
- content: "What's the weather like today?",
513
- },
514
- ];
515
- const response5 = await agent.respond({ history: generalMessages });
516
- console.info(`Route: ${response5.session?.currentRoute?.title}`);
517
- console.info(`Response: ${response5.message}`);
518
- console.info(`Expected: Friendly, emojis, mirrors customer tone\n`);
519
- }
520
-
521
- /**
522
- * Inspect route configurations.
523
- */
524
- console.info("\nšŸ“‹ Route Configurations:\n");
525
- agent.getRoutes().forEach((route) => {
526
- console.info(`\nšŸ›¤ļø ${route.title}`);
527
- const rules = route.getRules();
528
- const prohibitions = route.getProhibitions();
529
-
530
- if (rules.length > 0) {
531
- console.info(` āœ… Rules (${rules.length}):`);
532
- rules.forEach((rule, i) => console.info(` ${i + 1}. ${String(rule)}`));
533
- }
534
-
535
- if (prohibitions.length > 0) {
536
- console.info(` āŒ Prohibitions (${prohibitions.length}):`);
537
- prohibitions.forEach((prohibition, i) =>
538
- console.info(` ${i + 1}. ${String(prohibition)}`)
539
- );
540
- }
541
- });
542
-
543
- /**
544
- * Benefits explanation.
545
- */
546
- console.info(`
547
- šŸ’” This demo shows how rules and prohibitions, combined with routing,
548
- allow a single agent to handle diverse scenarios with tailored,
549
- context-appropriate behavior.
550
- `);
551
- // Run demonstration
552
- if (import.meta.url === `file://${process.argv[1]}`) {
553
- demonstrateRulesAndProhibitions().catch((err) => console.error(err));
554
- }
555
-
556
- export { agent };