@falai/agent 2.6.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (611) hide show
  1. package/README.md +2 -2
  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 +32 -36
  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 +18 -13
  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 +2 -1
  23. package/dist/adapters/RedisAdapter.d.ts.map +1 -1
  24. package/dist/adapters/RedisAdapter.js +77 -27
  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 +9 -31
  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 +22 -0
  35. package/dist/adapters/sessionRow.d.ts.map +1 -0
  36. package/dist/adapters/sessionRow.js +48 -0
  37. package/dist/adapters/sessionRow.js.map +1 -0
  38. package/dist/cjs/adapters/MemoryAdapter.d.ts +1 -1
  39. package/dist/cjs/adapters/MemoryAdapter.d.ts.map +1 -1
  40. package/dist/cjs/adapters/MemoryAdapter.js +39 -43
  41. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  42. package/dist/cjs/adapters/MongoAdapter.d.ts +1 -1
  43. package/dist/cjs/adapters/MongoAdapter.d.ts.map +1 -1
  44. package/dist/cjs/adapters/MongoAdapter.js +4 -4
  45. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  46. package/dist/cjs/adapters/OpenSearchAdapter.d.ts +1 -1
  47. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
  48. package/dist/cjs/adapters/OpenSearchAdapter.js +6 -6
  49. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  50. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +1 -1
  51. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  52. package/dist/cjs/adapters/PostgreSQLAdapter.js +20 -15
  53. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  54. package/dist/cjs/adapters/PrismaAdapter.d.ts +1 -1
  55. package/dist/cjs/adapters/PrismaAdapter.d.ts.map +1 -1
  56. package/dist/cjs/adapters/PrismaAdapter.js +7 -7
  57. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  58. package/dist/cjs/adapters/RedisAdapter.d.ts +2 -1
  59. package/dist/cjs/adapters/RedisAdapter.d.ts.map +1 -1
  60. package/dist/cjs/adapters/RedisAdapter.js +81 -31
  61. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  62. package/dist/cjs/adapters/SQLiteAdapter.d.ts +1 -1
  63. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  64. package/dist/cjs/adapters/SQLiteAdapter.js +11 -33
  65. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  66. package/dist/cjs/adapters/index.d.ts +13 -13
  67. package/dist/cjs/adapters/index.d.ts.map +1 -1
  68. package/dist/cjs/adapters/index.js +14 -14
  69. package/dist/cjs/adapters/index.js.map +1 -1
  70. package/dist/cjs/adapters/sessionRow.d.ts +22 -0
  71. package/dist/cjs/adapters/sessionRow.d.ts.map +1 -0
  72. package/dist/cjs/adapters/sessionRow.js +52 -0
  73. package/dist/cjs/adapters/sessionRow.js.map +1 -0
  74. package/dist/cjs/core/Agent.d.ts +19 -11
  75. package/dist/cjs/core/Agent.d.ts.map +1 -1
  76. package/dist/cjs/core/Agent.js +102 -64
  77. package/dist/cjs/core/Agent.js.map +1 -1
  78. package/dist/cjs/core/AutoChainExecutor.d.ts +12 -22
  79. package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -1
  80. package/dist/cjs/core/AutoChainExecutor.js +46 -49
  81. package/dist/cjs/core/AutoChainExecutor.js.map +1 -1
  82. package/dist/cjs/core/BranchEvaluator.d.ts +4 -4
  83. package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -1
  84. package/dist/cjs/core/BranchEvaluator.js +6 -6
  85. package/dist/cjs/core/BranchEvaluator.js.map +1 -1
  86. package/dist/cjs/core/CompactionEngine.d.ts +16 -3
  87. package/dist/cjs/core/CompactionEngine.d.ts.map +1 -1
  88. package/dist/cjs/core/CompactionEngine.js +30 -6
  89. package/dist/cjs/core/CompactionEngine.js.map +1 -1
  90. package/dist/cjs/core/DirectiveChainTracker.d.ts +1 -1
  91. package/dist/cjs/core/DirectiveChainTracker.d.ts.map +1 -1
  92. package/dist/cjs/core/DirectiveChainTracker.js +5 -5
  93. package/dist/cjs/core/DirectiveChainTracker.js.map +1 -1
  94. package/dist/cjs/core/Events.d.ts +1 -1
  95. package/dist/cjs/core/Events.d.ts.map +1 -1
  96. package/dist/cjs/core/Events.js +15 -15
  97. package/dist/cjs/core/Events.js.map +1 -1
  98. package/dist/cjs/core/Flow.d.ts +4 -4
  99. package/dist/cjs/core/Flow.d.ts.map +1 -1
  100. package/dist/cjs/core/Flow.js +15 -15
  101. package/dist/cjs/core/Flow.js.map +1 -1
  102. package/dist/cjs/core/FlowRouter.d.ts +4 -4
  103. package/dist/cjs/core/FlowRouter.d.ts.map +1 -1
  104. package/dist/cjs/core/FlowRouter.js +92 -70
  105. package/dist/cjs/core/FlowRouter.js.map +1 -1
  106. package/dist/cjs/core/PersistenceManager.d.ts +1 -1
  107. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  108. package/dist/cjs/core/PersistenceManager.js +10 -10
  109. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  110. package/dist/cjs/core/PromptComposer.d.ts +4 -4
  111. package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
  112. package/dist/cjs/core/PromptComposer.js +13 -13
  113. package/dist/cjs/core/PromptComposer.js.map +1 -1
  114. package/dist/cjs/core/PromptSectionCache.d.ts +2 -2
  115. package/dist/cjs/core/PromptSectionCache.d.ts.map +1 -1
  116. package/dist/cjs/core/ResponseEngine.d.ts +4 -4
  117. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  118. package/dist/cjs/core/ResponseEngine.js +7 -7
  119. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  120. package/dist/cjs/core/ResponseGenerationError.d.ts.map +1 -1
  121. package/dist/cjs/core/ResponseGenerationError.js +3 -5
  122. package/dist/cjs/core/ResponseGenerationError.js.map +1 -1
  123. package/dist/cjs/core/ResponseModal.d.ts +39 -10
  124. package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
  125. package/dist/cjs/core/ResponseModal.js +195 -72
  126. package/dist/cjs/core/ResponseModal.js.map +1 -1
  127. package/dist/cjs/core/ResponsePipeline.d.ts +50 -12
  128. package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
  129. package/dist/cjs/core/ResponsePipeline.js +301 -158
  130. package/dist/cjs/core/ResponsePipeline.js.map +1 -1
  131. package/dist/cjs/core/SessionFinalizer.d.ts +4 -4
  132. package/dist/cjs/core/SessionFinalizer.d.ts.map +1 -1
  133. package/dist/cjs/core/SessionFinalizer.js +36 -9
  134. package/dist/cjs/core/SessionFinalizer.js.map +1 -1
  135. package/dist/cjs/core/SessionManager.d.ts +15 -6
  136. package/dist/cjs/core/SessionManager.d.ts.map +1 -1
  137. package/dist/cjs/core/SessionManager.js +49 -22
  138. package/dist/cjs/core/SessionManager.js.map +1 -1
  139. package/dist/cjs/core/SignalCoordinator.d.ts +5 -5
  140. package/dist/cjs/core/SignalCoordinator.d.ts.map +1 -1
  141. package/dist/cjs/core/SignalCoordinator.js +12 -12
  142. package/dist/cjs/core/SignalCoordinator.js.map +1 -1
  143. package/dist/cjs/core/SignalEvaluator.d.ts +4 -4
  144. package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -1
  145. package/dist/cjs/core/SignalEvaluator.js +6 -6
  146. package/dist/cjs/core/SignalEvaluator.js.map +1 -1
  147. package/dist/cjs/core/SignalProcessor.d.ts +6 -6
  148. package/dist/cjs/core/SignalProcessor.d.ts.map +1 -1
  149. package/dist/cjs/core/SignalProcessor.js +17 -89
  150. package/dist/cjs/core/SignalProcessor.js.map +1 -1
  151. package/dist/cjs/core/Step.d.ts +5 -5
  152. package/dist/cjs/core/Step.d.ts.map +1 -1
  153. package/dist/cjs/core/Step.js +65 -17
  154. package/dist/cjs/core/Step.js.map +1 -1
  155. package/dist/cjs/core/StepLifecycle.d.ts +18 -8
  156. package/dist/cjs/core/StepLifecycle.d.ts.map +1 -1
  157. package/dist/cjs/core/StepLifecycle.js +103 -20
  158. package/dist/cjs/core/StepLifecycle.js.map +1 -1
  159. package/dist/cjs/core/StreamingToolExecutor.d.ts +1 -1
  160. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -1
  161. package/dist/cjs/core/StreamingToolExecutor.js +30 -6
  162. package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
  163. package/dist/cjs/core/ToolLoopExecutor.d.ts +8 -4
  164. package/dist/cjs/core/ToolLoopExecutor.d.ts.map +1 -1
  165. package/dist/cjs/core/ToolLoopExecutor.js +189 -97
  166. package/dist/cjs/core/ToolLoopExecutor.js.map +1 -1
  167. package/dist/cjs/core/ToolManager.d.ts +6 -6
  168. package/dist/cjs/core/ToolManager.d.ts.map +1 -1
  169. package/dist/cjs/core/ToolManager.js +102 -79
  170. package/dist/cjs/core/ToolManager.js.map +1 -1
  171. package/dist/cjs/core/createAgent.d.ts +2 -2
  172. package/dist/cjs/core/createAgent.d.ts.map +1 -1
  173. package/dist/cjs/core/createAgent.js +2 -2
  174. package/dist/cjs/core/createAgent.js.map +1 -1
  175. package/dist/cjs/core/flow-namespace.d.ts +16 -1
  176. package/dist/cjs/core/flow-namespace.d.ts.map +1 -1
  177. package/dist/cjs/core/flow-namespace.js +26 -4
  178. package/dist/cjs/core/flow-namespace.js.map +1 -1
  179. package/dist/cjs/core/toolGates.d.ts +1 -1
  180. package/dist/cjs/core/toolGates.d.ts.map +1 -1
  181. package/dist/cjs/core/toolGates.js +3 -3
  182. package/dist/cjs/core/toolGates.js.map +1 -1
  183. package/dist/cjs/index.d.ts +50 -45
  184. package/dist/cjs/index.d.ts.map +1 -1
  185. package/dist/cjs/index.js +96 -88
  186. package/dist/cjs/index.js.map +1 -1
  187. package/dist/cjs/providers/AnthropicProvider.d.ts +25 -35
  188. package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -1
  189. package/dist/cjs/providers/AnthropicProvider.js +30 -426
  190. package/dist/cjs/providers/AnthropicProvider.js.map +1 -1
  191. package/dist/cjs/providers/DeepSeekProvider.d.ts +13 -34
  192. package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -1
  193. package/dist/cjs/providers/DeepSeekProvider.js +17 -51
  194. package/dist/cjs/providers/DeepSeekProvider.js.map +1 -1
  195. package/dist/cjs/providers/GeminiProvider.d.ts +22 -75
  196. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  197. package/dist/cjs/providers/GeminiProvider.js +32 -558
  198. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  199. package/dist/cjs/providers/GenericOpenAICompatibleProvider.d.ts +9 -10
  200. package/dist/cjs/providers/GenericOpenAICompatibleProvider.d.ts.map +1 -1
  201. package/dist/cjs/providers/GenericOpenAICompatibleProvider.js +14 -20
  202. package/dist/cjs/providers/GenericOpenAICompatibleProvider.js.map +1 -1
  203. package/dist/cjs/providers/OpenAICompatibleProvider.d.ts +26 -135
  204. package/dist/cjs/providers/OpenAICompatibleProvider.d.ts.map +1 -1
  205. package/dist/cjs/providers/OpenAICompatibleProvider.js +40 -496
  206. package/dist/cjs/providers/OpenAICompatibleProvider.js.map +1 -1
  207. package/dist/cjs/providers/OpenAIProvider.d.ts +14 -20
  208. package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
  209. package/dist/cjs/providers/OpenAIProvider.js +21 -28
  210. package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
  211. package/dist/cjs/providers/OpenRouterProvider.d.ts +20 -24
  212. package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
  213. package/dist/cjs/providers/OpenRouterProvider.js +22 -38
  214. package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
  215. package/dist/cjs/providers/ProviderAdapter.d.ts +94 -0
  216. package/dist/cjs/providers/ProviderAdapter.d.ts.map +1 -0
  217. package/dist/cjs/providers/ProviderAdapter.js +257 -0
  218. package/dist/cjs/providers/ProviderAdapter.js.map +1 -0
  219. package/dist/cjs/providers/index.d.ts +21 -18
  220. package/dist/cjs/providers/index.d.ts.map +1 -1
  221. package/dist/cjs/providers/index.js +23 -21
  222. package/dist/cjs/providers/index.js.map +1 -1
  223. package/dist/cjs/types/agent.d.ts +37 -11
  224. package/dist/cjs/types/agent.d.ts.map +1 -1
  225. package/dist/cjs/types/ai.d.ts +11 -21
  226. package/dist/cjs/types/ai.d.ts.map +1 -1
  227. package/dist/cjs/types/compaction.d.ts +2 -2
  228. package/dist/cjs/types/compaction.d.ts.map +1 -1
  229. package/dist/cjs/types/errors.d.ts +16 -20
  230. package/dist/cjs/types/errors.d.ts.map +1 -1
  231. package/dist/cjs/types/errors.js +17 -18
  232. package/dist/cjs/types/errors.js.map +1 -1
  233. package/dist/cjs/types/flow.d.ts +56 -39
  234. package/dist/cjs/types/flow.d.ts.map +1 -1
  235. package/dist/cjs/types/history.d.ts +1 -1
  236. package/dist/cjs/types/history.d.ts.map +1 -1
  237. package/dist/cjs/types/index.d.ts +17 -17
  238. package/dist/cjs/types/index.d.ts.map +1 -1
  239. package/dist/cjs/types/index.js +14 -14
  240. package/dist/cjs/types/index.js.map +1 -1
  241. package/dist/cjs/types/persistence.d.ts +2 -2
  242. package/dist/cjs/types/persistence.d.ts.map +1 -1
  243. package/dist/cjs/types/session.d.ts +4 -4
  244. package/dist/cjs/types/session.d.ts.map +1 -1
  245. package/dist/cjs/types/signals.d.ts +3 -3
  246. package/dist/cjs/types/signals.d.ts.map +1 -1
  247. package/dist/cjs/types/template.d.ts +2 -2
  248. package/dist/cjs/types/template.d.ts.map +1 -1
  249. package/dist/cjs/types/tool.d.ts +4 -2
  250. package/dist/cjs/types/tool.d.ts.map +1 -1
  251. package/dist/cjs/types/tool.js.map +1 -1
  252. package/dist/cjs/utils/condition.d.ts +1 -1
  253. package/dist/cjs/utils/condition.d.ts.map +1 -1
  254. package/dist/cjs/utils/condition.js +6 -6
  255. package/dist/cjs/utils/condition.js.map +1 -1
  256. package/dist/cjs/utils/event.d.ts +1 -1
  257. package/dist/cjs/utils/event.d.ts.map +1 -1
  258. package/dist/cjs/utils/event.js +2 -2
  259. package/dist/cjs/utils/event.js.map +1 -1
  260. package/dist/cjs/utils/history.d.ts +2 -2
  261. package/dist/cjs/utils/history.d.ts.map +1 -1
  262. package/dist/cjs/utils/history.js +15 -15
  263. package/dist/cjs/utils/history.js.map +1 -1
  264. package/dist/cjs/utils/index.d.ts +11 -13
  265. package/dist/cjs/utils/index.d.ts.map +1 -1
  266. package/dist/cjs/utils/index.js +57 -58
  267. package/dist/cjs/utils/index.js.map +1 -1
  268. package/dist/cjs/utils/serialize.d.ts +17 -0
  269. package/dist/cjs/utils/serialize.d.ts.map +1 -1
  270. package/dist/cjs/utils/serialize.js +33 -0
  271. package/dist/cjs/utils/serialize.js.map +1 -1
  272. package/dist/cjs/utils/session.d.ts +23 -3
  273. package/dist/cjs/utils/session.d.ts.map +1 -1
  274. package/dist/cjs/utils/session.js +40 -8
  275. package/dist/cjs/utils/session.js.map +1 -1
  276. package/dist/cjs/utils/template.d.ts +3 -3
  277. package/dist/cjs/utils/template.d.ts.map +1 -1
  278. package/dist/cjs/utils/template.js +5 -5
  279. package/dist/cjs/utils/template.js.map +1 -1
  280. package/dist/constants/index.d.ts +1 -0
  281. package/dist/constants/index.js +1 -1
  282. package/dist/core/Agent.d.ts +19 -11
  283. package/dist/core/Agent.d.ts.map +1 -1
  284. package/dist/core/Agent.js +53 -15
  285. package/dist/core/Agent.js.map +1 -1
  286. package/dist/core/AutoChainExecutor.d.ts +12 -22
  287. package/dist/core/AutoChainExecutor.d.ts.map +1 -1
  288. package/dist/core/AutoChainExecutor.js +27 -30
  289. package/dist/core/AutoChainExecutor.js.map +1 -1
  290. package/dist/core/BranchEvaluator.d.ts +4 -4
  291. package/dist/core/BranchEvaluator.d.ts.map +1 -1
  292. package/dist/core/BranchEvaluator.js +2 -2
  293. package/dist/core/BranchEvaluator.js.map +1 -1
  294. package/dist/core/CompactionEngine.d.ts +16 -3
  295. package/dist/core/CompactionEngine.d.ts.map +1 -1
  296. package/dist/core/CompactionEngine.js +30 -6
  297. package/dist/core/CompactionEngine.js.map +1 -1
  298. package/dist/core/DirectiveChainTracker.d.ts +1 -1
  299. package/dist/core/DirectiveChainTracker.d.ts.map +1 -1
  300. package/dist/core/DirectiveChainTracker.js +2 -2
  301. package/dist/core/DirectiveChainTracker.js.map +1 -1
  302. package/dist/core/Events.d.ts +1 -1
  303. package/dist/core/Events.d.ts.map +1 -1
  304. package/dist/core/Events.js +1 -1
  305. package/dist/core/Events.js.map +1 -1
  306. package/dist/core/Flow.d.ts +4 -4
  307. package/dist/core/Flow.d.ts.map +1 -1
  308. package/dist/core/Flow.js +3 -3
  309. package/dist/core/Flow.js.map +1 -1
  310. package/dist/core/FlowRouter.d.ts +4 -4
  311. package/dist/core/FlowRouter.d.ts.map +1 -1
  312. package/dist/core/FlowRouter.js +36 -14
  313. package/dist/core/FlowRouter.js.map +1 -1
  314. package/dist/core/PersistenceManager.d.ts +1 -1
  315. package/dist/core/PersistenceManager.d.ts.map +1 -1
  316. package/dist/core/PersistenceManager.js +3 -3
  317. package/dist/core/PersistenceManager.js.map +1 -1
  318. package/dist/core/PromptComposer.d.ts +4 -4
  319. package/dist/core/PromptComposer.d.ts.map +1 -1
  320. package/dist/core/PromptComposer.js +3 -3
  321. package/dist/core/PromptComposer.js.map +1 -1
  322. package/dist/core/PromptSectionCache.d.ts +2 -2
  323. package/dist/core/PromptSectionCache.d.ts.map +1 -1
  324. package/dist/core/ResponseEngine.d.ts +4 -4
  325. package/dist/core/ResponseEngine.d.ts.map +1 -1
  326. package/dist/core/ResponseEngine.js +2 -2
  327. package/dist/core/ResponseEngine.js.map +1 -1
  328. package/dist/core/ResponseGenerationError.d.ts.map +1 -1
  329. package/dist/core/ResponseGenerationError.js +3 -5
  330. package/dist/core/ResponseGenerationError.js.map +1 -1
  331. package/dist/core/ResponseModal.d.ts +39 -10
  332. package/dist/core/ResponseModal.d.ts.map +1 -1
  333. package/dist/core/ResponseModal.js +152 -29
  334. package/dist/core/ResponseModal.js.map +1 -1
  335. package/dist/core/ResponsePipeline.d.ts +50 -12
  336. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  337. package/dist/core/ResponsePipeline.js +232 -89
  338. package/dist/core/ResponsePipeline.js.map +1 -1
  339. package/dist/core/SessionFinalizer.d.ts +4 -4
  340. package/dist/core/SessionFinalizer.d.ts.map +1 -1
  341. package/dist/core/SessionFinalizer.js +32 -5
  342. package/dist/core/SessionFinalizer.js.map +1 -1
  343. package/dist/core/SessionManager.d.ts +15 -6
  344. package/dist/core/SessionManager.d.ts.map +1 -1
  345. package/dist/core/SessionManager.js +46 -19
  346. package/dist/core/SessionManager.js.map +1 -1
  347. package/dist/core/SignalCoordinator.d.ts +5 -5
  348. package/dist/core/SignalCoordinator.d.ts.map +1 -1
  349. package/dist/core/SignalCoordinator.js +2 -2
  350. package/dist/core/SignalCoordinator.js.map +1 -1
  351. package/dist/core/SignalEvaluator.d.ts +4 -4
  352. package/dist/core/SignalEvaluator.d.ts.map +1 -1
  353. package/dist/core/SignalEvaluator.js +2 -2
  354. package/dist/core/SignalEvaluator.js.map +1 -1
  355. package/dist/core/SignalProcessor.d.ts +6 -6
  356. package/dist/core/SignalProcessor.d.ts.map +1 -1
  357. package/dist/core/SignalProcessor.js +7 -79
  358. package/dist/core/SignalProcessor.js.map +1 -1
  359. package/dist/core/Step.d.ts +5 -5
  360. package/dist/core/Step.d.ts.map +1 -1
  361. package/dist/core/Step.js +53 -5
  362. package/dist/core/Step.js.map +1 -1
  363. package/dist/core/StepLifecycle.d.ts +18 -8
  364. package/dist/core/StepLifecycle.d.ts.map +1 -1
  365. package/dist/core/StepLifecycle.js +98 -15
  366. package/dist/core/StepLifecycle.js.map +1 -1
  367. package/dist/core/StreamingToolExecutor.d.ts +1 -1
  368. package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
  369. package/dist/core/StreamingToolExecutor.js +29 -5
  370. package/dist/core/StreamingToolExecutor.js.map +1 -1
  371. package/dist/core/ToolLoopExecutor.d.ts +8 -4
  372. package/dist/core/ToolLoopExecutor.d.ts.map +1 -1
  373. package/dist/core/ToolLoopExecutor.js +157 -65
  374. package/dist/core/ToolLoopExecutor.js.map +1 -1
  375. package/dist/core/ToolManager.d.ts +6 -6
  376. package/dist/core/ToolManager.d.ts.map +1 -1
  377. package/dist/core/ToolManager.js +44 -21
  378. package/dist/core/ToolManager.js.map +1 -1
  379. package/dist/core/createAgent.d.ts +2 -2
  380. package/dist/core/createAgent.d.ts.map +1 -1
  381. package/dist/core/createAgent.js +1 -1
  382. package/dist/core/createAgent.js.map +1 -1
  383. package/dist/core/flow-namespace.d.ts +16 -1
  384. package/dist/core/flow-namespace.d.ts.map +1 -1
  385. package/dist/core/flow-namespace.js +23 -1
  386. package/dist/core/flow-namespace.js.map +1 -1
  387. package/dist/core/toolGates.d.ts +1 -1
  388. package/dist/core/toolGates.d.ts.map +1 -1
  389. package/dist/core/toolGates.js +1 -1
  390. package/dist/core/toolGates.js.map +1 -1
  391. package/dist/index.d.ts +50 -45
  392. package/dist/index.d.ts.map +1 -1
  393. package/dist/index.js +34 -30
  394. package/dist/index.js.map +1 -1
  395. package/dist/providers/AnthropicProvider.d.ts +25 -35
  396. package/dist/providers/AnthropicProvider.d.ts.map +1 -1
  397. package/dist/providers/AnthropicProvider.js +30 -423
  398. package/dist/providers/AnthropicProvider.js.map +1 -1
  399. package/dist/providers/DeepSeekProvider.d.ts +13 -34
  400. package/dist/providers/DeepSeekProvider.d.ts.map +1 -1
  401. package/dist/providers/DeepSeekProvider.js +16 -47
  402. package/dist/providers/DeepSeekProvider.js.map +1 -1
  403. package/dist/providers/GeminiProvider.d.ts +22 -75
  404. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  405. package/dist/providers/GeminiProvider.js +32 -558
  406. package/dist/providers/GeminiProvider.js.map +1 -1
  407. package/dist/providers/GenericOpenAICompatibleProvider.d.ts +9 -10
  408. package/dist/providers/GenericOpenAICompatibleProvider.d.ts.map +1 -1
  409. package/dist/providers/GenericOpenAICompatibleProvider.js +13 -16
  410. package/dist/providers/GenericOpenAICompatibleProvider.js.map +1 -1
  411. package/dist/providers/OpenAICompatibleProvider.d.ts +26 -135
  412. package/dist/providers/OpenAICompatibleProvider.d.ts.map +1 -1
  413. package/dist/providers/OpenAICompatibleProvider.js +39 -495
  414. package/dist/providers/OpenAICompatibleProvider.js.map +1 -1
  415. package/dist/providers/OpenAIProvider.d.ts +14 -20
  416. package/dist/providers/OpenAIProvider.d.ts.map +1 -1
  417. package/dist/providers/OpenAIProvider.js +20 -24
  418. package/dist/providers/OpenAIProvider.js.map +1 -1
  419. package/dist/providers/OpenRouterProvider.d.ts +20 -24
  420. package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
  421. package/dist/providers/OpenRouterProvider.js +21 -34
  422. package/dist/providers/OpenRouterProvider.js.map +1 -1
  423. package/dist/providers/ProviderAdapter.d.ts +94 -0
  424. package/dist/providers/ProviderAdapter.d.ts.map +1 -0
  425. package/dist/providers/ProviderAdapter.js +251 -0
  426. package/dist/providers/ProviderAdapter.js.map +1 -0
  427. package/dist/providers/index.d.ts +21 -18
  428. package/dist/providers/index.d.ts.map +1 -1
  429. package/dist/providers/index.js +13 -10
  430. package/dist/providers/index.js.map +1 -1
  431. package/dist/types/agent.d.ts +37 -11
  432. package/dist/types/agent.d.ts.map +1 -1
  433. package/dist/types/ai.d.ts +11 -21
  434. package/dist/types/ai.d.ts.map +1 -1
  435. package/dist/types/compaction.d.ts +2 -2
  436. package/dist/types/compaction.d.ts.map +1 -1
  437. package/dist/types/errors.d.ts +16 -20
  438. package/dist/types/errors.d.ts.map +1 -1
  439. package/dist/types/errors.js +15 -16
  440. package/dist/types/errors.js.map +1 -1
  441. package/dist/types/flow.d.ts +56 -39
  442. package/dist/types/flow.d.ts.map +1 -1
  443. package/dist/types/history.d.ts +1 -1
  444. package/dist/types/history.d.ts.map +1 -1
  445. package/dist/types/index.d.ts +17 -17
  446. package/dist/types/index.d.ts.map +1 -1
  447. package/dist/types/index.js +4 -4
  448. package/dist/types/index.js.map +1 -1
  449. package/dist/types/persistence.d.ts +2 -2
  450. package/dist/types/persistence.d.ts.map +1 -1
  451. package/dist/types/session.d.ts +4 -4
  452. package/dist/types/session.d.ts.map +1 -1
  453. package/dist/types/signals.d.ts +3 -3
  454. package/dist/types/signals.d.ts.map +1 -1
  455. package/dist/types/template.d.ts +2 -2
  456. package/dist/types/template.d.ts.map +1 -1
  457. package/dist/types/tool.d.ts +4 -2
  458. package/dist/types/tool.d.ts.map +1 -1
  459. package/dist/types/tool.js.map +1 -1
  460. package/dist/utils/condition.d.ts +1 -1
  461. package/dist/utils/condition.d.ts.map +1 -1
  462. package/dist/utils/condition.js +2 -2
  463. package/dist/utils/condition.js.map +1 -1
  464. package/dist/utils/event.d.ts +1 -1
  465. package/dist/utils/event.d.ts.map +1 -1
  466. package/dist/utils/event.js +1 -1
  467. package/dist/utils/event.js.map +1 -1
  468. package/dist/utils/history.d.ts +2 -2
  469. package/dist/utils/history.d.ts.map +1 -1
  470. package/dist/utils/history.js +1 -1
  471. package/dist/utils/history.js.map +1 -1
  472. package/dist/utils/index.d.ts +11 -13
  473. package/dist/utils/index.d.ts.map +1 -1
  474. package/dist/utils/index.js +11 -12
  475. package/dist/utils/index.js.map +1 -1
  476. package/dist/utils/serialize.d.ts +17 -0
  477. package/dist/utils/serialize.d.ts.map +1 -1
  478. package/dist/utils/serialize.js +31 -0
  479. package/dist/utils/serialize.js.map +1 -1
  480. package/dist/utils/session.d.ts +23 -3
  481. package/dist/utils/session.d.ts.map +1 -1
  482. package/dist/utils/session.js +35 -6
  483. package/dist/utils/session.js.map +1 -1
  484. package/dist/utils/template.d.ts +3 -3
  485. package/dist/utils/template.d.ts.map +1 -1
  486. package/dist/utils/template.js +1 -1
  487. package/dist/utils/template.js.map +1 -1
  488. package/docs/concepts/architecture.md +3 -3
  489. package/docs/concepts/directives.md +1 -1
  490. package/docs/guides/error-handling.md +46 -45
  491. package/docs/guides/flow-control.md +8 -1
  492. package/docs/guides/instructions.md +15 -6
  493. package/docs/guides/persistence.md +12 -5
  494. package/docs/guides/streaming.md +10 -0
  495. package/docs/migration/README.md +4 -0
  496. package/docs/migration/v2-3-to-v2-4.md +4 -0
  497. package/docs/migration/v2-6-to-v2-7.md +246 -0
  498. package/docs/reference/adapters.md +15 -1
  499. package/docs/reference/branches.md +2 -0
  500. package/docs/reference/create-agent.md +28 -0
  501. package/docs/reference/directive.md +1 -1
  502. package/docs/reference/errors.md +30 -32
  503. package/docs/reference/providers.md +63 -60
  504. package/docs/reference/step.md +28 -21
  505. package/docs/reference/tool.md +14 -5
  506. package/docs/start/02-first-agent.md +8 -4
  507. package/docs/start/03-collect-data.md +19 -10
  508. package/examples/01-quickstart.ts +2 -2
  509. package/examples/02-data-extraction.ts +1 -1
  510. package/examples/03-tools.ts +1 -1
  511. package/examples/04-instructions.ts +2 -2
  512. package/examples/05-branching.ts +3 -3
  513. package/examples/06-flow-control.ts +3 -3
  514. package/examples/07-streaming.ts +1 -1
  515. package/examples/08-persistence.ts +2 -2
  516. package/examples/09-signals.ts +1 -1
  517. package/examples/tsconfig.json +6 -3
  518. package/package.json +9 -7
  519. package/src/adapters/MemoryAdapter.ts +33 -37
  520. package/src/adapters/MongoAdapter.ts +3 -3
  521. package/src/adapters/OpenSearchAdapter.ts +4 -4
  522. package/src/adapters/PostgreSQLAdapter.ts +26 -21
  523. package/src/adapters/PrismaAdapter.ts +4 -4
  524. package/src/adapters/RedisAdapter.ts +84 -37
  525. package/src/adapters/SQLiteAdapter.ts +13 -34
  526. package/src/adapters/index.ts +13 -13
  527. package/src/adapters/sessionRow.ts +57 -0
  528. package/src/core/Agent.ts +64 -18
  529. package/src/core/AutoChainExecutor.ts +44 -57
  530. package/src/core/BranchEvaluator.ts +5 -5
  531. package/src/core/CompactionEngine.ts +42 -8
  532. package/src/core/DirectiveChainTracker.ts +3 -3
  533. package/src/core/Events.ts +2 -2
  534. package/src/core/Flow.ts +9 -9
  535. package/src/core/FlowRouter.ts +46 -20
  536. package/src/core/PersistenceManager.ts +4 -4
  537. package/src/core/PromptComposer.ts +8 -8
  538. package/src/core/PromptSectionCache.ts +2 -2
  539. package/src/core/ResponseEngine.ts +6 -6
  540. package/src/core/ResponseGenerationError.ts +3 -6
  541. package/src/core/ResponseModal.ts +205 -39
  542. package/src/core/ResponsePipeline.ts +301 -107
  543. package/src/core/SessionFinalizer.ts +40 -10
  544. package/src/core/SessionManager.ts +61 -27
  545. package/src/core/SignalCoordinator.ts +7 -7
  546. package/src/core/SignalEvaluator.ts +6 -6
  547. package/src/core/SignalProcessor.ts +13 -93
  548. package/src/core/Step.ts +87 -10
  549. package/src/core/StepLifecycle.ts +129 -26
  550. package/src/core/StreamingToolExecutor.ts +33 -8
  551. package/src/core/ToolLoopExecutor.ts +206 -80
  552. package/src/core/ToolManager.ts +53 -26
  553. package/src/core/createAgent.ts +2 -2
  554. package/src/core/flow-namespace.ts +31 -2
  555. package/src/core/toolGates.ts +2 -2
  556. package/src/index.ts +59 -45
  557. package/src/providers/AnthropicProvider.ts +44 -595
  558. package/src/providers/DeepSeekProvider.ts +27 -92
  559. package/src/providers/GeminiProvider.ts +41 -752
  560. package/src/providers/GenericOpenAICompatibleProvider.ts +19 -27
  561. package/src/providers/OpenAICompatibleProvider.ts +58 -764
  562. package/src/providers/OpenAIProvider.ts +31 -55
  563. package/src/providers/OpenRouterProvider.ts +40 -70
  564. package/src/providers/ProviderAdapter.ts +368 -0
  565. package/src/providers/index.ts +21 -23
  566. package/src/types/agent.ts +36 -11
  567. package/src/types/ai.ts +11 -21
  568. package/src/types/compaction.ts +2 -2
  569. package/src/types/errors.ts +17 -35
  570. package/src/types/flow.ts +44 -46
  571. package/src/types/history.ts +1 -1
  572. package/src/types/index.ts +18 -17
  573. package/src/types/persistence.ts +2 -2
  574. package/src/types/session.ts +4 -4
  575. package/src/types/signals.ts +3 -3
  576. package/src/types/template.ts +2 -2
  577. package/src/types/tool.ts +4 -2
  578. package/src/utils/condition.ts +3 -3
  579. package/src/utils/event.ts +1 -1
  580. package/src/utils/history.ts +3 -3
  581. package/src/utils/index.ts +14 -15
  582. package/src/utils/serialize.ts +38 -0
  583. package/src/utils/session.ts +46 -9
  584. package/src/utils/template.ts +3 -3
  585. package/dist/cjs/core/DirectiveBus.d.ts +0 -88
  586. package/dist/cjs/core/DirectiveBus.d.ts.map +0 -1
  587. package/dist/cjs/core/DirectiveBus.js +0 -196
  588. package/dist/cjs/core/DirectiveBus.js.map +0 -1
  589. package/dist/cjs/providers/errorClassification.d.ts +0 -61
  590. package/dist/cjs/providers/errorClassification.d.ts.map +0 -1
  591. package/dist/cjs/providers/errorClassification.js +0 -123
  592. package/dist/cjs/providers/errorClassification.js.map +0 -1
  593. package/dist/cjs/utils/retry.d.ts +0 -67
  594. package/dist/cjs/utils/retry.d.ts.map +0 -1
  595. package/dist/cjs/utils/retry.js +0 -201
  596. package/dist/cjs/utils/retry.js.map +0 -1
  597. package/dist/core/DirectiveBus.d.ts +0 -88
  598. package/dist/core/DirectiveBus.d.ts.map +0 -1
  599. package/dist/core/DirectiveBus.js +0 -192
  600. package/dist/core/DirectiveBus.js.map +0 -1
  601. package/dist/providers/errorClassification.d.ts +0 -61
  602. package/dist/providers/errorClassification.d.ts.map +0 -1
  603. package/dist/providers/errorClassification.js +0 -116
  604. package/dist/providers/errorClassification.js.map +0 -1
  605. package/dist/utils/retry.d.ts +0 -67
  606. package/dist/utils/retry.d.ts.map +0 -1
  607. package/dist/utils/retry.js +0 -193
  608. package/dist/utils/retry.js.map +0 -1
  609. package/src/core/DirectiveBus.ts +0 -248
  610. package/src/providers/errorClassification.ts +0 -172
  611. package/src/utils/retry.ts +0 -274
