@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
@@ -4,13 +4,43 @@
4
4
 
5
5
  import type { AgentStructuredResponse, AiProvider } from "./ai";
6
6
  import type { Tool } from "./tool";
7
- import type { RouteOptions, StepRef, StoppedReason } from "./route";
7
+ import type { Directive, FlowOptions, StepRef, StoppedReason } from "./flow";
8
8
  import type { PersistenceConfig } from "./persistence";
9
9
  import type { SessionState } from "./session";
10
+ import type { Signal, SignalFiring } from "./signals";
10
11
  import type { StructuredSchema } from "./schema";
11
- import { Template, ConditionTemplate } from "./template";
12
+ import type { Event } from "./history";
13
+ import type { Template } from "./template";
14
+ import type { ConditionWhen, ConditionIf } from "./flow";
12
15
  import type { PromptCacheConfig } from "../core/PromptSectionCache";
13
16
 
17
+ /**
18
+ * Context passed to every lifecycle hook (flow and step).
19
+ * Carries the current state and a `dispatch` method for emitting directives
20
+ * onto the per-turn directive bus.
21
+ */
22
+ export interface HookContext<TContext = unknown, TData = unknown> {
23
+ /** Agent-level context. */
24
+ context: TContext;
25
+ /** Collected data (partial — fields may be undefined). */
26
+ data: Partial<TData>;
27
+ /** Full session state. */
28
+ session: SessionState<TData>;
29
+ /** Conversation history as events. */
30
+ history: Event[];
31
+ /**
32
+ * Emit a directive onto the per-turn directive bus.
33
+ * Multiple `dispatch()` calls are allowed; they merge via Algorithm 4
34
+ * along with any directive returned from the hook itself.
35
+ */
36
+ dispatch(directive: Directive<TContext, TData>): void;
37
+ }
38
+
39
+ /**
40
+ * Reason why a flow was exited, passed to `hooks.onExit`.
41
+ */
42
+ export type ExitReason = 'completed' | 'goto_flow' | 'goto_step' | 'aborted';
43
+
14
44
  /**
15
45
  * Agent-level compaction configuration.
16
46
  * Unlike CompactionOptions, this does not require a `provider` since the agent already has one.
@@ -49,12 +79,6 @@ export interface AgentCompactionConfig {
49
79
  export enum CompositionMode {
50
80
  /** Fluid, natural conversation without strict structure */
51
81
  FLUID = "fluid",
52
- /** Canned responses with fluid fallback */
53
- CANNED_FLUID = "canned_fluid",
54
- /** Composited canned responses */
55
- CANNED_COMPOSITED = "composited_canned",
56
- /** Strict canned responses only */
57
- CANNED_STRICT = "strict_canned",
58
82
  }
59
83
 
60
84
  /**
@@ -103,14 +127,13 @@ export type ContextProvider<TContext = unknown> = () =>
103
127
  export interface AgentOptions<TContext = unknown, TData = unknown> {
104
128
  /** Display name of the agent */
105
129
  name: string;
106
- /** Detailed description of the agent's purpose and personality */
107
- description?: string;
108
130
  /** The agent's primary goal or objective */
109
131
  goal?: string;
110
- /** Optional personality/tone prompt used in prompts */
111
- personality?: Template<TContext>;
112
- /** Optional identity prompt defining the agent's self-concept and role */
113
- identity?: Template<TContext>;
132
+ /**
133
+ * Agent persona — covers role, tone, self-concept, and communication style.
134
+ * Rendered into the system prompt as "who you are and how you communicate."
135
+ */
136
+ persona?: Template<TContext>;
114
137
  /** Enable debug logging */
115
138
  debug?: boolean;
116
139
  /** Default context data available to the agent */
