@falai/agent 2.7.0 → 3.1.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 (559) hide show
  1. package/README.md +1 -1
  2. package/dist/adapters/MemoryAdapter.d.ts +1 -1
  3. package/dist/adapters/MemoryAdapter.d.ts.map +1 -1
  4. package/dist/adapters/MemoryAdapter.js +3 -3
  5. package/dist/adapters/MemoryAdapter.js.map +1 -1
  6. package/dist/adapters/MongoAdapter.d.ts +1 -1
  7. package/dist/adapters/MongoAdapter.d.ts.map +1 -1
  8. package/dist/adapters/MongoAdapter.js +2 -2
  9. package/dist/adapters/MongoAdapter.js.map +1 -1
  10. package/dist/adapters/OpenSearchAdapter.d.ts +1 -1
  11. package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
  12. package/dist/adapters/OpenSearchAdapter.js +3 -3
  13. package/dist/adapters/OpenSearchAdapter.js.map +1 -1
  14. package/dist/adapters/PostgreSQLAdapter.d.ts +1 -1
  15. package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  16. package/dist/adapters/PostgreSQLAdapter.js +3 -3
  17. package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
  18. package/dist/adapters/PrismaAdapter.d.ts +1 -1
  19. package/dist/adapters/PrismaAdapter.d.ts.map +1 -1
  20. package/dist/adapters/PrismaAdapter.js +3 -3
  21. package/dist/adapters/PrismaAdapter.js.map +1 -1
  22. package/dist/adapters/RedisAdapter.d.ts +1 -1
  23. package/dist/adapters/RedisAdapter.d.ts.map +1 -1
  24. package/dist/adapters/RedisAdapter.js +3 -3
  25. package/dist/adapters/RedisAdapter.js.map +1 -1
  26. package/dist/adapters/SQLiteAdapter.d.ts +1 -1
  27. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
  28. package/dist/adapters/SQLiteAdapter.js +3 -3
  29. package/dist/adapters/SQLiteAdapter.js.map +1 -1
  30. package/dist/adapters/index.d.ts +13 -13
  31. package/dist/adapters/index.d.ts.map +1 -1
  32. package/dist/adapters/index.js +7 -7
  33. package/dist/adapters/index.js.map +1 -1
  34. package/dist/adapters/sessionRow.d.ts +1 -1
  35. package/dist/adapters/sessionRow.d.ts.map +1 -1
  36. package/dist/cjs/adapters/MemoryAdapter.d.ts +1 -1
  37. package/dist/cjs/adapters/MemoryAdapter.d.ts.map +1 -1
  38. package/dist/cjs/adapters/MemoryAdapter.js +14 -14
  39. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  40. package/dist/cjs/adapters/MongoAdapter.d.ts +1 -1
  41. package/dist/cjs/adapters/MongoAdapter.d.ts.map +1 -1
  42. package/dist/cjs/adapters/MongoAdapter.js +4 -4
  43. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  44. package/dist/cjs/adapters/OpenSearchAdapter.d.ts +1 -1
  45. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
  46. package/dist/cjs/adapters/OpenSearchAdapter.js +6 -6
  47. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  48. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +1 -1
  49. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  50. package/dist/cjs/adapters/PostgreSQLAdapter.js +12 -12
  51. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  52. package/dist/cjs/adapters/PrismaAdapter.d.ts +1 -1
  53. package/dist/cjs/adapters/PrismaAdapter.d.ts.map +1 -1
  54. package/dist/cjs/adapters/PrismaAdapter.js +7 -7
  55. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  56. package/dist/cjs/adapters/RedisAdapter.d.ts +1 -1
  57. package/dist/cjs/adapters/RedisAdapter.d.ts.map +1 -1
  58. package/dist/cjs/adapters/RedisAdapter.js +13 -13
  59. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  60. package/dist/cjs/adapters/SQLiteAdapter.d.ts +1 -1
  61. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  62. package/dist/cjs/adapters/SQLiteAdapter.js +8 -8
  63. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  64. package/dist/cjs/adapters/index.d.ts +13 -13
  65. package/dist/cjs/adapters/index.d.ts.map +1 -1
  66. package/dist/cjs/adapters/index.js +14 -14
  67. package/dist/cjs/adapters/index.js.map +1 -1
  68. package/dist/cjs/adapters/sessionRow.d.ts +1 -1
  69. package/dist/cjs/adapters/sessionRow.d.ts.map +1 -1
  70. package/dist/cjs/core/Agent.d.ts +11 -11
  71. package/dist/cjs/core/Agent.d.ts.map +1 -1
  72. package/dist/cjs/core/Agent.js +65 -65
  73. package/dist/cjs/core/Agent.js.map +1 -1
  74. package/dist/cjs/core/AutoChainExecutor.d.ts +5 -5
  75. package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -1
  76. package/dist/cjs/core/AutoChainExecutor.js +26 -26
  77. package/dist/cjs/core/AutoChainExecutor.js.map +1 -1
  78. package/dist/cjs/core/BranchEvaluator.d.ts +4 -4
  79. package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -1
  80. package/dist/cjs/core/BranchEvaluator.js +6 -6
  81. package/dist/cjs/core/BranchEvaluator.js.map +1 -1
  82. package/dist/cjs/core/CompactionEngine.d.ts +2 -2
  83. package/dist/cjs/core/CompactionEngine.d.ts.map +1 -1
  84. package/dist/cjs/core/DirectiveChainTracker.d.ts +1 -1
  85. package/dist/cjs/core/DirectiveChainTracker.d.ts.map +1 -1
  86. package/dist/cjs/core/DirectiveChainTracker.js +5 -5
  87. package/dist/cjs/core/DirectiveChainTracker.js.map +1 -1
  88. package/dist/cjs/core/Events.d.ts +1 -1
  89. package/dist/cjs/core/Events.d.ts.map +1 -1
  90. package/dist/cjs/core/Events.js +15 -15
  91. package/dist/cjs/core/Events.js.map +1 -1
  92. package/dist/cjs/core/Flow.d.ts +4 -4
  93. package/dist/cjs/core/Flow.d.ts.map +1 -1
  94. package/dist/cjs/core/Flow.js +15 -15
  95. package/dist/cjs/core/Flow.js.map +1 -1
  96. package/dist/cjs/core/FlowRouter.d.ts +4 -4
  97. package/dist/cjs/core/FlowRouter.d.ts.map +1 -1
  98. package/dist/cjs/core/FlowRouter.js +64 -64
  99. package/dist/cjs/core/FlowRouter.js.map +1 -1
  100. package/dist/cjs/core/PersistenceManager.d.ts +1 -1
  101. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  102. package/dist/cjs/core/PersistenceManager.js +10 -10
  103. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  104. package/dist/cjs/core/PromptComposer.d.ts +4 -4
  105. package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
  106. package/dist/cjs/core/PromptComposer.js +13 -13
  107. package/dist/cjs/core/PromptComposer.js.map +1 -1
  108. package/dist/cjs/core/PromptSectionCache.d.ts +2 -2
  109. package/dist/cjs/core/PromptSectionCache.d.ts.map +1 -1
  110. package/dist/cjs/core/ResponseEngine.d.ts +4 -4
  111. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  112. package/dist/cjs/core/ResponseEngine.js +7 -7
  113. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  114. package/dist/cjs/core/ResponseModal.d.ts +10 -10
  115. package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
  116. package/dist/cjs/core/ResponseModal.js +69 -69
  117. package/dist/cjs/core/ResponseModal.js.map +1 -1
  118. package/dist/cjs/core/ResponsePipeline.d.ts +15 -7
  119. package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
  120. package/dist/cjs/core/ResponsePipeline.js +99 -91
  121. package/dist/cjs/core/ResponsePipeline.js.map +1 -1
  122. package/dist/cjs/core/SessionFinalizer.d.ts +4 -4
  123. package/dist/cjs/core/SessionFinalizer.d.ts.map +1 -1
  124. package/dist/cjs/core/SessionFinalizer.js +12 -12
  125. package/dist/cjs/core/SessionFinalizer.js.map +1 -1
  126. package/dist/cjs/core/SessionManager.d.ts +5 -5
  127. package/dist/cjs/core/SessionManager.d.ts.map +1 -1
  128. package/dist/cjs/core/SessionManager.js +8 -8
  129. package/dist/cjs/core/SessionManager.js.map +1 -1
  130. package/dist/cjs/core/SignalCoordinator.d.ts +5 -5
  131. package/dist/cjs/core/SignalCoordinator.d.ts.map +1 -1
  132. package/dist/cjs/core/SignalCoordinator.js +12 -12
  133. package/dist/cjs/core/SignalCoordinator.js.map +1 -1
  134. package/dist/cjs/core/SignalEvaluator.d.ts +4 -4
  135. package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -1
  136. package/dist/cjs/core/SignalEvaluator.js +6 -6
  137. package/dist/cjs/core/SignalEvaluator.js.map +1 -1
  138. package/dist/cjs/core/SignalProcessor.d.ts +6 -6
  139. package/dist/cjs/core/SignalProcessor.d.ts.map +1 -1
  140. package/dist/cjs/core/SignalProcessor.js +14 -14
  141. package/dist/cjs/core/SignalProcessor.js.map +1 -1
  142. package/dist/cjs/core/Step.d.ts +5 -5
  143. package/dist/cjs/core/Step.d.ts.map +1 -1
  144. package/dist/cjs/core/Step.js +17 -17
  145. package/dist/cjs/core/Step.js.map +1 -1
  146. package/dist/cjs/core/StepLifecycle.d.ts +3 -3
  147. package/dist/cjs/core/StepLifecycle.d.ts.map +1 -1
  148. package/dist/cjs/core/StepLifecycle.js +10 -10
  149. package/dist/cjs/core/StepLifecycle.js.map +1 -1
  150. package/dist/cjs/core/StreamingToolExecutor.d.ts +1 -1
  151. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -1
  152. package/dist/cjs/core/StreamingToolExecutor.js +5 -5
  153. package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
  154. package/dist/cjs/core/ToolLoopExecutor.d.ts +4 -4
  155. package/dist/cjs/core/ToolLoopExecutor.d.ts.map +1 -1
  156. package/dist/cjs/core/ToolLoopExecutor.js +51 -51
  157. package/dist/cjs/core/ToolLoopExecutor.js.map +1 -1
  158. package/dist/cjs/core/ToolManager.d.ts +5 -5
  159. package/dist/cjs/core/ToolManager.d.ts.map +1 -1
  160. package/dist/cjs/core/ToolManager.js +66 -66
  161. package/dist/cjs/core/ToolManager.js.map +1 -1
  162. package/dist/cjs/core/createAgent.d.ts +2 -2
  163. package/dist/cjs/core/createAgent.d.ts.map +1 -1
  164. package/dist/cjs/core/createAgent.js +2 -2
  165. package/dist/cjs/core/createAgent.js.map +1 -1
  166. package/dist/cjs/core/flow-namespace.d.ts +2 -2
  167. package/dist/cjs/core/flow-namespace.d.ts.map +1 -1
  168. package/dist/cjs/core/flow-namespace.js +4 -4
  169. package/dist/cjs/core/flow-namespace.js.map +1 -1
  170. package/dist/cjs/core/toolGates.d.ts +1 -1
  171. package/dist/cjs/core/toolGates.d.ts.map +1 -1
  172. package/dist/cjs/core/toolGates.js +3 -3
  173. package/dist/cjs/core/toolGates.js.map +1 -1
  174. package/dist/cjs/index.d.ts +50 -48
  175. package/dist/cjs/index.d.ts.map +1 -1
  176. package/dist/cjs/index.js +96 -91
  177. package/dist/cjs/index.js.map +1 -1
  178. package/dist/cjs/providers/AnthropicProvider.d.ts +25 -42
  179. package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -1
  180. package/dist/cjs/providers/AnthropicProvider.js +32 -408
  181. package/dist/cjs/providers/AnthropicProvider.js.map +1 -1
  182. package/dist/cjs/providers/DeepSeekProvider.d.ts +13 -34
  183. package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -1
  184. package/dist/cjs/providers/DeepSeekProvider.js +17 -51
  185. package/dist/cjs/providers/DeepSeekProvider.js.map +1 -1
  186. package/dist/cjs/providers/GeminiProvider.d.ts +24 -83
  187. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  188. package/dist/cjs/providers/GeminiProvider.js +33 -514
  189. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  190. package/dist/cjs/providers/GenericOpenAICompatibleProvider.d.ts +9 -10
  191. package/dist/cjs/providers/GenericOpenAICompatibleProvider.d.ts.map +1 -1
  192. package/dist/cjs/providers/GenericOpenAICompatibleProvider.js +14 -20
  193. package/dist/cjs/providers/GenericOpenAICompatibleProvider.js.map +1 -1
  194. package/dist/cjs/providers/OpenAICompatibleProvider.d.ts +26 -144
  195. package/dist/cjs/providers/OpenAICompatibleProvider.d.ts.map +1 -1
  196. package/dist/cjs/providers/OpenAICompatibleProvider.js +42 -523
  197. package/dist/cjs/providers/OpenAICompatibleProvider.js.map +1 -1
  198. package/dist/cjs/providers/OpenAIProvider.d.ts +14 -20
  199. package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
  200. package/dist/cjs/providers/OpenAIProvider.js +20 -27
  201. package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
  202. package/dist/cjs/providers/OpenRouterProvider.d.ts +20 -24
  203. package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
  204. package/dist/cjs/providers/OpenRouterProvider.js +22 -38
  205. package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
  206. package/dist/cjs/providers/ProviderAdapter.d.ts +102 -0
  207. package/dist/cjs/providers/ProviderAdapter.d.ts.map +1 -0
  208. package/dist/cjs/providers/ProviderAdapter.js +257 -0
  209. package/dist/cjs/providers/ProviderAdapter.js.map +1 -0
  210. package/dist/cjs/providers/index.d.ts +21 -18
  211. package/dist/cjs/providers/index.d.ts.map +1 -1
  212. package/dist/cjs/providers/index.js +23 -21
  213. package/dist/cjs/providers/index.js.map +1 -1
  214. package/dist/cjs/types/agent.d.ts +11 -11
  215. package/dist/cjs/types/agent.d.ts.map +1 -1
  216. package/dist/cjs/types/ai.d.ts +11 -21
  217. package/dist/cjs/types/ai.d.ts.map +1 -1
  218. package/dist/cjs/types/compaction.d.ts +2 -2
  219. package/dist/cjs/types/compaction.d.ts.map +1 -1
  220. package/dist/cjs/types/errors.d.ts +16 -20
  221. package/dist/cjs/types/errors.d.ts.map +1 -1
  222. package/dist/cjs/types/errors.js +17 -18
  223. package/dist/cjs/types/errors.js.map +1 -1
  224. package/dist/cjs/types/flow.d.ts +7 -7
  225. package/dist/cjs/types/flow.d.ts.map +1 -1
  226. package/dist/cjs/types/history.d.ts +1 -1
  227. package/dist/cjs/types/history.d.ts.map +1 -1
  228. package/dist/cjs/types/index.d.ts +17 -17
  229. package/dist/cjs/types/index.d.ts.map +1 -1
  230. package/dist/cjs/types/index.js +14 -14
  231. package/dist/cjs/types/index.js.map +1 -1
  232. package/dist/cjs/types/persistence.d.ts +2 -2
  233. package/dist/cjs/types/persistence.d.ts.map +1 -1
  234. package/dist/cjs/types/session.d.ts +4 -4
  235. package/dist/cjs/types/session.d.ts.map +1 -1
  236. package/dist/cjs/types/signals.d.ts +3 -3
  237. package/dist/cjs/types/signals.d.ts.map +1 -1
  238. package/dist/cjs/types/template.d.ts +2 -2
  239. package/dist/cjs/types/template.d.ts.map +1 -1
  240. package/dist/cjs/types/tool.d.ts +2 -2
  241. package/dist/cjs/types/tool.d.ts.map +1 -1
  242. package/dist/cjs/utils/condition.d.ts +1 -1
  243. package/dist/cjs/utils/condition.d.ts.map +1 -1
  244. package/dist/cjs/utils/condition.js +6 -6
  245. package/dist/cjs/utils/condition.js.map +1 -1
  246. package/dist/cjs/utils/event.d.ts +1 -1
  247. package/dist/cjs/utils/event.d.ts.map +1 -1
  248. package/dist/cjs/utils/event.js +2 -2
  249. package/dist/cjs/utils/event.js.map +1 -1
  250. package/dist/cjs/utils/history.d.ts +2 -2
  251. package/dist/cjs/utils/history.d.ts.map +1 -1
  252. package/dist/cjs/utils/history.js +15 -15
  253. package/dist/cjs/utils/history.js.map +1 -1
  254. package/dist/cjs/utils/index.d.ts +11 -13
  255. package/dist/cjs/utils/index.d.ts.map +1 -1
  256. package/dist/cjs/utils/index.js +57 -67
  257. package/dist/cjs/utils/index.js.map +1 -1
  258. package/dist/cjs/utils/serialize.d.ts +2 -2
  259. package/dist/cjs/utils/serialize.d.ts.map +1 -1
  260. package/dist/cjs/utils/session.d.ts +3 -3
  261. package/dist/cjs/utils/session.d.ts.map +1 -1
  262. package/dist/cjs/utils/session.js +4 -4
  263. package/dist/cjs/utils/session.js.map +1 -1
  264. package/dist/cjs/utils/template.d.ts +3 -3
  265. package/dist/cjs/utils/template.d.ts.map +1 -1
  266. package/dist/cjs/utils/template.js +5 -5
  267. package/dist/cjs/utils/template.js.map +1 -1
  268. package/dist/constants/index.d.ts +1 -0
  269. package/dist/constants/index.js +1 -1
  270. package/dist/core/Agent.d.ts +11 -11
  271. package/dist/core/Agent.d.ts.map +1 -1
  272. package/dist/core/Agent.js +13 -13
  273. package/dist/core/Agent.js.map +1 -1
  274. package/dist/core/AutoChainExecutor.d.ts +5 -5
  275. package/dist/core/AutoChainExecutor.d.ts.map +1 -1
  276. package/dist/core/AutoChainExecutor.js +5 -5
  277. package/dist/core/AutoChainExecutor.js.map +1 -1
  278. package/dist/core/BranchEvaluator.d.ts +4 -4
  279. package/dist/core/BranchEvaluator.d.ts.map +1 -1
  280. package/dist/core/BranchEvaluator.js +2 -2
  281. package/dist/core/BranchEvaluator.js.map +1 -1
  282. package/dist/core/CompactionEngine.d.ts +2 -2
  283. package/dist/core/CompactionEngine.d.ts.map +1 -1
  284. package/dist/core/DirectiveChainTracker.d.ts +1 -1
  285. package/dist/core/DirectiveChainTracker.d.ts.map +1 -1
  286. package/dist/core/DirectiveChainTracker.js +2 -2
  287. package/dist/core/DirectiveChainTracker.js.map +1 -1
  288. package/dist/core/Events.d.ts +1 -1
  289. package/dist/core/Events.d.ts.map +1 -1
  290. package/dist/core/Events.js +1 -1
  291. package/dist/core/Events.js.map +1 -1
  292. package/dist/core/Flow.d.ts +4 -4
  293. package/dist/core/Flow.d.ts.map +1 -1
  294. package/dist/core/Flow.js +3 -3
  295. package/dist/core/Flow.js.map +1 -1
  296. package/dist/core/FlowRouter.d.ts +4 -4
  297. package/dist/core/FlowRouter.d.ts.map +1 -1
  298. package/dist/core/FlowRouter.js +4 -4
  299. package/dist/core/FlowRouter.js.map +1 -1
  300. package/dist/core/PersistenceManager.d.ts +1 -1
  301. package/dist/core/PersistenceManager.d.ts.map +1 -1
  302. package/dist/core/PersistenceManager.js +3 -3
  303. package/dist/core/PersistenceManager.js.map +1 -1
  304. package/dist/core/PromptComposer.d.ts +4 -4
  305. package/dist/core/PromptComposer.d.ts.map +1 -1
  306. package/dist/core/PromptComposer.js +3 -3
  307. package/dist/core/PromptComposer.js.map +1 -1
  308. package/dist/core/PromptSectionCache.d.ts +2 -2
  309. package/dist/core/PromptSectionCache.d.ts.map +1 -1
  310. package/dist/core/ResponseEngine.d.ts +4 -4
  311. package/dist/core/ResponseEngine.d.ts.map +1 -1
  312. package/dist/core/ResponseEngine.js +2 -2
  313. package/dist/core/ResponseEngine.js.map +1 -1
  314. package/dist/core/ResponseModal.d.ts +10 -10
  315. package/dist/core/ResponseModal.d.ts.map +1 -1
  316. package/dist/core/ResponseModal.js +14 -14
  317. package/dist/core/ResponseModal.js.map +1 -1
  318. package/dist/core/ResponsePipeline.d.ts +15 -7
  319. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  320. package/dist/core/ResponsePipeline.js +25 -17
  321. package/dist/core/ResponsePipeline.js.map +1 -1
  322. package/dist/core/SessionFinalizer.d.ts +4 -4
  323. package/dist/core/SessionFinalizer.d.ts.map +1 -1
  324. package/dist/core/SessionFinalizer.js +3 -3
  325. package/dist/core/SessionFinalizer.js.map +1 -1
  326. package/dist/core/SessionManager.d.ts +5 -5
  327. package/dist/core/SessionManager.d.ts.map +1 -1
  328. package/dist/core/SessionManager.js +3 -3
  329. package/dist/core/SessionManager.js.map +1 -1
  330. package/dist/core/SignalCoordinator.d.ts +5 -5
  331. package/dist/core/SignalCoordinator.d.ts.map +1 -1
  332. package/dist/core/SignalCoordinator.js +2 -2
  333. package/dist/core/SignalCoordinator.js.map +1 -1
  334. package/dist/core/SignalEvaluator.d.ts +4 -4
  335. package/dist/core/SignalEvaluator.d.ts.map +1 -1
  336. package/dist/core/SignalEvaluator.js +2 -2
  337. package/dist/core/SignalEvaluator.js.map +1 -1
  338. package/dist/core/SignalProcessor.d.ts +6 -6
  339. package/dist/core/SignalProcessor.d.ts.map +1 -1
  340. package/dist/core/SignalProcessor.js +3 -3
  341. package/dist/core/SignalProcessor.js.map +1 -1
  342. package/dist/core/Step.d.ts +5 -5
  343. package/dist/core/Step.d.ts.map +1 -1
  344. package/dist/core/Step.js +4 -4
  345. package/dist/core/Step.js.map +1 -1
  346. package/dist/core/StepLifecycle.d.ts +3 -3
  347. package/dist/core/StepLifecycle.d.ts.map +1 -1
  348. package/dist/core/StepLifecycle.js +2 -2
  349. package/dist/core/StepLifecycle.js.map +1 -1
  350. package/dist/core/StreamingToolExecutor.d.ts +1 -1
  351. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  352. package/dist/core/StreamingToolExecutor.js +2 -2
  353. package/dist/core/StreamingToolExecutor.js.map +1 -1
  354. package/dist/core/ToolLoopExecutor.d.ts +4 -4
  355. package/dist/core/ToolLoopExecutor.d.ts.map +1 -1
  356. package/dist/core/ToolLoopExecutor.js +3 -3
  357. package/dist/core/ToolLoopExecutor.js.map +1 -1
  358. package/dist/core/ToolManager.d.ts +5 -5
  359. package/dist/core/ToolManager.d.ts.map +1 -1
  360. package/dist/core/ToolManager.js +4 -4
  361. package/dist/core/ToolManager.js.map +1 -1
  362. package/dist/core/createAgent.d.ts +2 -2
  363. package/dist/core/createAgent.d.ts.map +1 -1
  364. package/dist/core/createAgent.js +1 -1
  365. package/dist/core/createAgent.js.map +1 -1
  366. package/dist/core/flow-namespace.d.ts +2 -2
  367. package/dist/core/flow-namespace.d.ts.map +1 -1
  368. package/dist/core/flow-namespace.js +1 -1
  369. package/dist/core/flow-namespace.js.map +1 -1
  370. package/dist/core/toolGates.d.ts +1 -1
  371. package/dist/core/toolGates.d.ts.map +1 -1
  372. package/dist/core/toolGates.js +1 -1
  373. package/dist/core/toolGates.js.map +1 -1
  374. package/dist/index.d.ts +50 -48
  375. package/dist/index.d.ts.map +1 -1
  376. package/dist/index.js +34 -31
  377. package/dist/index.js.map +1 -1
  378. package/dist/providers/AnthropicProvider.d.ts +25 -42
  379. package/dist/providers/AnthropicProvider.d.ts.map +1 -1
  380. package/dist/providers/AnthropicProvider.js +32 -405
  381. package/dist/providers/AnthropicProvider.js.map +1 -1
  382. package/dist/providers/DeepSeekProvider.d.ts +13 -34
  383. package/dist/providers/DeepSeekProvider.d.ts.map +1 -1
  384. package/dist/providers/DeepSeekProvider.js +16 -47
  385. package/dist/providers/DeepSeekProvider.js.map +1 -1
  386. package/dist/providers/GeminiProvider.d.ts +24 -83
  387. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  388. package/dist/providers/GeminiProvider.js +33 -514
  389. package/dist/providers/GeminiProvider.js.map +1 -1
  390. package/dist/providers/GenericOpenAICompatibleProvider.d.ts +9 -10
  391. package/dist/providers/GenericOpenAICompatibleProvider.d.ts.map +1 -1
  392. package/dist/providers/GenericOpenAICompatibleProvider.js +13 -16
  393. package/dist/providers/GenericOpenAICompatibleProvider.js.map +1 -1
  394. package/dist/providers/OpenAICompatibleProvider.d.ts +26 -144
  395. package/dist/providers/OpenAICompatibleProvider.d.ts.map +1 -1
  396. package/dist/providers/OpenAICompatibleProvider.js +41 -522
  397. package/dist/providers/OpenAICompatibleProvider.js.map +1 -1
  398. package/dist/providers/OpenAIProvider.d.ts +14 -20
  399. package/dist/providers/OpenAIProvider.d.ts.map +1 -1
  400. package/dist/providers/OpenAIProvider.js +19 -23
  401. package/dist/providers/OpenAIProvider.js.map +1 -1
  402. package/dist/providers/OpenRouterProvider.d.ts +20 -24
  403. package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
  404. package/dist/providers/OpenRouterProvider.js +21 -34
  405. package/dist/providers/OpenRouterProvider.js.map +1 -1
  406. package/dist/providers/ProviderAdapter.d.ts +102 -0
  407. package/dist/providers/ProviderAdapter.d.ts.map +1 -0
  408. package/dist/providers/ProviderAdapter.js +251 -0
  409. package/dist/providers/ProviderAdapter.js.map +1 -0
  410. package/dist/providers/index.d.ts +21 -18
  411. package/dist/providers/index.d.ts.map +1 -1
  412. package/dist/providers/index.js +13 -10
  413. package/dist/providers/index.js.map +1 -1
  414. package/dist/types/agent.d.ts +11 -11
  415. package/dist/types/agent.d.ts.map +1 -1
  416. package/dist/types/ai.d.ts +11 -21
  417. package/dist/types/ai.d.ts.map +1 -1
  418. package/dist/types/compaction.d.ts +2 -2
  419. package/dist/types/compaction.d.ts.map +1 -1
  420. package/dist/types/errors.d.ts +16 -20
  421. package/dist/types/errors.d.ts.map +1 -1
  422. package/dist/types/errors.js +15 -16
  423. package/dist/types/errors.js.map +1 -1
  424. package/dist/types/flow.d.ts +7 -7
  425. package/dist/types/flow.d.ts.map +1 -1
  426. package/dist/types/history.d.ts +1 -1
  427. package/dist/types/history.d.ts.map +1 -1
  428. package/dist/types/index.d.ts +17 -17
  429. package/dist/types/index.d.ts.map +1 -1
  430. package/dist/types/index.js +4 -4
  431. package/dist/types/index.js.map +1 -1
  432. package/dist/types/persistence.d.ts +2 -2
  433. package/dist/types/persistence.d.ts.map +1 -1
  434. package/dist/types/session.d.ts +4 -4
  435. package/dist/types/session.d.ts.map +1 -1
  436. package/dist/types/signals.d.ts +3 -3
  437. package/dist/types/signals.d.ts.map +1 -1
  438. package/dist/types/template.d.ts +2 -2
  439. package/dist/types/template.d.ts.map +1 -1
  440. package/dist/types/tool.d.ts +2 -2
  441. package/dist/types/tool.d.ts.map +1 -1
  442. package/dist/utils/condition.d.ts +1 -1
  443. package/dist/utils/condition.d.ts.map +1 -1
  444. package/dist/utils/condition.js +2 -2
  445. package/dist/utils/condition.js.map +1 -1
  446. package/dist/utils/event.d.ts +1 -1
  447. package/dist/utils/event.d.ts.map +1 -1
  448. package/dist/utils/event.js +1 -1
  449. package/dist/utils/event.js.map +1 -1
  450. package/dist/utils/history.d.ts +2 -2
  451. package/dist/utils/history.d.ts.map +1 -1
  452. package/dist/utils/history.js +1 -1
  453. package/dist/utils/history.js.map +1 -1
  454. package/dist/utils/index.d.ts +11 -13
  455. package/dist/utils/index.d.ts.map +1 -1
  456. package/dist/utils/index.js +11 -12
  457. package/dist/utils/index.js.map +1 -1
  458. package/dist/utils/serialize.d.ts +2 -2
  459. package/dist/utils/serialize.d.ts.map +1 -1
  460. package/dist/utils/session.d.ts +3 -3
  461. package/dist/utils/session.d.ts.map +1 -1
  462. package/dist/utils/session.js +2 -2
  463. package/dist/utils/session.js.map +1 -1
  464. package/dist/utils/template.d.ts +3 -3
  465. package/dist/utils/template.d.ts.map +1 -1
  466. package/dist/utils/template.js +1 -1
  467. package/dist/utils/template.js.map +1 -1
  468. package/docs/reference/branches.md +2 -0
  469. package/docs/reference/errors.md +5 -5
  470. package/docs/reference/providers.md +42 -43
  471. package/examples/01-quickstart.ts +1 -1
  472. package/examples/04-instructions.ts +1 -1
  473. package/examples/05-branching.ts +2 -2
  474. package/examples/08-persistence.ts +1 -1
  475. package/examples/tsconfig.json +6 -3
  476. package/package.json +11 -8
  477. package/src/adapters/MemoryAdapter.ts +4 -4
  478. package/src/adapters/MongoAdapter.ts +3 -3
  479. package/src/adapters/OpenSearchAdapter.ts +4 -4
  480. package/src/adapters/PostgreSQLAdapter.ts +4 -4
  481. package/src/adapters/PrismaAdapter.ts +4 -4
  482. package/src/adapters/RedisAdapter.ts +4 -4
  483. package/src/adapters/SQLiteAdapter.ts +4 -4
  484. package/src/adapters/index.ts +13 -13
  485. package/src/adapters/sessionRow.ts +1 -1
  486. package/src/core/Agent.ts +18 -18
  487. package/src/core/AutoChainExecutor.ts +9 -9
  488. package/src/core/BranchEvaluator.ts +5 -5
  489. package/src/core/CompactionEngine.ts +2 -2
  490. package/src/core/DirectiveChainTracker.ts +3 -3
  491. package/src/core/Events.ts +2 -2
  492. package/src/core/Flow.ts +9 -9
  493. package/src/core/FlowRouter.ts +8 -8
  494. package/src/core/PersistenceManager.ts +4 -4
  495. package/src/core/PromptComposer.ts +8 -8
  496. package/src/core/PromptSectionCache.ts +2 -2
  497. package/src/core/ResponseEngine.ts +6 -6
  498. package/src/core/ResponseModal.ts +24 -24
  499. package/src/core/ResponsePipeline.ts +43 -23
  500. package/src/core/SessionFinalizer.ts +7 -7
  501. package/src/core/SessionManager.ts +7 -7
  502. package/src/core/SignalCoordinator.ts +7 -7
  503. package/src/core/SignalEvaluator.ts +6 -6
  504. package/src/core/SignalProcessor.ts +9 -9
  505. package/src/core/Step.ts +9 -9
  506. package/src/core/StepLifecycle.ts +6 -6
  507. package/src/core/StreamingToolExecutor.ts +4 -4
  508. package/src/core/ToolLoopExecutor.ts +7 -7
  509. package/src/core/ToolManager.ts +9 -9
  510. package/src/core/createAgent.ts +2 -2
  511. package/src/core/flow-namespace.ts +3 -3
  512. package/src/core/toolGates.ts +2 -2
  513. package/src/index.ts +59 -48
  514. package/src/providers/AnthropicProvider.ts +46 -548
  515. package/src/providers/DeepSeekProvider.ts +27 -92
  516. package/src/providers/GeminiProvider.ts +44 -680
  517. package/src/providers/GenericOpenAICompatibleProvider.ts +19 -27
  518. package/src/providers/OpenAICompatibleProvider.ts +60 -763
  519. package/src/providers/OpenAIProvider.ts +31 -55
  520. package/src/providers/OpenRouterProvider.ts +40 -70
  521. package/src/providers/ProviderAdapter.ts +377 -0
  522. package/src/providers/index.ts +21 -23
  523. package/src/types/agent.ts +11 -11
  524. package/src/types/ai.ts +11 -21
  525. package/src/types/compaction.ts +2 -2
  526. package/src/types/errors.ts +17 -35
  527. package/src/types/flow.ts +7 -7
  528. package/src/types/history.ts +1 -1
  529. package/src/types/index.ts +17 -17
  530. package/src/types/persistence.ts +2 -2
  531. package/src/types/session.ts +4 -4
  532. package/src/types/signals.ts +3 -3
  533. package/src/types/template.ts +2 -2
  534. package/src/types/tool.ts +2 -2
  535. package/src/utils/condition.ts +3 -3
  536. package/src/utils/event.ts +1 -1
  537. package/src/utils/history.ts +3 -3
  538. package/src/utils/index.ts +11 -31
  539. package/src/utils/serialize.ts +2 -2
  540. package/src/utils/session.ts +6 -6
  541. package/src/utils/template.ts +3 -3
  542. package/dist/cjs/providers/errorClassification.d.ts +0 -68
  543. package/dist/cjs/providers/errorClassification.d.ts.map +0 -1
  544. package/dist/cjs/providers/errorClassification.js +0 -150
  545. package/dist/cjs/providers/errorClassification.js.map +0 -1
  546. package/dist/cjs/utils/retry.d.ts +0 -165
  547. package/dist/cjs/utils/retry.d.ts.map +0 -1
  548. package/dist/cjs/utils/retry.js +0 -338
  549. package/dist/cjs/utils/retry.js.map +0 -1
  550. package/dist/providers/errorClassification.d.ts +0 -68
  551. package/dist/providers/errorClassification.d.ts.map +0 -1
  552. package/dist/providers/errorClassification.js +0 -142
  553. package/dist/providers/errorClassification.js.map +0 -1
  554. package/dist/utils/retry.d.ts +0 -165
  555. package/dist/utils/retry.d.ts.map +0 -1
  556. package/dist/utils/retry.js +0 -327
  557. package/dist/utils/retry.js.map +0 -1
  558. package/src/providers/errorClassification.ts +0 -206
  559. package/src/utils/retry.ts +0 -523
