@falai/agent 1.2.8 → 2.0.1

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