@falai/agent 1.2.7 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/README.md +40 -886
  2. package/dist/adapters/MemoryAdapter.js +2 -2
  3. package/dist/adapters/MemoryAdapter.js.map +1 -1
  4. package/dist/adapters/MongoAdapter.js +2 -2
  5. package/dist/adapters/MongoAdapter.js.map +1 -1
  6. package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
  7. package/dist/adapters/OpenSearchAdapter.js +9 -7
  8. package/dist/adapters/OpenSearchAdapter.js.map +1 -1
  9. package/dist/adapters/PostgreSQLAdapter.d.ts +14 -0
  10. package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  11. package/dist/adapters/PostgreSQLAdapter.js +25 -9
  12. package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
  13. package/dist/adapters/PrismaAdapter.js +5 -5
  14. package/dist/adapters/PrismaAdapter.js.map +1 -1
  15. package/dist/adapters/RedisAdapter.js +2 -2
  16. package/dist/adapters/RedisAdapter.js.map +1 -1
  17. package/dist/adapters/SQLiteAdapter.d.ts +17 -0
  18. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
  19. package/dist/adapters/SQLiteAdapter.js +30 -11
  20. package/dist/adapters/SQLiteAdapter.js.map +1 -1
  21. package/dist/cjs/adapters/MemoryAdapter.js +2 -2
  22. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  23. package/dist/cjs/adapters/MongoAdapter.js +2 -2
  24. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  25. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
  26. package/dist/cjs/adapters/OpenSearchAdapter.js +9 -7
  27. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  28. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +14 -0
  29. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  30. package/dist/cjs/adapters/PostgreSQLAdapter.js +25 -9
  31. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  32. package/dist/cjs/adapters/PrismaAdapter.js +5 -5
  33. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  34. package/dist/cjs/adapters/RedisAdapter.js +2 -2
  35. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  36. package/dist/cjs/adapters/SQLiteAdapter.d.ts +17 -0
  37. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  38. package/dist/cjs/adapters/SQLiteAdapter.js +30 -11
  39. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  40. package/dist/cjs/constants/index.d.ts +0 -9
  41. package/dist/cjs/constants/index.d.ts.map +1 -1
  42. package/dist/cjs/constants/index.js +2 -11
  43. package/dist/cjs/constants/index.js.map +1 -1
  44. package/dist/cjs/core/Agent.d.ts +119 -153
  45. package/dist/cjs/core/Agent.d.ts.map +1 -1
  46. package/dist/cjs/core/Agent.js +471 -324
  47. package/dist/cjs/core/Agent.js.map +1 -1
  48. package/dist/cjs/core/AutoChainExecutor.d.ts +107 -0
  49. package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -0
  50. package/dist/cjs/core/AutoChainExecutor.js +297 -0
  51. package/dist/cjs/core/AutoChainExecutor.js.map +1 -0
  52. package/dist/cjs/core/BranchEvaluator.d.ts +54 -0
  53. package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -0
  54. package/dist/cjs/core/BranchEvaluator.js +130 -0
  55. package/dist/cjs/core/BranchEvaluator.js.map +1 -0
  56. package/dist/cjs/core/DirectiveBus.d.ts +88 -0
  57. package/dist/cjs/core/DirectiveBus.d.ts.map +1 -0
  58. package/dist/cjs/core/DirectiveBus.js +196 -0
  59. package/dist/cjs/core/DirectiveBus.js.map +1 -0
  60. package/dist/cjs/core/DirectiveChainTracker.d.ts +49 -0
  61. package/dist/cjs/core/DirectiveChainTracker.d.ts.map +1 -0
  62. package/dist/cjs/core/DirectiveChainTracker.js +121 -0
  63. package/dist/cjs/core/DirectiveChainTracker.js.map +1 -0
  64. package/dist/cjs/core/Flow.d.ts +186 -0
  65. package/dist/cjs/core/Flow.d.ts.map +1 -0
  66. package/dist/cjs/core/Flow.js +550 -0
  67. package/dist/cjs/core/Flow.js.map +1 -0
  68. package/dist/cjs/core/FlowRouter.d.ts +182 -0
  69. package/dist/cjs/core/FlowRouter.d.ts.map +1 -0
  70. package/dist/cjs/core/{RoutingEngine.js → FlowRouter.js} +323 -306
  71. package/dist/cjs/core/FlowRouter.js.map +1 -0
  72. package/dist/cjs/core/PersistenceManager.d.ts +2 -2
  73. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  74. package/dist/cjs/core/PersistenceManager.js +7 -7
  75. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  76. package/dist/cjs/core/PromptComposer.d.ts +21 -8
  77. package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
  78. package/dist/cjs/core/PromptComposer.js +182 -105
  79. package/dist/cjs/core/PromptComposer.js.map +1 -1
  80. package/dist/cjs/core/PromptSectionCache.d.ts +1 -1
  81. package/dist/cjs/core/PromptSectionCache.js +1 -1
  82. package/dist/cjs/core/ResponseEngine.d.ts +18 -8
  83. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  84. package/dist/cjs/core/ResponseEngine.js +38 -36
  85. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  86. package/dist/cjs/core/ResponseModal.d.ts +73 -56
  87. package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
  88. package/dist/cjs/core/ResponseModal.js +1196 -1015
  89. package/dist/cjs/core/ResponseModal.js.map +1 -1
  90. package/dist/cjs/core/ResponsePipeline.d.ts +124 -26
  91. package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
  92. package/dist/cjs/core/ResponsePipeline.js +524 -134
  93. package/dist/cjs/core/ResponsePipeline.js.map +1 -1
  94. package/dist/cjs/core/SignalEvaluator.d.ts +86 -0
  95. package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -0
  96. package/dist/cjs/core/SignalEvaluator.js +333 -0
  97. package/dist/cjs/core/SignalEvaluator.js.map +1 -0
  98. package/dist/cjs/core/SignalProcessor.d.ts +152 -0
  99. package/dist/cjs/core/SignalProcessor.d.ts.map +1 -0
  100. package/dist/cjs/core/SignalProcessor.js +562 -0
  101. package/dist/cjs/core/SignalProcessor.js.map +1 -0
  102. package/dist/cjs/core/Step.d.ts +43 -32
  103. package/dist/cjs/core/Step.d.ts.map +1 -1
  104. package/dist/cjs/core/Step.js +221 -126
  105. package/dist/cjs/core/Step.js.map +1 -1
  106. package/dist/cjs/core/StreamingToolExecutor.d.ts +2 -2
  107. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -1
  108. package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
  109. package/dist/cjs/core/ToolManager.d.ts +44 -13
  110. package/dist/cjs/core/ToolManager.d.ts.map +1 -1
  111. package/dist/cjs/core/ToolManager.js +174 -91
  112. package/dist/cjs/core/ToolManager.js.map +1 -1
  113. package/dist/cjs/core/createAgent.d.ts +35 -0
  114. package/dist/cjs/core/createAgent.d.ts.map +1 -0
  115. package/dist/cjs/core/createAgent.js +39 -0
  116. package/dist/cjs/core/createAgent.js.map +1 -0
  117. package/dist/cjs/core/flow-namespace.d.ts +49 -0
  118. package/dist/cjs/core/flow-namespace.d.ts.map +1 -0
  119. package/dist/cjs/core/flow-namespace.js +171 -0
  120. package/dist/cjs/core/flow-namespace.js.map +1 -0
  121. package/dist/cjs/index.d.ts +11 -14
  122. package/dist/cjs/index.d.ts.map +1 -1
  123. package/dist/cjs/index.js +18 -22
  124. package/dist/cjs/index.js.map +1 -1
  125. package/dist/cjs/providers/GeminiProvider.d.ts +3 -3
  126. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  127. package/dist/cjs/providers/GeminiProvider.js +16 -14
  128. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  129. package/dist/cjs/types/agent.d.ts +183 -54
  130. package/dist/cjs/types/agent.d.ts.map +1 -1
  131. package/dist/cjs/types/agent.js +0 -6
  132. package/dist/cjs/types/agent.js.map +1 -1
  133. package/dist/cjs/types/ai.d.ts +3 -3
  134. package/dist/cjs/types/ai.d.ts.map +1 -1
  135. package/dist/cjs/types/errors.d.ts +15 -0
  136. package/dist/cjs/types/errors.d.ts.map +1 -0
  137. package/dist/cjs/types/errors.js +22 -0
  138. package/dist/cjs/types/errors.js.map +1 -0
  139. package/dist/cjs/types/flow.d.ts +513 -0
  140. package/dist/cjs/types/flow.d.ts.map +1 -0
  141. package/dist/cjs/types/{route.js → flow.js} +2 -2
  142. package/dist/cjs/types/flow.js.map +1 -0
  143. package/dist/cjs/types/index.d.ts +7 -6
  144. package/dist/cjs/types/index.d.ts.map +1 -1
  145. package/dist/cjs/types/index.js +6 -2
  146. package/dist/cjs/types/index.js.map +1 -1
  147. package/dist/cjs/types/persistence.d.ts +11 -7
  148. package/dist/cjs/types/persistence.d.ts.map +1 -1
  149. package/dist/cjs/types/routing.d.ts +1 -1
  150. package/dist/cjs/types/routing.d.ts.map +1 -1
  151. package/dist/cjs/types/session.d.ts +24 -23
  152. package/dist/cjs/types/session.d.ts.map +1 -1
  153. package/dist/cjs/types/signals.d.ts +248 -0
  154. package/dist/cjs/types/signals.d.ts.map +1 -0
  155. package/dist/cjs/types/signals.js +11 -0
  156. package/dist/cjs/types/signals.js.map +1 -0
  157. package/dist/cjs/types/template.d.ts +2 -8
  158. package/dist/cjs/types/template.d.ts.map +1 -1
  159. package/dist/cjs/types/tool.d.ts +36 -29
  160. package/dist/cjs/types/tool.d.ts.map +1 -1
  161. package/dist/cjs/types/tool.js +1 -1
  162. package/dist/cjs/types/tool.js.map +1 -1
  163. package/dist/cjs/utils/condition.d.ts +7 -1
  164. package/dist/cjs/utils/condition.d.ts.map +1 -1
  165. package/dist/cjs/utils/condition.js.map +1 -1
  166. package/dist/cjs/utils/id.d.ts +13 -5
  167. package/dist/cjs/utils/id.d.ts.map +1 -1
  168. package/dist/cjs/utils/id.js +24 -10
  169. package/dist/cjs/utils/id.js.map +1 -1
  170. package/dist/cjs/utils/index.d.ts +2 -2
  171. package/dist/cjs/utils/index.d.ts.map +1 -1
  172. package/dist/cjs/utils/index.js +7 -3
  173. package/dist/cjs/utils/index.js.map +1 -1
  174. package/dist/cjs/utils/session.d.ts +44 -5
  175. package/dist/cjs/utils/session.d.ts.map +1 -1
  176. package/dist/cjs/utils/session.js +197 -38
  177. package/dist/cjs/utils/session.js.map +1 -1
  178. package/dist/constants/index.d.ts +0 -9
  179. package/dist/constants/index.d.ts.map +1 -1
  180. package/dist/constants/index.js +3 -9
  181. package/dist/constants/index.js.map +1 -1
  182. package/dist/core/Agent.d.ts +119 -153
  183. package/dist/core/Agent.d.ts.map +1 -1
  184. package/dist/core/Agent.js +472 -325
  185. package/dist/core/Agent.js.map +1 -1
  186. package/dist/core/AutoChainExecutor.d.ts +107 -0
  187. package/dist/core/AutoChainExecutor.d.ts.map +1 -0
  188. package/dist/core/AutoChainExecutor.js +293 -0
  189. package/dist/core/AutoChainExecutor.js.map +1 -0
  190. package/dist/core/BranchEvaluator.d.ts +54 -0
  191. package/dist/core/BranchEvaluator.d.ts.map +1 -0
  192. package/dist/core/BranchEvaluator.js +126 -0
  193. package/dist/core/BranchEvaluator.js.map +1 -0
  194. package/dist/core/DirectiveBus.d.ts +88 -0
  195. package/dist/core/DirectiveBus.d.ts.map +1 -0
  196. package/dist/core/DirectiveBus.js +192 -0
  197. package/dist/core/DirectiveBus.js.map +1 -0
  198. package/dist/core/DirectiveChainTracker.d.ts +49 -0
  199. package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
  200. package/dist/core/DirectiveChainTracker.js +117 -0
  201. package/dist/core/DirectiveChainTracker.js.map +1 -0
  202. package/dist/core/Flow.d.ts +186 -0
  203. package/dist/core/Flow.d.ts.map +1 -0
  204. package/dist/core/Flow.js +546 -0
  205. package/dist/core/Flow.js.map +1 -0
  206. package/dist/core/FlowRouter.d.ts +182 -0
  207. package/dist/core/FlowRouter.d.ts.map +1 -0
  208. package/dist/core/{RoutingEngine.js → FlowRouter.js} +322 -305
  209. package/dist/core/FlowRouter.js.map +1 -0
  210. package/dist/core/PersistenceManager.d.ts +2 -2
  211. package/dist/core/PersistenceManager.d.ts.map +1 -1
  212. package/dist/core/PersistenceManager.js +7 -7
  213. package/dist/core/PersistenceManager.js.map +1 -1
  214. package/dist/core/PromptComposer.d.ts +21 -8
  215. package/dist/core/PromptComposer.d.ts.map +1 -1
  216. package/dist/core/PromptComposer.js +183 -106
  217. package/dist/core/PromptComposer.js.map +1 -1
  218. package/dist/core/PromptSectionCache.d.ts +1 -1
  219. package/dist/core/PromptSectionCache.js +1 -1
  220. package/dist/core/ResponseEngine.d.ts +18 -8
  221. package/dist/core/ResponseEngine.d.ts.map +1 -1
  222. package/dist/core/ResponseEngine.js +38 -36
  223. package/dist/core/ResponseEngine.js.map +1 -1
  224. package/dist/core/ResponseModal.d.ts +73 -56
  225. package/dist/core/ResponseModal.d.ts.map +1 -1
  226. package/dist/core/ResponseModal.js +1198 -1017
  227. package/dist/core/ResponseModal.js.map +1 -1
  228. package/dist/core/ResponsePipeline.d.ts +124 -26
  229. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  230. package/dist/core/ResponsePipeline.js +524 -135
  231. package/dist/core/ResponsePipeline.js.map +1 -1
  232. package/dist/core/SignalEvaluator.d.ts +86 -0
  233. package/dist/core/SignalEvaluator.d.ts.map +1 -0
  234. package/dist/core/SignalEvaluator.js +326 -0
  235. package/dist/core/SignalEvaluator.js.map +1 -0
  236. package/dist/core/SignalProcessor.d.ts +152 -0
  237. package/dist/core/SignalProcessor.d.ts.map +1 -0
  238. package/dist/core/SignalProcessor.js +555 -0
  239. package/dist/core/SignalProcessor.js.map +1 -0
  240. package/dist/core/Step.d.ts +43 -32
  241. package/dist/core/Step.d.ts.map +1 -1
  242. package/dist/core/Step.js +220 -126
  243. package/dist/core/Step.js.map +1 -1
  244. package/dist/core/StreamingToolExecutor.d.ts +2 -2
  245. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  246. package/dist/core/StreamingToolExecutor.js.map +1 -1
  247. package/dist/core/ToolManager.d.ts +44 -13
  248. package/dist/core/ToolManager.d.ts.map +1 -1
  249. package/dist/core/ToolManager.js +174 -91
  250. package/dist/core/ToolManager.js.map +1 -1
  251. package/dist/core/createAgent.d.ts +35 -0
  252. package/dist/core/createAgent.d.ts.map +1 -0
  253. package/dist/core/createAgent.js +36 -0
  254. package/dist/core/createAgent.js.map +1 -0
  255. package/dist/core/flow-namespace.d.ts +49 -0
  256. package/dist/core/flow-namespace.d.ts.map +1 -0
  257. package/dist/core/flow-namespace.js +168 -0
  258. package/dist/core/flow-namespace.js.map +1 -0
  259. package/dist/index.d.ts +11 -14
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +9 -12
  262. package/dist/index.js.map +1 -1
  263. package/dist/providers/GeminiProvider.d.ts +3 -3
  264. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  265. package/dist/providers/GeminiProvider.js +16 -14
  266. package/dist/providers/GeminiProvider.js.map +1 -1
  267. package/dist/types/agent.d.ts +183 -54
  268. package/dist/types/agent.d.ts.map +1 -1
  269. package/dist/types/agent.js +0 -6
  270. package/dist/types/agent.js.map +1 -1
  271. package/dist/types/ai.d.ts +3 -3
  272. package/dist/types/ai.d.ts.map +1 -1
  273. package/dist/types/errors.d.ts +15 -0
  274. package/dist/types/errors.d.ts.map +1 -0
  275. package/dist/types/errors.js +18 -0
  276. package/dist/types/errors.js.map +1 -0
  277. package/dist/types/flow.d.ts +513 -0
  278. package/dist/types/flow.d.ts.map +1 -0
  279. package/dist/types/flow.js +5 -0
  280. package/dist/types/flow.js.map +1 -0
  281. package/dist/types/index.d.ts +7 -6
  282. package/dist/types/index.d.ts.map +1 -1
  283. package/dist/types/index.js +4 -1
  284. package/dist/types/index.js.map +1 -1
  285. package/dist/types/persistence.d.ts +11 -7
  286. package/dist/types/persistence.d.ts.map +1 -1
  287. package/dist/types/routing.d.ts +1 -1
  288. package/dist/types/routing.d.ts.map +1 -1
  289. package/dist/types/session.d.ts +24 -23
  290. package/dist/types/session.d.ts.map +1 -1
  291. package/dist/types/signals.d.ts +248 -0
  292. package/dist/types/signals.d.ts.map +1 -0
  293. package/dist/types/signals.js +10 -0
  294. package/dist/types/signals.js.map +1 -0
  295. package/dist/types/template.d.ts +2 -8
  296. package/dist/types/template.d.ts.map +1 -1
  297. package/dist/types/tool.d.ts +36 -29
  298. package/dist/types/tool.d.ts.map +1 -1
  299. package/dist/types/tool.js +1 -1
  300. package/dist/types/tool.js.map +1 -1
  301. package/dist/utils/condition.d.ts +7 -1
  302. package/dist/utils/condition.d.ts.map +1 -1
  303. package/dist/utils/condition.js.map +1 -1
  304. package/dist/utils/id.d.ts +13 -5
  305. package/dist/utils/id.d.ts.map +1 -1
  306. package/dist/utils/id.js +22 -9
  307. package/dist/utils/id.js.map +1 -1
  308. package/dist/utils/index.d.ts +2 -2
  309. package/dist/utils/index.d.ts.map +1 -1
  310. package/dist/utils/index.js +2 -2
  311. package/dist/utils/index.js.map +1 -1
  312. package/dist/utils/session.d.ts +44 -5
  313. package/dist/utils/session.d.ts.map +1 -1
  314. package/dist/utils/session.js +193 -37
  315. package/dist/utils/session.js.map +1 -1
  316. package/docs/README.md +15 -202
  317. package/docs/concepts/architecture.md +281 -0
  318. package/docs/concepts/directives.md +400 -0
  319. package/docs/concepts/pipeline.md +399 -0
  320. package/docs/guides/branching.md +263 -0
  321. package/docs/guides/compaction.md +163 -0
  322. package/docs/guides/conditions.md +167 -0
  323. package/docs/guides/error-handling.md +176 -0
  324. package/docs/guides/flow-control.md +409 -0
  325. package/docs/guides/instructions.md +210 -0
  326. package/docs/guides/persistence.md +182 -0
  327. package/docs/guides/streaming.md +137 -0
  328. package/docs/migration/README.md +15 -0
  329. package/docs/migration/route-to-flow.md +560 -0
  330. package/docs/migration/v1-to-v2.md +909 -0
  331. package/docs/reference/adapters.md +481 -0
  332. package/docs/reference/branches.md +241 -0
  333. package/docs/reference/create-agent.md +186 -0
  334. package/docs/reference/directive.md +243 -0
  335. package/docs/reference/errors.md +122 -0
  336. package/docs/reference/flow.md +238 -0
  337. package/docs/reference/instruction.md +177 -0
  338. package/docs/reference/pre-directive.md +131 -0
  339. package/docs/reference/providers.md +227 -0
  340. package/docs/reference/signals.md +356 -0
  341. package/docs/reference/step.md +339 -0
  342. package/docs/reference/tool.md +269 -0
  343. package/docs/start/01-install.md +81 -0
  344. package/docs/start/02-first-agent.md +196 -0
  345. package/docs/start/03-collect-data.md +222 -0
  346. package/docs/start/04-add-tools.md +276 -0
  347. package/docs/start/05-go-to-production.md +216 -0
  348. package/examples/01-quickstart.ts +20 -0
  349. package/examples/02-data-extraction.ts +90 -0
  350. package/examples/03-tools.ts +136 -0
  351. package/examples/04-instructions.ts +100 -0
  352. package/examples/05-branching.ts +140 -0
  353. package/examples/06-flow-control.ts +103 -0
  354. package/examples/07-streaming.ts +69 -0
  355. package/examples/08-persistence.ts +98 -0
  356. package/examples/09-signals.ts +144 -0
  357. package/examples/tsconfig.json +30 -0
  358. package/package.json +2 -1
  359. package/src/adapters/MemoryAdapter.ts +3 -3
  360. package/src/adapters/MongoAdapter.ts +3 -3
  361. package/src/adapters/OpenSearchAdapter.ts +10 -8
  362. package/src/adapters/PostgreSQLAdapter.ts +26 -10
  363. package/src/adapters/PrismaAdapter.ts +6 -6
  364. package/src/adapters/RedisAdapter.ts +3 -3
  365. package/src/adapters/SQLiteAdapter.ts +31 -12
  366. package/src/constants/index.ts +2 -10
  367. package/src/core/Agent.ts +585 -374
  368. package/src/core/AutoChainExecutor.ts +440 -0
  369. package/src/core/BranchEvaluator.ts +167 -0
  370. package/src/core/DirectiveBus.ts +248 -0
  371. package/src/core/DirectiveChainTracker.ts +144 -0
  372. package/src/core/Flow.ts +666 -0
  373. package/src/core/{RoutingEngine.ts → FlowRouter.ts} +385 -365
  374. package/src/core/PersistenceManager.ts +8 -8
  375. package/src/core/PromptComposer.ts +209 -140
  376. package/src/core/PromptSectionCache.ts +1 -1
  377. package/src/core/ResponseEngine.ts +61 -46
  378. package/src/core/ResponseModal.ts +1458 -1241
  379. package/src/core/ResponsePipeline.ts +675 -173
  380. package/src/core/SignalEvaluator.ts +420 -0
  381. package/src/core/SignalProcessor.ts +723 -0
  382. package/src/core/Step.ts +279 -176
  383. package/src/core/StreamingToolExecutor.ts +4 -4
  384. package/src/core/ToolManager.ts +200 -97
  385. package/src/core/createAgent.ts +40 -0
  386. package/src/core/flow-namespace.ts +219 -0
  387. package/src/index.ts +42 -36
  388. package/src/providers/GeminiProvider.ts +17 -15
  389. package/src/types/agent.ts +182 -53
  390. package/src/types/ai.ts +3 -3
  391. package/src/types/errors.ts +18 -0
  392. package/src/types/flow.ts +590 -0
  393. package/src/types/index.ts +43 -16
  394. package/src/types/persistence.ts +12 -8
  395. package/src/types/routing.ts +1 -1
  396. package/src/types/session.ts +26 -23
  397. package/src/types/signals.ts +321 -0
  398. package/src/types/template.ts +3 -11
  399. package/src/types/tool.ts +50 -42
  400. package/src/utils/condition.ts +13 -4
  401. package/src/utils/id.ts +27 -9
  402. package/src/utils/index.ts +6 -2
  403. package/src/utils/session.ts +238 -42
  404. package/dist/cjs/core/BatchExecutor.d.ts +0 -359
  405. package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
  406. package/dist/cjs/core/BatchExecutor.js +0 -861
  407. package/dist/cjs/core/BatchExecutor.js.map +0 -1
  408. package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
  409. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
  410. package/dist/cjs/core/BatchPromptBuilder.js +0 -223
  411. package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
  412. package/dist/cjs/core/Route.d.ts +0 -180
  413. package/dist/cjs/core/Route.d.ts.map +0 -1
  414. package/dist/cjs/core/Route.js +0 -542
  415. package/dist/cjs/core/Route.js.map +0 -1
  416. package/dist/cjs/core/RoutingEngine.d.ts +0 -185
  417. package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
  418. package/dist/cjs/core/RoutingEngine.js.map +0 -1
  419. package/dist/cjs/types/route.d.ts +0 -336
  420. package/dist/cjs/types/route.d.ts.map +0 -1
  421. package/dist/cjs/types/route.js.map +0 -1
  422. package/dist/core/BatchExecutor.d.ts +0 -359
  423. package/dist/core/BatchExecutor.d.ts.map +0 -1
  424. package/dist/core/BatchExecutor.js +0 -856
  425. package/dist/core/BatchExecutor.js.map +0 -1
  426. package/dist/core/BatchPromptBuilder.d.ts +0 -89
  427. package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
  428. package/dist/core/BatchPromptBuilder.js +0 -219
  429. package/dist/core/BatchPromptBuilder.js.map +0 -1
  430. package/dist/core/Route.d.ts +0 -180
  431. package/dist/core/Route.d.ts.map +0 -1
  432. package/dist/core/Route.js +0 -538
  433. package/dist/core/Route.js.map +0 -1
  434. package/dist/core/RoutingEngine.d.ts +0 -185
  435. package/dist/core/RoutingEngine.d.ts.map +0 -1
  436. package/dist/core/RoutingEngine.js.map +0 -1
  437. package/dist/types/route.d.ts +0 -336
  438. package/dist/types/route.d.ts.map +0 -1
  439. package/dist/types/route.js +0 -5
  440. package/dist/types/route.js.map +0 -1
  441. package/docs/CONTRIBUTING.md +0 -521
  442. package/docs/api/README.md +0 -3299
  443. package/docs/api/overview.md +0 -1410
  444. package/docs/architecture/data-extraction-flow.md +0 -360
  445. package/docs/architecture/multi-step-execution.md +0 -277
  446. package/docs/core/agent/README.md +0 -938
  447. package/docs/core/agent/context-management.md +0 -796
  448. package/docs/core/agent/rules-and-prohibitions.md +0 -113
  449. package/docs/core/agent/session-management.md +0 -693
  450. package/docs/core/ai-integration/prompt-composition.md +0 -355
  451. package/docs/core/ai-integration/providers.md +0 -515
  452. package/docs/core/ai-integration/response-processing.md +0 -433
  453. package/docs/core/conversation-flows/data-collection.md +0 -772
  454. package/docs/core/conversation-flows/route-dsl.md +0 -509
  455. package/docs/core/conversation-flows/routes.md +0 -249
  456. package/docs/core/conversation-flows/step-transitions.md +0 -731
  457. package/docs/core/conversation-flows/steps.md +0 -268
  458. package/docs/core/error-handling.md +0 -830
  459. package/docs/core/persistence/adapters.md +0 -255
  460. package/docs/core/persistence/session-storage.md +0 -656
  461. package/docs/core/routing/intelligent-routing.md +0 -470
  462. package/docs/core/tools/enhanced-tool.md +0 -186
  463. package/docs/core/tools/streaming-execution.md +0 -161
  464. package/docs/core/tools/tool-definition.md +0 -970
  465. package/docs/core/tools/tool-scoping.md +0 -819
  466. package/docs/guides/advanced-patterns/publishing.md +0 -186
  467. package/docs/guides/context-compaction.md +0 -96
  468. package/docs/guides/error-handling-patterns.md +0 -578
  469. package/docs/guides/getting-started/README.md +0 -795
  470. package/docs/guides/migration/README.md +0 -101
  471. package/docs/guides/migration/flexible-routing-conditions.md +0 -375
  472. package/docs/guides/migration/multi-step-execution.md +0 -393
  473. package/docs/guides/migration/response-modal-refactor.md +0 -518
  474. package/docs/guides/prompt-optimization.md +0 -164
  475. package/examples/advanced-patterns/context-compaction.ts +0 -223
  476. package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
  477. package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
  478. package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
  479. package/examples/advanced-patterns/streaming-responses.ts +0 -656
  480. package/examples/ai-providers/anthropic-integration.ts +0 -388
  481. package/examples/ai-providers/openai-integration.ts +0 -228
  482. package/examples/condition-patterns/function-only-conditions.ts +0 -365
  483. package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
  484. package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
  485. package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
  486. package/examples/condition-patterns/string-only-conditions.ts +0 -296
  487. package/examples/conversation-flows/completion-transitions.ts +0 -318
  488. package/examples/core-concepts/basic-agent.ts +0 -503
  489. package/examples/core-concepts/modern-streaming-api.ts +0 -309
  490. package/examples/core-concepts/schema-driven-extraction.ts +0 -332
  491. package/examples/core-concepts/session-management.ts +0 -494
  492. package/examples/integrations/database-integration.ts +0 -631
  493. package/examples/integrations/healthcare-integration.ts +0 -595
  494. package/examples/integrations/search-integration.ts +0 -530
  495. package/examples/integrations/server-session-management.ts +0 -307
  496. package/examples/persistence/custom-adapter.ts +0 -526
  497. package/examples/persistence/database-persistence.ts +0 -583
  498. package/examples/persistence/memory-sessions.ts +0 -495
  499. package/examples/persistence/prisma-schema.example.prisma +0 -74
  500. package/examples/persistence/redis-persistence.ts +0 -488
  501. package/examples/tools/basic-tools.ts +0 -765
  502. package/examples/tools/data-enrichment-tools.ts +0 -593
  503. package/examples/tools/enhanced-tool-metadata.ts +0 -268
  504. package/examples/tools/streaming-tool-execution.ts +0 -283
  505. package/src/core/BatchExecutor.ts +0 -1187
  506. package/src/core/BatchPromptBuilder.ts +0 -299
  507. package/src/core/Route.ts +0 -678
  508. package/src/types/route.ts +0 -392
@@ -1,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.