@@ -11,15 +11,17 @@ order: 10
11
11
 
12
12
  Providers are the strategy plug between an `Agent` and a model vendor. Every provider implements the same `AiProvider` interface, so the Agent itself stays vendor-agnostic. Pass an instance to `createAgent({ provider })` and the agent talks to that vendor for every turn (and for compaction, if you wire it in).
13
13
 
14
- `@falai/agent` ships five built-in providers. All five accept an `apiKey` and a required `model`, support `backupModels` for automatic failover on overload or 5xx, and accept a vendor-typed `config` object that flows through to the underlying SDK.
14
+ `@falai/agent` ships five built-in providers. All five accept an `apiKey` and a required `model`, support `backupModels` for automatic failover, and take the same neutral `RequestConfig` for sampling defaults.
15
15
 
16
- | Provider | Class | Options | SDK |
17
- |----------|-------|---------|-----|
18
- | Google Gemini | `GeminiProvider` | `GeminiProviderOptions` | `@google/genai` |
19
- | OpenAI | `OpenAIProvider` | `OpenAIProviderOptions` | `openai` |
20
- | Anthropic Claude | `AnthropicProvider` | `AnthropicProviderOptions` | `@anthropic-ai/sdk` |
21
- | OpenRouter | `OpenRouterProvider` | `OpenRouterProviderOptions` | `openai` (compat) |
22
- | DeepSeek | `DeepSeekProvider` | `DeepSeekProviderOptions` | `openai` (compat) |
16
+ There are no vendor SDKs behind them. Every provider is a thin binding over [`@providerkit/core`](https://www.npmjs.com/package/@providerkit/core), which speaks each vendor's REST API over `fetch` — so installing this package does not install one vendor's SDK for a consumer who uses another.
17
+
18
+ | Provider | Class | Options | Wire |
19
+ |----------|-------|---------|------|
20
+ | Google Gemini | `GeminiProvider` | `GeminiProviderOptions` | `generateContent` (SSE) |
21
+ | OpenAI | `OpenAIProvider` | `OpenAIProviderOptions` | Responses API |
22
+ | Anthropic Claude | `AnthropicProvider` | `AnthropicProviderOptions` | Messages API |
23
+ | OpenRouter | `OpenRouterProvider` | `OpenRouterProviderOptions` | chat completions |
24
+ | DeepSeek | `DeepSeekProvider` | `DeepSeekProviderOptions` | chat completions |
23
25
 
24
26
  ## Capabilities
25
27
 
@@ -86,9 +88,10 @@ interface GeminiProviderOptions {
86
88
  apiKey: string;
87
89
  model: string;
88
90
  backupModels?: string[];
89
- config?: Partial<GenerateContentConfig>; // from @google/genai
91
+ baseUrl?: string;
92
+ config?: RequestConfig; // temperature, topP, maxTokens, stopSequences
90
93
  retryConfig?: { timeout?: number; retries?: number };
91
- client?: GoogleGenAI; // pre-configured SDK client override
94
+ fetchImpl?: typeof fetch; // scripted wire, for tests
92
95
  }
93
96
  ```
94
97
 
@@ -140,7 +143,7 @@ interface OpenAIProviderOptions {
140
143
  | `organization` | `string` | no | — | Forwarded as `OpenAI-Organization`. |
141
144
  | `model` | `string` | yes | — | e.g. `"gpt-5.6"`, `"gpt-5.4-mini"`. |
142
145
  | `backupModels` | `string[]` | no | `[]` | Tried in order on overload/rate-limit errors. |
143
- | `config` | OpenAI params | no | — | Defaults for `temperature`, `top_p`, etc. |
146
+ | `config` | `RequestConfig` | no | — | Defaults for `temperature`, `topP`, `maxTokens`, `stopSequences`. |
144
147
  | `retryConfig.timeout` | `number` | no | `60000` | Per-attempt timeout in ms. |
145
148
  | `retryConfig.retries` | `number` | no | `3` | Total attempts. |
146
149
 
@@ -179,7 +182,7 @@ interface AnthropicProviderOptions {
179
182
  | `apiKey` | `string` | yes* | — | Throws if empty (unless `client` is set). |
180
183
  | `model` | `string` | yes | — | e.g. `"claude-sonnet-5"`, `"claude-opus-5"`. |
181
184
  | `backupModels` | `string[]` | no | `[]` | Tried in order on retriable failures (rate limits, overload incl. 529, timeouts, network). |
182
- | `config` | Anthropic params | no | — | Defaults for `max_tokens`, `system`, etc. The provider sets `max_tokens=4096` if neither `config.max_tokens` nor `parameters.maxOutputTokens` is set. |
185
+ | `config` | `RequestConfig` | no | — | Defaults for `temperature`, `topP`, `maxTokens`, `stopSequences`. `maxTokens` falls back to 4096 if neither it nor `parameters.maxOutputTokens` is set. |
183
186
  | `retryConfig.timeout` | `number` | no | `60000` | Per-attempt timeout in ms. On streams it also bounds time-to-first-token. |
184
187
  | `retryConfig.retries` | `number` | no | `3` | Total attempts. |
185
188
  | `client` | `Anthropic` | no | — | Pre-configured SDK client; overrides the internally-constructed one. Intended for tests injecting scripted transports; production callers should pass `apiKey`. |
@@ -190,7 +193,7 @@ interface AnthropicProviderOptions {
190
193
  const anthropic = new AnthropicProvider({
191
194
  apiKey: process.env.ANTHROPIC_API_KEY!,
192
195
  model: "claude-sonnet-5",
193
- config: { max_tokens: 8192 },
196
+ config: { maxTokens: 8192 },
194
197
  });
195
198
  ```
196
199
 
@@ -282,12 +285,11 @@ const deepseek = new DeepSeekProvider({
282
285
 
283
286
  ## Building a custom OpenAI-compatible provider
284
287
 
285
- Many vendors (Groq, Together, Fireworks, …) expose OpenAI-compatible chat-completions APIs. Instead of implementing `AiProvider` from scratch, subclass the exported `OpenAICompatibleProvider` base class — it handles message/history building, tool-call parsing, streaming chunks, backup-model fallback, retries, schema passthrough, and normalized `ProviderError` wrapping. `OpenAIProvider`, `OpenRouterProvider`, and `DeepSeekProvider` are themselves thin subclasses.
288
+ Many vendors (Groq, Together, Fireworks, …) expose OpenAI-compatible chat-completions APIs. Instead of implementing `AiProvider` from scratch, subclass the exported `OpenAICompatibleProvider` base class — history and tool translation, streaming, tool-call assembly, backup-model fallback, retries and normalized `ProviderError`s all come with it. `OpenAIProvider`, `OpenRouterProvider`, and `DeepSeekProvider` are themselves thin subclasses.
286
289
 
287
- A minimal subclass supplies the configured client, naming, and capabilities:
290
+ A minimal subclass supplies the endpoint, naming, and capabilities:
288
291
 
289
292
  ```typescript
290
- import OpenAI from "openai";
291
293
  import {
292
294
  OpenAICompatibleProvider,
293
295
  type ProviderCapabilities,
@@ -303,23 +305,20 @@ export class GroqProvider extends OpenAICompatibleProvider {
303
305
  supportsPromptCaching: false,
304
306
  };
305
307
 
306
- protected readonly logLabel = "GROQ"; // tag in log lines
307
- protected readonly displayName = "Groq"; // name in retry/error messages
308
-
309
308
  constructor(options: { apiKey: string; model: string; backupModels?: string[] }) {
310
309
  super({
311
- client: new OpenAI({
312
- apiKey: options.apiKey,
313
- baseURL: "https://api.groq.com/openai/v1",
314
- }),
310
+ id: "groq",
311
+ apiKey: options.apiKey,
312
+ baseUrl: "https://api.groq.com/openai",
315
313
  model: options.model,
314
+ structuredOutput: "json_schema",
316
315
  backupModels: options.backupModels,
317
316
  });
318
317
  }
319
318
  }
320
319
  ```
321
320
 
322
- That is a complete, working provider. For genuinely vendor-specific behavior, override the protected hooks `DeepSeekProvider` is the reference pattern: it overrides `executeStructuredGenerate` (no `responses.parse` API), `structuredResponseFormat` (native `json_schema` enforcement), `configureStreamParams` (usage in stream chunks), and `onStreamDelta` (reasoning content on the delta).
321
+ That is a complete, working provider. Vendor-specific wire behaviour is not this layer's job any more: it lives in `@providerkit/core`, which the provider classes are thin bindings over. `DeepSeekProvider` is the reference pattern for what is left here — an id, a base URL, the structured-output mode the endpoint actually supports, and its capabilities. To bind a core provider this package does not ship a class for, subclass `ProviderAdapter` directly.
323
322
 
324
323
  ## Errors
325
324
 
@@ -333,7 +332,11 @@ All five providers share the same construction-time guards and runtime failure m
333
332
  | Primary and every backup model fail | `ProviderError` with a normalized `code` | After exhausting retries and `backupModels`. Propagates bare out of `respond()`. |
334
333
  | Anthropic streaming with `system: undefined` | Vendor 400 | Set `config.system` or rely on history-derived system messages. |
335
334
 
336
- The retry/backup logic only kicks in for **transient** errors: rate limits (429), overload/availability (500/503, Anthropic's 529, `overloaded`-style codes and messages such as `overloaded`, `unavailable`, `internal error`, or OpenRouter's `capacity`), timeouts, and network faults. Deterministic failures — auth (401/403), invalid requests (400/404/422), and caller aborts — fail fast without burning the retry budget. On streaming calls, only failures *before the first chunk* are retried; `retryConfig.timeout` doubles as the time-to-first-token deadline so a stream that opens and stalls is treated as failed.
335
+ The retry/backup logic only kicks in for **transient** errors: rate limits, overload and availability, timeouts, and network faults. Deterministic failures — a wrong key, an exhausted balance, an invalid request, a caller's abort — fail fast without burning the retry budget. Classification reads the response BODY before its status, because vendors file the same cause under whatever status they like.
336
+
337
+ Only failures *before the first chunk* are retried: past that the stream is committed, and a retry would replay text the reader has already seen. The same rule governs the walk to a backup model. `retryConfig.timeout` is the silence deadline — the wait allowed before the first byte, and between any two after it — so a stream that opens and stalls is treated as failed while a long, healthy one is left alone.
338
+
339
+ A model the endpoint will not serve also walks to the next model on the list, which is what the list is for.
337
340
 
338
341
  ### `ProviderError`
339
342
 
@@ -342,24 +345,20 @@ Terminal failures — after retries and backup models are exhausted — throw th
342
345
  ```typescript
343
346
  import { ProviderError } from "@falai/agent";
344
347
 
345
- type ProviderErrorCode =
346
- | 'rate_limited' // 429-style throttling
347
- | 'overloaded' // capacity / 503 / 529
348
- | 'auth' // invalid or missing credentials
349
- | 'invalid_request' // vendor rejected the request shape
350
- | 'schema_rejected' // structured-output schema rejected
351
- | 'timeout' // per-attempt timeout exhausted
352
- | 'network' // connection-level failure
353
- | 'unknown'; // anything unclassified
354
-
355
- try {
356
- await provider.generateMessage(input);
357
- } catch (err) {
358
- if (err instanceof ProviderError) {
359
- console.error(err.provider, err.code); // e.g. "openai" "rate_limited"
360
- console.error(err.cause); // original SDK error
361
- }
362
- }
348
+ type ErrorKind =
349
+ | 'aborted' // the caller pressed Stop — never retried
350
+ | 'timeout' // our deadline, or a 408
351
+ | 'network' // never reached the provider
352
+ | 'overload' // theirs and temporary retry, and try another model
353
+ | 'rate' // per-minute throttle — wait, or rotate key or model
354
+ | 'quota' // balance or usage window exhausted — waiting will not fix it
355
+ | 'entitlement' // the plan never included this API
356
+ | 'auth' // the key is wrong, not the request
357
+ | 'model' // the model id is not served here
358
+ | 'context' // the prompt outgrew the window — send less
359
+ | 'content' // safety filter or refusal
360
+ | 'invalid' // any other 4xx — a bug in what we sent
361
+ | 'unknown'
363
362
  ```
364
363
 
365
364
  When the failure surfaces through `agent.respond(...)`, the `ProviderError` propagates **bare** — catch it with `instanceof`, no unwrapping. (On streaming turns, errors arrive wrapped as `ResponseGenerationError` on the final chunk's `error` field, with the original on `.cause`.) See [Errors](./errors.md).
@@ -1,7 +1,7 @@
1
1
  /** @intent Minimal agent: one flow, one step, one response.
2
2
  * @teaches createAgent, GeminiProvider, Flow, Step, respond
3
3
  * @readAfter docs/start/02-first-agent.md */
4
- import { createAgent, GeminiProvider } from "../src";
4
+ import { createAgent, GeminiProvider } from "../src/index.js";
5
5
 
6
6
  if (!process.env.GEMINI_API_KEY) throw new Error("Set GEMINI_API_KEY");
7
7
 
@@ -4,7 +4,7 @@
4
4
  * Read next: docs/guides/instructions.md
5
5
  */
6
6
 
7
- import { createAgent, GeminiProvider } from "../src";
7
+ import { createAgent, GeminiProvider } from "../src/index.js";
8
8
 
9
9
  if (!process.env.GEMINI_API_KEY) throw new Error("Set GEMINI_API_KEY");
10
10
 
@@ -1,8 +1,8 @@
1
1
  /** @intent Demonstrates step.branches — source-local forks with if, when, and Directive targets.
2
2
  * @teaches BranchEntry, BranchMap, if-only fork, when-only fork, combined if+when, mixed targets
3
3
  * @readAfter docs/guides/branching.md */
4
- import { createAgent, GeminiProvider } from "../src";
5
- import type { BranchMap, Directive, FlowOptions, StepOptions } from "../src";
4
+ import { createAgent, GeminiProvider } from "../src/index.js";
5
+ import type { BranchMap, Directive, FlowOptions, StepOptions } from "../src/index.js";
6
6
 
7
7
  // ─── Types ───────────────────────────────────────────────────────────────────
8
8
 
@@ -1,7 +1,7 @@
1
1
  /** @intent Session persistence with MemoryAdapter: implicit default, explicit wiring, and sessionId for cross-turn continuity.
2
2
  * @teaches MemoryAdapter, PersistenceConfig, sessionId, session resumption
3
3
  * @readAfter docs/guides/persistence.md */
4
- import { createAgent, GeminiProvider, MemoryAdapter } from "../src";
4
+ import { createAgent, GeminiProvider, MemoryAdapter } from "../src/index.js";
5
5
 
6
6
  if (!process.env.GEMINI_API_KEY) throw new Error("Set GEMINI_API_KEY");
7
7
 
@@ -1,13 +1,15 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "target": "ES2022",
4
- "module": "ESNext",
4
+ "module": "node16",
5
5
  "lib": [
6
6
  "ES2022",
7
7
  "DOM"
8
8
  ],
9
- "moduleResolution": "bundler",
10
- "types": [],
9
+ "moduleResolution": "node16",
10
+ "types": [
11
+ "node"
12
+ ],
11
13
  "strict": true,
12
14
  "esModuleInterop": true,
13
15
  "skipLibCheck": true,
@@ -15,6 +17,7 @@
15
17
  "resolveJsonModule": true,
16
18
  "allowSyntheticDefaultImports": true,
17
19
  "noEmit": true,
20
+ "allowImportingTsExtensions": true,
18
21
  "paths": {
19
22
  "@falai/agent": [
20
23
  "../src/index.ts"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@falai/agent",
3
- "version": "2.7.0",
3
+ "version": "3.1.0",
4
4
  "description": "Conversational state engine for TypeScript where the AI understands, but the code is in control",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -38,10 +38,11 @@
38
38
  },
39
39
  "homepage": "https://falai.dev",
40
40
  "scripts": {
41
- "build": "bun run build:esm && bun run build:cjs && bun run fix:cjs",
41
+ "build": "bun run build:esm && bun run build:cjs && bun run fix:cjs && bun run check:dist",
42
42
  "build:esm": "tsc",
43
43
  "build:cjs": "tsc --project tsconfig.cjs.json",
44
44
  "fix:cjs": "echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
45
+ "check:dist": "node --input-type=module -e \"import './dist/index.js'\" && node -e \"require('./dist/cjs/index.js')\"",
45
46
  "dev": "tsc --watch",
46
47
  "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.test.json",
47
48
  "typecheck:examples": "tsc --noEmit --project examples/tsconfig.json",
@@ -49,10 +50,11 @@
49
50
  "lint:fix": "eslint src/**/*.ts --fix",
50
51
  "clean": "rm -rf dist",
51
52
  "prebuild": "bun run clean",
52
- "prepublishOnly": "bun run lint && bun run typecheck && bun run build && bun run test",
53
+ "prepublishOnly": "bun run lint && bun run typecheck && bun run typecheck:examples && bun run build && bun run test",
53
54
  "release:patch": "bun pm version patch && bun publish",
54
55
  "release:minor": "bun pm version minor && bun publish",
55
- "release:major": "bun pm version major && bun publish",
56
+ "release:major": "bun pm version major && bun publish && bun run release:pointer",
57
+ "release:pointer": "node -e \"const v=require('./package.json').version,p='./pointer/package.json',j=require(p);j.version=v;j.dependencies['@falai/agent']='^'+v.split('.')[0]+'.0.0';require('fs').writeFileSync(p,JSON.stringify(j,null,2)+'\\n')\" && cd pointer && bun install && bun publish",
56
58
  "release:alpha": "bun publish --tag alpha",
57
59
  "release": "bun publish",
58
60
  "test": "bun test tests/*.test.ts"
@@ -77,6 +79,9 @@
77
79
  ],
78
80
  "author": "Gustavo Salomé <gusnips>",
79
81
  "license": "MIT",
82
+ "engines": {
83
+ "node": ">=22.12"
84
+ },
80
85
  "devDependencies": {
81
86
  "@eslint/js": "^9.17.0",
82
87
  "@types/bun": "^1.3.0",
@@ -88,10 +93,8 @@
88
93
  "typescript-eslint": "^8.18.2"
89
94
  },
90
95
  "dependencies": {
91
- "@anthropic-ai/sdk": "^0.65.0",
92
- "@google/genai": "^2.7.0",
93
- "loglevel": "^1.9.2",
94
- "openai": "^6.3.0"
96
+ "@providerkit/core": "^0.4.1",
97
+ "loglevel": "^1.9.2"
95
98
  },
96
99
  "peerDependencies": {
97
100
  "@opensearch-project/opensearch": "^2.0.0",
@@ -13,10 +13,10 @@ import type {
13
13
  SessionStatus,
14
14
  SessionUpdateOptions,
15
15
  CreateSessionData,
16
- } from "../types";
17
- import { SessionConflictError } from "../types/errors";
18
- import { cloneDeep } from "../utils/clone";
19
- import { createSessionId } from "../utils";
16
+ } from "../types/index.js";
17
+ import { SessionConflictError } from "../types/errors.js";
18
+ import { cloneDeep } from "../utils/clone.js";
19
+ import { createSessionId } from "../utils/index.js";
20
20
 
21
21
  /**
22
22
  * Memory Adapter - Provider-style API for in-memory persistence
@@ -13,9 +13,9 @@ import type {
13
13
  CollectedStateData,
14
14
  CreateSessionData,
15
15
  SessionUpdateOptions,
16
- } from "../types";
17
- import { SessionConflictError } from "../types/errors";
18
- import { createSessionId } from "../utils";
16
+ } from "../types/index.js";
17
+ import { SessionConflictError } from "../types/errors.js";
18
+ import { createSessionId } from "../utils/index.js";
19
19
 
20
20
  /**
21
21
  * MongoDB collection interface - matches mongodb driver
@@ -32,8 +32,8 @@
32
32
  * ```
33
33
  */
34
34
 
35
- import { cloneDeep } from "../utils/clone";
36
- import { createSessionId } from "../utils";
35
+ import { cloneDeep } from "../utils/clone.js";
36
+ import { createSessionId } from "../utils/index.js";
37
37
  import type {
38
38
  PersistenceAdapter,
39
39
  SessionRepository,
@@ -43,8 +43,8 @@ import type {
43
43
  CollectedStateData,
44
44
  CreateSessionData,
45
45
  SessionUpdateOptions,
46
- } from "../types";
47
- import { SessionConflictError } from "../types/errors";
46
+ } from "../types/index.js";
47
+ import { SessionConflictError } from "../types/errors.js";
48
48
 
49
49
  /**
50
50
  * OpenSearch Client interface (minimal typing for the official client)
@@ -26,10 +26,10 @@ import type {
26
26
  SessionStatus,
27
27
  PersistenceAdapter,
28
28
  SessionUpdateOptions,
29
- } from "../types";
30
- import { SessionConflictError } from "../types/errors";
31
- import { createSessionId } from "../utils";
32
- import { deserializeSessionRow } from "./sessionRow";
29
+ } from "../types/index.js";
30
+ import { SessionConflictError } from "../types/errors.js";
31
+ import { createSessionId } from "../utils/index.js";
32
+ import { deserializeSessionRow } from "./sessionRow.js";
33
33
 
34
34
  /**
35
35
  * PostgreSQL query result interface
@@ -15,10 +15,10 @@ import type {
15
15
  Event,
16
16
  CreateSessionData,
17
17
  SessionUpdateOptions,
18
- } from "../types";
19
- import { SessionConflictError } from "../types/errors";
20
- import { logger } from '../utils'
21
- import { createSessionId } from '../utils';
18
+ } from "../types/index.js";
19
+ import { SessionConflictError } from "../types/errors.js";
20
+ import { logger } from '../utils/index.js'
21
+ import { createSessionId } from '../utils/index.js';
22
22
 
23
23
  /**
24
24
  * Prisma model operations
@@ -12,10 +12,10 @@ import type {
12
12
  SessionStatus,
13
13
  CollectedStateData,
14
14
  SessionUpdateOptions,
15
- } from "../types";
16
- import { SessionConflictError } from "../types/errors";
17
- import { createSessionId, logger } from "../utils";
18
- import { coerceDate } from "./sessionRow";
15
+ } from "../types/index.js";
16
+ import { SessionConflictError } from "../types/errors.js";
17
+ import { createSessionId, logger } from "../utils/index.js";
18
+ import { coerceDate } from "./sessionRow.js";
19
19
 
20
20
  /**
21
21
  * Redis client interface - matches ioredis/redis clients
@@ -30,10 +30,10 @@ import type {
30
30
  CollectedStateData,
31
31
  CreateSessionData,
32
32
  SessionUpdateOptions,
33
- } from "../types";
34
- import { SessionConflictError } from "../types/errors";
35
- import { createSessionId } from "../utils";
36
- import { deserializeSessionRow } from "./sessionRow";
33
+ } from "../types/index.js";
34
+ import { SessionConflictError } from "../types/errors.js";
35
+ import { createSessionId } from "../utils/index.js";
36
+ import { deserializeSessionRow } from "./sessionRow.js";
37
37
 
38
38
  /**
39
39
  * SQLite database interface - matches better-sqlite3
@@ -2,42 +2,42 @@
2
2
  * Database adapters for persistence
3
3
  */
4
4
 
5
- export { PrismaAdapter } from "./PrismaAdapter";
5
+ export { PrismaAdapter } from "./PrismaAdapter.js";
6
6
  export type {
7
7
  PrismaClient,
8
8
  FieldMappings,
9
9
  PrismaAdapterOptions,
10
- } from "./PrismaAdapter";
10
+ } from "./PrismaAdapter.js";
11
11
 
12
- export { RedisAdapter } from "./RedisAdapter";
13
- export type { RedisClient, RedisAdapterOptions } from "./RedisAdapter";
12
+ export { RedisAdapter } from "./RedisAdapter.js";
13
+ export type { RedisClient, RedisAdapterOptions } from "./RedisAdapter.js";
14
14
 
15
- export { MongoAdapter } from "./MongoAdapter";
15
+ export { MongoAdapter } from "./MongoAdapter.js";
16
16
  export type {
17
17
  MongoClient,
18
18
  MongoDatabase,
19
19
  MongoCollection,
20
20
  MongoAdapterOptions,
21
- } from "./MongoAdapter";
21
+ } from "./MongoAdapter.js";
22
22
 
23
- export { PostgreSQLAdapter } from "./PostgreSQLAdapter";
23
+ export { PostgreSQLAdapter } from "./PostgreSQLAdapter.js";
24
24
  export type {
25
25
  PgClient,
26
26
  PgQueryResult,
27
27
  PostgreSQLAdapterOptions,
28
- } from "./PostgreSQLAdapter";
28
+ } from "./PostgreSQLAdapter.js";
29
29
 
30
- export { SQLiteAdapter } from "./SQLiteAdapter";
30
+ export { SQLiteAdapter } from "./SQLiteAdapter.js";
31
31
  export type {
32
32
  SqliteDatabase,
33
33
  SqliteStatement,
34
34
  SQLiteAdapterOptions,
35
- } from "./SQLiteAdapter";
35
+ } from "./SQLiteAdapter.js";
36
36
 
37
- export { MemoryAdapter } from "./MemoryAdapter";
37
+ export { MemoryAdapter } from "./MemoryAdapter.js";
38
38
 
39
- export { OpenSearchAdapter } from "./OpenSearchAdapter";
39
+ export { OpenSearchAdapter } from "./OpenSearchAdapter.js";
40
40
  export type {
41
41
  OpenSearchClient,
42
42
  OpenSearchAdapterOptions,
43
- } from "./OpenSearchAdapter";
43
+ } from "./OpenSearchAdapter.js";
@@ -11,7 +11,7 @@ import type {
11
11
  CollectedStateData,
12
12
  SessionData,
13
13
  SessionStatus,
14
- } from "../types";
14
+ } from "../types/index.js";
15
15
 
