@falai/agent 1.2.8 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. package/README.md +40 -886
  2. package/dist/adapters/MemoryAdapter.js +2 -2
  3. package/dist/adapters/MemoryAdapter.js.map +1 -1
  4. package/dist/adapters/MongoAdapter.js +2 -2
  5. package/dist/adapters/MongoAdapter.js.map +1 -1
  6. package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
  7. package/dist/adapters/OpenSearchAdapter.js +9 -7
  8. package/dist/adapters/OpenSearchAdapter.js.map +1 -1
  9. package/dist/adapters/PostgreSQLAdapter.d.ts +14 -0
  10. package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  11. package/dist/adapters/PostgreSQLAdapter.js +25 -9
  12. package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
  13. package/dist/adapters/PrismaAdapter.js +5 -5
  14. package/dist/adapters/PrismaAdapter.js.map +1 -1
  15. package/dist/adapters/RedisAdapter.js +2 -2
  16. package/dist/adapters/RedisAdapter.js.map +1 -1
  17. package/dist/adapters/SQLiteAdapter.d.ts +17 -0
  18. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
  19. package/dist/adapters/SQLiteAdapter.js +30 -11
  20. package/dist/adapters/SQLiteAdapter.js.map +1 -1
  21. package/dist/cjs/adapters/MemoryAdapter.js +2 -2
  22. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  23. package/dist/cjs/adapters/MongoAdapter.js +2 -2
  24. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  25. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
  26. package/dist/cjs/adapters/OpenSearchAdapter.js +9 -7
  27. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  28. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +14 -0
  29. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  30. package/dist/cjs/adapters/PostgreSQLAdapter.js +25 -9
  31. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  32. package/dist/cjs/adapters/PrismaAdapter.js +5 -5
  33. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  34. package/dist/cjs/adapters/RedisAdapter.js +2 -2
  35. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  36. package/dist/cjs/adapters/SQLiteAdapter.d.ts +17 -0
  37. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  38. package/dist/cjs/adapters/SQLiteAdapter.js +30 -11
  39. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  40. package/dist/cjs/constants/index.d.ts +0 -9
  41. package/dist/cjs/constants/index.d.ts.map +1 -1
  42. package/dist/cjs/constants/index.js +2 -11
  43. package/dist/cjs/constants/index.js.map +1 -1
  44. package/dist/cjs/core/Agent.d.ts +119 -153
  45. package/dist/cjs/core/Agent.d.ts.map +1 -1
  46. package/dist/cjs/core/Agent.js +471 -324
  47. package/dist/cjs/core/Agent.js.map +1 -1
  48. package/dist/cjs/core/AutoChainExecutor.d.ts +107 -0
  49. package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -0
  50. package/dist/cjs/core/AutoChainExecutor.js +297 -0
  51. package/dist/cjs/core/AutoChainExecutor.js.map +1 -0
  52. package/dist/cjs/core/BranchEvaluator.d.ts +54 -0
  53. package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -0
  54. package/dist/cjs/core/BranchEvaluator.js +130 -0
  55. package/dist/cjs/core/BranchEvaluator.js.map +1 -0
  56. package/dist/cjs/core/DirectiveBus.d.ts +88 -0
  57. package/dist/cjs/core/DirectiveBus.d.ts.map +1 -0
  58. package/dist/cjs/core/DirectiveBus.js +196 -0
  59. package/dist/cjs/core/DirectiveBus.js.map +1 -0
  60. package/dist/cjs/core/DirectiveChainTracker.d.ts +49 -0
  61. package/dist/cjs/core/DirectiveChainTracker.d.ts.map +1 -0
  62. package/dist/cjs/core/DirectiveChainTracker.js +121 -0
  63. package/dist/cjs/core/DirectiveChainTracker.js.map +1 -0
  64. package/dist/cjs/core/Flow.d.ts +186 -0
  65. package/dist/cjs/core/Flow.d.ts.map +1 -0
  66. package/dist/cjs/core/Flow.js +550 -0
  67. package/dist/cjs/core/Flow.js.map +1 -0
  68. package/dist/cjs/core/FlowRouter.d.ts +182 -0
  69. package/dist/cjs/core/FlowRouter.d.ts.map +1 -0
  70. package/dist/cjs/core/{RoutingEngine.js → FlowRouter.js} +323 -306
  71. package/dist/cjs/core/FlowRouter.js.map +1 -0
  72. package/dist/cjs/core/PersistenceManager.d.ts +2 -2
  73. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  74. package/dist/cjs/core/PersistenceManager.js +7 -7
  75. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  76. package/dist/cjs/core/PromptComposer.d.ts +21 -8
  77. package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
  78. package/dist/cjs/core/PromptComposer.js +182 -105
  79. package/dist/cjs/core/PromptComposer.js.map +1 -1
  80. package/dist/cjs/core/PromptSectionCache.d.ts +1 -1
  81. package/dist/cjs/core/PromptSectionCache.js +1 -1
  82. package/dist/cjs/core/ResponseEngine.d.ts +18 -8
  83. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  84. package/dist/cjs/core/ResponseEngine.js +38 -36
  85. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  86. package/dist/cjs/core/ResponseModal.d.ts +73 -56
  87. package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
  88. package/dist/cjs/core/ResponseModal.js +1191 -1014
  89. package/dist/cjs/core/ResponseModal.js.map +1 -1
  90. package/dist/cjs/core/ResponsePipeline.d.ts +124 -26
  91. package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
  92. package/dist/cjs/core/ResponsePipeline.js +509 -136
  93. package/dist/cjs/core/ResponsePipeline.js.map +1 -1
  94. package/dist/cjs/core/SignalEvaluator.d.ts +86 -0
  95. package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -0
  96. package/dist/cjs/core/SignalEvaluator.js +333 -0
  97. package/dist/cjs/core/SignalEvaluator.js.map +1 -0
  98. package/dist/cjs/core/SignalProcessor.d.ts +152 -0
  99. package/dist/cjs/core/SignalProcessor.d.ts.map +1 -0
  100. package/dist/cjs/core/SignalProcessor.js +562 -0
  101. package/dist/cjs/core/SignalProcessor.js.map +1 -0
  102. package/dist/cjs/core/Step.d.ts +43 -32
  103. package/dist/cjs/core/Step.d.ts.map +1 -1
  104. package/dist/cjs/core/Step.js +221 -126
  105. package/dist/cjs/core/Step.js.map +1 -1
  106. package/dist/cjs/core/StreamingToolExecutor.d.ts +2 -2
  107. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -1
  108. package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
  109. package/dist/cjs/core/ToolManager.d.ts +44 -13
  110. package/dist/cjs/core/ToolManager.d.ts.map +1 -1
  111. package/dist/cjs/core/ToolManager.js +174 -91
  112. package/dist/cjs/core/ToolManager.js.map +1 -1
  113. package/dist/cjs/core/createAgent.d.ts +35 -0
  114. package/dist/cjs/core/createAgent.d.ts.map +1 -0
  115. package/dist/cjs/core/createAgent.js +39 -0
  116. package/dist/cjs/core/createAgent.js.map +1 -0
  117. package/dist/cjs/core/flow-namespace.d.ts +49 -0
  118. package/dist/cjs/core/flow-namespace.d.ts.map +1 -0
  119. package/dist/cjs/core/flow-namespace.js +171 -0
  120. package/dist/cjs/core/flow-namespace.js.map +1 -0
  121. package/dist/cjs/index.d.ts +11 -14
  122. package/dist/cjs/index.d.ts.map +1 -1
  123. package/dist/cjs/index.js +18 -22
  124. package/dist/cjs/index.js.map +1 -1
  125. package/dist/cjs/types/agent.d.ts +183 -54
  126. package/dist/cjs/types/agent.d.ts.map +1 -1
  127. package/dist/cjs/types/agent.js +0 -6
  128. package/dist/cjs/types/agent.js.map +1 -1
  129. package/dist/cjs/types/ai.d.ts +3 -3
  130. package/dist/cjs/types/ai.d.ts.map +1 -1
  131. package/dist/cjs/types/errors.d.ts +15 -0
  132. package/dist/cjs/types/errors.d.ts.map +1 -0
  133. package/dist/cjs/types/errors.js +22 -0
  134. package/dist/cjs/types/errors.js.map +1 -0
  135. package/dist/cjs/types/flow.d.ts +513 -0
  136. package/dist/cjs/types/flow.d.ts.map +1 -0
  137. package/dist/cjs/types/{route.js → flow.js} +2 -2
  138. package/dist/cjs/types/flow.js.map +1 -0
  139. package/dist/cjs/types/index.d.ts +7 -6
  140. package/dist/cjs/types/index.d.ts.map +1 -1
  141. package/dist/cjs/types/index.js +6 -2
  142. package/dist/cjs/types/index.js.map +1 -1
  143. package/dist/cjs/types/persistence.d.ts +11 -7
  144. package/dist/cjs/types/persistence.d.ts.map +1 -1
  145. package/dist/cjs/types/routing.d.ts +1 -1
  146. package/dist/cjs/types/routing.d.ts.map +1 -1
  147. package/dist/cjs/types/session.d.ts +24 -23
  148. package/dist/cjs/types/session.d.ts.map +1 -1
  149. package/dist/cjs/types/signals.d.ts +248 -0
  150. package/dist/cjs/types/signals.d.ts.map +1 -0
  151. package/dist/cjs/types/signals.js +11 -0
  152. package/dist/cjs/types/signals.js.map +1 -0
  153. package/dist/cjs/types/template.d.ts +2 -8
  154. package/dist/cjs/types/template.d.ts.map +1 -1
  155. package/dist/cjs/types/tool.d.ts +36 -29
  156. package/dist/cjs/types/tool.d.ts.map +1 -1
  157. package/dist/cjs/types/tool.js +1 -1
  158. package/dist/cjs/types/tool.js.map +1 -1
  159. package/dist/cjs/utils/condition.d.ts +7 -1
  160. package/dist/cjs/utils/condition.d.ts.map +1 -1
  161. package/dist/cjs/utils/condition.js.map +1 -1
  162. package/dist/cjs/utils/id.d.ts +13 -5
  163. package/dist/cjs/utils/id.d.ts.map +1 -1
  164. package/dist/cjs/utils/id.js +24 -10
  165. package/dist/cjs/utils/id.js.map +1 -1
  166. package/dist/cjs/utils/index.d.ts +2 -2
  167. package/dist/cjs/utils/index.d.ts.map +1 -1
  168. package/dist/cjs/utils/index.js +7 -3
  169. package/dist/cjs/utils/index.js.map +1 -1
  170. package/dist/cjs/utils/session.d.ts +44 -5
  171. package/dist/cjs/utils/session.d.ts.map +1 -1
  172. package/dist/cjs/utils/session.js +197 -38
  173. package/dist/cjs/utils/session.js.map +1 -1
  174. package/dist/constants/index.d.ts +0 -9
  175. package/dist/constants/index.d.ts.map +1 -1
  176. package/dist/constants/index.js +3 -9
  177. package/dist/constants/index.js.map +1 -1
  178. package/dist/core/Agent.d.ts +119 -153
  179. package/dist/core/Agent.d.ts.map +1 -1
  180. package/dist/core/Agent.js +472 -325
  181. package/dist/core/Agent.js.map +1 -1
  182. package/dist/core/AutoChainExecutor.d.ts +107 -0
  183. package/dist/core/AutoChainExecutor.d.ts.map +1 -0
  184. package/dist/core/AutoChainExecutor.js +293 -0
  185. package/dist/core/AutoChainExecutor.js.map +1 -0
  186. package/dist/core/BranchEvaluator.d.ts +54 -0
  187. package/dist/core/BranchEvaluator.d.ts.map +1 -0
  188. package/dist/core/BranchEvaluator.js +126 -0
  189. package/dist/core/BranchEvaluator.js.map +1 -0
  190. package/dist/core/DirectiveBus.d.ts +88 -0
  191. package/dist/core/DirectiveBus.d.ts.map +1 -0
  192. package/dist/core/DirectiveBus.js +192 -0
  193. package/dist/core/DirectiveBus.js.map +1 -0
  194. package/dist/core/DirectiveChainTracker.d.ts +49 -0
  195. package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
  196. package/dist/core/DirectiveChainTracker.js +117 -0
  197. package/dist/core/DirectiveChainTracker.js.map +1 -0
  198. package/dist/core/Flow.d.ts +186 -0
  199. package/dist/core/Flow.d.ts.map +1 -0
  200. package/dist/core/Flow.js +546 -0
  201. package/dist/core/Flow.js.map +1 -0
  202. package/dist/core/FlowRouter.d.ts +182 -0
  203. package/dist/core/FlowRouter.d.ts.map +1 -0
  204. package/dist/core/{RoutingEngine.js → FlowRouter.js} +322 -305
  205. package/dist/core/FlowRouter.js.map +1 -0
  206. package/dist/core/PersistenceManager.d.ts +2 -2
  207. package/dist/core/PersistenceManager.d.ts.map +1 -1
  208. package/dist/core/PersistenceManager.js +7 -7
  209. package/dist/core/PersistenceManager.js.map +1 -1
  210. package/dist/core/PromptComposer.d.ts +21 -8
  211. package/dist/core/PromptComposer.d.ts.map +1 -1
  212. package/dist/core/PromptComposer.js +183 -106
  213. package/dist/core/PromptComposer.js.map +1 -1
  214. package/dist/core/PromptSectionCache.d.ts +1 -1
  215. package/dist/core/PromptSectionCache.js +1 -1
  216. package/dist/core/ResponseEngine.d.ts +18 -8
  217. package/dist/core/ResponseEngine.d.ts.map +1 -1
  218. package/dist/core/ResponseEngine.js +38 -36
  219. package/dist/core/ResponseEngine.js.map +1 -1
  220. package/dist/core/ResponseModal.d.ts +73 -56
  221. package/dist/core/ResponseModal.d.ts.map +1 -1
  222. package/dist/core/ResponseModal.js +1193 -1016
  223. package/dist/core/ResponseModal.js.map +1 -1
  224. package/dist/core/ResponsePipeline.d.ts +124 -26
  225. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  226. package/dist/core/ResponsePipeline.js +509 -137
  227. package/dist/core/ResponsePipeline.js.map +1 -1
  228. package/dist/core/SignalEvaluator.d.ts +86 -0
  229. package/dist/core/SignalEvaluator.d.ts.map +1 -0
  230. package/dist/core/SignalEvaluator.js +326 -0
  231. package/dist/core/SignalEvaluator.js.map +1 -0
  232. package/dist/core/SignalProcessor.d.ts +152 -0
  233. package/dist/core/SignalProcessor.d.ts.map +1 -0
  234. package/dist/core/SignalProcessor.js +555 -0
  235. package/dist/core/SignalProcessor.js.map +1 -0
  236. package/dist/core/Step.d.ts +43 -32
  237. package/dist/core/Step.d.ts.map +1 -1
  238. package/dist/core/Step.js +220 -126
  239. package/dist/core/Step.js.map +1 -1
  240. package/dist/core/StreamingToolExecutor.d.ts +2 -2
  241. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  242. package/dist/core/StreamingToolExecutor.js.map +1 -1
  243. package/dist/core/ToolManager.d.ts +44 -13
  244. package/dist/core/ToolManager.d.ts.map +1 -1
  245. package/dist/core/ToolManager.js +174 -91
  246. package/dist/core/ToolManager.js.map +1 -1
  247. package/dist/core/createAgent.d.ts +35 -0
  248. package/dist/core/createAgent.d.ts.map +1 -0
  249. package/dist/core/createAgent.js +36 -0
  250. package/dist/core/createAgent.js.map +1 -0
  251. package/dist/core/flow-namespace.d.ts +49 -0
  252. package/dist/core/flow-namespace.d.ts.map +1 -0
  253. package/dist/core/flow-namespace.js +168 -0
  254. package/dist/core/flow-namespace.js.map +1 -0
  255. package/dist/index.d.ts +11 -14
  256. package/dist/index.d.ts.map +1 -1
  257. package/dist/index.js +9 -12
  258. package/dist/index.js.map +1 -1
  259. package/dist/types/agent.d.ts +183 -54
  260. package/dist/types/agent.d.ts.map +1 -1
  261. package/dist/types/agent.js +0 -6
  262. package/dist/types/agent.js.map +1 -1
  263. package/dist/types/ai.d.ts +3 -3
  264. package/dist/types/ai.d.ts.map +1 -1
  265. package/dist/types/errors.d.ts +15 -0
  266. package/dist/types/errors.d.ts.map +1 -0
  267. package/dist/types/errors.js +18 -0
  268. package/dist/types/errors.js.map +1 -0
  269. package/dist/types/flow.d.ts +513 -0
  270. package/dist/types/flow.d.ts.map +1 -0
  271. package/dist/types/flow.js +5 -0
  272. package/dist/types/flow.js.map +1 -0
  273. package/dist/types/index.d.ts +7 -6
  274. package/dist/types/index.d.ts.map +1 -1
  275. package/dist/types/index.js +4 -1
  276. package/dist/types/index.js.map +1 -1
  277. package/dist/types/persistence.d.ts +11 -7
  278. package/dist/types/persistence.d.ts.map +1 -1
  279. package/dist/types/routing.d.ts +1 -1
  280. package/dist/types/routing.d.ts.map +1 -1
  281. package/dist/types/session.d.ts +24 -23
  282. package/dist/types/session.d.ts.map +1 -1
  283. package/dist/types/signals.d.ts +248 -0
  284. package/dist/types/signals.d.ts.map +1 -0
  285. package/dist/types/signals.js +10 -0
  286. package/dist/types/signals.js.map +1 -0
  287. package/dist/types/template.d.ts +2 -8
  288. package/dist/types/template.d.ts.map +1 -1
  289. package/dist/types/tool.d.ts +36 -29
  290. package/dist/types/tool.d.ts.map +1 -1
  291. package/dist/types/tool.js +1 -1
  292. package/dist/types/tool.js.map +1 -1
  293. package/dist/utils/condition.d.ts +7 -1
  294. package/dist/utils/condition.d.ts.map +1 -1
  295. package/dist/utils/condition.js.map +1 -1
  296. package/dist/utils/id.d.ts +13 -5
  297. package/dist/utils/id.d.ts.map +1 -1
  298. package/dist/utils/id.js +22 -9
  299. package/dist/utils/id.js.map +1 -1
  300. package/dist/utils/index.d.ts +2 -2
  301. package/dist/utils/index.d.ts.map +1 -1
  302. package/dist/utils/index.js +2 -2
  303. package/dist/utils/index.js.map +1 -1
  304. package/dist/utils/session.d.ts +44 -5
  305. package/dist/utils/session.d.ts.map +1 -1
  306. package/dist/utils/session.js +193 -37
  307. package/dist/utils/session.js.map +1 -1
  308. package/docs/README.md +15 -202
  309. package/docs/concepts/architecture.md +281 -0
  310. package/docs/concepts/directives.md +400 -0
  311. package/docs/concepts/pipeline.md +399 -0
  312. package/docs/guides/branching.md +263 -0
  313. package/docs/guides/compaction.md +163 -0
  314. package/docs/guides/conditions.md +167 -0
  315. package/docs/guides/error-handling.md +176 -0
  316. package/docs/guides/flow-control.md +409 -0
  317. package/docs/guides/instructions.md +210 -0
  318. package/docs/guides/persistence.md +182 -0
  319. package/docs/guides/streaming.md +137 -0
  320. package/docs/migration/README.md +15 -0
  321. package/docs/migration/route-to-flow.md +560 -0
  322. package/docs/migration/v1-to-v2.md +909 -0
  323. package/docs/reference/adapters.md +481 -0
  324. package/docs/reference/branches.md +241 -0
  325. package/docs/reference/create-agent.md +186 -0
  326. package/docs/reference/directive.md +243 -0
  327. package/docs/reference/errors.md +122 -0
  328. package/docs/reference/flow.md +238 -0
  329. package/docs/reference/instruction.md +177 -0
  330. package/docs/reference/pre-directive.md +131 -0
  331. package/docs/reference/providers.md +227 -0
  332. package/docs/reference/signals.md +356 -0
  333. package/docs/reference/step.md +339 -0
  334. package/docs/reference/tool.md +269 -0
  335. package/docs/start/01-install.md +81 -0
  336. package/docs/start/02-first-agent.md +196 -0
  337. package/docs/start/03-collect-data.md +222 -0
  338. package/docs/start/04-add-tools.md +276 -0
  339. package/docs/start/05-go-to-production.md +216 -0
  340. package/examples/01-quickstart.ts +20 -0
  341. package/examples/02-data-extraction.ts +90 -0
  342. package/examples/03-tools.ts +136 -0
  343. package/examples/04-instructions.ts +100 -0
  344. package/examples/05-branching.ts +140 -0
  345. package/examples/06-flow-control.ts +103 -0
  346. package/examples/07-streaming.ts +69 -0
  347. package/examples/08-persistence.ts +98 -0
  348. package/examples/09-signals.ts +144 -0
  349. package/examples/tsconfig.json +30 -0
  350. package/package.json +2 -1
  351. package/src/adapters/MemoryAdapter.ts +3 -3
  352. package/src/adapters/MongoAdapter.ts +3 -3
  353. package/src/adapters/OpenSearchAdapter.ts +10 -8
  354. package/src/adapters/PostgreSQLAdapter.ts +26 -10
  355. package/src/adapters/PrismaAdapter.ts +6 -6
  356. package/src/adapters/RedisAdapter.ts +3 -3
  357. package/src/adapters/SQLiteAdapter.ts +31 -12
  358. package/src/constants/index.ts +2 -10
  359. package/src/core/Agent.ts +585 -374
  360. package/src/core/AutoChainExecutor.ts +440 -0
  361. package/src/core/BranchEvaluator.ts +167 -0
  362. package/src/core/DirectiveBus.ts +248 -0
  363. package/src/core/DirectiveChainTracker.ts +144 -0
  364. package/src/core/Flow.ts +666 -0
  365. package/src/core/{RoutingEngine.ts → FlowRouter.ts} +385 -365
  366. package/src/core/PersistenceManager.ts +8 -8
  367. package/src/core/PromptComposer.ts +209 -140
  368. package/src/core/PromptSectionCache.ts +1 -1
  369. package/src/core/ResponseEngine.ts +61 -46
  370. package/src/core/ResponseModal.ts +1453 -1240
  371. package/src/core/ResponsePipeline.ts +655 -175
  372. package/src/core/SignalEvaluator.ts +420 -0
  373. package/src/core/SignalProcessor.ts +723 -0
  374. package/src/core/Step.ts +279 -176
  375. package/src/core/StreamingToolExecutor.ts +4 -4
  376. package/src/core/ToolManager.ts +200 -97
  377. package/src/core/createAgent.ts +40 -0
  378. package/src/core/flow-namespace.ts +219 -0
  379. package/src/index.ts +42 -36
  380. package/src/types/agent.ts +182 -53
  381. package/src/types/ai.ts +3 -3
  382. package/src/types/errors.ts +18 -0
  383. package/src/types/flow.ts +590 -0
  384. package/src/types/index.ts +43 -16
  385. package/src/types/persistence.ts +12 -8
  386. package/src/types/routing.ts +1 -1
  387. package/src/types/session.ts +26 -23
  388. package/src/types/signals.ts +321 -0
  389. package/src/types/template.ts +3 -11
  390. package/src/types/tool.ts +50 -42
  391. package/src/utils/condition.ts +13 -4
  392. package/src/utils/id.ts +27 -9
  393. package/src/utils/index.ts +6 -2
  394. package/src/utils/session.ts +238 -42
  395. package/dist/cjs/core/BatchExecutor.d.ts +0 -359
  396. package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
  397. package/dist/cjs/core/BatchExecutor.js +0 -861
  398. package/dist/cjs/core/BatchExecutor.js.map +0 -1
  399. package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
  400. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
  401. package/dist/cjs/core/BatchPromptBuilder.js +0 -223
  402. package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
  403. package/dist/cjs/core/Route.d.ts +0 -180
  404. package/dist/cjs/core/Route.d.ts.map +0 -1
  405. package/dist/cjs/core/Route.js +0 -542
  406. package/dist/cjs/core/Route.js.map +0 -1
  407. package/dist/cjs/core/RoutingEngine.d.ts +0 -185
  408. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  409. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  410. package/dist/cjs/types/route.d.ts +0 -336
  411. package/dist/cjs/types/route.d.ts.map +0 -1
  412. package/dist/cjs/types/route.js.map +0 -1
  413. package/dist/core/BatchExecutor.d.ts +0 -359
  414. package/dist/core/BatchExecutor.d.ts.map +0 -1
  415. package/dist/core/BatchExecutor.js +0 -856
  416. package/dist/core/BatchExecutor.js.map +0 -1
  417. package/dist/core/BatchPromptBuilder.d.ts +0 -89
  418. package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
  419. package/dist/core/BatchPromptBuilder.js +0 -219
  420. package/dist/core/BatchPromptBuilder.js.map +0 -1
  421. package/dist/core/Route.d.ts +0 -180
  422. package/dist/core/Route.d.ts.map +0 -1
  423. package/dist/core/Route.js +0 -538
  424. package/dist/core/Route.js.map +0 -1
  425. package/dist/core/RoutingEngine.d.ts +0 -185
  426. package/dist/core/RoutingEngine.d.ts.map +0 -1
  427. package/dist/core/RoutingEngine.js.map +0 -1
  428. package/dist/types/route.d.ts +0 -336
  429. package/dist/types/route.d.ts.map +0 -1
  430. package/dist/types/route.js +0 -5
  431. package/dist/types/route.js.map +0 -1
  432. package/docs/CONTRIBUTING.md +0 -521
  433. package/docs/api/README.md +0 -3299
  434. package/docs/api/overview.md +0 -1410
  435. package/docs/architecture/data-extraction-flow.md +0 -360
  436. package/docs/architecture/multi-step-execution.md +0 -277
  437. package/docs/core/agent/README.md +0 -938
  438. package/docs/core/agent/context-management.md +0 -796
  439. package/docs/core/agent/rules-and-prohibitions.md +0 -113
  440. package/docs/core/agent/session-management.md +0 -693
  441. package/docs/core/ai-integration/prompt-composition.md +0 -355
  442. package/docs/core/ai-integration/providers.md +0 -515
  443. package/docs/core/ai-integration/response-processing.md +0 -433
  444. package/docs/core/conversation-flows/data-collection.md +0 -772
  445. package/docs/core/conversation-flows/route-dsl.md +0 -509
  446. package/docs/core/conversation-flows/routes.md +0 -249
  447. package/docs/core/conversation-flows/step-transitions.md +0 -731
  448. package/docs/core/conversation-flows/steps.md +0 -268
  449. package/docs/core/error-handling.md +0 -830
  450. package/docs/core/persistence/adapters.md +0 -255
  451. package/docs/core/persistence/session-storage.md +0 -656
  452. package/docs/core/routing/intelligent-routing.md +0 -470
  453. package/docs/core/tools/enhanced-tool.md +0 -186
  454. package/docs/core/tools/streaming-execution.md +0 -161
  455. package/docs/core/tools/tool-definition.md +0 -970
  456. package/docs/core/tools/tool-scoping.md +0 -819
  457. package/docs/guides/advanced-patterns/publishing.md +0 -186
  458. package/docs/guides/context-compaction.md +0 -96
  459. package/docs/guides/error-handling-patterns.md +0 -578
  460. package/docs/guides/getting-started/README.md +0 -795
  461. package/docs/guides/migration/README.md +0 -101
  462. package/docs/guides/migration/flexible-routing-conditions.md +0 -375
  463. package/docs/guides/migration/multi-step-execution.md +0 -393
  464. package/docs/guides/migration/response-modal-refactor.md +0 -518
  465. package/docs/guides/prompt-optimization.md +0 -164
  466. package/examples/advanced-patterns/context-compaction.ts +0 -223
  467. package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
  468. package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
  469. package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
  470. package/examples/advanced-patterns/streaming-responses.ts +0 -656
  471. package/examples/ai-providers/anthropic-integration.ts +0 -388
  472. package/examples/ai-providers/openai-integration.ts +0 -228
  473. package/examples/condition-patterns/function-only-conditions.ts +0 -365
  474. package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
  475. package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
  476. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  477. package/examples/condition-patterns/string-only-conditions.ts +0 -296
  478. package/examples/conversation-flows/completion-transitions.ts +0 -318
  479. package/examples/core-concepts/basic-agent.ts +0 -503
  480. package/examples/core-concepts/modern-streaming-api.ts +0 -309
  481. package/examples/core-concepts/schema-driven-extraction.ts +0 -332
  482. package/examples/core-concepts/session-management.ts +0 -494
  483. package/examples/integrations/database-integration.ts +0 -631
  484. package/examples/integrations/healthcare-integration.ts +0 -595
  485. package/examples/integrations/search-integration.ts +0 -530
  486. package/examples/integrations/server-session-management.ts +0 -307
  487. package/examples/persistence/custom-adapter.ts +0 -526
  488. package/examples/persistence/database-persistence.ts +0 -583
  489. package/examples/persistence/memory-sessions.ts +0 -495
  490. package/examples/persistence/prisma-schema.example.prisma +0 -74
  491. package/examples/persistence/redis-persistence.ts +0 -488
  492. package/examples/tools/basic-tools.ts +0 -765
  493. package/examples/tools/data-enrichment-tools.ts +0 -593
  494. package/examples/tools/enhanced-tool-metadata.ts +0 -268
  495. package/examples/tools/streaming-tool-execution.ts +0 -283
  496. package/src/core/BatchExecutor.ts +0 -1187
  497. package/src/core/BatchPromptBuilder.ts +0 -299
  498. package/src/core/Route.ts +0 -678
  499. package/src/types/route.ts +0 -392