@@ -1,36 +1,29 @@
1
1
  "use strict";
2
2
  /**
3
- * OpenAI provider implementation with retry and backup models
3
+ * OpenAI provider. Structured output goes out on the Responses API, which
4
+ * enforces the schema natively.
4
5
  */
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
6
  Object.defineProperty(exports, "__esModule", { value: true });
9
7
  exports.OpenAIProvider = void 0;
10
- const openai_1 = __importDefault(require("openai"));
11
- const OpenAICompatibleProvider_1 = require("./OpenAICompatibleProvider");
12
- /**
13
- * OpenAI provider implementation with backup models and retry logic.
14
- * Structured output uses the responses.parse API (native JSON schema).
15
- */
16
- class OpenAIProvider extends OpenAICompatibleProvider_1.OpenAICompatibleProvider {
8
+ const OpenAICompatibleProvider_js_1 = require("./OpenAICompatibleProvider.js");
9
+ class OpenAIProvider extends OpenAICompatibleProvider_js_1.OpenAICompatibleProvider {
17
10
  constructor(options) {
18
- const { apiKey, organization, model, backupModels, config, retryConfig, } = options;
19
- if (!apiKey) {
11
+ if (!options.apiKey)
20
12
  throw new Error("OpenAI API key is required");
21
- }
22
- if (!model) {
23
- throw new Error("Model is required. Example: 'gpt-5.5' or 'gpt-5.4'");
24
- }
13
+ if (!options.model)
14
+ throw new Error("Model is required. Example: 'gpt-5.6' or 'gpt-5.5'");
25
15
  super({
26
- client: new openai_1.default({
27
- apiKey,
28
- organization,
29
- }),
30
- model,
31
- backupModels,
32
- config,
33
- retryConfig,
16
+ id: "openai",
17
+ apiKey: options.apiKey,
18
+ model: options.model,
19
+ structuredOutput: "responses_parse",
20
+ ...(options.organization
21
+ ? { headers: { "OpenAI-Organization": options.organization } }
22
+ : {}),
23
+ ...(options.backupModels ? { backupModels: options.backupModels } : {}),
24
+ ...(options.config ? { config: options.config } : {}),
25
+ ...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
26
+ ...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
34
27
  });
35
28
  this.name = "openai";
36
29
  this.capabilities = {
@@ -38,10 +31,10 @@ class OpenAIProvider extends OpenAICompatibleProvider_1.OpenAICompatibleProvider
38
31
  supportsNativeJsonSchema: true,
39
32
  supportsStreaming: true,
40
33
  supportsStreamingToolCalls: true,
41
- supportsPromptCaching: false,
34
+ // v3: the shape auto-caches repeated prefixes and now reports the hit
35
+ // count, which the old adapter never read.
36
+ supportsPromptCaching: true,
42
37
  };
43
- this.logLabel = "OPENAI";
44
- this.displayName = "OpenAI";
45
38
  }
46
39
  }
47
40
  exports.OpenAIProvider = OpenAIProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAIProvider.js","sourceRoot":"","sources":["../../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAEH,oDAA4B;AAG5B,yEAGoC;AAwBpC;;;GAGG;AACH,MAAa,cAAe,SAAQ,mDAAwB;IAa1D,YAAY,OAA8B;QACxC,MAAM,EACJ,MAAM,EACN,YAAY,EACZ,KAAK,EACL,YAAY,EACZ,MAAM,EACN,WAAW,GACZ,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,KAAK,CAAC;YACJ,MAAM,EAAE,IAAI,gBAAM,CAAC;gBACjB,MAAM;gBACN,YAAY;aACb,CAAC;YACF,KAAK;YACL,YAAY;YACZ,MAAM;YACN,WAAW;SACZ,CAAC,CAAC;QAvCW,SAAI,GAAG,QAAQ,CAAC;QAChB,iBAAY,GAAyB;YACnD,aAAa,EAAE,IAAI;YACnB,wBAAwB,EAAE,IAAI;YAC9B,iBAAiB,EAAE,IAAI;YACvB,0BAA0B,EAAE,IAAI;YAChC,qBAAqB,EAAE,KAAK;SAC7B,CAAC;QAEiB,aAAQ,GAAG,QAAQ,CAAC;QACpB,gBAAW,GAAG,QAAQ,CAAC;IA8B1C,CAAC;CACF;AA1CD,wCA0CC"}
1
+ {"version":3,"file":"OpenAIProvider.js","sourceRoot":"","sources":["../../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,+EAAyE;AAoBzE,MAAa,cAAe,SAAQ,sDAAwB;IAY1D,YAAY,OAA8B;QACxC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAE1F,KAAK,CAAC;YACJ,EAAE,EAAE,QAAQ;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,gBAAgB,EAAE,iBAAiB;YACnC,GAAG,CAAC,OAAO,CAAC,YAAY;gBACtB,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE;gBAC9D,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC,CAAC;QA3BW,SAAI,GAAG,QAAQ,CAAC;QAChB,iBAAY,GAAyB;YACnD,aAAa,EAAE,IAAI;YACnB,wBAAwB,EAAE,IAAI;YAC9B,iBAAiB,EAAE,IAAI;YACvB,0BAA0B,EAAE,IAAI;YAChC,sEAAsE;YACtE,2CAA2C;YAC3C,qBAAqB,EAAE,IAAI;SAC5B,CAAC;IAmBF,CAAC;CACF;AA9BD,wCA8BC"}
@@ -1,44 +1,40 @@
1
1
  /**
2
- * OpenRouter provider implementation
3
- * OpenRouter provides access to multiple AI models through a unified OpenAI-compatible API
4
- */
5
- import type { ProviderCapabilities } from "../types/ai";
6
- import type { ErrorClassificationOptions } from "./errorClassification";
7
- import { OpenAICompatibleProvider, type OpenAICompatibleRequestConfig } from "./OpenAICompatibleProvider";
8
- /**
9
- * Configuration options for OpenRouter provider
10
- * Uses types from openai package (OpenRouter is OpenAI-compatible)
2
+ * OpenRouter one OpenAI-compatible endpoint in front of many models.
11
3
  */
4
+ import type { ProviderCapabilities } from "../types/ai.js";
5
+ import { OpenAICompatibleProvider } from "./OpenAICompatibleProvider.js";
6
+ import type { RequestConfig } from "./ProviderAdapter.js";
12
7
  export interface OpenRouterProviderOptions {
13
8
  /** OpenRouter API key */
14
9
  apiKey: string;
15
- /** Model to use (required) - see https://openrouter.ai/models */
10
+ /** Model to use (required) see https://openrouter.ai/models */
16
11
  model: string;
17
- /** Backup models to try if primary fails (default: []) */
12
+ /** Backup models to try if the primary fails (default: []) */
18
13
  backupModels?: string[];
19
- /** Optional site URL for OpenRouter rankings */
14
+ /** Site URL for OpenRouter's rankings */
20
15
  siteUrl?: string;
21
- /** Optional app name for OpenRouter rankings */
16
+ /** App name for OpenRouter's rankings */
22
17
  siteName?: string;
23
- /** Default parameters - uses ChatCompletionCreateParamsNonStreaming from openai package */
24
- config?: OpenAICompatibleRequestConfig;
25
- /** Retry configuration */
18
+ /**
19
+ * Preferred upstream hosts, in order. OpenRouter's prompt cache lives on the
20
+ * upstream host's account and default routing hops between them, so every hop
21
+ * is a cold cache — worse latency and a higher effective input cost across a
22
+ * conversation's rounds. Fallbacks stay on: this is a preference, not a lock.
23
+ */
24
+ providerOrder?: string[];
25
+ /** Request defaults sent with every call */
26
+ config?: RequestConfig;
27
+ /** Idle-stream deadline and retry budget */
26
28
  retryConfig?: {
27
29
  timeout?: number;
28
30
  retries?: number;
29
31
  };
32
+ /** Replacement `fetch`, for tests that script the wire. */
33
+ fetchImpl?: typeof fetch;
30
34
  }
31
- /**
32
- * OpenRouter provider implementation
33
- * Provides access to multiple AI models through OpenRouter's unified API
34
- */
35
35
  export declare class OpenRouterProvider extends OpenAICompatibleProvider {
36
36
  readonly name = "openrouter";
37
37
  readonly capabilities: ProviderCapabilities;
38
- protected readonly logLabel = "OPENROUTER";
39
- protected readonly displayName = "OpenRouter";
40
- /** OpenRouter additionally reports capacity issues in error messages */
41
- protected readonly classificationOptions: ErrorClassificationOptions;
42
38
  constructor(options: OpenRouterProviderOptions);
43
39
  }
44
40
  //# sourceMappingURL=OpenRouterProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpenRouterProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/OpenRouterProvider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EACL,wBAAwB,EACxB,KAAK,6BAA6B,EACnC,MAAM,4BAA4B,CAAC;AAEpC;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,6BAA6B,CAAC;IACvC,0BAA0B;IAC1B,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,wBAAwB;IAC9D,SAAgB,IAAI,gBAAgB;IACpC,SAAgB,YAAY,EAAE,oBAAoB,CAMhD;IAEF,SAAS,CAAC,QAAQ,CAAC,QAAQ,gBAAgB;IAC3C,SAAS,CAAC,QAAQ,CAAC,WAAW,gBAAgB;IAE9C,wEAAwE;IACxE,mBAA4B,qBAAqB,EAAE,0BAA0B,CAIzE;gBAEQ,OAAO,EAAE,yBAAyB;CAmC/C"}
1
+ {"version":3,"file":"OpenRouterProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/OpenRouterProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,yBAAyB;IACxC,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,4CAA4C;IAC5C,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,qBAAa,kBAAmB,SAAQ,wBAAwB;IAC9D,SAAgB,IAAI,gBAAgB;IACpC,SAAgB,YAAY,EAAE,oBAAoB,CAMhD;gBAEU,OAAO,EAAE,yBAAyB;CAuB/C"}
@@ -1,42 +1,33 @@
1
1
  "use strict";
2
2
  /**
3
- * OpenRouter provider implementation
4
- * OpenRouter provides access to multiple AI models through a unified OpenAI-compatible API
3
+ * OpenRouter one OpenAI-compatible endpoint in front of many models.
5
4
  */
6
- var __importDefault = (this && this.__importDefault) || function (mod) {
7
- return (mod && mod.__esModule) ? mod : { "default": mod };
8
- };
9
5
  Object.defineProperty(exports, "__esModule", { value: true });
10
6
  exports.OpenRouterProvider = void 0;
11
- const openai_1 = __importDefault(require("openai"));
12
- const OpenAICompatibleProvider_1 = require("./OpenAICompatibleProvider");
13
- /**
14
- * OpenRouter provider implementation
15
- * Provides access to multiple AI models through OpenRouter's unified API
16
- */
17
- class OpenRouterProvider extends OpenAICompatibleProvider_1.OpenAICompatibleProvider {
7
+ const OpenAICompatibleProvider_js_1 = require("./OpenAICompatibleProvider.js");
8
+ class OpenRouterProvider extends OpenAICompatibleProvider_js_1.OpenAICompatibleProvider {
18
9
  constructor(options) {
19
- const { apiKey, model, backupModels, siteUrl, siteName, config, retryConfig, } = options;
20
- if (!apiKey) {
10
+ if (!options.apiKey)
21
11
  throw new Error("OpenRouter API key is required");
22
- }
23
- if (!model) {
12
+ if (!options.model)
24
13
  throw new Error("Model is required. See https://openrouter.ai/models");
25
- }
26
- // Initialize OpenAI client with OpenRouter base URL
27
14
  super({
28
- client: new openai_1.default({
29
- apiKey,
30
- baseURL: "https://openrouter.ai/api/v1",
31
- defaultHeaders: {
32
- "HTTP-Referer": siteUrl || "",
33
- "X-Title": siteName || "",
34
- },
35
- }),
36
- model,
37
- backupModels,
38
- config,
39
- retryConfig,
15
+ id: "openrouter",
16
+ apiKey: options.apiKey,
17
+ baseUrl: "https://openrouter.ai/api",
18
+ model: options.model,
19
+ // Chat completions rather than the Responses API: this gateway's
20
+ // json_schema passthrough is what its models actually support.
21
+ structuredOutput: "json_schema",
22
+ headers: {
23
+ ...(options.siteUrl ? { "HTTP-Referer": options.siteUrl } : {}),
24
+ ...(options.siteName ? { "X-Title": options.siteName } : {}),
25
+ },
26
+ ...(options.providerOrder ? { providerOrder: options.providerOrder } : {}),
27
+ ...(options.backupModels ? { backupModels: options.backupModels } : {}),
28
+ ...(options.config ? { config: options.config } : {}),
29
+ ...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
30
+ ...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
40
31
  });
41
32
  this.name = "openrouter";
42
33
  this.capabilities = {
@@ -44,14 +35,7 @@ class OpenRouterProvider extends OpenAICompatibleProvider_1.OpenAICompatibleProv
44
35
  supportsNativeJsonSchema: true,
45
36
  supportsStreaming: true,
46
37
  supportsStreamingToolCalls: true,
47
- supportsPromptCaching: false,
48
- };
49
- this.logLabel = "OPENROUTER";
50
- this.displayName = "OpenRouter";
51
- /** OpenRouter additionally reports capacity issues in error messages */
52
- this.classificationOptions = {
53
- overloadedCodes: ["model_not_found", "model_overloaded"],
54
- overloadedMessages: ["capacity"],
38
+ supportsPromptCaching: true,
55
39
  };
56
40
  }
57
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OpenRouterProvider.js","sourceRoot":"","sources":["../../../src/providers/OpenRouterProvider.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,oDAA4B;AAI5B,yEAGoC;AA0BpC;;;GAGG;AACH,MAAa,kBAAmB,SAAQ,mDAAwB;IAoB9D,YAAY,OAAkC;QAC5C,MAAM,EACJ,MAAM,EACN,KAAK,EACL,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,MAAM,EACN,WAAW,GACZ,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QAED,oDAAoD;QACpD,KAAK,CAAC;YACJ,MAAM,EAAE,IAAI,gBAAM,CAAC;gBACjB,MAAM;gBACN,OAAO,EAAE,8BAA8B;gBACvC,cAAc,EAAE;oBACd,cAAc,EAAE,OAAO,IAAI,EAAE;oBAC7B,SAAS,EAAE,QAAQ,IAAI,EAAE;iBAC1B;aACF,CAAC;YACF,KAAK;YACL,YAAY;YACZ,MAAM;YACN,WAAW;SACZ,CAAC,CAAC;QApDW,SAAI,GAAG,YAAY,CAAC;QACpB,iBAAY,GAAyB;YACnD,aAAa,EAAE,IAAI;YACnB,wBAAwB,EAAE,IAAI;YAC9B,iBAAiB,EAAE,IAAI;YACvB,0BAA0B,EAAE,IAAI;YAChC,qBAAqB,EAAE,KAAK;SAC7B,CAAC;QAEiB,aAAQ,GAAG,YAAY,CAAC;QACxB,gBAAW,GAAG,YAAY,CAAC;QAE9C,wEAAwE;QAC5C,0BAAqB,GAC/C;YACE,eAAe,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACxD,kBAAkB,EAAE,CAAC,UAAU,CAAC;SACjC,CAAC;IAoCJ,CAAC;CACF;AAvDD,gDAuDC"}
1
+ {"version":3,"file":"OpenRouterProvider.js","sourceRoot":"","sources":["../../../src/providers/OpenRouterProvider.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,+EAAyE;AA6BzE,MAAa,kBAAmB,SAAQ,sDAAwB;IAU9D,YAAY,OAAkC;QAC5C,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAE3F,KAAK,CAAC;YACJ,EAAE,EAAE,YAAY;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,2BAA2B;YACpC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,iEAAiE;YACjE,+DAA+D;YAC/D,gBAAgB,EAAE,aAAa;YAC/B,OAAO,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7D;YACD,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC,CAAC;QA9BW,SAAI,GAAG,YAAY,CAAC;QACpB,iBAAY,GAAyB;YACnD,aAAa,EAAE,IAAI;YACnB,wBAAwB,EAAE,IAAI;YAC9B,iBAAiB,EAAE,IAAI;YACvB,0BAA0B,EAAE,IAAI;YAChC,qBAAqB,EAAE,IAAI;SAC5B,CAAC;IAwBF,CAAC;CACF;AAjCD,gDAiCC"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * The bridge between this framework's provider seam and `@providerkit/core`.
3
+ *
4
+ * The two seams are different shapes on purpose. Core speaks in normalized
5
+ * chunks — `createStream(messages, tools, opts)` — because that is the only
6
+ * shape every vendor's wire actually is. This framework speaks in whole turns:
7
+ * `generateMessage(input)` takes a composed prompt plus history and hands back
8
+ * a parsed structured response, because that is what a flow step needs.
9
+ *
10
+ * Everything vendor-specific now lives one layer down, so what is left here is
11
+ * exactly the translation and nothing else: history to messages, tools to tool
12
+ * definitions, chunks to an accumulated turn.
13
+ *
14
+ * Both entry points run the SAME pipeline. `generateMessage` is
15
+ * `generateMessageStream` drained — one code path for the streaming and
16
+ * non-streaming APIs, where there used to be two of everything per vendor and
17
+ * the pair drifted (the streaming path silently lost native schema enforcement
18
+ * because only the non-streaming one could reach `responses.parse`).
19
+ */
20
+ import { type ChatMessage, type Provider } from "@providerkit/core";
21
+ import type { AgentStructuredResponse, AiProvider, GenerateMessageInput, GenerateMessageOutput, GenerateMessageStreamChunk, ProviderCapabilities } from "../types/ai.js";
22
+ import type { HistoryItem } from "../types/history.js";
23
+ /** Provider timeout (ms) + retry count, after defaults are applied. */
24
+ export interface RetryConfig {
25
+ /**
26
+ * How long a stream may stay SILENT before it is considered wedged.
27
+ *
28
+ * In v2 this was a total wall-clock cap on a non-streaming call, so a healthy
29
+ * but long generation died at the one-minute mark. It now bounds silence
30
+ * instead: time to the first byte, and the gap between any two after it. A
31
+ * request that never gets a reply still fails at the same moment; one that is
32
+ * steadily producing tokens is left alone.
33
+ */
34
+ timeout: number;
35
+ /** Retries AFTER the first attempt, so `0` still performs one call. */
36
+ retries: number;
37
+ }
38
+ /**
39
+ * Normalize a provider's optional retry config against the defaults. `timeout`
40
+ * uses `||` (a 0ms timeout is degenerate — it would abort every call before it
41
+ * began), while `retries` uses `??` so an explicit `retries: 0` is honored
42
+ * rather than treated as unset.
43
+ */
44
+ export declare function resolveRetryConfig(input?: {
45
+ timeout?: number;
46
+ retries?: number;
47
+ }): RetryConfig;
48
+ /**
49
+ * Request defaults sent with every call.
50
+ *
51
+ * Only the fields every supported shape has. In v2 each provider took its own
52
+ * vendor's SDK parameter type here — which is how one vendor's package ended
53
+ * up in the dependency tree of consumers who used a different vendor, and how
54
+ * a field set on one provider silently vanished on another.
55
+ */
56
+ export interface RequestConfig {
57
+ temperature?: number;
58
+ topP?: number;
59
+ maxTokens?: number;
60
+ stopSequences?: string[];
61
+ }
62
+ export interface ProviderAdapterInit {
63
+ /** The `@providerkit/core` provider this adapter drives. */
64
+ provider: Provider;
65
+ model: string;
66
+ /**
67
+ * Sampling defaults for every call, overridden by anything the caller sets
68
+ * per turn. Only the fields every supported shape has: a knob one vendor
69
+ * alone understands belongs to that vendor's own client, not to a seam four
70
+ * of them share.
71
+ */
72
+ defaults?: RequestConfig;
73
+ /** Tried in order after the primary. */
74
+ backupModels?: string[];
75
+ retryConfig?: {
76
+ timeout?: number;
77
+ retries?: number;
78
+ };
79
+ }
80
+ /** History plus the composed prompt, as the seam's messages. */
81
+ export declare function toMessages(history: HistoryItem[], prompt: string): ChatMessage[];
82
+ export declare abstract class ProviderAdapter implements AiProvider {
83
+ abstract readonly name: string;
84
+ abstract readonly capabilities: ProviderCapabilities;
85
+ protected readonly provider: Provider;
86
+ protected readonly primaryModel: string;
87
+ protected readonly backupModels: string[];
88
+ protected readonly retryConfig: RetryConfig;
89
+ private readonly defaults;
90
+ protected constructor(init: ProviderAdapterInit);
91
+ generateMessage<TContext = unknown, TStructured = AgentStructuredResponse>(input: GenerateMessageInput<TContext>): Promise<GenerateMessageOutput<TStructured>>;
92
+ generateMessageStream<TContext = unknown, TStructured = AgentStructuredResponse>(input: GenerateMessageInput<TContext>): AsyncGenerator<GenerateMessageStreamChunk<TStructured>>;
93
+ }
94
+ //# sourceMappingURL=ProviderAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderAdapter.d.ts","sourceRoot":"","sources":["../../../src/providers/ProviderAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EASL,KAAK,WAAW,EAEhB,KAAK,QAAQ,EAId,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EACV,uBAAuB,EACvB,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,uEAAuE;AACvE,MAAM,WAAW,WAAW;IAC1B;;;;;;;;OAQG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAK9F;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,4DAA4D;IAC5D,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAgBD,gEAAgE;AAChE,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAuChF;AAsED,8BAAsB,eAAgB,YAAW,UAAU;IACzD,kBAAyB,IAAI,EAAE,MAAM,CAAC;IACtC,kBAAyB,YAAY,EAAE,oBAAoB,CAAC;IAE5D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAE3D,SAAS,aAAa,IAAI,EAAE,mBAAmB;IAQzC,eAAe,CAAC,QAAQ,GAAG,OAAO,EAAE,WAAW,GAAG,uBAAuB,EAC7E,KAAK,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GACpC,OAAO,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAWvC,qBAAqB,CAAC,QAAQ,GAAG,OAAO,EAAE,WAAW,GAAG,uBAAuB,EACpF,KAAK,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GACpC,cAAc,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;CAmG3D"}
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ /**
3
+ * The bridge between this framework's provider seam and `@providerkit/core`.
4
+ *
5
+ * The two seams are different shapes on purpose. Core speaks in normalized
6
+ * chunks — `createStream(messages, tools, opts)` — because that is the only
7
+ * shape every vendor's wire actually is. This framework speaks in whole turns:
8
+ * `generateMessage(input)` takes a composed prompt plus history and hands back
9
+ * a parsed structured response, because that is what a flow step needs.
10
+ *
11
+ * Everything vendor-specific now lives one layer down, so what is left here is
12
+ * exactly the translation and nothing else: history to messages, tools to tool
13
+ * definitions, chunks to an accumulated turn.
14
+ *
15
+ * Both entry points run the SAME pipeline. `generateMessage` is
16
+ * `generateMessageStream` drained — one code path for the streaming and
17
+ * non-streaming APIs, where there used to be two of everything per vendor and
18
+ * the pair drifted (the streaming path silently lost native schema enforcement
19
+ * because only the non-streaming one could reach `responses.parse`).
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.ProviderAdapter = void 0;
23
+ exports.resolveRetryConfig = resolveRetryConfig;
24
+ exports.toMessages = toMessages;
25
+ const core_1 = require("@providerkit/core");
26
+ const completion_js_1 = require("../utils/completion.js");
27
+ const logger_js_1 = require("../utils/logger.js");
28
+ const DEFAULT_RETRY_CONFIG = { timeout: 60000, retries: 3 };
29
+ /**
30
+ * Normalize a provider's optional retry config against the defaults. `timeout`
31
+ * uses `||` (a 0ms timeout is degenerate — it would abort every call before it
32
+ * began), while `retries` uses `??` so an explicit `retries: 0` is honored
33
+ * rather than treated as unset.
34
+ */
35
+ function resolveRetryConfig(input) {
36
+ return {
37
+ timeout: input?.timeout || DEFAULT_RETRY_CONFIG.timeout,
38
+ retries: input?.retries ?? DEFAULT_RETRY_CONFIG.retries,
39
+ };
40
+ }
41
+ /**
42
+ * A model id the endpoint will not serve is grounds to try the next model on
43
+ * the list — that is what the list is FOR. Core's default is deliberately
44
+ * narrower (a throttle and an overload only), because there a typo'd model
45
+ * should fail loudly rather than quietly answer from a different one. Here the
46
+ * backup list is explicit and per-provider, so the wider reading is the right
47
+ * one: a gateway that has deprecated or cannot currently route the primary is
48
+ * routine, and falling through is exactly the intent.
49
+ */
50
+ function shouldTryBackup(error) {
51
+ const kind = (0, core_1.classify)(error);
52
+ return (0, core_1.isBackupEligible)(kind) || kind === "model";
53
+ }
54
+ /** History plus the composed prompt, as the seam's messages. */
55
+ function toMessages(history, prompt) {
56
+ const out = [];
57
+ for (const item of history) {
58
+ switch (item.role) {
59
+ case "system":
60
+ out.push({ role: "system", content: item.content });
61
+ break;
62
+ case "user":
63
+ out.push({ role: "user", content: item.content });
64
+ break;
65
+ case "assistant":
66
+ out.push({
67
+ role: "assistant",
68
+ content: item.content ?? "",
69
+ ...(item.tool_calls?.length
70
+ ? {
71
+ toolCalls: item.tool_calls.map((call) => ({
72
+ id: call.id,
73
+ name: call.name,
74
+ // The seam carries raw JSON: arguments arrive in fragments and
75
+ // can be truncated mid-stream, so parsing is the consumer's.
76
+ arguments: JSON.stringify(call.arguments),
77
+ })),
78
+ }
79
+ : {}),
80
+ });
81
+ break;
82
+ case "tool":
83
+ out.push({
84
+ role: "tool",
85
+ toolCallId: item.tool_call_id,
86
+ name: item.name,
87
+ content: typeof item.content === "string" ? item.content : JSON.stringify(item.content),
88
+ });
89
+ break;
90
+ }
91
+ }
92
+ out.push({ role: "user", content: prompt });
93
+ return out;
94
+ }
95
+ function toTools(tools) {
96
+ return (tools ?? []).map((tool) => ({
97
+ name: tool.name || tool.id,
98
+ description: tool.description ?? "",
99
+ inputSchema: (tool.parameters ?? { type: "object" }),
100
+ }));
101
+ }
102
+ /**
103
+ * A schema with nothing in it is not a request for JSON — it is a caller who
104
+ * has no schema. Sent as one it becomes a `json_schema` block with no `type`,
105
+ * which is a flat 400 on the shapes that enforce schemas.
106
+ */
107
+ function toJsonOutput(input) {
108
+ const schema = input.parameters?.jsonSchema;
109
+ if (!schema || Object.keys(schema).length === 0)
110
+ return undefined;
111
+ return {
112
+ name: input.parameters?.schemaName || "structured_output",
113
+ schema: schema,
114
+ };
115
+ }
116
+ function fold(acc, chunk) {
117
+ if (chunk.usage) {
118
+ acc.promptTokens = chunk.usage.inputTokens;
119
+ acc.completionTokens = chunk.usage.outputTokens;
120
+ acc.cachedInputTokens = chunk.usage.cachedInputTokens;
121
+ }
122
+ if (chunk.finishReason)
123
+ acc.finishReason = chunk.finishReason;
124
+ for (const call of chunk.toolCalls ?? []) {
125
+ const entry = acc.calls.get(call.index) ?? { name: "", arguments: "" };
126
+ if (call.name)
127
+ entry.name = call.name;
128
+ if (call.arguments)
129
+ entry.arguments += call.arguments;
130
+ acc.calls.set(call.index, entry);
131
+ }
132
+ if (!chunk.content)
133
+ return "";
134
+ acc.text += chunk.content;
135
+ return chunk.content;
136
+ }
137
+ function toolCallsOf(acc, label) {
138
+ const out = [];
139
+ for (const [, entry] of [...acc.calls.entries()].sort(([a], [b]) => a - b)) {
140
+ if (!entry.name)
141
+ continue;
142
+ let args = {};
143
+ try {
144
+ if (entry.arguments)
145
+ args = JSON.parse(entry.arguments);
146
+ }
147
+ catch (error) {
148
+ logger_js_1.logger.warn(`[${label}] Failed to parse tool call arguments:`, error);
149
+ }
150
+ out.push({ toolName: entry.name, arguments: args });
151
+ }
152
+ return out;
153
+ }
154
+ class ProviderAdapter {
155
+ constructor(init) {
156
+ this.defaults = init.defaults;
157
+ this.provider = init.provider;
158
+ this.primaryModel = init.model;
159
+ this.backupModels = init.backupModels ?? [];
160
+ this.retryConfig = resolveRetryConfig(init.retryConfig);
161
+ }
162
+ async generateMessage(input) {
163
+ let last;
164
+ for await (const chunk of this.generateMessageStream(input)) {
165
+ last = chunk;
166
+ }
167
+ // The stream always ends on its terminal chunk, and the empty-completion
168
+ // guard has already thrown if there was nothing in it.
169
+ if (!last)
170
+ throw new core_1.ProviderError(this.name, "overload", `${this.name}: no response`);
171
+ return { message: last.accumulated, metadata: last.metadata, structured: last.structured };
172
+ }
173
+ async *generateMessageStream(input) {
174
+ const messages = toMessages(input.history, input.prompt);
175
+ const tools = toTools(input.tools);
176
+ const json = toJsonOutput(input);
177
+ const acc = { text: "", model: this.primaryModel, calls: new Map() };
178
+ const opts = {
179
+ ...this.defaults,
180
+ ...(input.parameters?.maxOutputTokens !== undefined
181
+ ? { maxTokens: input.parameters.maxOutputTokens }
182
+ : {}),
183
+ ...(input.parameters?.reasoning?.effort ? { effort: input.parameters.reasoning.effort } : {}),
184
+ ...(json ? { json } : {}),
185
+ };
186
+ const attempt = (model) => (0, core_1.withStreamRetry)((signal) => {
187
+ acc.model = model;
188
+ const watch = (0, core_1.streamWatch)({
189
+ provider: this.name,
190
+ idleMs: this.retryConfig.timeout,
191
+ signal,
192
+ });
193
+ return (0, core_1.requireContent)(this.name, (0, core_1.watchChunks)(watch, this.provider.createStream(messages, tools, {
194
+ ...opts,
195
+ model,
196
+ signal: watch.signal,
197
+ })));
198
+ }, {
199
+ maxAttempts: this.retryConfig.retries + 1,
200
+ ...(input.signal ? { signal: input.signal } : {}),
201
+ onRetry: ({ error, attempt: n }) => logger_js_1.logger.warn(`[${this.name}] ${model} attempt ${n} failed, retrying:`, error),
202
+ });
203
+ const stream = (0, core_1.streamWithBackupModels)(attempt, {
204
+ models: [this.primaryModel, ...this.backupModels],
205
+ shouldTryNext: shouldTryBackup,
206
+ onFallback: ({ model, position, total }) => logger_js_1.logger.warn(`[${this.name}] falling back to ${model} (${position}/${total})`),
207
+ });
208
+ for await (const chunk of stream) {
209
+ const delta = fold(acc, chunk);
210
+ if (delta)
211
+ yield { delta, accumulated: acc.text, done: false };
212
+ }
213
+ const toolCalls = toolCallsOf(acc, this.name);
214
+ let structured;
215
+ if (json && acc.text) {
216
+ try {
217
+ structured = JSON.parse(acc.text);
218
+ }
219
+ catch (error) {
220
+ logger_js_1.logger.warn(`[${this.name}] Failed to parse JSON response:`, error);
221
+ }
222
+ }
223
+ if (toolCalls.length > 0) {
224
+ structured = {
225
+ ...(structured ?? {}),
226
+ message: structured?.message || acc.text,
227
+ toolCalls,
228
+ };
229
+ }
230
+ // A parsed-but-blank message with no tool calls is as empty as no text. The
231
+ // stream guard upstream only knows about chunks; this one knows what the
232
+ // turn was FOR, and a turn that produced `{"message":""}` did not do it.
233
+ (0, completion_js_1.assertUsableCompletion)(structured, acc.text, toolCalls.length, this.name);
234
+ yield {
235
+ delta: "",
236
+ accumulated: acc.text,
237
+ done: true,
238
+ metadata: {
239
+ model: acc.model,
240
+ ...(acc.finishReason ? { finishReason: acc.finishReason } : {}),
241
+ ...(acc.promptTokens !== undefined
242
+ ? {
243
+ tokensUsed: acc.promptTokens + (acc.completionTokens ?? 0),
244
+ promptTokens: acc.promptTokens,
245
+ completionTokens: acc.completionTokens,
246
+ // New in v3: the cache-hit subset of the prompt, which the old
247
+ // adapters never read and which is billed far cheaper.
248
+ cachedInputTokens: acc.cachedInputTokens,
249
+ }
250
+ : {}),
251
+ },
252
+ structured,
253
+ };
254
+ }
255
+ }
256
+ exports.ProviderAdapter = ProviderAdapter;
257
+ //# sourceMappingURL=ProviderAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderAdapter.js","sourceRoot":"","sources":["../../../src/providers/ProviderAdapter.ts"],"names":[],"mappings":"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"}