16
16
  /**
17
17
  * Coerce a raw stored value into a Date. Drivers variously hand back Date
package/src/core/Agent.ts CHANGED
@@ -18,12 +18,12 @@ import type {
18
18
  AiProvider,
19
19
  CompactionOptions,
20
20
  Directive,
21
- } from "../types";
22
- import type { Signal } from "../types/signals";
23
- import { NotImplementedError } from "../types/errors";
24
- import { SignalProcessor } from "./SignalProcessor";
25
- import { SignalEvaluator } from "./SignalEvaluator";
26
- import type { StreamOptions, GenerateOptions, RespondParams, ResponseModalDeps } from "./ResponseModal";
21
+ } from "../types/index.js";
22
+ import type { Signal } from "../types/signals.js";
23
+ import { NotImplementedError } from "../types/errors.js";
24
+ import { SignalProcessor } from "./SignalProcessor.js";
25
+ import { SignalEvaluator } from "./SignalEvaluator.js";
26
+ import type { StreamOptions, GenerateOptions, RespondParams, ResponseModalDeps } from "./ResponseModal.js";
27
27
  import {
28
28
  mergeCollected,
29
29
  enterFlow,
@@ -32,18 +32,18 @@ import {
32
32
  logger,
33
33
  LoggerLevel,
34
34
  generateSignalId,
35
- } from "../utils";
36
-
37
- import { Flow } from "./Flow";
38
- import { Step, FlowConfigurationError as StepFlowConfigurationError } from "./Step";
39
- import { PersistenceManager } from "./PersistenceManager";
40
- import { SessionManager } from "./SessionManager";
41
- import { FlowRouter } from "./FlowRouter";
42
- import { PromptSectionCache } from "./PromptSectionCache";
43
-
44
- import { ResponseModal } from "./ResponseModal";
45
- import { ToolManager } from "./ToolManager";
46
- import { CompactionEngine } from "./CompactionEngine";
35
+ } from "../utils/index.js";
36
+
37
+ import { Flow } from "./Flow.js";
38
+ import { Step, FlowConfigurationError as StepFlowConfigurationError } from "./Step.js";
39
+ import { PersistenceManager } from "./PersistenceManager.js";
40
+ import { SessionManager } from "./SessionManager.js";
41
+ import { FlowRouter } from "./FlowRouter.js";
42
+ import { PromptSectionCache } from "./PromptSectionCache.js";
43
+
44
+ import { ResponseModal } from "./ResponseModal.js";
45
+ import { ToolManager } from "./ToolManager.js";
46
+ import { CompactionEngine } from "./CompactionEngine.js";
47
47
 
48
48
  /**
49
49
  * Error thrown when data validation fails
@@ -15,20 +15,20 @@
15
15
  * Implements Algorithm 1 from `.kiro/specs/auto-steps/design.md`.
16
16
  */