@@ -125,46 +148,53 @@ export interface AgentOptions<TContext = unknown, TData = unknown> {
125
148
  hooks?: ContextLifecycleHooks<TContext, TData>;
126
149
  /** AI provider strategy for generating responses */
127
150
  provider: AiProvider;
128
- /** Composition mode for response generation */
129
- compositionMode?: CompositionMode;
130
151
  /** Initial terms for domain glossary */
131
152
  terms?: Term<TContext, TData>[];
132
- /** Initial guidelines for agent behavior */
133
- guidelines?: Guideline<TContext, TData>[];
134
- /** Global tools available to all routes */
153
+ /**
154
+ * Instructions for agent behavior — unified primitive.
155
+ * Each instruction has a `kind`: `'must'` (rule), `'never'` (prohibition), or `'should'` (default, nudge).
156
+ */
157
+ instructions?: Instruction<TContext, TData>[];
158
+ /** Global tools available to all flows */
135
159
  tools?: Tool<TContext, TData, unknown>[];
136
- /** Initial routes (will be instantiated as Route objects) */
137
- routes?: RouteOptions<TContext, TData>[];
160
+ /** Initial flows (will be instantiated as Flow objects) */
161
+ flows?: FlowOptions<TContext, TData>[];
138
162
  /** Optional persistence configuration for auto-saving sessions and messages */
139
163
  persistence?: PersistenceConfig<TData>;
140
164
  /** Knowledge base containing any JSON structure the AI should know */
141
165
  knowledgeBase?: Record<string, unknown>;
142
- /** Absolute rules the agent must follow across all routes */
143
- rules?: Template<TContext, TData>[];
144
- /** Absolute prohibitions the agent must never do across all routes */
145
- prohibitions?: Template<TContext, TData>[];
146
166
  /** Agent-level data schema defining the complete data structure for collection */
147
167
  schema?: StructuredSchema;
148
168
  /** Initial data to pre-populate when creating the agent */
149
169
  initialData?: Partial<TData>;
150
170
  /**
151
- * Margin (0-100) the best alternative route must exceed the current route's score
171
+ * Margin (0-100) the best alternative flow must exceed the current flow's score
152
172
  * by before the agent switches. Higher values make the agent "stickier" to the
153
- * current route. Set to 0 to switch whenever any route scores higher.
173
+ * current flow. Set to 0 to switch whenever any flow scores higher.
154
174
  * @default 15
155
175
  */
156
- routeSwitchMargin?: number;
176
+ flowSwitchMargin?: number;
157
177
  /**
158
- * Maximum number of steps to execute in a single batch.
159
- * Controls how many consecutive steps can run together in one LLM call.
178
+ /**
179
+ * Maximum number of consecutive auto-steps (`auto: true`) that may execute
180
+ * within a single turn before the pipeline throws `FlowConfigurationError`.
181
+ * Guards against infinite loops in auto-step chains.
160
182
  *
161
- * - `1` (default): Steps execute one at a time (classic behavior)
162
- * - `Infinity`: No limit — all eligible steps batch together
163
- * - Any positive integer: Cap the batch to that many steps
183
+ * The default (10) is applied at Agent construction time, not on this type.
164
184
  *
165
- * @default 1
185
+ * @default 10
166
186
  */
167
- maxStepsPerBatch?: number;
187
+ maxAutoStepsPerTurn?: number;
188
+ /**
189
+ * Maximum number of chained directives allowed within a single turn before
190
+ * the pipeline throws `FlowConfigurationError`. Guards against infinite
191
+ * redirection loops (e.g., goTo → onEnter emits goTo → onComplete emits goTo → …).
192
+ *
193
+ * Chain breakers (`abort` mid-chain) stop counting and apply immediately.
194
+ *
195
+ * @default 10
196
+ */
197
+ maxDirectiveChain?: number;
168
198
  /**
169
199
  * Optional compaction configuration for managing conversation history size.
170
200
  * When provided, the agent will validate the options and make them available
@@ -177,6 +207,32 @@ export interface AgentOptions<TContext = unknown, TData = unknown> {
177
207
  * @default { enabled: true }
178
208
  */
179
209
  promptCache?: PromptCacheConfig;
210
+ /**
211
+ * Reserved for future router strategies. v2.0: only `'ai'` is implemented.
212
+ * Future v2.x widens to `'embedding' | 'rules'` etc.
213
+ *
214
+ * Setting any non-`'ai'` value in v2.0 throws `NotImplementedError` at
215
+ * `Agent` construction time. This is intentional — it surfaces forward-compat
216
+ * misconfiguration loudly. Future v2.x widens the accepted union without
217
+ * breaking the throw site (the new value just stops throwing).
218
+ *
219
+ * @default 'ai'
220
+ */
221
+ routerMode?: 'ai';
222
+
223
+ /**
224
+ * Signals: typed event detectors that run around the LLM turn.
225
+ * Empty array or undefined → signal phases are no-ops, zero cost.
226
+ */
227
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
228
+ signals?: Signal<TContext, TData, any>[];
229
+
230
+ /**
231
+ * Maximum signals per batched classifier call. Default 10.
232
+ * If more signals are eligible after gating, they are split into
233
+ * parallel batches of this size.
234
+ */
235
+ signalBatchSize?: number;
180
236
  }
