@falai/agent 2.7.0 → 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 (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 +31 -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 +32 -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 +40 -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 +94 -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 +31 -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 +32 -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 +39 -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 +94 -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 +8 -6
  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 +45 -548
  515. package/src/providers/DeepSeekProvider.ts +27 -92
  516. package/src/providers/GeminiProvider.ts +43 -680
  517. package/src/providers/GenericOpenAICompatibleProvider.ts +19 -27
  518. package/src/providers/OpenAICompatibleProvider.ts +58 -763
  519. package/src/providers/OpenAIProvider.ts +31 -55
  520. package/src/providers/OpenRouterProvider.ts +40 -70
  521. package/src/providers/ProviderAdapter.ts +368 -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
@@ -1,529 +1,47 @@
1
1
  "use strict";
2
2
  /**
3
- * Google Gemini AI provider implementation with retry and backup models
3
+ * Google Gemini.
4
+ *
5
+ * Thought signatures, the `functionResponse`-by-name pairing, implicit cache
6
+ * hits and the thinking levels are all in `@providerkit/core`, written against
7
+ * the REST API rather than the SDK.
8
+ *
9
+ * v3 sends a response schema alongside tools when a caller asks for both. v2
10
+ * dropped the schema in that case, from a 2024-era constraint that no longer
11
+ * holds — a sibling codebase runs the combination in production today.
4
12
  */
5
13
  Object.defineProperty(exports, "__esModule", { value: true });
6
14
  exports.GeminiProvider = void 0;
7
- const genai_1 = require("@google/genai");
8
- const retry_1 = require("../utils/retry");
9
- const completion_1 = require("../utils/completion");
10
- const json_1 = require("../utils/json");
11
- const logger_1 = require("../utils/logger");
12
- const errorClassification_1 = require("./errorClassification");
13
- /**
14
- * Gemini-specific error classification signals ("overloaded" code plus
15
- * the "not available"/"INTERNAL" message patterns Gemini emits).
16
- */
17
- const CLASSIFICATION_OPTIONS = {
18
- overloadedCodes: ["overloaded"],
19
- overloadedMessages: ["not available", "INTERNAL"],
20
- };
21
- /**
22
- * Determines if an error should trigger backup model usage.
23
- * Derived from the normalized error classification.
24
- */
25
- const shouldUseBackupModel = (error) => (0, errorClassification_1.isBackupEligible)((0, errorClassification_1.classifyProviderError)(error, CLASSIFICATION_OPTIONS));
26
- /**
27
- * Gemini provider implementation with backup models and retry logic
28
- */
29
- class GeminiProvider {
15
+ const core_1 = require("@providerkit/core");
16
+ const ProviderAdapter_js_1 = require("./ProviderAdapter.js");
17
+ class GeminiProvider extends ProviderAdapter_js_1.ProviderAdapter {
30
18
  constructor(options) {
19
+ if (!options.apiKey)
20
+ throw new Error("Gemini API key is required");
21
+ if (!options.model) {
22
+ throw new Error("Model is required. Example: 'gemini-3.1-pro-preview'");
23
+ }
24
+ super({
25
+ provider: (0, core_1.createGeminiProvider)({
26
+ apiKey: options.apiKey,
27
+ model: options.model,
28
+ id: "gemini",
29
+ ...(options.baseUrl ? { baseUrl: options.baseUrl } : {}),
30
+ ...(options.config?.maxTokens ? { maxTokens: options.config.maxTokens } : {}),
31
+ ...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
32
+ }),
33
+ model: options.model,
34
+ ...(options.config ? { defaults: options.config } : {}),
35
+ ...(options.backupModels ? { backupModels: options.backupModels } : {}),
36
+ ...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
37
+ });
31
38
  this.name = "gemini";
32
39
  this.capabilities = {
33
40
  supportsTools: true,
34
41
  supportsNativeJsonSchema: true,
35
42
  supportsStreaming: true,
36
43
  supportsStreamingToolCalls: true,
37
- supportsPromptCaching: false,
38
- };
39
- const { apiKey, model, backupModels = [], config, retryConfig, client } = options;
40
- if (!client && !apiKey) {
41
- throw new Error("Gemini API key is required");
42
- }
43
- if (!model) {
44
- throw new Error("Model is required. Example: 'gemini-3.1-pro-preview'");
45
- }
46
- this.genAI = client ?? new genai_1.GoogleGenAI({ apiKey });
47
- this.primaryModel = model;
48
- this.backupModels = backupModels;
49
- this.config = config;
50
- this.retryConfig = (0, retry_1.resolveRetryConfig)(retryConfig);
51
- }
52
- /**
53
- * Build Gemini-formatted contents from HistoryItem[] array.
54
- * Gemini uses "user"/"model" roles (not "assistant").
55
- * System messages are extracted separately for systemInstruction.
56
- * Tool results map to functionResponse parts, tool calls to functionCall parts.
57
- */
58
- buildGeminiContents(history) {
59
- const contents = [];
60
- const systemInstructions = [];
61
- for (const item of history) {
62
- switch (item.role) {
63
- case "system":
64
- systemInstructions.push(item.content);
65
- break;
66
- case "user":
67
- contents.push({ role: "user", parts: [{ text: item.content }] });
68
- break;
69
- case "assistant":
70
- if (item.tool_calls && item.tool_calls.length > 0) {
71
- const parts = [];
72
- if (item.content) {
73
- parts.push({ text: item.content });
74
- }
75
- for (const tc of item.tool_calls) {
76
- parts.push({
77
- functionCall: { name: tc.name, args: tc.arguments },
78
- });
79
- }
80
- contents.push({ role: "model", parts });
81
- }
82
- else {
83
- contents.push({ role: "model", parts: [{ text: item.content || "" }] });
84
- }
85
- break;
86
- case "tool":
87
- contents.push({
88
- role: "user",
89
- parts: [
90
- {
91
- functionResponse: {
92
- name: item.name,
93
- response: typeof item.content === "object" ? item.content : { result: item.content },
94
- },
95
- },
96
- ],
97
- });
98
- break;
99
- }
100
- }
101
- return { contents, systemInstructions };
102
- }
103
- /**
104
- * Convert tool parameter schemas (JSON Schema) to Gemini's Schema format.
105
- * Gemini's FunctionDeclaration.parameters expects its own Schema type,
106
- * not raw JSON Schema. This method handles the conversion, including
107
- * edge cases like empty objects that Gemini rejects.
108
- *
109
- * @private
110
- */
111
- convertToolParameters(parameters) {
112
- if (!parameters || typeof parameters !== "object") {
113
- return undefined;
114
- }
115
- try {
116
- return this.adaptSchemaForGemini(parameters);
117
- }
118
- catch (error) {
119
- logger_1.logger.warn(`[GeminiProvider] Failed to convert tool parameters, passing as-is:`, error);
120
- return parameters;
121
- }
122
- }
123
- /**
124
- * Safely extract text from a Gemini response or chunk.
125
- * Bypasses the SDK's `.text` getter entirely to avoid warnings about
126
- * non-text parts (e.g., "thoughtSignature") in the response.
127
- * Manually concatenates only text parts from candidates.
128
- *
129
- * @private
130
- */
131
- safeExtractText(responseOrChunk) {
132
- // Always extract text parts manually to avoid SDK warnings about
133
- // non-text parts like "thoughtSignature" in the response.
134
- const parts = responseOrChunk.candidates?.[0]?.content?.parts;
135
- if (parts) {
136
- // Exclude reasoning parts (thought: true) — with includeThoughts enabled
137
- // they carry text but must never leak into the user-facing message.
138
- return parts
139
- .filter((p) => p.text != null && !p.thought)
140
- .map((p) => p.text)
141
- .join("");
142
- }
143
- // Fallback: try the .text getter if no candidates structure exists
144
- try {
145
- return responseOrChunk.text || "";
146
- }
147
- catch {
148
- return "";
149
- }
150
- }
151
- /**
152
- * Build Gemini function declarations from framework tool definitions.
153
- * Converts JSON Schema parameters to Gemini's Schema format.
154
- *
155
- * @private
156
- */
157
- buildFunctionDeclarations(tools) {
158
- return tools.map((tool) => ({
159
- name: tool.name || tool.id,
160
- description: tool.description || "",
161
- parameters: this.convertToolParameters(tool.parameters),
162
- }));
163
- }
164
- /**
165
- * Adapt common schema format to Gemini's specific requirements.
166
- * Gemini has strict validation:
167
- * - OBJECT types MUST have non-empty properties
168
- * - Empty objects cause 400 Bad Request errors
169
- * - Uses Gemini's Schema type with Type enums
170
- *
171
- * @private
172
- */
173
- adaptSchemaForGemini(schema) {
174
- const geminiSchema = {};
175
- // Convert type
176
- if (schema.type) {
177
- if (Array.isArray(schema.type)) {
178
- // For now, take the first type (Gemini doesn't support union types the same way)
179
- geminiSchema.type = this.mapToGeminiType(schema.type[0]);
180
- }
181
- else {
182
- geminiSchema.type = this.mapToGeminiType(schema.type);
183
- }
184
- }
185
- // Handle description
186
- if (schema.description) {
187
- geminiSchema.description = schema.description;
188
- }
189
- // Handle nullable
190
- if (schema.nullable !== undefined) {
191
- geminiSchema.nullable = schema.nullable;
192
- }
193
- // Handle enum
194
- if (schema.enum) {
195
- geminiSchema.enum = schema.enum;
196
- }
197
- // Handle object properties - Gemini requires non-empty properties for OBJECT type
198
- if (geminiSchema.type === genai_1.Type.OBJECT ||
199
- schema.type === "object" ||
200
- (Array.isArray(schema.type) && schema.type.includes("object"))) {
201
- if (!schema.properties || Object.keys(schema.properties).length === 0) {
202
- logger_1.logger.warn("[GeminiProvider] Gemini requires OBJECT types to have non-empty properties. Converting empty object to STRING.");
203
- geminiSchema.type = genai_1.Type.STRING;
204
- return geminiSchema;
205
- }
206
- // Recursively convert nested properties
207
- geminiSchema.properties = {};
208
- for (const [key, value] of Object.entries(schema.properties)) {
209
- geminiSchema.properties[key] = this.adaptSchemaForGemini(value);
210
- }
211
- // Handle required fields
212
- if (schema.required && schema.required.length > 0) {
213
- geminiSchema.required = schema.required;
214
- }
215
- }
216
- // Handle array items
217
- if (geminiSchema.type === genai_1.Type.ARRAY ||
218
- schema.type === "array" ||
219
- (Array.isArray(schema.type) && schema.type.includes("array"))) {
220
- if (schema.items) {
221
- geminiSchema.items = this.adaptSchemaForGemini(schema.items);
222
- }
223
- }
224
- return geminiSchema;
225
- }
226
- /**
227
- * Map common JSON Schema type strings to Gemini's Type enum
228
- * @private
229
- */
230
- mapToGeminiType(type) {
231
- switch (type.toLowerCase()) {
232
- case "string":
233
- return genai_1.Type.STRING;
234
- case "number":
235
- return genai_1.Type.NUMBER;
236
- case "integer":
237
- return genai_1.Type.INTEGER;
238
- case "boolean":
239
- return genai_1.Type.BOOLEAN;
240
- case "array":
241
- return genai_1.Type.ARRAY;
242
- case "object":
243
- return genai_1.Type.OBJECT;
244
- default:
245
- logger_1.logger.warn(`[GeminiProvider] Unknown type "${type}", defaulting to STRING`);
246
- return genai_1.Type.STRING;
247
- }
248
- }
249
- async generateMessage(input) {
250
- return this.generateWithBackup(input);
251
- }
252
- async *generateMessageStream(input) {
253
- yield* this.generateStreamWithBackup(input);
254
- }
255
- async generateWithBackup(input) {
256
- const observer = (0, retry_1.backupFallbackLogging)("[GEMINI]", shouldUseBackupModel);
257
- try {
258
- return await (0, retry_1.withBackupFallback)({
259
- models: [this.primaryModel, ...this.backupModels],
260
- attempt: (model) => this.generateWithModel(model, input),
261
- shouldTryBackup: shouldUseBackupModel,
262
- ...observer.callbacks,
263
- });
264
- }
265
- catch (error) {
266
- observer.logExhausted(error);
267
- throw (0, errorClassification_1.toProviderError)(error, this.name, CLASSIFICATION_OPTIONS);
268
- }
269
- }
270
- async generateWithModel(model, input) {
271
- const operation = async (signal) => {
272
- // Schema-required: configure response schema
273
- const configOverride = { ...this.config };
274
- // Handle tools and JSON schema - Gemini doesn't support both simultaneously
275
- const hasTools = input.tools && input.tools.length > 0;
276
- const hasJsonSchema = input.parameters?.jsonSchema;
277
- if (hasTools && hasJsonSchema) {
278
- logger_1.logger.debug(`[GeminiProvider] Both tools and JSON schema provided. Prioritizing function calling - JSON schema will be ignored.`);
279
- }
280
- if (hasTools) {
281
- const toolNames = input.tools?.map((tool) => tool.name || tool.id) || [];
282
- logger_1.logger.debug(`[GeminiProvider] Configuring ${toolNames.length} tools for model ${model}:`, toolNames);
283
- const functionDeclarations = this.buildFunctionDeclarations(input.tools);
284
- configOverride.tools = [{ functionDeclarations }];
285
- }
286
- else if (hasJsonSchema) {
287
- // Only set JSON schema if no tools are present
288
- configOverride.responseMimeType = "application/json";
289
- // Adapt common schema format to Gemini's specific requirements
290
- configOverride.responseSchema = input.parameters ? this.adaptSchemaForGemini(input.parameters.jsonSchema) : {};
291
- }
292
- let response;
293
- try {
294
- // Build contents from history
295
- const { contents: historyContents, systemInstructions } = this.buildGeminiContents(input.history);
296
- // Append the current prompt as the final user content
297
- historyContents.push({ role: "user", parts: [{ text: input.prompt }] });
298
- // Set system instruction from history if present
299
- if (systemInstructions.length > 0) {
300
- const existingSystem = configOverride.systemInstruction;
301
- if (typeof existingSystem === "string") {
302
- configOverride.systemInstruction = `${existingSystem}\n\n${systemInstructions.join("\n\n")}`;
303
- }
304
- else {
305
- configOverride.systemInstruction = systemInstructions.join("\n\n");
306
- }
307
- }
308
- const reqSignal = (0, retry_1.combineAbortSignals)(input.signal, signal);
309
- response = await this.genAI.models.generateContent({
310
- model,
311
- contents: historyContents,
312
- config: {
313
- ...configOverride,
314
- ...(reqSignal ? { abortSignal: reqSignal } : {}),
315
- },
316
- });
317
- }
318
- catch (error) {
319
- logger_1.logger.error(`[GeminiProvider] API call failed:`, error);
320
- throw error;
321
- }
322
- // Extract tool calls from response first
323
- const toolCalls = [];
324
- // Check for function calls in the response content
325
- if (response.candidates && response.candidates[0]?.content?.parts) {
326
- for (const part of response.candidates[0].content.parts) {
327
- if (part.functionCall) {
328
- toolCalls.push({
329
- toolName: part.functionCall.name || "",
330
- arguments: part.functionCall.args || {},
331
- });
332
- }
333
- }
334
- }
335
- // Safely extract text — avoids SDK warning about non-text parts
336
- const message = this.safeExtractText(response);
337
- // Debug logging for response structure
338
- if (!message && toolCalls.length === 0) {
339
- logger_1.logger.debug(`[GeminiProvider] Debug - Response structure:`, {
340
- candidatesCount: response.candidates?.length || 0,
341
- firstCandidateParts: response.candidates?.[0]?.content?.parts?.length || 0,
342
- });
343
- }
344
- // Only throw error if we have no text AND no function calls
345
- if (!message && toolCalls.length === 0) {
346
- logger_1.logger.error(`[GeminiProvider] Empty response - no text or function calls`);
347
- logger_1.logger.error(`[GeminiProvider] Response candidates:`, response.candidates);
348
- throw new Error("No response from Gemini");
349
- }
350
- // Log when we have function calls but no text (this is normal)
351
- if (toolCalls.length > 0 && !message) {
352
- logger_1.logger.debug(`[GeminiProvider] Function calls detected without text message:`, toolCalls.map(tc => tc.toolName));
353
- }
354
- // Parse JSON response if schema was provided
355
- let structured;
356
- if (input.parameters?.jsonSchema) {
357
- const parsed = (0, json_1.tryParseJSONResponse)(message);
358
- if (parsed) {
359
- structured = parsed;
360
- }
361
- else {
362
- logger_1.logger.warn("[GeminiProvider] Failed to parse JSON response, treating as plain text");
363
- }
364
- }
365
- // If tools were used, include them in structured response
366
- if (toolCalls.length > 0) {
367
- structured = {
368
- message: structured?.message || message,
369
- toolCalls,
370
- ...structured,
371
- };
372
- }
373
- // A parsed-but-blank message with no tool calls is as empty as no text;
374
- // the shared guard throws so withTimeoutAndRetry retries instead of
375
- // returning {"message":""}.
376
- (0, completion_1.assertUsableCompletion)(structured, message, toolCalls.length, "Gemini");
377
- return {
378
- message,
379
- metadata: {
380
- model,
381
- tokensUsed: response.usageMetadata?.totalTokenCount,
382
- promptTokens: response.usageMetadata?.promptTokenCount,
383
- completionTokens: response.usageMetadata?.candidatesTokenCount,
384
- },
385
- structured,
386
- };
387
- };
388
- return (0, retry_1.withTimeoutAndRetry)(operation, this.retryConfig.timeout, this.retryConfig.retries, `Gemini ${model}`, (error) => (0, errorClassification_1.isRetriableProviderError)(error, CLASSIFICATION_OPTIONS));
389
- }
390
- async *generateStreamWithBackup(input) {
391
- const observer = (0, retry_1.backupFallbackLogging)("[GEMINI]", shouldUseBackupModel, { streaming: true });
392
- try {
393
- yield* (0, retry_1.streamWithBackupFallback)({
394
- models: [this.primaryModel, ...this.backupModels],
395
- attempt: (model) => (0, retry_1.withStreamRetry)((signal) => this.generateStreamWithModel(model, input, signal), { maxRetries: this.retryConfig.retries, firstChunkTimeoutMs: this.retryConfig.timeout, operationName: `Gemini ${model} stream`, isRetriable: (error) => (0, errorClassification_1.isRetriableProviderError)(error, CLASSIFICATION_OPTIONS) }),
396
- shouldTryBackup: shouldUseBackupModel,
397
- ...observer.callbacks,
398
- });
399
- }
400
- catch (error) {
401
- observer.logExhausted(error);
402
- throw (0, errorClassification_1.toProviderError)(error, this.name, CLASSIFICATION_OPTIONS);
403
- }
404
- }
405
- async *generateStreamWithModel(model, input, attemptSignal) {
406
- // Caller cancellation + the retry helper's per-attempt deadline, as one.
407
- const reqSignal = (0, retry_1.combineAbortSignals)(input.signal, attemptSignal);
408
- // Streaming: request JSON if schema provided
409
- const configOverride = { ...this.config };
410
- // Handle tools and JSON schema - Gemini doesn't support both simultaneously
411
- const hasTools = input.tools && input.tools.length > 0;
412
- const hasJsonSchema = input.parameters?.jsonSchema;
413
- if (hasTools && hasJsonSchema) {
414
- logger_1.logger.debug(`[GeminiProvider] Both tools and JSON schema provided. Prioritizing function calling - JSON schema will be ignored.`);
415
- }
416
- if (hasTools) {
417
- const toolNames = input.tools?.map((tool) => tool.name || tool.id) || [];
418
- logger_1.logger.debug(`[GeminiProvider] Configuring ${toolNames.length} tools for streaming:`, toolNames);
419
- const functionDeclarations = this.buildFunctionDeclarations(input.tools);
420
- configOverride.tools = [{ functionDeclarations }];
421
- }
422
- else if (hasJsonSchema) {
423
- // Only set JSON schema if no tools are present
424
- configOverride.responseMimeType = "application/json";
425
- // Adapt common schema format to Gemini's specific requirements
426
- configOverride.responseSchema = input.parameters ? this.adaptSchemaForGemini(input.parameters.jsonSchema) : {};
427
- }
428
- let stream;
429
- try {
430
- // Build contents from history
431
- const { contents: historyContents, systemInstructions } = this.buildGeminiContents(input.history);
432
- // Append the current prompt as the final user content
433
- historyContents.push({ role: "user", parts: [{ text: input.prompt }] });
434
- // Set system instruction from history if present
435
- if (systemInstructions.length > 0) {
436
- const existingSystem = configOverride.systemInstruction;
437
- if (typeof existingSystem === "string") {
438
- configOverride.systemInstruction = `${existingSystem}\n\n${systemInstructions.join("\n\n")}`;
439
- }
440
- else {
441
- configOverride.systemInstruction = systemInstructions.join("\n\n");
442
- }
443
- }
444
- stream = await this.genAI.models.generateContentStream({
445
- model,
446
- contents: historyContents,
447
- config: {
448
- ...configOverride,
449
- ...(reqSignal ? { abortSignal: reqSignal } : {}),
450
- },
451
- });
452
- }
453
- catch (error) {
454
- logger_1.logger.error(`[GeminiProvider] Streaming API call failed:`, error);
455
- throw error;
456
- }
457
- let accumulated = "";
458
- let promptTokenCount = 0;
459
- let candidatesTokenCount = 0;
460
- let totalTokenCount = 0;
461
- const toolCalls = [];
462
- for await (const chunk of stream) {
463
- if (reqSignal?.aborted)
464
- break;
465
- // Safely extract text — chunk.text can throw when chunk has only function calls
466
- const delta = this.safeExtractText(chunk);
467
- // Extract tool calls from chunk
468
- if (chunk.candidates && chunk.candidates[0]?.content?.parts) {
469
- for (const part of chunk.candidates[0].content.parts) {
470
- if (part.functionCall) {
471
- toolCalls.push({
472
- toolName: part.functionCall.name || "",
473
- arguments: part.functionCall.args || {},
474
- });
475
- }
476
- }
477
- }
478
- if (delta) {
479
- accumulated += delta;
480
- yield {
481
- delta,
482
- accumulated,
483
- done: false,
484
- };
485
- }
486
- // Update token counts if available
487
- if (chunk.usageMetadata) {
488
- promptTokenCount = chunk.usageMetadata.promptTokenCount || 0;
489
- candidatesTokenCount = chunk.usageMetadata.candidatesTokenCount || 0;
490
- totalTokenCount = chunk.usageMetadata.totalTokenCount || 0;
491
- }
492
- }
493
- // Parse JSON response if schema was provided
494
- let structured;
495
- if (input.parameters?.jsonSchema && accumulated) {
496
- const parsed = (0, json_1.tryParseJSONResponse)(accumulated);
497
- if (parsed) {
498
- structured = parsed;
499
- }
500
- else {
501
- logger_1.logger.warn("[GeminiProvider] Failed to parse JSON response in stream, treating as plain text");
502
- }
503
- }
504
- // Include tool calls in structured response (even without JSON schema)
505
- if (toolCalls.length > 0) {
506
- structured = {
507
- message: structured?.message || accumulated,
508
- ...structured,
509
- toolCalls,
510
- };
511
- }
512
- // Empty-completion guard — same definition as the non-streaming path, so the
513
- // stream retries / falls back to backup instead of emitting an empty message.
514
- (0, completion_1.assertUsableCompletion)(structured, accumulated, toolCalls.length, "Gemini");
515
- // Yield final chunk
516
- yield {
517
- delta: "",
518
- accumulated,
519
- done: true,
520
- metadata: {
521
- model,
522
- tokensUsed: totalTokenCount,
523
- promptTokens: promptTokenCount,
524
- completionTokens: candidatesTokenCount,
525
- },
526
- structured: structured,
44
+ supportsPromptCaching: true,
527
45
  };
528
46
  }
529
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GeminiProvider.js","sourceRoot":"","sources":["../../../src/providers/GeminiProvider.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AASH,yCAAkD;AAYlD,0CAAoL;AACpL,oDAA6D;AAC7D,wCAAqD;AACrD,4CAAyC;AACzC,+DAM+B;AA4B/B;;;GAGG;AACH,MAAM,sBAAsB,GAA+B;IACzD,eAAe,EAAE,CAAC,YAAY,CAAC;IAC/B,kBAAkB,EAAE,CAAC,eAAe,EAAE,UAAU,CAAC;CAClD,CAAC;AAEF;;;GAGG;AACH,MAAM,oBAAoB,GAAG,CAAC,KAAc,EAAW,EAAE,CACvD,IAAA,sCAAgB,EAAC,IAAA,2CAAqB,EAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAEzE;;GAEG;AACH,MAAa,cAAc;IAezB,YAAY,OAA8B;QAd1B,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;QAQA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAElF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,IAAI,mBAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAA,0BAAkB,EAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IAED;;;;;OAKG;IACK,mBAAmB,CAAC,OAAsB;QAIhD,MAAM,QAAQ,GAAmE,EAAE,CAAC;QACpF,MAAM,kBAAkB,GAAa,EAAE,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,QAAQ;oBACX,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACtC,MAAM;gBACR,KAAK,MAAM;oBACT,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;oBACjE,MAAM;gBACR,KAAK,WAAW;oBACd,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAClD,MAAM,KAAK,GAAmC,EAAE,CAAC;wBACjD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;4BACjB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;wBACrC,CAAC;wBACD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;4BACjC,KAAK,CAAC,IAAI,CAAC;gCACT,YAAY,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE;6BACpD,CAAC,CAAC;wBACL,CAAC;wBACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC1C,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC1E,CAAC;oBACD,MAAM;gBACR,KAAK,MAAM;oBACT,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE;4BACL;gCACE,gBAAgB,EAAE;oCAChB,IAAI,EAAE,IAAI,CAAC,IAAI;oCACf,QAAQ,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE;iCACrF;6BACF;yBACF;qBACF,CAAC,CAAC;oBACH,MAAM;YACV,CAAC;QACH,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC1C,CAAC;IAED;;;;;;;OAOG;IACK,qBAAqB,CAAC,UAAmB;QAC/C,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YAClD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAA8B,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,oEAAoE,EAAE,KAAK,CAAC,CAAC;YACzF,OAAO,UAAoB,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,eAAe,CAAC,eAAqJ;QAC3K,iEAAiE;QACjE,0DAA0D;QAC1D,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC;QAC9D,IAAI,KAAK,EAAE,CAAC;YACV,yEAAyE;YACzE,oEAAoE;YACpE,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;iBAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBAClB,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,CAAC;QACD,mEAAmE;QACnE,IAAI,CAAC;YACH,OAAO,eAAe,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,yBAAyB,CAC/B,KAAuF;QAEvF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE;YAC1B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC;SACxD,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;;;;OAQG;IACK,oBAAoB,CAAC,MAAwB;QACnD,MAAM,YAAY,GAAW,EAAE,CAAC;QAEhC,eAAe;QACf,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,iFAAiF;gBACjF,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAChD,CAAC;QAED,kBAAkB;QAClB,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,YAAY,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1C,CAAC;QAED,cAAc;QACd,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,IAAgB,CAAC;QAC9C,CAAC;QAED,kFAAkF;QAClF,IACE,YAAY,CAAC,IAAI,KAAK,YAAI,CAAC,MAAM;YACjC,MAAM,CAAC,IAAI,KAAK,QAAQ;YACxB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAC9D,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtE,eAAM,CAAC,IAAI,CACT,gHAAgH,CACjH,CAAC;gBACF,YAAY,CAAC,IAAI,GAAG,YAAI,CAAC,MAAM,CAAC;gBAChC,OAAO,YAAY,CAAC;YACtB,CAAC;YAED,wCAAwC;YACxC,YAAY,CAAC,UAAU,GAAG,EAAE,CAAC;YAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7D,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAClE,CAAC;YAED,yBAAyB;YACzB,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,YAAY,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IACE,YAAY,CAAC,IAAI,KAAK,YAAI,CAAC,KAAK;YAChC,MAAM,CAAC,IAAI,KAAK,OAAO;YACvB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAC7D,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,IAAY;QAClC,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3B,KAAK,QAAQ;gBACX,OAAO,YAAI,CAAC,MAAM,CAAC;YACrB,KAAK,QAAQ;gBACX,OAAO,YAAI,CAAC,MAAM,CAAC;YACrB,KAAK,SAAS;gBACZ,OAAO,YAAI,CAAC,OAAO,CAAC;YACtB,KAAK,SAAS;gBACZ,OAAO,YAAI,CAAC,OAAO,CAAC;YACtB,KAAK,OAAO;gBACV,OAAO,YAAI,CAAC,KAAK,CAAC;YACpB,KAAK,QAAQ;gBACX,OAAO,YAAI,CAAC,MAAM,CAAC;YACrB;gBACE,eAAM,CAAC,IAAI,CACT,kCAAkC,IAAI,yBAAyB,CAChE,CAAC;gBACF,OAAO,YAAI,CAAC,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAInB,KAAqC;QAErC,OAAO,IAAI,CAAC,kBAAkB,CAAwB,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,CAAC,qBAAqB,CAI1B,KAAqC;QAErC,KAAK,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAwB,KAAK,CAAC,CAAC;IACrE,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAI9B,KAAqC;QAErC,MAAM,QAAQ,GAAG,IAAA,6BAAqB,EAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAEzE,IAAI,CAAC;YACH,OAAO,MAAM,IAAA,0BAAkB,EAAC;gBAC9B,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;gBACjD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,IAAI,CAAC,iBAAiB,CAAwB,KAAK,EAAE,KAAK,CAAC;gBAC7D,eAAe,EAAE,oBAAoB;gBACrC,GAAG,QAAQ,CAAC,SAAS;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,IAAA,qCAAe,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAI7B,KAAa,EACb,KAAqC;QAErC,MAAM,SAAS,GAAG,KAAK,EAAE,MAAmB,EAAkC,EAAE;YAC9E,6CAA6C;YAC7C,MAAM,cAAc,GAAmC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAE1E,4EAA4E;YAC5E,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC;YAEnD,IAAI,QAAQ,IAAI,aAAa,EAAE,CAAC;gBAC9B,eAAM,CAAC,KAAK,CAAC,oHAAoH,CAAC,CAAC;YACrI,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBACzE,eAAM,CAAC,KAAK,CAAC,gCAAgC,SAAS,CAAC,MAAM,oBAAoB,KAAK,GAAG,EAAE,SAAS,CAAC,CAAC;gBACtG,MAAM,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,KAAM,CAAC,CAAC;gBAC1E,cAAc,CAAC,KAAK,GAAG,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC;YAEpD,CAAC;iBAAM,IAAI,aAAa,EAAE,CAAC;gBACzB,+CAA+C;gBAC/C,cAAc,CAAC,gBAAgB,GAAG,kBAAkB,CAAC;gBACrD,+DAA+D;gBAC/D,cAAc,CAAC,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAC1E,KAAK,CAAC,UAAU,CAAC,UAAU,CAC5B,CAAC,CAAC,CAAC,EAAE,CAAC;YACT,CAAC;YAED,IAAI,QAAiC,CAAC;YACtC,IAAI,CAAC;gBACH,8BAA8B;gBAC9B,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAElG,sDAAsD;gBACtD,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;gBAExE,iDAAiD;gBACjD,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,MAAM,cAAc,GAAG,cAAc,CAAC,iBAAiB,CAAC;oBACxD,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;wBACvC,cAAc,CAAC,iBAAiB,GAAG,GAAG,cAAc,OAAO,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC/F,CAAC;yBAAM,CAAC;wBACN,cAAc,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACrE,CAAC;gBACH,CAAC;gBAED,MAAM,SAAS,GAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC5D,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC;oBACjD,KAAK;oBACL,QAAQ,EAAE,eAAe;oBACzB,MAAM,EAAE;wBACN,GAAG,cAAc;wBACjB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACjD;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,eAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;gBACzD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,yCAAyC;YACzC,MAAM,SAAS,GAGV,EAAE,CAAC;YAER,mDAAmD;YACnD,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAClE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACxD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBACtB,SAAS,CAAC,IAAI,CAAC;4BACb,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE;4BACtC,SAAS,EAAG,IAAI,CAAC,YAAY,CAAC,IAAgC,IAAI,EAAE;yBACrE,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,gEAAgE;YAChE,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAE/C,uCAAuC;YACvC,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvC,eAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE;oBAC3D,eAAe,EAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;oBACjD,mBAAmB,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;iBAC3E,CAAC,CAAC;YACL,CAAC;YAED,4DAA4D;YAC5D,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvC,eAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;gBAC5E,eAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC3E,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YAED,+DAA+D;YAC/D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrC,eAAM,CAAC,KAAK,CAAC,gEAAgE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnH,CAAC;YAED,6CAA6C;YAC7C,IAAI,UAA+C,CAAC;YACpD,IAAI,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,IAAA,2BAAoB,EAAC,OAAO,CAAC,CAAC;gBAC7C,IAAI,MAAM,EAAE,CAAC;oBACX,UAAU,GAAG,MAAiC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,eAAM,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;YAED,0DAA0D;YAC1D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,UAAU,GAAG;oBACX,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,OAAO;oBACvC,SAAS;oBACT,GAAG,UAAU;iBACa,CAAC;YAC/B,CAAC;YAED,wEAAwE;YACxE,oEAAoE;YACpE,4BAA4B;YAC5B,IAAA,mCAAsB,EAAC,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAExE,OAAO;gBACL,OAAO;gBACP,QAAQ,EAAE;oBACR,KAAK;oBACL,UAAU,EAAE,QAAQ,CAAC,aAAa,EAAE,eAAe;oBACnD,YAAY,EAAE,QAAQ,CAAC,aAAa,EAAE,gBAAgB;oBACtD,gBAAgB,EAAE,QAAQ,CAAC,aAAa,EAAE,oBAAoB;iBAC/D;gBACD,UAAU;aACX,CAAC;QACJ,CAAC,CAAC;QAEF,OAAO,IAAA,2BAAmB,EACxB,SAAS,EACT,IAAI,CAAC,WAAW,CAAC,OAAO,EACxB,IAAI,CAAC,WAAW,CAAC,OAAO,EACxB,UAAU,KAAK,EAAE,EACjB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,8CAAwB,EAAC,KAAK,EAAE,sBAAsB,CAAC,CACpB,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,CAAC,wBAAwB,CAIrC,KAAqC;QAErC,MAAM,QAAQ,GAAG,IAAA,6BAAqB,EAAC,UAAU,EAAE,oBAAoB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9F,IAAI,CAAC;YACH,KAAK,CAAC,CAAC,IAAA,gCAAwB,EAAC;gBAC9B,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;gBACjD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,IAAA,uBAAe,EACb,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAwB,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EACrF,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,KAAK,SAAS,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,8CAAwB,EAAC,KAAK,EAAE,sBAAsB,CAAC,EAAE,CAClN;gBACH,eAAe,EAAE,oBAAoB;gBACrC,GAAG,QAAQ,CAAC,SAAS;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,IAAA,qCAAe,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,CAAC,uBAAuB,CAIpC,KAAa,EACb,KAAqC,EACrC,aAA2B;QAE3B,yEAAyE;QACzE,MAAM,SAAS,GAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACnE,6CAA6C;QAC7C,MAAM,cAAc,GAAmC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE1E,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC;QAEnD,IAAI,QAAQ,IAAI,aAAa,EAAE,CAAC;YAC9B,eAAM,CAAC,KAAK,CAAC,oHAAoH,CAAC,CAAC;QACrI,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACzE,eAAM,CAAC,KAAK,CAAC,gCAAgC,SAAS,CAAC,MAAM,uBAAuB,EAAE,SAAS,CAAC,CAAC;YACjG,MAAM,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,KAAM,CAAC,CAAC;YAC1E,cAAc,CAAC,KAAK,GAAG,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAEpD,CAAC;aAAM,IAAI,aAAa,EAAE,CAAC;YACzB,+CAA+C;YAC/C,cAAc,CAAC,gBAAgB,GAAG,kBAAkB,CAAC;YACrD,+DAA+D;YAC/D,cAAc,CAAC,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAC1E,KAAK,CAAC,UAAU,CAAC,UAAU,CAC5B,CAAC,CAAC,CAAC,EAAE,CAAC;QACT,CAAC;QAED,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,8BAA8B;YAC9B,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAElG,sDAAsD;YACtD,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAExE,iDAAiD;YACjD,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,cAAc,GAAG,cAAc,CAAC,iBAAiB,CAAC;gBACxD,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;oBACvC,cAAc,CAAC,iBAAiB,GAAG,GAAG,cAAc,OAAO,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/F,CAAC;qBAAM,CAAC;oBACN,cAAc,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;YAED,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC;gBACrD,KAAK;gBACL,QAAQ,EAAE,eAAe;gBACzB,MAAM,EAAE;oBACN,GAAG,cAAc;oBACjB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACjD;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,eAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;YACnE,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAC7B,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,MAAM,SAAS,GAGV,EAAE,CAAC;QAER,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,SAAS,EAAE,OAAO;gBAAE,MAAM;YAE9B,gFAAgF;YAChF,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAE1C,gCAAgC;YAChC,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAC5D,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACrD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBACtB,SAAS,CAAC,IAAI,CAAC;4BACb,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE;4BACtC,SAAS,EAAG,IAAI,CAAC,YAAY,CAAC,IAAgC,IAAI,EAAE;yBACrE,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,KAAK,EAAE,CAAC;gBACV,WAAW,IAAI,KAAK,CAAC;gBACrB,MAAM;oBACJ,KAAK;oBACL,WAAW;oBACX,IAAI,EAAE,KAAK;iBACZ,CAAC;YACJ,CAAC;YAED,mCAAmC;YACnC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACxB,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,IAAI,CAAC,CAAC;gBAC7D,oBAAoB,GAAG,KAAK,CAAC,aAAa,CAAC,oBAAoB,IAAI,CAAC,CAAC;gBACrE,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC,eAAe,IAAI,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,IAAI,UAA+C,CAAC;QACpD,IAAI,KAAK,CAAC,UAAU,EAAE,UAAU,IAAI,WAAW,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,IAAA,2BAAoB,EAAC,WAAW,CAAC,CAAC;YACjD,IAAI,MAAM,EAAE,CAAC;gBACX,UAAU,GAAG,MAAiC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,eAAM,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;YAClG,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,UAAU,GAAG;gBACX,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,WAAW;gBAC3C,GAAG,UAAU;gBACb,SAAS;aACiB,CAAC;QAC/B,CAAC;QAED,6EAA6E;QAC7E,8EAA8E;QAC9E,IAAA,mCAAsB,EAAC,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE5E,oBAAoB;QACpB,MAAM;YACJ,KAAK,EAAE,EAAE;YACT,WAAW;YACX,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR,KAAK;gBACL,UAAU,EAAE,eAAe;gBAC3B,YAAY,EAAE,gBAAgB;gBAC9B,gBAAgB,EAAE,oBAAoB;aACvC;YACD,UAAU,EAAE,UAAqC;SAClD,CAAC;IACJ,CAAC;CACF;AA/mBD,wCA+mBC"}
1
+ {"version":3,"file":"GeminiProvider.js","sourceRoot":"","sources":["../../../src/providers/GeminiProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,4CAAyD;AAGzD,6DAA2E;AAoB3E,MAAa,cAAe,SAAQ,oCAAe;IAUjD,YAAY,OAA8B;QACxC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,KAAK,CAAC;YACJ,QAAQ,EAAE,IAAA,2BAAoB,EAAC;gBAC7B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,EAAE,EAAE,QAAQ;gBACZ,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7E,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D,CAAC;YACF,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,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,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE,CAAC,CAAC;QA5BW,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,IAAI;SAC5B,CAAC;IAsBF,CAAC;CACF;AA/BD,wCA+BC"}
@@ -22,11 +22,12 @@
22
22
  * defaultHeaders: { "api-key": process.env.AZURE_OPENAI_KEY! },
23
23
  * });
24
24
  *
25
- * For OpenAI/OpenRouter (native `responses.parse`) and Anthropic/Gemini, prefer
26
- * their dedicated provider classes.
25
+ * For OpenAI, OpenRouter, Anthropic and Gemini, prefer their dedicated
26
+ * provider classes.
27
27
  */
28
- import type { ProviderCapabilities } from "../types/ai";
29
- import { OpenAICompatibleProvider, type OpenAICompatibleRequestConfig, type StructuredOutputMode } from "./OpenAICompatibleProvider";
28
+ import type { ProviderCapabilities } from "../types/ai.js";
29
+ import { OpenAICompatibleProvider, type StructuredOutputMode } from "./OpenAICompatibleProvider.js";
30
+ import type { RequestConfig } from "./ProviderAdapter.js";
30
31
  export interface OpenAICompatibleOptions {
31
32
  /** Provider identifier, e.g. "azure", "ollama", "groq". */
32
33
  name: string;
@@ -38,10 +39,6 @@ export interface OpenAICompatibleOptions {
38
39
  model: string;
39
40
  /** Backup models to try if the primary fails. */
40
41
  backupModels?: string[];
41
- /** Human-readable name for error messages. Defaults to `name`. */
42
- displayName?: string;
43
- /** Uppercase tag for log lines. Defaults to `name.toUpperCase()`. */
44
- logLabel?: string;
45
42
  /** Capability overrides, merged over the defaults (all true except caching). */
46
43
  capabilities?: Partial<ProviderCapabilities>;
47
44
  /** Extra request headers (e.g. Azure's `api-key`, a gateway's auth header). */
@@ -53,12 +50,14 @@ export interface OpenAICompatibleOptions {
53
50
  */
54
51
  structuredOutput?: StructuredOutputMode;
55
52
  /** Default request parameters merged into every call. */
56
- config?: OpenAICompatibleRequestConfig;
57
- /** Per-call timeout (ms) and retry count. */
53
+ config?: RequestConfig;
54
+ /** Idle-stream deadline (ms) and retry count. */
58
55
  retryConfig?: {
59
56
  timeout?: number;
60
57
  retries?: number;
61
58
  };
59
+ /** Replacement `fetch`, for tests that script the wire. */
60
+ fetchImpl?: typeof fetch;
62
61
  }
63
62
  /**
64
63
  * Build an `AiProvider` for any OpenAI-compatible endpoint from config alone.
@@ -1 +1 @@
1
- {"version":3,"file":"GenericOpenAICompatibleProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/GenericOpenAICompatibleProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,wBAAwB,EACxB,KAAK,6BAA6B,EAClC,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,uBAAuB;IACtC,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7C,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,yDAAyD;IACzD,MAAM,CAAC,EAAE,6BAA6B,CAAC;IACvC,6CAA6C;IAC7C,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AA8DD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,uBAAuB,GAC/B,wBAAwB,CAE1B"}
1
+ {"version":3,"file":"GenericOpenAICompatibleProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/GenericOpenAICompatibleProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EACL,wBAAwB,EACxB,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,uBAAuB;IACtC,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gFAAgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7C,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,yDAAyD;IACzD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,iDAAiD;IACjD,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;AA0DD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,uBAAuB,GAC/B,wBAAwB,CAE1B"}