17
17
 
18
- import type { Directive, SessionState } from "../types";
19
- import type { Event } from "../types/history";
20
- import { FlowConfigurationError, Step } from "./Step";
21
- import { Flow } from "./Flow";
22
- import { flow } from "./flow-namespace";
23
- import { enterStep, mergeCollected, logger } from "../utils";
24
- import { createTemplateContext } from "../utils/template";
18
+ import type { Directive, SessionState } from "../types/index.js";
19
+ import type { Event } from "../types/history.js";
20
+ import { FlowConfigurationError, Step } from "./Step.js";
21
+ import { Flow } from "./Flow.js";
22
+ import { flow } from "./flow-namespace.js";
23
+ import { enterStep, mergeCollected, logger } from "../utils/index.js";
24
+ import { createTemplateContext } from "../utils/template.js";
25
25
  import type {
26
26
  StoppedReason,
27
27
  BranchMap,
28
28
  BranchEntry,
29
29
  BranchPredicateContext,
30
- } from "../types/flow";
31
- import { evaluateIfPredicates } from "../utils/condition";
30
+ } from "../types/flow.js";
31
+ import { evaluateIfPredicates } from "../utils/condition.js";
32
32
 
33
33
  /**
34
34
  * The directive-like object that `prepare` may return on auto-steps.
@@ -12,11 +12,11 @@ import type {
12
12
  BranchMap,
13
13
  BranchPredicateContext,
14
14
  Directive,
15
- } from "../types/flow";
16
- import type { AiProvider } from "../types/ai";
17
- import type { Event } from "../types/history";
18
- import { eventsToHistory, logger } from "../utils";
19
- import { splitWhenConditions, evaluateIfPredicates, type WhenConditionGroups } from "../utils/condition";
15
+ } from "../types/flow.js";
16
+ import type { AiProvider } from "../types/ai.js";
17
+ import type { Event } from "../types/history.js";
18
+ import { eventsToHistory, logger } from "../utils/index.js";
19
+ import { splitWhenConditions, evaluateIfPredicates, type WhenConditionGroups } from "../utils/condition.js";
20
20
 
21
21
  /**
22
22
  * The AI condition evaluator function signature.
@@ -9,8 +9,8 @@
9
9
  */