181
237
 
182
238
  /**
@@ -192,42 +248,104 @@ export interface Term<TContext = unknown, TData = unknown> {
192
248
  }
193
249
 
194
250
  /**
195
- * A behavioral guideline for the agent
251
+ * Instruction unified behavioral primitive.
252
+ * Collapses v1's `Guideline` (scoped nudge), `Rule` (absolute must-do),
253
+ * and `Prohibition` (absolute must-not) into a single type with a `kind` discriminator.
254
+ *
255
+ * @example
256
+ * // A "should" (default) — same as a v1 Guideline
257
+ * { prompt: "Prefer short answers", when: "User asks a simple question" }
258
+ *
259
+ * // A "must" — same as a v1 Rule
260
+ * { kind: 'must', prompt: "Always validate email format before proceeding" }
261
+ *
262
+ * // A "never" — same as a v1 Prohibition
263
+ * { kind: 'never', prompt: "Promise delivery dates you cannot guarantee" }
196
264
  */
197
- export interface Guideline<TContext = unknown, TData = unknown> {
198
- /** Unique identifier */
265
+ export interface Instruction<TContext = unknown, TData = unknown> {
266
+ /** Unique identifier (auto-generated if omitted). */
199
267
  id?: string;
200
- /** Condition that triggers this guideline (optional for always-active guidelines) */
201
- condition?: ConditionTemplate<TContext, TData>;
202
- /** Action the agent should take when the condition is met */
203
- action: Template<TContext, TData>;
204
- /** Whether this guideline is currently enabled */
268
+ /**
269
+ * Instruction severity.
270
+ * - `'must'` — absolute rule the agent must always follow.
271
+ * - `'never'` — absolute prohibition the agent must never do.
272
+ * - `'should'`— behavioral nudge, active when conditions match.
273
+ *
274
+ * @default 'should'
275
+ */
276
+ kind?: 'must' | 'never' | 'should';
277
+ /**
278
+ * AI-evaluated activation condition. String or array of strings (AND semantics).
279
+ * Undefined = always active. Functions are NOT allowed here — use `if`.
280
+ */
281
+ when?: ConditionWhen;
282
+ /**
283
+ * Code-evaluated activation condition. Function or array of functions (AND semantics).
284
+ * Free to evaluate. When both `when` and `if` are set, `if` runs first;
285
+ * `when` is only evaluated when `if` passes.
286
+ */
287
+ if?: ConditionIf<TContext, TData>;
288
+ /** Behavioral instruction text rendered into the prompt. */
289
+ prompt: Template<TContext, TData>;
290
+ /** Whether this instruction is currently enabled. @default true */
205
291
  enabled?: boolean;
206
- /** Tags for organizing and filtering guidelines */
292
+ /** Tags for organizing and filtering instructions. */
207
293
  tags?: string[];
208
- /** Additional metadata */
294
+ /** Additional metadata. */
209
295
  metadata?: Record<string, unknown>;
210
296
  }
211
297
 
212
298
  /**
213
- * Guideline match with rationale
299
+ * Carries the three scope buckets through the prompt pipeline so the composer
300
+ * can render scope captions correctly.
214
301
  */
215
- export interface GuidelineMatch<TContext = unknown, TData = unknown> {
216
- /** The matched guideline */
217
- guideline: Guideline<TContext, TData>;
218
- /** Explanation of why this guideline was matched */
219
- rationale?: string;
302
+ export interface ScopedInstructions<TContext = unknown, TData = unknown> {
303
+ /** Agent-level rendered with caption `[Always]`. */
304
+ global: Instruction<TContext, TData>[];
305
+ /**
306
+ * Flow-level — rendered with caption `[In: <FlowTitle>]`.
307
+ * `flowTitle` is captured here so the composer doesn't need a Flow reference.
308
+ */
309
+ flow?: { flowTitle: string; items: Instruction<TContext, TData>[] };
310
+ /**
311
+ * Step-level — rendered with caption `[Step: <stepId>]`.
312
+ * `stepId` is captured here for the same reason.
313
+ */
314
+ step?: { stepId: string; items: Instruction<TContext, TData>[] };
315
+ }
316
+
317
+ /**
318
+ * Observability record for an instruction that was active and rendered into a turn's prompt.
319
+ * Deterministic — derived from rendering, not from LLM self-report.
320
+ */
321
+ export interface AppliedInstruction {
322
+ /** The instruction's id */
323
+ id: string;
324
+ /** Which scope the instruction originated from */
325
+ scope: 'global' | 'flow' | 'step';
326
+ /** FlowTitle for `scope === 'flow'`, stepId for `scope === 'step'`, undefined for `scope === 'global'`. */
327
+ scopeRef?: string;
220
328
  }
221
329
 
222
330
  export interface AgentResponse<TData = Record<string, unknown>> {
223
331
  message: string;
224
332
  session?: SessionState<TData>;
225
333
  toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
226
- isRouteComplete?: boolean;
334
+ isFlowComplete?: boolean;
227
335
  /** Steps executed in this response (for multi-step execution) */
228
336
  executedSteps?: StepRef[];
229
337
  /** Why execution stopped (for multi-step execution) */
230
338
  stoppedReason?: StoppedReason;
339
+ /**
340
+ * Instructions whose conditions passed and were rendered into this turn's prompt.
341
+ * Deterministic — derived from rendering, not from LLM self-report.
342
+ */
343
+ appliedInstructions?: AppliedInstruction[];
344
+ /**
345
+ * Signals that fired during this turn (both pre- and post-phases), in fire order.
346
+ * Mirrors the observability framing of `executedSteps` and `appliedInstructions`.
347
+ */
348
+ triggeredSignals?: SignalFiring<unknown, TData>[];
231
349
  }
232
350
 
233
351
  export interface AgentResponseStreamChunk<TData = Record<string, unknown>> {
@@ -236,7 +354,7 @@ export interface AgentResponseStreamChunk<TData = Record<string, unknown>> {
236
354
  done: boolean;
237
355
  session?: SessionState<TData>;
238
356
  toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
239
- isRouteComplete?: boolean;
357
+ isFlowComplete?: boolean;
240
358
  /** Steps executed in this response (for multi-step execution) */
241
359
  executedSteps?: StepRef[];
242
360
  /** Why execution stopped (for multi-step execution) */
@@ -249,6 +367,17 @@ export interface AgentResponseStreamChunk<TData = Record<string, unknown>> {
249
367
  };
250
368
  structured?: AgentStructuredResponse;
251
369
  error?: Error;
370
+ /**
371
+ * Instructions whose conditions passed and were rendered into this turn's prompt.
372
+ * Populated on the final (`done: true`) chunk only.
373
+ */
374
+ appliedInstructions?: AppliedInstruction[];
375
+ /**
376
+ * Signals that fired during this turn (both pre- and post-phases), in fire order.
377
+ * Mirrors the observability framing of `executedSteps` and `appliedInstructions`.
378
+ * Populated on the final (`done: true`) chunk only.
379
+ */
380
+ triggeredSignals?: SignalFiring<unknown, TData>[];
252
381
  }
253
382
 
254
383
  /**
package/src/types/ai.ts CHANGED
@@ -69,9 +69,9 @@ export interface GenerateMessageInput<TContext = unknown> {
69
69
  export interface AgentStructuredResponse extends Record<string, unknown> {
70
70
  /** The actual message to send to the user */
71
71
  message: string;
72
- /** Route chosen by the agent (route title or null if no route) */
73
- route?: string | null;
74
- /** Current step within the route (step description or null) */
72
+ /** Flow chosen by the agent (flow title or null if no flow) */
73
+ flow?: string | null;
74
+ /** Current step within the flow (step description or null) */
75
75
  step?: string | null;
76
76
  /** Tool calls the agent wants to execute */
77
77
  toolCalls?: Array<{
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Typed error classes for @falai/agent.
3
+ */
4
+
5
+ /**
6
+ * Typed error for not-yet-implemented surface. Subclass of Error (not of
7
+ * FlowConfigurationError) so handlers can distinguish "not yet built" from
8
+ * "misconfigured".
9
+ *
10
+ * Thrown when a reserved option is set to a value that the current version
11
+ * does not support (e.g. `routerMode: 'embedding'` in v2.0).
12
+ */
13
+ export class NotImplementedError extends Error {
14
+ constructor(message: string) {
15
+ super(message);
16
+ this.name = 'NotImplementedError';
17
+ }
18
+ }