@@ -1,515 +0,0 @@
1
- # AI Provider Integrations
2
-
3
- @falai/agent provides unified interfaces for multiple AI providers, enabling seamless switching between models and automatic fallback handling.
4
-
5
- ## Supported Providers
6
-
7
- ### OpenAI Provider
8
-
9
- Full-featured integration with GPT models, including backup model support and structured outputs.
10
-
11
- ```typescript
12
- import { OpenAIProvider } from "@falai/agent";
13
-
14
- const provider = new OpenAIProvider({
15
- apiKey: process.env.OPENAI_API_KEY,
16
- model: "gpt-5",
17
- backupModels: ["gpt-4"], // Fallback models
18
- config: {
19
- temperature: 0.7,
20
- max_tokens: 1000,
21
- },
22
- retryConfig: {
23
- timeout: 30000,
24
- retries: 3,
25
- },
26
- });
27
- ```
28
-
29
- **Features:**
30
-
31
- - ✅ GPT-4, GPT-5, and all OpenAI models
32
- - ✅ Backup model fallback on failures
33
- - ✅ Structured outputs with JSON Schema
34
- - ✅ Tool calling support
35
- - ✅ Streaming responses
36
- - ✅ Automatic retry logic
37
-
38
- ### Google Gemini Provider
39
-
40
- Integration with Google's Gemini models through Vertex AI or AI Studio.
41
-
42
- ```typescript
43
- import { GeminiProvider } from "@falai/agent";
44
-
45
- const provider = new GeminiProvider({
46
- apiKey: process.env.GEMINI_API_KEY,
47
- model: "gemini-pro",
48
- config: {
49
- safetySettings: [
50
- {
51
- category: "HARM_CATEGORY_HARASSMENT",
52
- threshold: "BLOCK_MEDIUM_AND_ABOVE",
53
- },
54
- ],
55
- },
56
- });
57
- ```
58
-
59
- **Features:**
60
-
61
- - ✅ Gemini 2.0, 2.5 Pro, and Flash models
62
- - ✅ Safety settings and content filtering
63
- - ✅ Multimodal capabilities (text, images)
64
- - ✅ Function calling support
65
- - ✅ Streaming responses
66
-
67
- ### Anthropic Claude Provider
68
-
69
- Integration with Anthropic's Claude models via their API.
70
-
71
- ```typescript
72
- import { AnthropicProvider } from "@falai/agent";
73
-
74
- const provider = new AnthropicProvider({
75
- apiKey: process.env.ANTHROPIC_API_KEY,
76
- model: "claude-sonnet-4.5",
77
- config: {
78
- maxTokens: 4096,
79
- temperature: 0.7,
80
- },
81
- });
82
- ```
83
-
84
- **Features:**
85
-
86
- - ✅ Claude 4 Opus, Sonnet, and Haiku
87
- - ✅ Constitutional AI safety
88
- - ✅ Excellent reasoning capabilities
89
- - ✅ Tool calling support
90
- - ✅ Streaming responses
91
-
92
- ### OpenRouter Provider
93
-
94
- Unified access to multiple AI models through OpenRouter's API.
95
-
96
- ```typescript
97
- import { OpenRouterProvider } from "@falai/agent";
98
-
99
- const provider = new OpenRouterProvider({
100
- apiKey: process.env.OPENROUTER_API_KEY,
101
- model: "anthropic/claude-sonnet-4",
102
- siteUrl: "https://your-app.com",
103
- siteName: "Your App Name",
104
- });
105
- ```
106
-
107
- **Features:**
108
-
109
- - ✅ Access to 100+ AI models
110
- - ✅ Unified pricing and billing
111
- - ✅ Automatic model routing
112
- - ✅ Fallback model support
113
- - ✅ Streaming responses
114
-
115
- ## Provider Configuration
116
-
117
- ### Common Options
118
-
119
- All providers support these configuration options:
120
-
121
- ```typescript
122
- interface BaseProviderOptions {
123
- model: string; // Primary model to use
124
- backupModels?: string[]; // Fallback models on failure
125
- temperature?: number; // Response randomness (0-2)
126
- maxTokens?: number; // Maximum response length
127
- timeout?: number; // Request timeout in ms
128
- retries?: number; // Number of retry attempts
129
- }
130
- ```
131
-
132
- ### Advanced Configuration
133
-
134
- ```typescript
135
- const provider = new OpenAIProvider({
136
- apiKey: process.env.OPENAI_API_KEY,
137
- model: "gpt-5",
138
-
139
- // Model-specific parameters
140
- config: {
141
- temperature: 0.1, // Low randomness for consistent responses
142
- top_p: 0.9, // Nucleus sampling
143
- frequency_penalty: 0.1, // Reduce repetition
144
- presence_penalty: 0.1, // Encourage topic diversity
145
- max_tokens: 2048,
146
- },
147
-
148
- // Fallback configuration
149
- backupModels: [
150
- "gpt-4.1", // Try GPT-4 if turbo fails
151
- "gpt-4", // Final fallback
152
- ],
153
-
154
- // Retry configuration
155
- retryConfig: {
156
- timeout: 60000, // 60 second timeout
157
- retries: 3, // Retry up to 3 times
158
- },
159
- });
160
- ```
161
-
162
- ## Unified Interface
163
-
164
- All providers implement the same interface:
165
-
166
- ```typescript
167
- interface AiProvider {
168
- name: string;
169
-
170
- // Synchronous response generation
171
- generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>;
172
-
173
- // Streaming response generation
174
- generateMessageStream(
175
- input: GenerateMessageInput
176
- ): AsyncGenerator<GenerateMessageStreamChunk>;
177
- }
178
- ```
179
-
180
- ### Input Format
181
-
182
- ```typescript
183
- interface GenerateMessageInput<TContext = unknown> {
184
- prompt: string; // The prompt to send
185
- history: Event[]; // Conversation history
186
- context?: TContext; // Additional context data
187
- tools?: ToolDefinition[]; // Available tools
188
- parameters?: {
189
- jsonSchema?: StructuredSchema; // Response schema
190
- schemaName?: string; // Schema identifier
191
- maxOutputTokens?: number; // Token limit
192
- reasoning?: { effort: "low" | "medium" | "high" };
193
- };
194
- signal?: AbortSignal; // Cancellation support
195
- }
196
- ```
197
-
198
- ### Output Format
199
-
200
- ```typescript
201
- interface GenerateMessageOutput<TStructured = AgentStructuredResponse> {
202
- message: string; // Main response text
203
- metadata: {
204
- model: string; // Model used
205
- tokensUsed: number; // Total tokens consumed
206
- promptTokens: number; // Input tokens
207
- completionTokens: number; // Output tokens
208
- finishReason?: string; // Why generation stopped
209
- };
210
- structured?: TStructured; // Structured data if schema provided
211
- }
212
- ```
213
-
214
- ## Tool Calling Support
215
-
216
- All providers support tool calling with consistent interfaces:
217
-
218
- ```typescript
219
- const input: GenerateMessageInput = {
220
- prompt: "What's the weather in Paris?",
221
- history: conversationHistory,
222
- tools: [
223
- {
224
- id: "get_weather",
225
- description: "Get current weather for a location",
226
- parameters: {
227
- type: "object",
228
- properties: {
229
- location: { type: "string", description: "City name" },
230
- },
231
- required: ["location"],
232
- },
233
- },
234
- ],
235
- };
236
-
237
- const response = await provider.generateMessage(input);
238
-
239
- // Check for tool calls
240
- if (response.structured?.toolCalls) {
241
- for (const toolCall of response.structured.toolCalls) {
242
- console.log(`AI wants to call: ${toolCall.toolName}`);
243
- console.log(`With arguments:`, toolCall.arguments);
244
- }
245
- }
246
- ```
247
-
248
- ## Streaming Responses
249
-
250
- Real-time response generation with chunked output:
251
-
252
- ```typescript
253
- const stream = provider.generateMessageStream(input);
254
-
255
- for await (const chunk of stream) {
256
- if (chunk.delta) {
257
- process.stdout.write(chunk.delta); // Real-time output
258
- }
259
-
260
- if (chunk.done) {
261
- console.log("\nGeneration complete!");
262
- console.log("Total tokens:", chunk.metadata?.tokensUsed);
263
- console.log("Structured data:", chunk.structured);
264
- }
265
- }
266
- ```
267
-
268
- ## Error Handling & Fallbacks
269
-
270
- ### Automatic Fallbacks
271
-
272
- Providers automatically try backup models on failures:
273
-
274
- ```typescript
275
- const provider = new OpenAIProvider({
276
- apiKey: process.env.OPENAI_API_KEY,
277
- model: "gpt-5",
278
- backupModels: ["gpt-4.1", "gpt-4"],
279
- });
280
-
281
- // If gpt-4 fails (rate limit, server error, etc.)
282
- // Automatically tries gpt-4.1, then gpt-4
283
- const response = await provider.generateMessage(input);
284
- ```
285
-
286
- ### Error Classification
287
-
288
- Different error types trigger different fallback behaviors:
289
-
290
- ```typescript
291
- // Server errors (5xx) → Try backup models
292
- // Rate limits (429) → Try backup models
293
- // Invalid requests (4xx) → Don't retry
294
- // Timeouts → Retry with same model
295
- ```
296
-
297
- ### Custom Error Handling
298
-
299
- ```typescript
300
- try {
301
- const response = await provider.generateMessage(input);
302
- } catch (error) {
303
- if (error.code === "rate_limit_exceeded") {
304
- // Handle rate limiting
305
- await delay(60000); // Wait 1 minute
306
- return retryWithBackoff();
307
- }
308
-
309
- if (error.code === "model_not_available") {
310
- // Switch to different provider
311
- return fallbackProvider.generateMessage(input);
312
- }
313
-
314
- throw error;
315
- }
316
- ```
317
-
318
- ## Performance Optimization
319
-
320
- ### Connection Reuse
321
-
322
- Reuse provider instances for better performance:
323
-
324
- ```typescript
325
- // ✅ Good: Reuse provider instance
326
- const provider = new OpenAIProvider({ apiKey, model: "gpt-4" });
327
-
328
- const agent1 = new Agent({ provider });
329
- const agent2 = new Agent({ provider }); // Same instance
330
-
331
- // ❌ Bad: Create new instance each time
332
- const agent3 = new Agent({
333
- provider: new OpenAIProvider({ apiKey, model: "gpt-4" }),
334
- });
335
- ```
336
-
337
- ### Request Batching
338
-
339
- Group related requests to reduce latency:
340
-
341
- ```typescript
342
- // Process multiple conversations efficiently
343
- const responses = await Promise.all([
344
- agent1.respond({ history: history1 }),
345
- agent2.respond({ history: history2 }),
346
- agent3.respond({ history: history3 }),
347
- ]);
348
- ```
349
-
350
- ### Caching
351
-
352
- Cache responses for similar prompts:
353
-
354
- ```typescript
355
- const cache = new Map();
356
-
357
- function getCachedResponse(prompt: string, context: any) {
358
- const key = hash(`${prompt}-${JSON.stringify(context)}`);
359
- return cache.get(key);
360
- }
361
-
362
- function setCachedResponse(prompt: string, context: any, response: any) {
363
- const key = hash(`${prompt}-${JSON.stringify(context)}`);
364
- cache.set(key, response);
365
- }
366
- ```
367
-
368
- ## Monitoring & Observability
369
-
370
- ### Response Metrics
371
-
372
- Track provider performance and usage:
373
-
374
- ```typescript
375
- const response = await provider.generateMessage(input);
376
-
377
- console.log("Provider:", response.metadata?.model);
378
- console.log("Tokens used:", response.metadata?.tokensUsed);
379
- console.log("Prompt tokens:", response.metadata?.promptTokens);
380
- console.log("Completion tokens:", response.metadata?.completionTokens);
381
- console.log("Finish reason:", response.metadata?.finishReason);
382
- ```
383
-
384
- ### Cost Tracking
385
-
386
- Monitor API usage costs:
387
-
388
- ```typescript
389
- const costTracker = {
390
- openai: {
391
- "gpt-5": { prompt: 0.03, completion: 0.06 },
392
- "gpt-4": { prompt: 0.002, completion: 0.002 },
393
- },
394
- };
395
-
396
- function calculateCost(metadata: ResponseMetadata): number {
397
- const rates = costTracker[metadata.model];
398
- if (!rates) return 0;
399
-
400
- return (
401
- ((metadata.promptTokens || 0) * rates.prompt) / 1000 +
402
- ((metadata.completionTokens || 0) * rates.completion) / 1000
403
- );
404
- }
405
- ```
406
-
407
- ### Health Monitoring
408
-
409
- Track provider availability and latency:
410
-
411
- ```typescript
412
- const healthChecks = new Map();
413
-
414
- async function checkProviderHealth(provider: AiProvider): Promise<boolean> {
415
- const startTime = Date.now();
416
-
417
- try {
418
- await provider.generateMessage({
419
- prompt: "Hello",
420
- history: [],
421
- });
422
-
423
- const latency = Date.now() - startTime;
424
- healthChecks.set(provider.name, { healthy: true, latency });
425
- return true;
426
- } catch (error) {
427
- healthChecks.set(provider.name, { healthy: false, error: error.message });
428
- return false;
429
- }
430
- }
431
- ```
432
-
433
- ## Custom Provider Implementation
434
-
435
- Create providers for unsupported AI services:
436
-
437
- ```typescript
438
- import {
439
- AiProvider,
440
- GenerateMessageInput,
441
- GenerateMessageOutput,
442
- } from "@falai/agent";
443
-
444
- class CustomProvider implements AiProvider {
445
- name = "custom";
446
-
447
- async generateMessage(
448
- input: GenerateMessageInput
449
- ): Promise<GenerateMessageOutput> {
450
- // Implement your AI service integration
451
- const response = await callCustomAI(input.prompt, input.context);
452
-
453
- return {
454
- message: response.text,
455
- metadata: {
456
- model: "custom-model-v1",
457
- tokensUsed: response.tokens,
458
- promptTokens: input.prompt.split(" ").length,
459
- completionTokens: response.text.split(" ").length,
460
- },
461
- structured: response.structured,
462
- };
463
- }
464
-
465
- async *generateMessageStream(input: GenerateMessageInput) {
466
- // Implement streaming if supported
467
- const stream = await callCustomAIStream(input.prompt, input.context);
468
-
469
- for await (const chunk of stream) {
470
- yield {
471
- delta: chunk.text,
472
- accumulated: chunk.fullText,
473
- done: chunk.finished,
474
- metadata: chunk.metadata,
475
- };
476
- }
477
- }
478
- }
479
- ```
480
-
481
- ## Best Practices
482
-
483
- ### Provider Selection
484
-
485
- 1. **Task Matching**: Choose providers based on task requirements
486
-
487
- - OpenAI GPT-4: Complex reasoning, creative tasks
488
- - Anthropic Claude: Safety-focused, analytical tasks
489
- - Google Gemini: Multimodal, fast responses
490
- - OpenRouter: Cost optimization, model experimentation
491
-
492
- 2. **Cost Optimization**: Use appropriate models for task complexity
493
-
494
- - Simple tasks: GPT-4.1, Claude Haiku, Gemini Flash
495
- - Complex tasks: GPT-5, Claude Sonnet, Gemini Pro
496
-
497
- 3. **Reliability**: Configure backup models for production
498
- - Always have fallback options
499
- - Monitor error rates and switch providers if needed
500
-
501
- ### Configuration
502
-
503
- 1. **Temperature**: Lower for deterministic tasks, higher for creative
504
- 2. **Max Tokens**: Set appropriate limits to control costs
505
- 3. **Timeouts**: Configure reasonable timeouts for your use case
506
- 4. **Retries**: Enable retries for transient failures
507
-
508
- ### Monitoring
509
-
510
- 1. **Track Usage**: Monitor token consumption and costs
511
- 2. **Error Rates**: Alert on high error rates
512
- 3. **Latency**: Monitor response times
513
- 4. **Fallback Usage**: Track how often backup models are used
514
-
515
- The AI provider system enables flexible, reliable integration with multiple AI services while maintaining a consistent interface for the @falai/agent framework.