10
10
 
11
11
  import log from "loglevel";
12
- import type { HistoryItem } from "../types/history";
13
- import type { CompactionOptions, CompactionResult } from "../types/compaction";
12
+ import type { HistoryItem } from "../types/history.js";
13
+ import type { CompactionOptions, CompactionResult } from "../types/compaction.js";
14
14
 
15
15
  export class CompactionEngine {
16
16
  /**
@@ -12,9 +12,9 @@
12
12
  * Validates: Requirements 22.1, 22.2, 22.3
13
13
  */
14
14
 
15
- import { FlowConfigurationError } from "./Step";
16
- import { logger } from "../utils";
17
- import type { Directive } from "../types/flow";
15
+ import { FlowConfigurationError } from "./Step.js";
16
+ import { logger } from "../utils/index.js";
17
+ import type { Directive } from "../types/flow.js";
18
18
 
19
19
  /**
20
20
  * Entry in the directive chain log — records what was emitted and by whom.
@@ -11,8 +11,8 @@ import type {
11
11
  MessageData,
12
12
  HistoryItem,
13
13
  History,
14
- } from "../types";
15
- import { EventKind, MessageRole } from "../types";
14
+ } from "../types/index.js";
15
+ import { EventKind, MessageRole } from "../types/index.js";
16
16
 
17
17
  /**
18
18
  * Convert a simple JSON history message to an internal Event