@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,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 };