@falai/agent 1.2.8 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. package/README.md +40 -886
  2. package/dist/adapters/MemoryAdapter.js +2 -2
  3. package/dist/adapters/MemoryAdapter.js.map +1 -1
  4. package/dist/adapters/MongoAdapter.js +2 -2
  5. package/dist/adapters/MongoAdapter.js.map +1 -1
  6. package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
  7. package/dist/adapters/OpenSearchAdapter.js +9 -7
  8. package/dist/adapters/OpenSearchAdapter.js.map +1 -1
  9. package/dist/adapters/PostgreSQLAdapter.d.ts +14 -0
  10. package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  11. package/dist/adapters/PostgreSQLAdapter.js +25 -9
  12. package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
  13. package/dist/adapters/PrismaAdapter.js +5 -5
  14. package/dist/adapters/PrismaAdapter.js.map +1 -1
  15. package/dist/adapters/RedisAdapter.js +2 -2
  16. package/dist/adapters/RedisAdapter.js.map +1 -1
  17. package/dist/adapters/SQLiteAdapter.d.ts +17 -0
  18. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
  19. package/dist/adapters/SQLiteAdapter.js +30 -11
  20. package/dist/adapters/SQLiteAdapter.js.map +1 -1
  21. package/dist/cjs/adapters/MemoryAdapter.js +2 -2
  22. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  23. package/dist/cjs/adapters/MongoAdapter.js +2 -2
  24. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  25. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
  26. package/dist/cjs/adapters/OpenSearchAdapter.js +9 -7
  27. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  28. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +14 -0
  29. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  30. package/dist/cjs/adapters/PostgreSQLAdapter.js +25 -9
  31. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  32. package/dist/cjs/adapters/PrismaAdapter.js +5 -5
  33. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  34. package/dist/cjs/adapters/RedisAdapter.js +2 -2
  35. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  36. package/dist/cjs/adapters/SQLiteAdapter.d.ts +17 -0
  37. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  38. package/dist/cjs/adapters/SQLiteAdapter.js +30 -11
  39. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  40. package/dist/cjs/constants/index.d.ts +0 -9
  41. package/dist/cjs/constants/index.d.ts.map +1 -1
  42. package/dist/cjs/constants/index.js +2 -11
  43. package/dist/cjs/constants/index.js.map +1 -1
  44. package/dist/cjs/core/Agent.d.ts +119 -153
  45. package/dist/cjs/core/Agent.d.ts.map +1 -1
  46. package/dist/cjs/core/Agent.js +471 -324
  47. package/dist/cjs/core/Agent.js.map +1 -1
  48. package/dist/cjs/core/AutoChainExecutor.d.ts +107 -0
  49. package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -0
  50. package/dist/cjs/core/AutoChainExecutor.js +297 -0
  51. package/dist/cjs/core/AutoChainExecutor.js.map +1 -0
  52. package/dist/cjs/core/BranchEvaluator.d.ts +54 -0
  53. package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -0
  54. package/dist/cjs/core/BranchEvaluator.js +130 -0
  55. package/dist/cjs/core/BranchEvaluator.js.map +1 -0
  56. package/dist/cjs/core/DirectiveBus.d.ts +88 -0
  57. package/dist/cjs/core/DirectiveBus.d.ts.map +1 -0
  58. package/dist/cjs/core/DirectiveBus.js +196 -0
  59. package/dist/cjs/core/DirectiveBus.js.map +1 -0
  60. package/dist/cjs/core/DirectiveChainTracker.d.ts +49 -0
  61. package/dist/cjs/core/DirectiveChainTracker.d.ts.map +1 -0
  62. package/dist/cjs/core/DirectiveChainTracker.js +121 -0
  63. package/dist/cjs/core/DirectiveChainTracker.js.map +1 -0
  64. package/dist/cjs/core/Flow.d.ts +186 -0
  65. package/dist/cjs/core/Flow.d.ts.map +1 -0
  66. package/dist/cjs/core/Flow.js +550 -0
  67. package/dist/cjs/core/Flow.js.map +1 -0
  68. package/dist/cjs/core/FlowRouter.d.ts +182 -0
  69. package/dist/cjs/core/FlowRouter.d.ts.map +1 -0
  70. package/dist/cjs/core/{RoutingEngine.js → FlowRouter.js} +323 -306
  71. package/dist/cjs/core/FlowRouter.js.map +1 -0
  72. package/dist/cjs/core/PersistenceManager.d.ts +2 -2
  73. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  74. package/dist/cjs/core/PersistenceManager.js +7 -7
  75. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  76. package/dist/cjs/core/PromptComposer.d.ts +21 -8
  77. package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
  78. package/dist/cjs/core/PromptComposer.js +182 -105
  79. package/dist/cjs/core/PromptComposer.js.map +1 -1
  80. package/dist/cjs/core/PromptSectionCache.d.ts +1 -1
  81. package/dist/cjs/core/PromptSectionCache.js +1 -1
  82. package/dist/cjs/core/ResponseEngine.d.ts +18 -8
  83. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  84. package/dist/cjs/core/ResponseEngine.js +38 -36
  85. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  86. package/dist/cjs/core/ResponseModal.d.ts +73 -56
  87. package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
  88. package/dist/cjs/core/ResponseModal.js +1191 -1014
  89. package/dist/cjs/core/ResponseModal.js.map +1 -1
  90. package/dist/cjs/core/ResponsePipeline.d.ts +124 -26
  91. package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
  92. package/dist/cjs/core/ResponsePipeline.js +509 -136
  93. package/dist/cjs/core/ResponsePipeline.js.map +1 -1
  94. package/dist/cjs/core/SignalEvaluator.d.ts +86 -0
  95. package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -0
  96. package/dist/cjs/core/SignalEvaluator.js +333 -0
  97. package/dist/cjs/core/SignalEvaluator.js.map +1 -0
  98. package/dist/cjs/core/SignalProcessor.d.ts +152 -0
  99. package/dist/cjs/core/SignalProcessor.d.ts.map +1 -0
  100. package/dist/cjs/core/SignalProcessor.js +562 -0
  101. package/dist/cjs/core/SignalProcessor.js.map +1 -0
  102. package/dist/cjs/core/Step.d.ts +43 -32
  103. package/dist/cjs/core/Step.d.ts.map +1 -1
  104. package/dist/cjs/core/Step.js +221 -126
  105. package/dist/cjs/core/Step.js.map +1 -1
  106. package/dist/cjs/core/StreamingToolExecutor.d.ts +2 -2
  107. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -1
  108. package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
  109. package/dist/cjs/core/ToolManager.d.ts +44 -13
  110. package/dist/cjs/core/ToolManager.d.ts.map +1 -1
  111. package/dist/cjs/core/ToolManager.js +174 -91
  112. package/dist/cjs/core/ToolManager.js.map +1 -1
  113. package/dist/cjs/core/createAgent.d.ts +35 -0
  114. package/dist/cjs/core/createAgent.d.ts.map +1 -0
  115. package/dist/cjs/core/createAgent.js +39 -0
  116. package/dist/cjs/core/createAgent.js.map +1 -0
  117. package/dist/cjs/core/flow-namespace.d.ts +49 -0
  118. package/dist/cjs/core/flow-namespace.d.ts.map +1 -0
  119. package/dist/cjs/core/flow-namespace.js +171 -0
  120. package/dist/cjs/core/flow-namespace.js.map +1 -0
  121. package/dist/cjs/index.d.ts +11 -14
  122. package/dist/cjs/index.d.ts.map +1 -1
  123. package/dist/cjs/index.js +18 -22
  124. package/dist/cjs/index.js.map +1 -1
  125. package/dist/cjs/types/agent.d.ts +183 -54
  126. package/dist/cjs/types/agent.d.ts.map +1 -1
  127. package/dist/cjs/types/agent.js +0 -6
  128. package/dist/cjs/types/agent.js.map +1 -1
  129. package/dist/cjs/types/ai.d.ts +3 -3
  130. package/dist/cjs/types/ai.d.ts.map +1 -1
  131. package/dist/cjs/types/errors.d.ts +15 -0
  132. package/dist/cjs/types/errors.d.ts.map +1 -0
  133. package/dist/cjs/types/errors.js +22 -0
  134. package/dist/cjs/types/errors.js.map +1 -0
  135. package/dist/cjs/types/flow.d.ts +513 -0
  136. package/dist/cjs/types/flow.d.ts.map +1 -0
  137. package/dist/cjs/types/{route.js → flow.js} +2 -2
  138. package/dist/cjs/types/flow.js.map +1 -0
  139. package/dist/cjs/types/index.d.ts +7 -6
  140. package/dist/cjs/types/index.d.ts.map +1 -1
  141. package/dist/cjs/types/index.js +6 -2
  142. package/dist/cjs/types/index.js.map +1 -1
  143. package/dist/cjs/types/persistence.d.ts +11 -7
  144. package/dist/cjs/types/persistence.d.ts.map +1 -1
  145. package/dist/cjs/types/routing.d.ts +1 -1
  146. package/dist/cjs/types/routing.d.ts.map +1 -1
  147. package/dist/cjs/types/session.d.ts +24 -23
  148. package/dist/cjs/types/session.d.ts.map +1 -1
  149. package/dist/cjs/types/signals.d.ts +248 -0
  150. package/dist/cjs/types/signals.d.ts.map +1 -0
  151. package/dist/cjs/types/signals.js +11 -0
  152. package/dist/cjs/types/signals.js.map +1 -0
  153. package/dist/cjs/types/template.d.ts +2 -8
  154. package/dist/cjs/types/template.d.ts.map +1 -1
  155. package/dist/cjs/types/tool.d.ts +36 -29
  156. package/dist/cjs/types/tool.d.ts.map +1 -1
  157. package/dist/cjs/types/tool.js +1 -1
  158. package/dist/cjs/types/tool.js.map +1 -1
  159. package/dist/cjs/utils/condition.d.ts +7 -1
  160. package/dist/cjs/utils/condition.d.ts.map +1 -1
  161. package/dist/cjs/utils/condition.js.map +1 -1
  162. package/dist/cjs/utils/id.d.ts +13 -5
  163. package/dist/cjs/utils/id.d.ts.map +1 -1
  164. package/dist/cjs/utils/id.js +24 -10
  165. package/dist/cjs/utils/id.js.map +1 -1
  166. package/dist/cjs/utils/index.d.ts +2 -2
  167. package/dist/cjs/utils/index.d.ts.map +1 -1
  168. package/dist/cjs/utils/index.js +7 -3
  169. package/dist/cjs/utils/index.js.map +1 -1
  170. package/dist/cjs/utils/session.d.ts +44 -5
  171. package/dist/cjs/utils/session.d.ts.map +1 -1
  172. package/dist/cjs/utils/session.js +197 -38
  173. package/dist/cjs/utils/session.js.map +1 -1
  174. package/dist/constants/index.d.ts +0 -9
  175. package/dist/constants/index.d.ts.map +1 -1
  176. package/dist/constants/index.js +3 -9
  177. package/dist/constants/index.js.map +1 -1
  178. package/dist/core/Agent.d.ts +119 -153
  179. package/dist/core/Agent.d.ts.map +1 -1
  180. package/dist/core/Agent.js +472 -325
  181. package/dist/core/Agent.js.map +1 -1
  182. package/dist/core/AutoChainExecutor.d.ts +107 -0
  183. package/dist/core/AutoChainExecutor.d.ts.map +1 -0
  184. package/dist/core/AutoChainExecutor.js +293 -0
  185. package/dist/core/AutoChainExecutor.js.map +1 -0
  186. package/dist/core/BranchEvaluator.d.ts +54 -0
  187. package/dist/core/BranchEvaluator.d.ts.map +1 -0
  188. package/dist/core/BranchEvaluator.js +126 -0
  189. package/dist/core/BranchEvaluator.js.map +1 -0
  190. package/dist/core/DirectiveBus.d.ts +88 -0
  191. package/dist/core/DirectiveBus.d.ts.map +1 -0
  192. package/dist/core/DirectiveBus.js +192 -0
  193. package/dist/core/DirectiveBus.js.map +1 -0
  194. package/dist/core/DirectiveChainTracker.d.ts +49 -0
  195. package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
  196. package/dist/core/DirectiveChainTracker.js +117 -0
  197. package/dist/core/DirectiveChainTracker.js.map +1 -0
  198. package/dist/core/Flow.d.ts +186 -0
  199. package/dist/core/Flow.d.ts.map +1 -0
  200. package/dist/core/Flow.js +546 -0
  201. package/dist/core/Flow.js.map +1 -0
  202. package/dist/core/FlowRouter.d.ts +182 -0
  203. package/dist/core/FlowRouter.d.ts.map +1 -0
  204. package/dist/core/{RoutingEngine.js → FlowRouter.js} +322 -305
  205. package/dist/core/FlowRouter.js.map +1 -0
  206. package/dist/core/PersistenceManager.d.ts +2 -2
  207. package/dist/core/PersistenceManager.d.ts.map +1 -1
  208. package/dist/core/PersistenceManager.js +7 -7
  209. package/dist/core/PersistenceManager.js.map +1 -1
  210. package/dist/core/PromptComposer.d.ts +21 -8
  211. package/dist/core/PromptComposer.d.ts.map +1 -1
  212. package/dist/core/PromptComposer.js +183 -106
  213. package/dist/core/PromptComposer.js.map +1 -1
  214. package/dist/core/PromptSectionCache.d.ts +1 -1
  215. package/dist/core/PromptSectionCache.js +1 -1
  216. package/dist/core/ResponseEngine.d.ts +18 -8
  217. package/dist/core/ResponseEngine.d.ts.map +1 -1
  218. package/dist/core/ResponseEngine.js +38 -36
  219. package/dist/core/ResponseEngine.js.map +1 -1
  220. package/dist/core/ResponseModal.d.ts +73 -56
  221. package/dist/core/ResponseModal.d.ts.map +1 -1
  222. package/dist/core/ResponseModal.js +1193 -1016
  223. package/dist/core/ResponseModal.js.map +1 -1
  224. package/dist/core/ResponsePipeline.d.ts +124 -26
  225. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  226. package/dist/core/ResponsePipeline.js +509 -137
  227. package/dist/core/ResponsePipeline.js.map +1 -1
  228. package/dist/core/SignalEvaluator.d.ts +86 -0
  229. package/dist/core/SignalEvaluator.d.ts.map +1 -0
  230. package/dist/core/SignalEvaluator.js +326 -0
  231. package/dist/core/SignalEvaluator.js.map +1 -0
  232. package/dist/core/SignalProcessor.d.ts +152 -0
  233. package/dist/core/SignalProcessor.d.ts.map +1 -0
  234. package/dist/core/SignalProcessor.js +555 -0
  235. package/dist/core/SignalProcessor.js.map +1 -0
  236. package/dist/core/Step.d.ts +43 -32
  237. package/dist/core/Step.d.ts.map +1 -1
  238. package/dist/core/Step.js +220 -126
  239. package/dist/core/Step.js.map +1 -1
  240. package/dist/core/StreamingToolExecutor.d.ts +2 -2
  241. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  242. package/dist/core/StreamingToolExecutor.js.map +1 -1
  243. package/dist/core/ToolManager.d.ts +44 -13
  244. package/dist/core/ToolManager.d.ts.map +1 -1
  245. package/dist/core/ToolManager.js +174 -91
  246. package/dist/core/ToolManager.js.map +1 -1
  247. package/dist/core/createAgent.d.ts +35 -0
  248. package/dist/core/createAgent.d.ts.map +1 -0
  249. package/dist/core/createAgent.js +36 -0
  250. package/dist/core/createAgent.js.map +1 -0
  251. package/dist/core/flow-namespace.d.ts +49 -0
  252. package/dist/core/flow-namespace.d.ts.map +1 -0
  253. package/dist/core/flow-namespace.js +168 -0
  254. package/dist/core/flow-namespace.js.map +1 -0
  255. package/dist/index.d.ts +11 -14
  256. package/dist/index.d.ts.map +1 -1
  257. package/dist/index.js +9 -12
  258. package/dist/index.js.map +1 -1
  259. package/dist/types/agent.d.ts +183 -54
  260. package/dist/types/agent.d.ts.map +1 -1
  261. package/dist/types/agent.js +0 -6
  262. package/dist/types/agent.js.map +1 -1
  263. package/dist/types/ai.d.ts +3 -3
  264. package/dist/types/ai.d.ts.map +1 -1
  265. package/dist/types/errors.d.ts +15 -0
  266. package/dist/types/errors.d.ts.map +1 -0
  267. package/dist/types/errors.js +18 -0
  268. package/dist/types/errors.js.map +1 -0
  269. package/dist/types/flow.d.ts +513 -0
  270. package/dist/types/flow.d.ts.map +1 -0
  271. package/dist/types/flow.js +5 -0
  272. package/dist/types/flow.js.map +1 -0
  273. package/dist/types/index.d.ts +7 -6
  274. package/dist/types/index.d.ts.map +1 -1
  275. package/dist/types/index.js +4 -1
  276. package/dist/types/index.js.map +1 -1
  277. package/dist/types/persistence.d.ts +11 -7
  278. package/dist/types/persistence.d.ts.map +1 -1
  279. package/dist/types/routing.d.ts +1 -1
  280. package/dist/types/routing.d.ts.map +1 -1
  281. package/dist/types/session.d.ts +24 -23
  282. package/dist/types/session.d.ts.map +1 -1
  283. package/dist/types/signals.d.ts +248 -0
  284. package/dist/types/signals.d.ts.map +1 -0
  285. package/dist/types/signals.js +10 -0
  286. package/dist/types/signals.js.map +1 -0
  287. package/dist/types/template.d.ts +2 -8
  288. package/dist/types/template.d.ts.map +1 -1
  289. package/dist/types/tool.d.ts +36 -29
  290. package/dist/types/tool.d.ts.map +1 -1
  291. package/dist/types/tool.js +1 -1
  292. package/dist/types/tool.js.map +1 -1
  293. package/dist/utils/condition.d.ts +7 -1
  294. package/dist/utils/condition.d.ts.map +1 -1
  295. package/dist/utils/condition.js.map +1 -1
  296. package/dist/utils/id.d.ts +13 -5
  297. package/dist/utils/id.d.ts.map +1 -1
  298. package/dist/utils/id.js +22 -9
  299. package/dist/utils/id.js.map +1 -1
  300. package/dist/utils/index.d.ts +2 -2
  301. package/dist/utils/index.d.ts.map +1 -1
  302. package/dist/utils/index.js +2 -2
  303. package/dist/utils/index.js.map +1 -1
  304. package/dist/utils/session.d.ts +44 -5
  305. package/dist/utils/session.d.ts.map +1 -1
  306. package/dist/utils/session.js +193 -37
  307. package/dist/utils/session.js.map +1 -1
  308. package/docs/README.md +15 -202
  309. package/docs/concepts/architecture.md +281 -0
  310. package/docs/concepts/directives.md +400 -0
  311. package/docs/concepts/pipeline.md +399 -0
  312. package/docs/guides/branching.md +263 -0
  313. package/docs/guides/compaction.md +163 -0
  314. package/docs/guides/conditions.md +167 -0
  315. package/docs/guides/error-handling.md +176 -0
  316. package/docs/guides/flow-control.md +409 -0
  317. package/docs/guides/instructions.md +210 -0
  318. package/docs/guides/persistence.md +182 -0
  319. package/docs/guides/streaming.md +137 -0
  320. package/docs/migration/README.md +15 -0
  321. package/docs/migration/route-to-flow.md +560 -0
  322. package/docs/migration/v1-to-v2.md +909 -0
  323. package/docs/reference/adapters.md +481 -0
  324. package/docs/reference/branches.md +241 -0
  325. package/docs/reference/create-agent.md +186 -0
  326. package/docs/reference/directive.md +243 -0
  327. package/docs/reference/errors.md +122 -0
  328. package/docs/reference/flow.md +238 -0
  329. package/docs/reference/instruction.md +177 -0
  330. package/docs/reference/pre-directive.md +131 -0
  331. package/docs/reference/providers.md +227 -0
  332. package/docs/reference/signals.md +356 -0
  333. package/docs/reference/step.md +339 -0
  334. package/docs/reference/tool.md +269 -0
  335. package/docs/start/01-install.md +81 -0
  336. package/docs/start/02-first-agent.md +196 -0
  337. package/docs/start/03-collect-data.md +222 -0
  338. package/docs/start/04-add-tools.md +276 -0
  339. package/docs/start/05-go-to-production.md +216 -0
  340. package/examples/01-quickstart.ts +20 -0
  341. package/examples/02-data-extraction.ts +90 -0
  342. package/examples/03-tools.ts +136 -0
  343. package/examples/04-instructions.ts +100 -0
  344. package/examples/05-branching.ts +140 -0
  345. package/examples/06-flow-control.ts +103 -0
  346. package/examples/07-streaming.ts +69 -0
  347. package/examples/08-persistence.ts +98 -0
  348. package/examples/09-signals.ts +144 -0
  349. package/examples/tsconfig.json +30 -0
  350. package/package.json +2 -1
  351. package/src/adapters/MemoryAdapter.ts +3 -3
  352. package/src/adapters/MongoAdapter.ts +3 -3
  353. package/src/adapters/OpenSearchAdapter.ts +10 -8
  354. package/src/adapters/PostgreSQLAdapter.ts +26 -10
  355. package/src/adapters/PrismaAdapter.ts +6 -6
  356. package/src/adapters/RedisAdapter.ts +3 -3
  357. package/src/adapters/SQLiteAdapter.ts +31 -12
  358. package/src/constants/index.ts +2 -10
  359. package/src/core/Agent.ts +585 -374
  360. package/src/core/AutoChainExecutor.ts +440 -0
  361. package/src/core/BranchEvaluator.ts +167 -0
  362. package/src/core/DirectiveBus.ts +248 -0
  363. package/src/core/DirectiveChainTracker.ts +144 -0
  364. package/src/core/Flow.ts +666 -0
  365. package/src/core/{RoutingEngine.ts → FlowRouter.ts} +385 -365
  366. package/src/core/PersistenceManager.ts +8 -8
  367. package/src/core/PromptComposer.ts +209 -140
  368. package/src/core/PromptSectionCache.ts +1 -1
  369. package/src/core/ResponseEngine.ts +61 -46
  370. package/src/core/ResponseModal.ts +1453 -1240
  371. package/src/core/ResponsePipeline.ts +655 -175
  372. package/src/core/SignalEvaluator.ts +420 -0
  373. package/src/core/SignalProcessor.ts +723 -0
  374. package/src/core/Step.ts +279 -176
  375. package/src/core/StreamingToolExecutor.ts +4 -4
  376. package/src/core/ToolManager.ts +200 -97
  377. package/src/core/createAgent.ts +40 -0
  378. package/src/core/flow-namespace.ts +219 -0
  379. package/src/index.ts +42 -36
  380. package/src/types/agent.ts +182 -53
  381. package/src/types/ai.ts +3 -3
  382. package/src/types/errors.ts +18 -0
  383. package/src/types/flow.ts +590 -0
  384. package/src/types/index.ts +43 -16
  385. package/src/types/persistence.ts +12 -8
  386. package/src/types/routing.ts +1 -1
  387. package/src/types/session.ts +26 -23
  388. package/src/types/signals.ts +321 -0
  389. package/src/types/template.ts +3 -11
  390. package/src/types/tool.ts +50 -42
  391. package/src/utils/condition.ts +13 -4
  392. package/src/utils/id.ts +27 -9
  393. package/src/utils/index.ts +6 -2
  394. package/src/utils/session.ts +238 -42
  395. package/dist/cjs/core/BatchExecutor.d.ts +0 -359
  396. package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
  397. package/dist/cjs/core/BatchExecutor.js +0 -861
  398. package/dist/cjs/core/BatchExecutor.js.map +0 -1
  399. package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
  400. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
  401. package/dist/cjs/core/BatchPromptBuilder.js +0 -223
  402. package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
  403. package/dist/cjs/core/Route.d.ts +0 -180
  404. package/dist/cjs/core/Route.d.ts.map +0 -1
  405. package/dist/cjs/core/Route.js +0 -542
  406. package/dist/cjs/core/Route.js.map +0 -1
  407. package/dist/cjs/core/RoutingEngine.d.ts +0 -185
  408. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  409. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  410. package/dist/cjs/types/route.d.ts +0 -336
  411. package/dist/cjs/types/route.d.ts.map +0 -1
  412. package/dist/cjs/types/route.js.map +0 -1
  413. package/dist/core/BatchExecutor.d.ts +0 -359
  414. package/dist/core/BatchExecutor.d.ts.map +0 -1
  415. package/dist/core/BatchExecutor.js +0 -856
  416. package/dist/core/BatchExecutor.js.map +0 -1
  417. package/dist/core/BatchPromptBuilder.d.ts +0 -89
  418. package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
  419. package/dist/core/BatchPromptBuilder.js +0 -219
  420. package/dist/core/BatchPromptBuilder.js.map +0 -1
  421. package/dist/core/Route.d.ts +0 -180
  422. package/dist/core/Route.d.ts.map +0 -1
  423. package/dist/core/Route.js +0 -538
  424. package/dist/core/Route.js.map +0 -1
  425. package/dist/core/RoutingEngine.d.ts +0 -185
  426. package/dist/core/RoutingEngine.d.ts.map +0 -1
  427. package/dist/core/RoutingEngine.js.map +0 -1
  428. package/dist/types/route.d.ts +0 -336
  429. package/dist/types/route.d.ts.map +0 -1
  430. package/dist/types/route.js +0 -5
  431. package/dist/types/route.js.map +0 -1
  432. package/docs/CONTRIBUTING.md +0 -521
  433. package/docs/api/README.md +0 -3299
  434. package/docs/api/overview.md +0 -1410
  435. package/docs/architecture/data-extraction-flow.md +0 -360
  436. package/docs/architecture/multi-step-execution.md +0 -277
  437. package/docs/core/agent/README.md +0 -938
  438. package/docs/core/agent/context-management.md +0 -796
  439. package/docs/core/agent/rules-and-prohibitions.md +0 -113
  440. package/docs/core/agent/session-management.md +0 -693
  441. package/docs/core/ai-integration/prompt-composition.md +0 -355
  442. package/docs/core/ai-integration/providers.md +0 -515
  443. package/docs/core/ai-integration/response-processing.md +0 -433
  444. package/docs/core/conversation-flows/data-collection.md +0 -772
  445. package/docs/core/conversation-flows/route-dsl.md +0 -509
  446. package/docs/core/conversation-flows/routes.md +0 -249
  447. package/docs/core/conversation-flows/step-transitions.md +0 -731
  448. package/docs/core/conversation-flows/steps.md +0 -268
  449. package/docs/core/error-handling.md +0 -830
  450. package/docs/core/persistence/adapters.md +0 -255
  451. package/docs/core/persistence/session-storage.md +0 -656
  452. package/docs/core/routing/intelligent-routing.md +0 -470
  453. package/docs/core/tools/enhanced-tool.md +0 -186
  454. package/docs/core/tools/streaming-execution.md +0 -161
  455. package/docs/core/tools/tool-definition.md +0 -970
  456. package/docs/core/tools/tool-scoping.md +0 -819
  457. package/docs/guides/advanced-patterns/publishing.md +0 -186
  458. package/docs/guides/context-compaction.md +0 -96
  459. package/docs/guides/error-handling-patterns.md +0 -578
  460. package/docs/guides/getting-started/README.md +0 -795
  461. package/docs/guides/migration/README.md +0 -101
  462. package/docs/guides/migration/flexible-routing-conditions.md +0 -375
  463. package/docs/guides/migration/multi-step-execution.md +0 -393
  464. package/docs/guides/migration/response-modal-refactor.md +0 -518
  465. package/docs/guides/prompt-optimization.md +0 -164
  466. package/examples/advanced-patterns/context-compaction.ts +0 -223
  467. package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
  468. package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
  469. package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
  470. package/examples/advanced-patterns/streaming-responses.ts +0 -656
  471. package/examples/ai-providers/anthropic-integration.ts +0 -388
  472. package/examples/ai-providers/openai-integration.ts +0 -228
  473. package/examples/condition-patterns/function-only-conditions.ts +0 -365
  474. package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
  475. package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
  476. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  477. package/examples/condition-patterns/string-only-conditions.ts +0 -296
  478. package/examples/conversation-flows/completion-transitions.ts +0 -318
  479. package/examples/core-concepts/basic-agent.ts +0 -503
  480. package/examples/core-concepts/modern-streaming-api.ts +0 -309
  481. package/examples/core-concepts/schema-driven-extraction.ts +0 -332
  482. package/examples/core-concepts/session-management.ts +0 -494
  483. package/examples/integrations/database-integration.ts +0 -631
  484. package/examples/integrations/healthcare-integration.ts +0 -595
  485. package/examples/integrations/search-integration.ts +0 -530
  486. package/examples/integrations/server-session-management.ts +0 -307
  487. package/examples/persistence/custom-adapter.ts +0 -526
  488. package/examples/persistence/database-persistence.ts +0 -583
  489. package/examples/persistence/memory-sessions.ts +0 -495
  490. package/examples/persistence/prisma-schema.example.prisma +0 -74
  491. package/examples/persistence/redis-persistence.ts +0 -488
  492. package/examples/tools/basic-tools.ts +0 -765
  493. package/examples/tools/data-enrichment-tools.ts +0 -593
  494. package/examples/tools/enhanced-tool-metadata.ts +0 -268
  495. package/examples/tools/streaming-tool-execution.ts +0 -283
  496. package/src/core/BatchExecutor.ts +0 -1187
  497. package/src/core/BatchPromptBuilder.ts +0 -299
  498. package/src/core/Route.ts +0 -678
  499. package/src/types/route.ts +0 -392
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Level-1 factory for constructing an Agent from a single options object.
3
+ *
4
+ * `createAgent` is syntactic sugar over `new Agent(options)` and is the
5
+ * recommended entry point in docs and examples. Generic inference flows
6
+ * from `schema` through `flows[].steps[].collect` identically to `new Agent`.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const agent = createAgent({
11
+ * name: 'BookingBot',
12
+ * provider: new GeminiProvider({ apiKey }),
13
+ * schema: { type: 'object', properties: { name: { type: 'string' }, email: { type: 'string' } } },
14
+ * flows: [{ title: 'Onboarding', steps: [{ collect: ['name', 'email'] }] }],
15
+ * });
16
+ * ```
17
+ *
18
+ * **Validates: Requirements 14.1–14.7**
19
+ */
20
+
21
+ import { Agent } from "./Agent";
22
+ import type { AgentOptions } from "../types";
23
+
24
+ /**
25
+ * Create an Agent from a single options object.
26
+ *
27
+ * This is the recommended entry point for constructing agents in v2.
28
+ * Accepts the same options as `new Agent(options)` — `schema`, `provider`,
29
+ * `instructions`, `flows`, and everything else `AgentOptions` carries.
30
+ *
31
+ * Generic inference flows from `schema` through `flows[].steps[].collect`.
32
+ * Invalid `collect` references throw `FlowConfigurationError` at construction time.
33
+ *
34
+ * Post-construction flow registration is still available via `agent.createFlow(...)`.
35
+ */
36
+ export function createAgent<TContext = unknown, TData = unknown>(
37
+ options: AgentOptions<TContext, TData>
38
+ ): Agent<TContext, TData> {
39
+ return new Agent<TContext, TData>(options);
40
+ }
@@ -0,0 +1,219 @@
1
+ /**
2
+ * `flow` namespace — type guards, merge, and validation helpers for Directives.
3
+ *
4
+ * No builder constructors live here (no `flow.goTo(...)`, `flow.complete(...)` etc.).
5
+ * Directives are plain object literals; this namespace provides runtime utilities only.
6
+ */
7
+
8
+ import type { Directive } from "../types/flow";
9
+ import { FlowConfigurationError } from "./Step";
10
+
11
+ // ─── Position field metadata ─────────────────────────────────────────────────
12
+
13
+ /** Position fields in precedence order (highest first). */
14
+ const POSITION_FIELDS = ["abort", "complete", "goTo", "goToStep", "reset"] as const;
15
+ type PositionField = (typeof POSITION_FIELDS)[number];
16
+
17
+ /** Precedence map: lower number = higher priority. */
18
+ const POSITION_PRECEDENCE: Record<PositionField, number> = {
19
+ abort: 0,
20
+ complete: 1,
21
+ goTo: 2,
22
+ goToStep: 2,
23
+ reset: 3,
24
+ };
25
+
26
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
27
+
28
+ function getSetPositionFields(d: Directive): PositionField[] {
29
+ return POSITION_FIELDS.filter((f) => d[f] !== undefined && d[f] !== null);
30
+ }
31
+
32
+ /**
33
+ * Determines whether `candidate` beats `current` by precedence.
34
+ * Lower precedence number wins. On tie, candidate wins (last-emission-wins).
35
+ */
36
+ function beatsCurrent(
37
+ candidate: PositionField,
38
+ current: PositionField | null
39
+ ): boolean {
40
+ if (current === null) return true;
41
+ return POSITION_PRECEDENCE[candidate] <= POSITION_PRECEDENCE[current];
42
+ }
43
+
44
+ // ─── Public API ──────────────────────────────────────────────────────────────
45
+
46
+ /**
47
+ * Type guard: is `x` a Directive (or any subtype like PreDirective)?
48
+ *
49
+ * A value is considered a Directive if it is a non-null object. The Directive
50
+ * interface has all-optional fields, so any plain object qualifies structurally.
51
+ * This guard filters out primitives, null, undefined, arrays, and functions.
52
+ */
53
+ function isDirective(x: unknown): x is Directive {
54
+ return (
55
+ x !== null &&
56
+ x !== undefined &&
57
+ typeof x === "object" &&
58
+ !Array.isArray(x)
59
+ );
60
+ }
61
+
62
+ /**
63
+ * Merge two directives by Algorithm 4's rules:
64
+ * - Position fields: precedence (abort > complete > goTo/goToStep > reset);
65
+ * ties broken by emission order (b wins over a — last wins).
66
+ * - reply: last-wins (b.reply overrides a.reply if set).
67
+ * - dataUpdate / contextUpdate: shallow-merge (b overrides a on key collision).
68
+ * - appendPrompt / injectTools (PreDirective fields): concatenate then dedupe.
69
+ * - halt: logical-OR.
70
+ */
71
+ function merge<T extends Directive>(a: T, b: T): T {
72
+ const result = {} as Record<string, unknown>;
73
+
74
+ // ── Position field: winner-takes-all by precedence, b wins ties ──
75
+ const aPos = getSetPositionFields(a as Directive);
76
+ const bPos = getSetPositionFields(b as Directive);
77
+
78
+ // Pick the highest-priority position field across both directives.
79
+ // b's fields are evaluated after a's, so b wins on same precedence (last-wins).
80
+ let winnerField: PositionField | null = null;
81
+ let winnerSource: Directive | null = null;
82
+
83
+ for (const field of aPos) {
84
+ if (beatsCurrent(field, winnerField)) {
85
+ winnerField = field;
86
+ winnerSource = a as Directive;
87
+ }
88
+ }
89
+ for (const field of bPos) {
90
+ if (beatsCurrent(field, winnerField)) {
91
+ winnerField = field;
92
+ winnerSource = b as Directive;
93
+ }
94
+ }
95
+
96
+ if (winnerField !== null && winnerSource !== null) {
97
+ result[winnerField] = (winnerSource as Record<string, unknown>)[winnerField];
98
+ }
99
+
100
+ // ── reply: last-wins ──
101
+ if ((b as Directive).reply !== undefined) {
102
+ result.reply = (b as Directive).reply;
103
+ } else if ((a as Directive).reply !== undefined) {
104
+ result.reply = (a as Directive).reply;
105
+ }
106
+
107
+ // ── dataUpdate: shallow merge ──
108
+ const aData = (a as Record<string, unknown>).dataUpdate as
109
+ | Record<string, unknown>
110
+ | undefined;
111
+ const bData = (b as Record<string, unknown>).dataUpdate as
112
+ | Record<string, unknown>
113
+ | undefined;
114
+ if (aData || bData) {
115
+ result.dataUpdate = { ...aData, ...bData };
116
+ }
117
+
118
+ // ── contextUpdate: shallow merge ──
119
+ const aCtx = (a as Record<string, unknown>).contextUpdate as
120
+ | Record<string, unknown>
121
+ | undefined;
122
+ const bCtx = (b as Record<string, unknown>).contextUpdate as
123
+ | Record<string, unknown>
124
+ | undefined;
125
+ if (aCtx || bCtx) {
126
+ result.contextUpdate = { ...aCtx, ...bCtx };
127
+ }
128
+
129
+ // ── appendPrompt (PreDirective): concatenate ──
130
+ const aPrompt = (a as Record<string, unknown>).appendPrompt as
131
+ | string[]
132
+ | undefined;
133
+ const bPrompt = (b as Record<string, unknown>).appendPrompt as
134
+ | string[]
135
+ | undefined;
136
+ if (aPrompt || bPrompt) {
137
+ result.appendPrompt = [...(aPrompt ?? []), ...(bPrompt ?? [])];
138
+ }
139
+
140
+ // ── injectTools (PreDirective): concatenate then dedupe by id (last wins) ──
141
+ const aTools = (a as Record<string, unknown>).injectTools as
142
+ | Array<{ id: string;[k: string]: unknown }>
143
+ | undefined;
144
+ const bTools = (b as Record<string, unknown>).injectTools as
145
+ | Array<{ id: string;[k: string]: unknown }>
146
+ | undefined;
147
+ if (aTools || bTools) {
148
+ const combined = [...(aTools ?? []), ...(bTools ?? [])];
149
+ // Dedupe by id — last definition wins
150
+ const seen = new Map<string, (typeof combined)[number]>();
151
+ for (const tool of combined) {
152
+ seen.set(tool.id, tool);
153
+ }
154
+ result.injectTools = Array.from(seen.values());
155
+ }
156
+
157
+ // ── halt (PreDirective): logical OR ──
158
+ const aHalt = (a as Record<string, unknown>).halt as boolean | undefined;
159
+ const bHalt = (b as Record<string, unknown>).halt as boolean | undefined;
160
+ if (aHalt || bHalt) {
161
+ result.halt = true;
162
+ }
163
+
164
+ return result as T;
165
+ }
166
+
167
+ /**
168
+ * Runtime validator. Throws FlowConfigurationError for invalid combinations:
169
+ * - Multiple position fields set.
170
+ * - `goTo` set as empty object `{}` (no flow target).
171
+ * - `reply` co-existing with `abort` (abort ends the conversation; a reply is nonsensical).
172
+ */
173
+ function validate(d: Directive): void {
174
+ // ── Multiple position fields ──
175
+ const setFields = getSetPositionFields(d);
176
+ if (setFields.length > 1) {
177
+ throw new FlowConfigurationError(
178
+ `[FlowConfigurationError] Invalid directive: multiple position fields set (${setFields.join(", ")}). ` +
179
+ `A directive may have at most one position field. Remove the extras.`
180
+ );
181
+ }
182
+
183
+ // ── Empty goTo object ──
184
+ if (d.goTo !== undefined && d.goTo !== null) {
185
+ if (typeof d.goTo === "object") {
186
+ const goToObj = d.goTo as { flow?: string; step?: string };
187
+ if (!goToObj.flow && !goToObj.step) {
188
+ throw new FlowConfigurationError(
189
+ `[FlowConfigurationError] Invalid directive: goTo is set as an empty object. ` +
190
+ `goTo requires a flow id or title. Provide { flow: "<id>" } or use the string shorthand.`
191
+ );
192
+ }
193
+ }
194
+ }
195
+
196
+ // ── reply co-existing with abort ──
197
+ if (d.reply !== undefined && d.abort !== undefined) {
198
+ throw new FlowConfigurationError(
199
+ `[FlowConfigurationError] Invalid directive: reply cannot co-exist with abort. ` +
200
+ `An aborted conversation cannot deliver a reply. Remove one of the fields.`
201
+ );
202
+ }
203
+ }
204
+
205
+ /**
206
+ * The `flow` namespace object. Exported as a single const for ergonomic usage:
207
+ *
208
+ * ```ts
209
+ * import { flow } from '@falai/agent';
210
+ * if (flow.isDirective(x)) { ... }
211
+ * const merged = flow.merge(a, b);
212
+ * flow.validate(d);
213
+ * ```
214
+ */
215
+ export const flow = {
216
+ isDirective,
217
+ merge,
218
+ validate,
219
+ } as const;
package/src/index.ts CHANGED
@@ -1,30 +1,26 @@
1
1
  /**
2
2
  * @falai/agent - Standalone AI Agent framework
3
3
  *
4
- * A strongly-typed, modular agent framework with route DSL and AI provider strategy
4
+ * A strongly-typed, modular agent framework with flow DSL and AI provider strategy
5
5
  */
6
6
 
7
7
  // Core
8
8
  export { Agent } from "./core/Agent";
9
- export { Route } from "./core/Route";
10
- export { Step } from "./core/Step";
11
- export { ResponseModal } from "./core/ResponseModal";
12
- export type {
13
- ResponseModalOptions,
14
- RespondParams,
15
- StreamOptions,
16
- GenerateOptions
17
- } from "./core/ResponseModal";
9
+ export { createAgent } from "./core/createAgent";
10
+ export { Flow } from "./core/Flow";
11
+ export { Step, FlowConfigurationError } from "./core/Step";
12
+ export { flow } from "./core/flow-namespace";
13
+ export { DirectiveChainTracker } from "./core/DirectiveChainTracker";
14
+ export type { DirectiveChainEntry } from "./core/DirectiveChainTracker";
15
+
18
16
  export { adaptEvent, convertHistoryToEvents } from "./core/Events";
19
17
  export { PersistenceManager } from "./core/PersistenceManager";
20
18
  export { SessionManager } from "./core/SessionManager";
21
19
  export { ToolManager, ToolCreationError, ToolExecutionError } from "./core/ToolManager";
22
- export { BatchExecutor, needsInput, type NeedsInputStep, type DetermineBatchParams } from "./core/BatchExecutor";
23
- export { BatchPromptBuilder, type BuildBatchPromptParams, type BatchPromptResult } from "./core/BatchPromptBuilder";
24
- export { CompactionEngine } from "./core/CompactionEngine";
20
+ export { NotImplementedError } from "./types/errors";
21
+
25
22
  export { StreamingToolExecutor } from "./core/StreamingToolExecutor";
26
- export { PromptSectionCache } from "./core/PromptSectionCache";
27
- export type { PromptSectionType, PromptCacheConfig, SectionCompute } from "./core/PromptSectionCache";
23
+
28
24
 
29
25
  // Providers
30
26
  export { GeminiProvider } from "./providers/GeminiProvider";
@@ -71,11 +67,8 @@ export type {
71
67
  OpenSearchAdapterOptions,
72
68
  } from "./adapters/OpenSearchAdapter";
73
69
 
74
- // Constants
75
- export { END_ROUTE, END_ROUTE_ID } from "./constants";
76
-
77
70
  // Utils
78
- export { generateRouteId, generateStepId, generateToolId } from "./utils/id";
71
+ export { generateFlowId, generateStepId, generateToolId } from "./utils/id";
79
72
  export { formatKnowledgeBase } from "./utils/template";
80
73
  export {
81
74
  ConditionEvaluator,
@@ -101,30 +94,40 @@ export type {
101
94
  AgentCompactionConfig,
102
95
  AgentResponse,
103
96
  Term,
104
- Guideline,
105
- GuidelineMatch,
97
+ Instruction,
98
+ ScopedInstructions,
99
+ AppliedInstruction,
106
100
  ContextLifecycleHooks,
107
101
  ContextProvider,
102
+ HookContext,
103
+ ExitReason,
108
104
  Event,
109
105
  EmittedEvent,
110
106
  MessageEventData,
111
107
  ToolEventData,
112
108
  StatusEventData,
113
109
  Participant,
114
- RouteRef,
110
+ FlowRef,
115
111
  StepRef,
116
- RouteOptions,
112
+ FlowOptions,
117
113
  StepOptions,
118
- RouteTransitionConfig,
119
- RouteCompletionHandler,
114
+ FlowLifecycleHooks,
115
+ StepLifecycleHooks,
120
116
  SessionState,
121
- PendingTransition,
117
+ SignalsState,
118
+ SignalTriggerState,
119
+ Signal,
120
+ SignalContext,
121
+ SignalDirective,
122
+ SignalPredicate,
123
+ SignalPredicateContext,
124
+ SignalFiring,
125
+ SignalSchema,
122
126
  ToolContext,
123
127
  ToolResult,
124
128
  ToolHandler,
125
129
  Tool,
126
130
 
127
- EnhancedTool,
128
131
  ToolValidationResult,
129
132
  ToolPermissionResult,
130
133
  ToolCallRequest,
@@ -161,20 +164,23 @@ export type {
161
164
  PersistenceAdapter,
162
165
  Template,
163
166
  TemplateContext,
164
- ConditionTemplate,
165
167
  ConditionEvaluationResult,
166
168
  UserHistoryItem,
167
169
  AssistantHistoryItem,
168
170
  ToolHistoryItem,
169
171
  SystemHistoryItem,
170
- // Multi-step execution types
172
+ // Flow execution types
171
173
  StoppedReason,
172
- BatchResult,
173
- BatchExecutionResult,
174
- BatchExecutionEvent,
175
- BatchExecutionEventType,
176
- BatchExecutionTiming,
177
- BatchExecutionError,
174
+ PrepareResult,
175
+ Directive,
176
+ PreDirective,
177
+ BranchEntry,
178
+ BranchMap,
179
+ BranchPredicate,
180
+ BranchPredicateContext,
181
+ ConditionPredicate,
182
+ ConditionIf,
183
+ ConditionWhen,
178
184
  } from "./types";
179
185
  export { CompositionMode, EventKind, MessageRole } from "./types";
180
- export { createSession, createSessionId, enterRoute, enterStep, mergeCollected } from "./utils";
186
+ export { createSession, createSessionId, enterFlow, enterStep, completeCurrentFlow, isFlowCompletedThisSession, mergeCollected } from "./utils";