omniroute 2.7.7 → 2.7.9

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 (296) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +1 -0
  3. package/app/.next/build-manifest.json +2 -2
  4. package/app/.next/prerender-manifest.json +3 -3
  5. package/app/.next/required-server-files.json +4 -0
  6. package/app/.next/routes-manifest.json +13 -0
  7. package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js.nft.json +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/agents/page.js.nft.json +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js.nft.json +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js.nft.json +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/media/page.js.nft.json +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page.js.nft.json +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/400/page.js.nft.json +1 -1
  62. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/401/page.js.nft.json +1 -1
  64. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/403/page.js.nft.json +1 -1
  66. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/408/page.js.nft.json +1 -1
  68. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/429/page.js.nft.json +1 -1
  70. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/500/page.js.nft.json +1 -1
  72. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/502/page.js.nft.json +1 -1
  74. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/503/page.js.nft.json +1 -1
  76. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/_global-error.html +2 -2
  78. package/app/.next/server/app/_global-error.rsc +1 -1
  79. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  80. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  81. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  82. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  83. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  84. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  85. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/api/acp/agents/route.js.nft.json +1 -1
  87. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  88. package/app/.next/server/app/api/cache/route.js.nft.json +1 -1
  89. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  90. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  91. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  92. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  93. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  94. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  95. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  96. package/app/.next/server/app/api/cli-tools/status/route.js.nft.json +1 -1
  97. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  99. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  100. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  101. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  102. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  103. package/app/.next/server/app/api/combos/test/route.js.nft.json +1 -1
  104. package/app/.next/server/app/api/compliance/audit-log/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/db-backups/export/route.js.nft.json +1 -1
  106. package/app/.next/server/app/api/db-backups/exportAll/route.js.nft.json +1 -1
  107. package/app/.next/server/app/api/db-backups/import/route.js.nft.json +1 -1
  108. package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
  109. package/app/.next/server/app/api/fallback/chains/route.js.nft.json +1 -1
  110. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  111. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  112. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  113. package/app/.next/server/app/api/logs/console/route.js.nft.json +1 -1
  114. package/app/.next/server/app/api/logs/detail/route.js.nft.json +1 -1
  115. package/app/.next/server/app/api/mcp/sse/route.js.nft.json +1 -1
  116. package/app/.next/server/app/api/mcp/status/route.js.nft.json +1 -1
  117. package/app/.next/server/app/api/mcp/stream/route.js.nft.json +1 -1
  118. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  119. package/app/.next/server/app/api/models/catalog/route.js +1 -1
  120. package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
  121. package/app/.next/server/app/api/models/openrouter-catalog/route.js.nft.json +1 -1
  122. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  123. package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -1
  124. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  125. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  126. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  127. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  128. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  129. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  130. package/app/.next/server/app/api/policies/route.js.nft.json +1 -1
  131. package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
  132. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  133. package/app/.next/server/app/api/pricing/sync/route.js.nft.json +1 -1
  134. package/app/.next/server/app/api/provider-metrics/route.js.nft.json +1 -1
  135. package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
  136. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  137. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  138. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  139. package/app/.next/server/app/api/providers/[id]/refresh/route.js.nft.json +1 -1
  140. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  141. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  142. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  143. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  144. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  145. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  146. package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
  147. package/app/.next/server/app/api/resilience/reset/route.js.nft.json +1 -1
  148. package/app/.next/server/app/api/resilience/route.js.nft.json +1 -1
  149. package/app/.next/server/app/api/search/providers/route.js.nft.json +1 -1
  150. package/app/.next/server/app/api/search/stats/route.js.nft.json +1 -1
  151. package/app/.next/server/app/api/settings/background-degradation/route.js.nft.json +1 -1
  152. package/app/.next/server/app/api/settings/codex-service-tier/route.js.nft.json +1 -1
  153. package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
  154. package/app/.next/server/app/api/settings/model-aliases/route.js.nft.json +1 -1
  155. package/app/.next/server/app/api/settings/proxies/assignments/route.js.nft.json +1 -1
  156. package/app/.next/server/app/api/settings/proxies/bulk-assign/route.js.nft.json +1 -1
  157. package/app/.next/server/app/api/settings/proxies/health/route.js.nft.json +1 -1
  158. package/app/.next/server/app/api/settings/proxies/migrate/route.js.nft.json +1 -1
  159. package/app/.next/server/app/api/settings/proxies/route.js.nft.json +1 -1
  160. package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
  161. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  162. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  163. package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
  164. package/app/.next/server/app/api/settings/task-routing/route.js.nft.json +1 -1
  165. package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
  166. package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
  167. package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
  168. package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
  169. package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
  170. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  171. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  172. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  173. package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
  174. package/app/.next/server/app/api/usage/budget/route.js.nft.json +1 -1
  175. package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
  176. package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
  177. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  178. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  179. package/app/.next/server/app/api/usage/proxy-logs/route.js.nft.json +1 -1
  180. package/app/.next/server/app/api/usage/quota/route.js.nft.json +1 -1
  181. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  182. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  183. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  184. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  185. package/app/.next/server/app/api/v1/chat/completions/route.js +2 -2
  186. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  187. package/app/.next/server/app/api/v1/completions/route.js +2 -2
  188. package/app/.next/server/app/api/v1/completions/route.js.nft.json +1 -1
  189. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  190. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  191. package/app/.next/server/app/api/v1/management/proxies/assignments/route.js.nft.json +1 -1
  192. package/app/.next/server/app/api/v1/management/proxies/bulk-assign/route.js.nft.json +1 -1
  193. package/app/.next/server/app/api/v1/management/proxies/health/route.js.nft.json +1 -1
  194. package/app/.next/server/app/api/v1/management/proxies/route.js.nft.json +1 -1
  195. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  196. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  197. package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
  198. package/app/.next/server/app/api/v1/music/generations/route.js.nft.json +1 -1
  199. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
  200. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
  201. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
  202. package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
  203. package/app/.next/server/app/api/v1/responses/[...path]/route/app-paths-manifest.json +3 -0
  204. package/app/.next/server/app/api/v1/responses/[...path]/route/build-manifest.json +11 -0
  205. package/app/.next/server/app/api/v1/responses/[...path]/route/server-reference-manifest.json +4 -0
  206. package/app/.next/server/app/api/v1/responses/[...path]/route.js +25 -0
  207. package/app/.next/server/app/api/v1/responses/[...path]/route.js.map +5 -0
  208. package/app/.next/server/app/api/v1/responses/[...path]/route.js.nft.json +1 -0
  209. package/app/.next/server/app/api/v1/responses/[...path]/route_client-reference-manifest.js +2 -0
  210. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  211. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  212. package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
  213. package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  214. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  215. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  216. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  217. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  218. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  219. package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
  220. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  221. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  222. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  223. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  224. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  225. package/app/.next/server/app/login/page.js.nft.json +1 -1
  226. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  227. package/app/.next/server/app/maintenance/page.js.nft.json +1 -1
  228. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  229. package/app/.next/server/app/offline/page.js.nft.json +1 -1
  230. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  231. package/app/.next/server/app/page.js.nft.json +1 -1
  232. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  233. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  234. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  235. package/app/.next/server/app/status/page.js.nft.json +1 -1
  236. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  237. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  238. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  239. package/app/.next/server/app-paths-manifest.json +1 -0
  240. package/app/.next/server/chunks/[root-of-the-server]__09c944b3._.js +1 -1
  241. package/app/.next/server/chunks/[root-of-the-server]__167585da._.js +1 -1
  242. package/app/.next/server/chunks/[root-of-the-server]__205783af._.js +1 -1
  243. package/app/.next/server/chunks/[root-of-the-server]__30456390._.js +1 -1
  244. package/app/.next/server/chunks/[root-of-the-server]__46fad57a._.js +1 -1
  245. package/app/.next/server/chunks/[root-of-the-server]__7d9b23e7._.js +1 -1
  246. package/app/.next/server/chunks/[root-of-the-server]__80e3bfc3._.js +2 -2
  247. package/app/.next/server/chunks/[root-of-the-server]__84e445b2._.js +1 -1
  248. package/app/.next/server/chunks/[root-of-the-server]__92cb0def._.js +1 -1
  249. package/app/.next/server/chunks/[root-of-the-server]__c64c7cac._.js +3 -0
  250. package/app/.next/server/chunks/{[root-of-the-server]__d7914418._.js → [root-of-the-server]__daa26645._.js} +2 -2
  251. package/app/.next/server/chunks/[root-of-the-server]__db2f9fe0._.js +1 -1
  252. package/app/.next/server/chunks/[root-of-the-server]__dc47ee64._.js +1 -1
  253. package/app/.next/server/chunks/_05c48915._.js +1 -1
  254. package/app/.next/server/chunks/_1244636c._.js +4 -4
  255. package/app/.next/server/chunks/_2115d8de._.js +1 -1
  256. package/app/.next/server/chunks/_3ac953eb._.js +1 -1
  257. package/app/.next/server/chunks/_4b8fd853._.js +1 -1
  258. package/app/.next/server/chunks/_68683848._.js +1 -1
  259. package/app/.next/server/chunks/_ee9b677b._.js +1 -1
  260. package/app/.next/server/chunks/_next-internal_server_app_api_v1_responses_[___path]_route_actions_b27b9fcb.js +3 -0
  261. package/app/.next/server/chunks/open-sse_executors_01c3e95e._.js +2 -2
  262. package/app/.next/server/chunks/open-sse_executors_codex_ts_6d18ec4b._.js +2 -2
  263. package/app/.next/server/chunks/open-sse_services_826884e1._.js +2 -2
  264. package/app/.next/server/chunks/src_shared_validation_schemas_ts_4e63863a._.js +1 -1
  265. package/app/.next/server/chunks/ssr/[root-of-the-server]__9affb65e._.js +1 -1
  266. package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
  267. package/app/.next/server/chunks/ssr/[root-of-the-server]__ea575754._.js +1 -1
  268. package/app/.next/server/chunks/ssr/src_55fa8e28._.js +1 -1
  269. package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_cc92bcad._.js +1 -1
  270. package/app/.next/server/pages/500.html +2 -2
  271. package/app/.next/server/server-reference-manifest.js +1 -1
  272. package/app/.next/server/server-reference-manifest.json +1 -1
  273. package/app/.next/static/{0jU8vYxZrKFHgyr318QmU → SceXD3Aq1CWSLd2QAWySF}/_buildManifest.js +4 -0
  274. package/app/.next/static/chunks/{cd0b93c0ed63a487.js → 3423ff268c85cc05.js} +1 -1
  275. package/app/.next/static/chunks/8c9234a3ed7f8c07.js +1 -0
  276. package/app/.next/static/chunks/{e28c38bcf2e8ef5f.js → d63812e51b4eb49f.js} +1 -1
  277. package/app/CHANGELOG.md +30 -0
  278. package/app/docs/openapi.yaml +1 -1
  279. package/app/next.config.mjs +4 -0
  280. package/app/open-sse/executors/base.ts +1 -0
  281. package/app/open-sse/executors/codex.ts +39 -4
  282. package/app/open-sse/handlers/chatCore.ts +8 -7
  283. package/app/open-sse/services/comboAgentMiddleware.ts +19 -0
  284. package/app/package-lock.json +2 -2
  285. package/app/package.json +1 -1
  286. package/app/server.js +1 -1
  287. package/app/src/app/(dashboard)/dashboard/combos/page.tsx +80 -0
  288. package/app/src/app/(dashboard)/dashboard/usage/components/BudgetTab.tsx +7 -2
  289. package/app/src/app/api/v1/responses/[...path]/route.ts +33 -0
  290. package/app/src/shared/utils/machineId.ts +20 -14
  291. package/app/src/shared/validation/schemas.ts +10 -1
  292. package/app/tests/unit/plan3-p0.test.mjs +65 -0
  293. package/package.json +1 -1
  294. package/app/.next/static/chunks/c089b7e37ffa02b7.js +0 -1
  295. /package/app/.next/static/{0jU8vYxZrKFHgyr318QmU → SceXD3Aq1CWSLd2QAWySF}/_clientMiddlewareManifest.json +0 -0
  296. /package/app/.next/static/{0jU8vYxZrKFHgyr318QmU → SceXD3Aq1CWSLd2QAWySF}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[675336,e=>e.a(async(t,r)=>{try{var a=e.i(745015),n=e.i(89171),s=e.i(924868),o=e.i(814747),i=e.i(266240),l=e.i(841788),d=e.i(197892),u=e.i(676088),c=e.i(200392),p=e.i(195975),m=t([u,c]);[u,c]=m.then?(await m)():m;let R=()=>(0,i.getCliPrimaryConfigPath)("droid"),y=async()=>{try{let e=R(),t=await s.default.readFile(e,"utf-8");return JSON.parse(t)}catch(e){if("ENOENT"===e.code)return null;throw e}};async function h(){try{let e=await (0,i.getCliRuntimeStatus)("droid");if(!e.installed||!e.runnable)return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:null,message:e.installed&&!e.runnable?"Factory Droid CLI is installed but not runnable":"Factory Droid CLI is not installed"});let t=await y();return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:t,hasOmniRoute:!!t&&!!t.customModels&&t.customModels.some(e=>"custom:OmniRoute-0"===e.id),settingsPath:R()})}catch(e){return console.log("Error checking droid settings:",e),n.NextResponse.json({error:"Failed to check droid settings"},{status:500})}}async function f(e){let t;try{t=await e.json()}catch{return n.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let r=(0,c.validateBody)(u.cliModelConfigSchema,t);if((0,c.isValidationFailure)(r))return n.NextResponse.json({error:r.error},{status:400});let{baseUrl:a,apiKey:p,model:m}=r.data,h=o.default.dirname(R()),f=R();await s.default.mkdir(h,{recursive:!0}),await (0,l.createBackup)("droid",f);let g={};try{let e=await s.default.readFile(f,"utf-8");g=JSON.parse(e)}catch{}g.customModels||(g.customModels=[]),g.customModels=g.customModels.filter(e=>"custom:OmniRoute-0"!==e.id);let y=a.endsWith("/v1")?a:`${a}/v1`;g.customModels.unshift({model:m,id:"custom:OmniRoute-0",index:0,baseUrl:y,apiKey:p||"your_api_key",displayName:m,maxOutputTokens:131072,noImageSupport:!1,provider:"openai"}),await s.default.writeFile(f,JSON.stringify(g,null,2));try{(0,d.saveCliToolLastConfigured)("droid")}catch{}return n.NextResponse.json({success:!0,message:"Factory Droid settings applied successfully!",settingsPath:f})}catch(e){return console.log("Error updating droid settings:",e),n.NextResponse.json({error:"Failed to update droid settings"},{status:500})}}async function g(){try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let t=R();await (0,l.createBackup)("droid",t);let r={};try{let e=await s.default.readFile(t,"utf-8");r=JSON.parse(e)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({success:!0,message:"No settings file to reset"});throw e}r.customModels&&(r.customModels=r.customModels.filter(e=>"custom:OmniRoute-0"!==e.id),0===r.customModels.length&&delete r.customModels),await s.default.writeFile(t,JSON.stringify(r,null,2));try{(0,d.deleteCliToolLastConfigured)("droid")}catch{}return n.NextResponse.json({success:!0,message:"OmniRoute settings removed successfully"})}catch(e){return console.log("Error resetting droid settings:",e),n.NextResponse.json({error:"Failed to reset droid settings"},{status:500})}}(0,p.ensureServerEntryExports)([h,f,g]),(0,a.registerServerReference)(h,"001badfca63e3dfa592ab1009ffc7694800850ecae",null),(0,a.registerServerReference)(f,"401e692b497b6695475249d8255423742f7197d778",null),(0,a.registerServerReference)(g,"001f3bec727b8f07de82abebd04a5818813d5f3895",null),e.s(["DELETE",()=>g,"GET",()=>h,"POST",()=>f]),r()}catch(e){r(e)}},!1),122141,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),s=e.i(996250),o=e.i(759756),i=e.i(561916),l=e.i(174677),d=e.i(869741),u=e.i(316795),c=e.i(487718),p=e.i(995169),m=e.i(47587),h=e.i(666012),f=e.i(570101),g=e.i(626937),R=e.i(10372),y=e.i(193695);e.i(52474);var v=e.i(600220),w=e.i(675336),E=t([w]);[w]=E.then?(await E)():E;let x=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/droid-settings/route",pathname:"/api/cli-tools/droid-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/droid-settings/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:b,workUnitAsyncStorage:O,serverHooks:S}=x;function C(){return(0,s.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:O})}async function N(e,t,r){x.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/cli-tools/droid-settings/route";a=a.replace(/\/index$/,"")||"/";let s=await x.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:E,nextConfig:C,parsedUrl:N,isDraftMode:b,prerenderManifest:O,routerServerContext:S,isOnDemandRevalidate:T,revalidateOnlyGenerated:A,resolvedPathname:P,clientReferenceManifest:M,serverActionsManifest:_}=s,j=(0,d.normalizeAppPath)(a),k=!!(O.dynamicRoutes[j]||O.routes[P]),F=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,N,!1):t.end("This page could not be found"),null);if(k&&!b){let e=!!O.routes[P],t=O.dynamicRoutes[j];if(t&&!1===t.fallback&&!e){if(C.experimental.adapterPath)return await F();throw new y.NoFallbackError}}let I=null;!k||x.isDev||b||(I=P,I="/index"===I?"/":I);let D=!0===x.isDev||!k,H=k&&!D;_&&M&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:M,serverActionsManifest:_});let U=e.method||"GET",q=(0,i.getTracer)(),L=q.getActiveScopeSpan(),$={params:E,prerenderManifest:O,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:C.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>x.onRequestError(e,t,a,n,S)},sharedContext:{buildId:w}},K=new u.NodeNextRequest(e),B=new u.NodeNextResponse(t),J=c.NextRequestAdapter.fromNodeNextRequest(K,(0,c.signalFromNodeResponse)(t));try{let s=async e=>x.handle(J,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=q.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${U} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${U} ${a}`)}),l=!!(0,o.getRequestMeta)(e,"minimalMode"),d=async o=>{var i,d;let u=async({previousCacheEntry:n})=>{try{if(!l&&T&&A&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(o);e.fetchMetrics=$.renderOpts.fetchMetrics;let i=$.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let d=$.renderOpts.collectedTags;if(!k)return await (0,h.sendResponse)(K,B,a,$.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(a.headers);d&&(t[R.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,n=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:T})},!1,S),t}},c=await x.handleResponse({req:e,nextConfig:C,cacheKey:I,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:A,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:l});if(!k)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",T?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,f.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&k||p.delete(R.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,h.sendResponse)(K,B,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};L?await d(L):await q.withPropagatedContext(e.headers,()=>q.trace(p.BaseServerSpan.handleRequest,{spanName:`${U} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},d))}catch(t){if(t instanceof y.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:j,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:T})},!1,S),k)throw t;return await (0,h.sendResponse)(K,B,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>C,"routeModule",()=>x,"serverHooks",()=>S,"workAsyncStorage",()=>b,"workUnitAsyncStorage",()=>O]),r()}catch(e){r(e)}},!1)];
1
+ module.exports=[675336,e=>e.a(async(t,r)=>{try{var a=e.i(745015),n=e.i(89171),s=e.i(924868),o=e.i(814747),i=e.i(266240),l=e.i(841788),d=e.i(197892),u=e.i(676088),c=e.i(200392),p=e.i(195975),m=t([u,c]);[u,c]=m.then?(await m)():m;let R=()=>(0,i.getCliPrimaryConfigPath)("droid"),y=async()=>{try{let e=R(),t=await s.default.readFile(e,"utf-8");return JSON.parse(t)}catch(e){if("ENOENT"===e.code)return null;throw e}};async function f(){try{let e=await (0,i.getCliRuntimeStatus)("droid");if(!e.installed||!e.runnable)return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:null,message:e.installed&&!e.runnable?"Factory Droid CLI is installed but not runnable":"Factory Droid CLI is not installed"});let t=await y();return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:t,hasOmniRoute:!!t&&!!t.customModels&&t.customModels.some(e=>"custom:OmniRoute-0"===e.id),settingsPath:R()})}catch(e){return console.log("Error checking droid settings:",e),n.NextResponse.json({error:"Failed to check droid settings"},{status:500})}}async function h(e){let t;try{t=await e.json()}catch{return n.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let r=(0,c.validateBody)(u.cliModelConfigSchema,t);if((0,c.isValidationFailure)(r))return n.NextResponse.json({error:r.error},{status:400});let{baseUrl:a,apiKey:p,model:m}=r.data,f=o.default.dirname(R()),h=R();await s.default.mkdir(f,{recursive:!0}),await (0,l.createBackup)("droid",h);let g={};try{let e=await s.default.readFile(h,"utf-8");g=JSON.parse(e)}catch{}g.customModels||(g.customModels=[]),g.customModels=g.customModels.filter(e=>"custom:OmniRoute-0"!==e.id);let y=a.endsWith("/v1")?a:`${a}/v1`;g.customModels.unshift({model:m,id:"custom:OmniRoute-0",index:0,baseUrl:y,apiKey:p||"your_api_key",displayName:m,maxOutputTokens:131072,noImageSupport:!1,provider:"openai"}),await s.default.writeFile(h,JSON.stringify(g,null,2));try{(0,d.saveCliToolLastConfigured)("droid")}catch{}return n.NextResponse.json({success:!0,message:"Factory Droid settings applied successfully!",settingsPath:h})}catch(e){return console.log("Error updating droid settings:",e),n.NextResponse.json({error:"Failed to update droid settings"},{status:500})}}async function g(){try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let t=R();await (0,l.createBackup)("droid",t);let r={};try{let e=await s.default.readFile(t,"utf-8");r=JSON.parse(e)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({success:!0,message:"No settings file to reset"});throw e}r.customModels&&(r.customModels=r.customModels.filter(e=>"custom:OmniRoute-0"!==e.id),0===r.customModels.length&&delete r.customModels),await s.default.writeFile(t,JSON.stringify(r,null,2));try{(0,d.deleteCliToolLastConfigured)("droid")}catch{}return n.NextResponse.json({success:!0,message:"OmniRoute settings removed successfully"})}catch(e){return console.log("Error resetting droid settings:",e),n.NextResponse.json({error:"Failed to reset droid settings"},{status:500})}}(0,p.ensureServerEntryExports)([f,h,g]),(0,a.registerServerReference)(f,"0008aaf7f865b9ceda916178e637f243bb373232f1",null),(0,a.registerServerReference)(h,"40d89f6476880efbfcdf5c3a2f6fb481507f8db9c0",null),(0,a.registerServerReference)(g,"00b5bafd6940f26bcea9f56caacd7c4a6b1ca40188",null),e.s(["DELETE",()=>g,"GET",()=>f,"POST",()=>h]),r()}catch(e){r(e)}},!1),122141,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),s=e.i(996250),o=e.i(759756),i=e.i(561916),l=e.i(174677),d=e.i(869741),u=e.i(316795),c=e.i(487718),p=e.i(995169),m=e.i(47587),f=e.i(666012),h=e.i(570101),g=e.i(626937),R=e.i(10372),y=e.i(193695);e.i(52474);var v=e.i(600220),w=e.i(675336),E=t([w]);[w]=E.then?(await E)():E;let x=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/droid-settings/route",pathname:"/api/cli-tools/droid-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/droid-settings/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:b,workUnitAsyncStorage:O,serverHooks:S}=x;function C(){return(0,s.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:O})}async function N(e,t,r){x.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/cli-tools/droid-settings/route";a=a.replace(/\/index$/,"")||"/";let s=await x.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:E,nextConfig:C,parsedUrl:N,isDraftMode:b,prerenderManifest:O,routerServerContext:S,isOnDemandRevalidate:T,revalidateOnlyGenerated:A,resolvedPathname:P,clientReferenceManifest:M,serverActionsManifest:_}=s,j=(0,d.normalizeAppPath)(a),k=!!(O.dynamicRoutes[j]||O.routes[P]),F=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,N,!1):t.end("This page could not be found"),null);if(k&&!b){let e=!!O.routes[P],t=O.dynamicRoutes[j];if(t&&!1===t.fallback&&!e){if(C.experimental.adapterPath)return await F();throw new y.NoFallbackError}}let I=null;!k||x.isDev||b||(I=P,I="/index"===I?"/":I);let D=!0===x.isDev||!k,H=k&&!D;_&&M&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:M,serverActionsManifest:_});let U=e.method||"GET",q=(0,i.getTracer)(),L=q.getActiveScopeSpan(),$={params:E,prerenderManifest:O,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:C.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>x.onRequestError(e,t,a,n,S)},sharedContext:{buildId:w}},K=new u.NodeNextRequest(e),B=new u.NodeNextResponse(t),J=c.NextRequestAdapter.fromNodeNextRequest(K,(0,c.signalFromNodeResponse)(t));try{let s=async e=>x.handle(J,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=q.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${U} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${U} ${a}`)}),l=!!(0,o.getRequestMeta)(e,"minimalMode"),d=async o=>{var i,d;let u=async({previousCacheEntry:n})=>{try{if(!l&&T&&A&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(o);e.fetchMetrics=$.renderOpts.fetchMetrics;let i=$.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let d=$.renderOpts.collectedTags;if(!k)return await (0,f.sendResponse)(K,B,a,$.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);d&&(t[R.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,n=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:T})},!1,S),t}},c=await x.handleResponse({req:e,nextConfig:C,cacheKey:I,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:A,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:l});if(!k)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",T?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,h.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&k||p.delete(R.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,f.sendResponse)(K,B,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};L?await d(L):await q.withPropagatedContext(e.headers,()=>q.trace(p.BaseServerSpan.handleRequest,{spanName:`${U} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},d))}catch(t){if(t instanceof y.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:j,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:T})},!1,S),k)throw t;return await (0,f.sendResponse)(K,B,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>C,"routeModule",()=>x,"serverHooks",()=>S,"workAsyncStorage",()=>b,"workUnitAsyncStorage",()=>O]),r()}catch(e){r(e)}},!1)];
2
2
 
3
3
  //# sourceMappingURL=_ee9b677b._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[458142,s=>{"use strict";s.s([])}];
2
+
3
+ //# sourceMappingURL=_next-internal_server_app_api_v1_responses_%5B___path%5D_route_actions_b27b9fcb.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[511938,e=>{"use strict";var t=e.i(16023),s=e.i(740443);let o=new Map;class a{provider;config;constructor(e,t){this.provider=e,this.config=t}getProvider(){return this.provider}getBaseUrls(){return this.config.baseUrls||(this.config.baseUrl?[this.config.baseUrl]:[])}getFallbackCount(){return this.getBaseUrls().length||1}buildUrl(e,t,s=0,o=null){if(this.provider?.startsWith?.("openai-compatible-")){let e=o?.providerSpecificData,t=("string"==typeof e?.baseUrl?e.baseUrl:"https://api.openai.com/v1").replace(/\/$/,""),s="string"==typeof e?.chatPath&&e.chatPath?e.chatPath:null;if(s)return`${t}${s}`;let a=this.provider.includes("responses")?"/responses":"/chat/completions";return`${t}${a}`}let a=this.getBaseUrls();return a[s]||a[0]||this.config.baseUrl}buildHeaders(e,t=!0){let s={"Content-Type":"application/json",...this.config.headers},a=this.config?.id||this.provider;if(a){let e=`${a.toUpperCase().replace(/[^A-Z0-9]/g,"_")}_USER_AGENT`,t=process.env[e]?.trim();t&&(s["User-Agent"]=t,s["user-agent"]&&(s["user-agent"]=t))}if(e.accessToken)s.Authorization=`Bearer ${e.accessToken}`;else if(e.apiKey){let t=e.providerSpecificData?.extraApiKeys??[],a=t.length>0&&e.connectionId?function(e,t,s=[]){let a=s.filter(e=>"string"==typeof e&&e.trim().length>0);if(0===a.length)return t;let r=[t,...a].filter(Boolean);if(r.length<=1)return t;let n=o.get(e)??0,i=n%r.length;return o.set(e,n+1),r[i]}(e.connectionId,e.apiKey,t):e.apiKey;s.Authorization=`Bearer ${a}`}return t&&(s.Accept="text/event-stream"),s}transformRequest(e,t,s,o){return t}shouldRetry(e,s){return e===t.HTTP_STATUS.RATE_LIMITED&&s+1<this.getFallbackCount()}static RETRY_CONFIG={maxAttempts:2,delayMs:2e3};async refreshCredentials(e,t){return null}needsRefresh(e){return!!e.expiresAt&&new Date(e.expiresAt).getTime()-Date.now()<3e5}parseError(e,t){return{status:e.status,message:t||`HTTP ${e.status}`}}async execute({model:e,body:o,stream:r,credentials:n,signal:i,log:l,extendedContext:d}){let u=this.getFallbackCount(),h=null,c=0,p={};for(let f=0;f<u;f++){let m=this.buildUrl(e,r,f,n),g=this.buildHeaders(n,r);if(d){let t=["claude-opus-4-6","claude-sonnet-4-6","claude-sonnet-4-5","claude-sonnet-4"],s=e.replace(/-\d{8}$/,"");if(t.some(t=>s===t||e===t||e.startsWith(t))){let e=g["Anthropic-Beta"];e?g["Anthropic-Beta"]=e+",context-1m-2025-08-07":g["Anthropic-Beta"]="context-1m-2025-08-07"}}let y=this.transformRequest(e,o,r,n);try{let e=r?null:AbortSignal.timeout(t.FETCH_TIMEOUT_MS),o=i&&e?function(e,t){let s=new AbortController,o=()=>{s.signal.aborted||s.abort()};return e.aborted||t.aborted?o():(e.addEventListener("abort",o,{once:!0}),t.addEventListener("abort",o,{once:!0})),s.signal}(i,e):i||e,n=g,d=JSON.stringify(y);if((0,s.isCliCompatEnabled)(this.provider)){let e=(0,s.applyFingerprint)(this.provider,g,y);n=e.headers,d=e.bodyString}let u={method:"POST",headers:n,body:d};o&&(u.signal=o);let h=await fetch(m,u);if(h.status===t.HTTP_STATUS.RATE_LIMITED&&(p[f]??0)<a.RETRY_CONFIG.maxAttempts){p[f]=(p[f]??0)+1;let e=p[f];l?.debug?.("RETRY",`429 intra-retry ${e}/${a.RETRY_CONFIG.maxAttempts} on ${m} — waiting ${a.RETRY_CONFIG.delayMs}ms`),await new Promise(e=>setTimeout(e,a.RETRY_CONFIG.delayMs)),f--;continue}if(this.shouldRetry(h.status,f)){l?.debug?.("RETRY",`${h.status} on ${m}, trying fallback ${f+1}`),c=h.status;continue}return{response:h,url:m,headers:g,transformedBody:y}}catch(s){let e=s instanceof Error?s:Error(String(s));if("TimeoutError"===e.name&&l?.warn?.("TIMEOUT",`Fetch timeout after ${t.FETCH_TIMEOUT_MS}ms on ${m}`),h=e,f+1<u){l?.debug?.("RETRY",`Error on ${m}, trying fallback ${f+1}`);continue}throw e}}throw h||Error(`All ${u} URLs failed with status ${c}`)}}e.s(["BaseExecutor",()=>a],511938)},69373,e=>{"use strict";var t=e.i(511938);let s=`You are Codex, based on GPT-5. You are running as a coding agent in the Codex CLI on a user's computer.
1
+ module.exports=[511938,e=>{"use strict";var t=e.i(16023),s=e.i(740443);let o=new Map;class r{provider;config;constructor(e,t){this.provider=e,this.config=t}getProvider(){return this.provider}getBaseUrls(){return this.config.baseUrls||(this.config.baseUrl?[this.config.baseUrl]:[])}getFallbackCount(){return this.getBaseUrls().length||1}buildUrl(e,t,s=0,o=null){if(this.provider?.startsWith?.("openai-compatible-")){let e=o?.providerSpecificData,t=("string"==typeof e?.baseUrl?e.baseUrl:"https://api.openai.com/v1").replace(/\/$/,""),s="string"==typeof e?.chatPath&&e.chatPath?e.chatPath:null;if(s)return`${t}${s}`;let r=this.provider.includes("responses")?"/responses":"/chat/completions";return`${t}${r}`}let r=this.getBaseUrls();return r[s]||r[0]||this.config.baseUrl}buildHeaders(e,t=!0){let s={"Content-Type":"application/json",...this.config.headers},r=this.config?.id||this.provider;if(r){let e=`${r.toUpperCase().replace(/[^A-Z0-9]/g,"_")}_USER_AGENT`,t=process.env[e]?.trim();t&&(s["User-Agent"]=t,s["user-agent"]&&(s["user-agent"]=t))}if(e.accessToken)s.Authorization=`Bearer ${e.accessToken}`;else if(e.apiKey){let t=e.providerSpecificData?.extraApiKeys??[],r=t.length>0&&e.connectionId?function(e,t,s=[]){let r=s.filter(e=>"string"==typeof e&&e.trim().length>0);if(0===r.length)return t;let a=[t,...r].filter(Boolean);if(a.length<=1)return t;let n=o.get(e)??0,i=n%a.length;return o.set(e,n+1),a[i]}(e.connectionId,e.apiKey,t):e.apiKey;s.Authorization=`Bearer ${r}`}return t&&(s.Accept="text/event-stream"),s}transformRequest(e,t,s,o){return t}shouldRetry(e,s){return e===t.HTTP_STATUS.RATE_LIMITED&&s+1<this.getFallbackCount()}static RETRY_CONFIG={maxAttempts:2,delayMs:2e3};async refreshCredentials(e,t){return null}needsRefresh(e){return!!e.expiresAt&&new Date(e.expiresAt).getTime()-Date.now()<3e5}parseError(e,t){return{status:e.status,message:t||`HTTP ${e.status}`}}async execute({model:e,body:o,stream:a,credentials:n,signal:i,log:l,extendedContext:d}){let u=this.getFallbackCount(),h=null,c=0,p={};for(let f=0;f<u;f++){let m=this.buildUrl(e,a,f,n),g=this.buildHeaders(n,a);if(d){let t=["claude-opus-4-6","claude-sonnet-4-6","claude-sonnet-4-5","claude-sonnet-4"],s=e.replace(/-\d{8}$/,"");if(t.some(t=>s===t||e===t||e.startsWith(t))){let e=g["Anthropic-Beta"];e?g["Anthropic-Beta"]=e+",context-1m-2025-08-07":g["Anthropic-Beta"]="context-1m-2025-08-07"}}let y=this.transformRequest(e,o,a,n);try{let e=a?null:AbortSignal.timeout(t.FETCH_TIMEOUT_MS),o=i&&e?function(e,t){let s=new AbortController,o=()=>{s.signal.aborted||s.abort()};return e.aborted||t.aborted?o():(e.addEventListener("abort",o,{once:!0}),t.addEventListener("abort",o,{once:!0})),s.signal}(i,e):i||e,n=g,d=JSON.stringify(y);if((0,s.isCliCompatEnabled)(this.provider)){let e=(0,s.applyFingerprint)(this.provider,g,y);n=e.headers,d=e.bodyString}let u={method:"POST",headers:n,body:d};o&&(u.signal=o);let h=await fetch(m,u);if(h.status===t.HTTP_STATUS.RATE_LIMITED&&(p[f]??0)<r.RETRY_CONFIG.maxAttempts){p[f]=(p[f]??0)+1;let e=p[f];l?.debug?.("RETRY",`429 intra-retry ${e}/${r.RETRY_CONFIG.maxAttempts} on ${m} — waiting ${r.RETRY_CONFIG.delayMs}ms`),await new Promise(e=>setTimeout(e,r.RETRY_CONFIG.delayMs)),f--;continue}if(this.shouldRetry(h.status,f)){l?.debug?.("RETRY",`${h.status} on ${m}, trying fallback ${f+1}`),c=h.status;continue}return{response:h,url:m,headers:g,transformedBody:y}}catch(s){let e=s instanceof Error?s:Error(String(s));if("TimeoutError"===e.name&&l?.warn?.("TIMEOUT",`Fetch timeout after ${t.FETCH_TIMEOUT_MS}ms on ${m}`),h=e,f+1<u){l?.debug?.("RETRY",`Error on ${m}, trying fallback ${f+1}`);continue}throw e}}throw h||Error(`All ${u} URLs failed with status ${c}`)}}e.s(["BaseExecutor",()=>r],511938)},69373,e=>{"use strict";var t=e.i(511938);let s=`You are Codex, based on GPT-5. You are running as a coding agent in the Codex CLI on a user's computer.
2
2
 
3
3
  ## General
4
4
 
@@ -114,6 +114,6 @@ You are producing plain text that will later be styled by the CLI. Follow these
114
114
  * Optionally include line/column (1‑based): :line[:column] or #Lline[Ccolumn] (column defaults to 1).
115
115
  * Do not use URIs like file://, vscode://, or https://.
116
116
  * Do not provide range of lines
117
- * Examples: src/app.ts, src/app.ts:42, b/server/index.js#L10, C:\\repo\\project\\main.rs:12:5`;var o=e.i(16023),a=e.i(928602);let r=["none","low","medium","high","xhigh"],n="priority",i=!1;function l(e){i=e}let d={"gpt-5.3-codex":"xhigh","gpt-5.2-codex":"xhigh","gpt-5.1-codex-max":"xhigh","gpt-5-mini":"high","gpt-5.1-mini":"high","gpt-4.1-mini":"high"};function u(e,t){let s=d[e]??"xhigh";return r.indexOf(t)>r.indexOf(s)?(console.debug(`[Codex] clampEffort: "${t}" → "${s}" (model: ${e})`),s):t}class h extends t.BaseExecutor{constructor(){super("codex",o.PROVIDERS.codex)}buildHeaders(e,t=!0){let s=super.buildHeaders(e,!0),o=e?.providerSpecificData?.workspaceId;return o&&(s["chatgpt-account-id"]=o),s}async refreshCredentials(e,t){if(!e?.refreshToken)return t?.warn?.("TOKEN_REFRESH","Codex: no refresh token available, re-authentication required"),null;let s=await (0,a.refreshCodexToken)(e.refreshToken,t);return!s||s.error?(t?.warn?.("TOKEN_REFRESH",`Codex: token refresh failed${s?.error?` (${s.error})`:""} — re-authentication required`),null):s}transformRequest(e,t,o,a){let r=t?._nativeCodexPassthrough===!0;t.stream=!0,delete t._nativeCodexPassthrough;let l=function(e){if("string"!=typeof e)return;let t=e.trim().toLowerCase();if(t)return"fast"===t?n:t}(t.service_tier);if(l?t.service_tier=l:i&&(t.service_tier=n),r)return t;t.instructions&&""!==t.instructions.trim()||(t.instructions=s),t.store=!1;let d=null,h=e;for(let s of["none","low","medium","high","xhigh"])if(e.endsWith(`-${s}`)){d=s,t.model=t.model.replace(`-${s}`,""),h=t.model;break}if(t.reasoning)t.reasoning.effort&&(t.reasoning.effort=u(h,t.reasoning.effort));else{let e=u(h,t.reasoning_effort||d||"medium");t.reasoning={effort:e}}return delete t.reasoning_effort,delete t.temperature,delete t.top_p,delete t.frequency_penalty,delete t.presence_penalty,delete t.logprobs,delete t.top_logprobs,delete t.n,delete t.seed,delete t.max_tokens,delete t.user,delete t.prompt_cache_retention,delete t.metadata,delete t.stream_options,delete t.safety_identifier,t}}e.s(["CodexExecutor",()=>h,"setDefaultFastServiceTierEnabled",()=>l],69373)}];
117
+ * Examples: src/app.ts, src/app.ts:42, b/server/index.js#L10, C:\\repo\\project\\main.rs:12:5`;var o=e.i(16023),r=e.i(928602);let a=["none","low","medium","high","xhigh"],n="priority",i=!1;function l(e){let t=String(e||"").replace(/\/+$/,"").match(/(?:^|\/)responses(?:(\/.*))?$/i);return t?t[1]||"":null}function d(e){return l(e)?.toLowerCase()==="/compact"}function u(e){i=e}let h={"gpt-5.3-codex":"xhigh","gpt-5.2-codex":"xhigh","gpt-5.1-codex-max":"xhigh","gpt-5-mini":"high","gpt-5.1-mini":"high","gpt-4.1-mini":"high"};function c(e,t){let s=h[e]??"xhigh";return a.indexOf(t)>a.indexOf(s)?(console.debug(`[Codex] clampEffort: "${t}" → "${s}" (model: ${e})`),s):t}class p extends t.BaseExecutor{constructor(){super("codex",o.PROVIDERS.codex)}buildUrl(e,t,s=0,o=null){let r=l(o?.requestEndpointPath);if(null!==r){let e=String(this.config.baseUrl||"").replace(/\/$/,"");return e.endsWith("/responses")?`${e}${r}`:`${e}/responses${r}`}return super.buildUrl(e,t,s,o)}buildHeaders(e,t=!0){let s=d(e?.requestEndpointPath),o=super.buildHeaders(e,!s),r=e?.providerSpecificData?.workspaceId;return r&&(o["chatgpt-account-id"]=r),o}async refreshCredentials(e,t){if(!e?.refreshToken)return t?.warn?.("TOKEN_REFRESH","Codex: no refresh token available, re-authentication required"),null;let s=await (0,r.refreshCodexToken)(e.refreshToken,t);return!s||s.error?(t?.warn?.("TOKEN_REFRESH",`Codex: token refresh failed${s?.error?` (${s.error})`:""} — re-authentication required`),null):s}transformRequest(e,t,o,r){let a=t?._nativeCodexPassthrough===!0;d(r?.requestEndpointPath)?(delete t.stream,delete t.stream_options):t.stream=!0,delete t._nativeCodexPassthrough;let l=function(e){if("string"!=typeof e)return;let t=e.trim().toLowerCase();if(t)return"fast"===t?n:t}(t.service_tier);if(l?t.service_tier=l:i&&(t.service_tier=n),a)return t;t.instructions&&""!==t.instructions.trim()||(t.instructions=s),t.store=!1;let u=null,h=e;for(let s of["none","low","medium","high","xhigh"])if(e.endsWith(`-${s}`)){u=s,t.model=t.model.replace(`-${s}`,""),h=t.model;break}if(t.reasoning)t.reasoning.effort&&(t.reasoning.effort=c(h,t.reasoning.effort));else{let e=c(h,t.reasoning_effort||u||"medium");t.reasoning={effort:e}}return delete t.reasoning_effort,delete t.temperature,delete t.top_p,delete t.frequency_penalty,delete t.presence_penalty,delete t.logprobs,delete t.top_logprobs,delete t.n,delete t.seed,delete t.max_tokens,delete t.user,delete t.prompt_cache_retention,delete t.metadata,delete t.stream_options,delete t.safety_identifier,t}}e.s(["CodexExecutor",()=>p,"setDefaultFastServiceTierEnabled",()=>u],69373)}];
118
118
 
119
119
  //# sourceMappingURL=open-sse_executors_01c3e95e._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[482191,e=>{"use strict";var t=e.i(359281);let o={codex:{headerOrder:["Host","Content-Type","Authorization","Accept","User-Agent","Accept-Encoding"],bodyFieldOrder:["model","messages","temperature","top_p","max_tokens","stream","tools","tool_choice","response_format","n","stop"],userAgent:"codex-cli"},claude:{headerOrder:["Host","Content-Type","x-api-key","anthropic-version","Accept","User-Agent","Accept-Encoding"],bodyFieldOrder:["model","max_tokens","messages","system","temperature","top_p","top_k","stream","tools","tool_choice","metadata"],userAgent:"claude-code"},github:{headerOrder:["Host","Authorization","X-Request-Id","Vscode-Sessionid","Vscode-Machineid","Editor-Version","Editor-Plugin-Version","Copilot-Integration-Id","Openai-Organization","Openai-Intent","Content-Type","User-Agent","Accept","Accept-Encoding"],bodyFieldOrder:["messages","model","temperature","top_p","max_tokens","n","stream","intent","intent_threshold","intent_content"],userAgent:"GitHubCopilotChat"},antigravity:{headerOrder:["Host","Content-Type","Authorization","User-Agent","Accept","Accept-Encoding"],bodyFieldOrder:["project","model","userAgent","requestType","requestId","request"],userAgent:"antigravity"},qwen:{headerOrder:["Host","Content-Type","Authorization","User-Agent","X-Dashscope-AuthType","X-Dashscope-CacheControl","X-Dashscope-UserAgent","X-Stainless-Arch","X-Stainless-Lang","X-Stainless-Os","X-Stainless-Package-Version","X-Stainless-Retry-Count","X-Stainless-Runtime","X-Stainless-Runtime-Version","Connection","Accept","Accept-Language","Sec-Fetch-Mode","Accept-Encoding"],bodyFieldOrder:["model","messages","temperature","top_p","max_tokens","stream","tools","tool_choice","response_format","n","stop"],userAgent:"QwenCode/0.12.3 (linux; x64)",extraHeaders:{"X-Dashscope-AuthType":"qwen-oauth","X-Dashscope-CacheControl":"enable","X-Dashscope-UserAgent":"QwenCode/0.12.3 (linux; x64)","X-Stainless-Arch":"x64","X-Stainless-Lang":"js","X-Stainless-Os":"Linux","X-Stainless-Package-Version":"5.11.0","X-Stainless-Retry-Count":"1","X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":"v18.19.1",Connection:"keep-alive","Accept-Language":"*","Sec-Fetch-Mode":"cors"}}},r=new Set,s=new Map;class n{provider;config;constructor(e,t){this.provider=e,this.config=t}getProvider(){return this.provider}getBaseUrls(){return this.config.baseUrls||(this.config.baseUrl?[this.config.baseUrl]:[])}getFallbackCount(){return this.getBaseUrls().length||1}buildUrl(e,t,o=0,r=null){if(this.provider?.startsWith?.("openai-compatible-")){let e=r?.providerSpecificData,t=("string"==typeof e?.baseUrl?e.baseUrl:"https://api.openai.com/v1").replace(/\/$/,""),o="string"==typeof e?.chatPath&&e.chatPath?e.chatPath:null;if(o)return`${t}${o}`;let s=this.provider.includes("responses")?"/responses":"/chat/completions";return`${t}${s}`}let s=this.getBaseUrls();return s[o]||s[0]||this.config.baseUrl}buildHeaders(e,t=!0){let o={"Content-Type":"application/json",...this.config.headers},r=this.config?.id||this.provider;if(r){let e=`${r.toUpperCase().replace(/[^A-Z0-9]/g,"_")}_USER_AGENT`,t=process.env[e]?.trim();t&&(o["User-Agent"]=t,o["user-agent"]&&(o["user-agent"]=t))}if(e.accessToken)o.Authorization=`Bearer ${e.accessToken}`;else if(e.apiKey){let t=e.providerSpecificData?.extraApiKeys??[],r=t.length>0&&e.connectionId?function(e,t,o=[]){let r=o.filter(e=>"string"==typeof e&&e.trim().length>0);if(0===r.length)return t;let n=[t,...r].filter(Boolean);if(n.length<=1)return t;let a=s.get(e)??0,i=a%n.length;return s.set(e,a+1),n[i]}(e.connectionId,e.apiKey,t):e.apiKey;o.Authorization=`Bearer ${r}`}return t&&(o.Accept="text/event-stream"),o}transformRequest(e,t,o,r){return t}shouldRetry(e,o){return e===t.HTTP_STATUS.RATE_LIMITED&&o+1<this.getFallbackCount()}static RETRY_CONFIG={maxAttempts:2,delayMs:2e3};async refreshCredentials(e,t){return null}needsRefresh(e){return!!e.expiresAt&&new Date(e.expiresAt).getTime()-Date.now()<3e5}parseError(e,t){return{status:e.status,message:t||`HTTP ${e.status}`}}async execute({model:e,body:s,stream:a,credentials:i,signal:l,log:d,extendedContext:u}){let c=this.getFallbackCount(),h=null,p=0,f={};for(let g=0;g<c;g++){let m=this.buildUrl(e,a,g,i),y=this.buildHeaders(i,a);if(u){let t=["claude-opus-4-6","claude-sonnet-4-6","claude-sonnet-4-5","claude-sonnet-4"],o=e.replace(/-\d{8}$/,"");if(t.some(t=>o===t||e===t||e.startsWith(t))){let e=y["Anthropic-Beta"];e?y["Anthropic-Beta"]=e+",context-1m-2025-08-07":y["Anthropic-Beta"]="context-1m-2025-08-07"}}let b=this.transformRequest(e,s,a,i);try{let e=a?null:AbortSignal.timeout(t.FETCH_TIMEOUT_MS),s=l&&e?function(e,t){let o=new AbortController,r=()=>{o.signal.aborted||o.abort()};return e.aborted||t.aborted?r():(e.addEventListener("abort",r,{once:!0}),t.addEventListener("abort",r,{once:!0})),o.signal}(l,e):l||e,i=y,u=JSON.stringify(b);if(function(e){let t=e?.toLowerCase().replace(/[^a-z0-9]/g,"_");if(r.has(e?.toLowerCase()))return!0;let o=`CLI_COMPAT_${t?.toUpperCase()}`;return"1"===process.env[o]||"true"===process.env[o]||"1"===process.env.CLI_COMPAT_ALL||"true"===process.env.CLI_COMPAT_ALL}(this.provider)){let e=function(e,t,r){let s=o[e?.toLowerCase()];return s?(s.userAgent&&(t["User-Agent"]=s.userAgent),s.extraHeaders&&Object.assign(t,s.extraHeaders),{headers:function(e,t){if(!t?.length||!e)return e;let o={},r=new Map;for(let[t,o]of Object.entries(e))r.set(t.toLowerCase(),[t,o]);for(let e of t){let t=r.get(e.toLowerCase());t&&(o[t[0]]=t[1],r.delete(e.toLowerCase()))}for(let[,[e,t]]of r)o[e]=t;return o}(t,s.headerOrder),bodyString:JSON.stringify(r&&"object"==typeof r&&!Array.isArray(r)?function(e,t){if(!t?.length||!e||"object"!=typeof e)return e;let o={},r=new Set(Object.keys(e));for(let s of t)s in e&&(o[s]=e[s],r.delete(s));for(let t of r)o[t]=e[t];return o}(r,s.bodyFieldOrder):r)}):{headers:t,bodyString:JSON.stringify(r)}}(this.provider,y,b);i=e.headers,u=e.bodyString}let c={method:"POST",headers:i,body:u};s&&(c.signal=s);let h=await fetch(m,c);if(h.status===t.HTTP_STATUS.RATE_LIMITED&&(f[g]??0)<n.RETRY_CONFIG.maxAttempts){f[g]=(f[g]??0)+1;let e=f[g];d?.debug?.("RETRY",`429 intra-retry ${e}/${n.RETRY_CONFIG.maxAttempts} on ${m} — waiting ${n.RETRY_CONFIG.delayMs}ms`),await new Promise(e=>setTimeout(e,n.RETRY_CONFIG.delayMs)),g--;continue}if(this.shouldRetry(h.status,g)){d?.debug?.("RETRY",`${h.status} on ${m}, trying fallback ${g+1}`),p=h.status;continue}return{response:h,url:m,headers:y,transformedBody:b}}catch(o){let e=o instanceof Error?o:Error(String(o));if("TimeoutError"===e.name&&d?.warn?.("TIMEOUT",`Fetch timeout after ${t.FETCH_TIMEOUT_MS}ms on ${m}`),h=e,g+1<c){d?.debug?.("RETRY",`Error on ${m}, trying fallback ${g+1}`);continue}throw e}}throw h||Error(`All ${c} URLs failed with status ${p}`)}}let a=`You are Codex, based on GPT-5. You are running as a coding agent in the Codex CLI on a user's computer.
1
+ module.exports=[482191,e=>{"use strict";var t=e.i(359281);let r={codex:{headerOrder:["Host","Content-Type","Authorization","Accept","User-Agent","Accept-Encoding"],bodyFieldOrder:["model","messages","temperature","top_p","max_tokens","stream","tools","tool_choice","response_format","n","stop"],userAgent:"codex-cli"},claude:{headerOrder:["Host","Content-Type","x-api-key","anthropic-version","Accept","User-Agent","Accept-Encoding"],bodyFieldOrder:["model","max_tokens","messages","system","temperature","top_p","top_k","stream","tools","tool_choice","metadata"],userAgent:"claude-code"},github:{headerOrder:["Host","Authorization","X-Request-Id","Vscode-Sessionid","Vscode-Machineid","Editor-Version","Editor-Plugin-Version","Copilot-Integration-Id","Openai-Organization","Openai-Intent","Content-Type","User-Agent","Accept","Accept-Encoding"],bodyFieldOrder:["messages","model","temperature","top_p","max_tokens","n","stream","intent","intent_threshold","intent_content"],userAgent:"GitHubCopilotChat"},antigravity:{headerOrder:["Host","Content-Type","Authorization","User-Agent","Accept","Accept-Encoding"],bodyFieldOrder:["project","model","userAgent","requestType","requestId","request"],userAgent:"antigravity"},qwen:{headerOrder:["Host","Content-Type","Authorization","User-Agent","X-Dashscope-AuthType","X-Dashscope-CacheControl","X-Dashscope-UserAgent","X-Stainless-Arch","X-Stainless-Lang","X-Stainless-Os","X-Stainless-Package-Version","X-Stainless-Retry-Count","X-Stainless-Runtime","X-Stainless-Runtime-Version","Connection","Accept","Accept-Language","Sec-Fetch-Mode","Accept-Encoding"],bodyFieldOrder:["model","messages","temperature","top_p","max_tokens","stream","tools","tool_choice","response_format","n","stop"],userAgent:"QwenCode/0.12.3 (linux; x64)",extraHeaders:{"X-Dashscope-AuthType":"qwen-oauth","X-Dashscope-CacheControl":"enable","X-Dashscope-UserAgent":"QwenCode/0.12.3 (linux; x64)","X-Stainless-Arch":"x64","X-Stainless-Lang":"js","X-Stainless-Os":"Linux","X-Stainless-Package-Version":"5.11.0","X-Stainless-Retry-Count":"1","X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":"v18.19.1",Connection:"keep-alive","Accept-Language":"*","Sec-Fetch-Mode":"cors"}}},s=new Set,o=new Map;class n{provider;config;constructor(e,t){this.provider=e,this.config=t}getProvider(){return this.provider}getBaseUrls(){return this.config.baseUrls||(this.config.baseUrl?[this.config.baseUrl]:[])}getFallbackCount(){return this.getBaseUrls().length||1}buildUrl(e,t,r=0,s=null){if(this.provider?.startsWith?.("openai-compatible-")){let e=s?.providerSpecificData,t=("string"==typeof e?.baseUrl?e.baseUrl:"https://api.openai.com/v1").replace(/\/$/,""),r="string"==typeof e?.chatPath&&e.chatPath?e.chatPath:null;if(r)return`${t}${r}`;let o=this.provider.includes("responses")?"/responses":"/chat/completions";return`${t}${o}`}let o=this.getBaseUrls();return o[r]||o[0]||this.config.baseUrl}buildHeaders(e,t=!0){let r={"Content-Type":"application/json",...this.config.headers},s=this.config?.id||this.provider;if(s){let e=`${s.toUpperCase().replace(/[^A-Z0-9]/g,"_")}_USER_AGENT`,t=process.env[e]?.trim();t&&(r["User-Agent"]=t,r["user-agent"]&&(r["user-agent"]=t))}if(e.accessToken)r.Authorization=`Bearer ${e.accessToken}`;else if(e.apiKey){let t=e.providerSpecificData?.extraApiKeys??[],s=t.length>0&&e.connectionId?function(e,t,r=[]){let s=r.filter(e=>"string"==typeof e&&e.trim().length>0);if(0===s.length)return t;let n=[t,...s].filter(Boolean);if(n.length<=1)return t;let a=o.get(e)??0,i=a%n.length;return o.set(e,a+1),n[i]}(e.connectionId,e.apiKey,t):e.apiKey;r.Authorization=`Bearer ${s}`}return t&&(r.Accept="text/event-stream"),r}transformRequest(e,t,r,s){return t}shouldRetry(e,r){return e===t.HTTP_STATUS.RATE_LIMITED&&r+1<this.getFallbackCount()}static RETRY_CONFIG={maxAttempts:2,delayMs:2e3};async refreshCredentials(e,t){return null}needsRefresh(e){return!!e.expiresAt&&new Date(e.expiresAt).getTime()-Date.now()<3e5}parseError(e,t){return{status:e.status,message:t||`HTTP ${e.status}`}}async execute({model:e,body:o,stream:a,credentials:i,signal:l,log:d,extendedContext:u}){let c=this.getFallbackCount(),h=null,p=0,f={};for(let g=0;g<c;g++){let m=this.buildUrl(e,a,g,i),y=this.buildHeaders(i,a);if(u){let t=["claude-opus-4-6","claude-sonnet-4-6","claude-sonnet-4-5","claude-sonnet-4"],r=e.replace(/-\d{8}$/,"");if(t.some(t=>r===t||e===t||e.startsWith(t))){let e=y["Anthropic-Beta"];e?y["Anthropic-Beta"]=e+",context-1m-2025-08-07":y["Anthropic-Beta"]="context-1m-2025-08-07"}}let b=this.transformRequest(e,o,a,i);try{let e=a?null:AbortSignal.timeout(t.FETCH_TIMEOUT_MS),o=l&&e?function(e,t){let r=new AbortController,s=()=>{r.signal.aborted||r.abort()};return e.aborted||t.aborted?s():(e.addEventListener("abort",s,{once:!0}),t.addEventListener("abort",s,{once:!0})),r.signal}(l,e):l||e,i=y,u=JSON.stringify(b);if(function(e){let t=e?.toLowerCase().replace(/[^a-z0-9]/g,"_");if(s.has(e?.toLowerCase()))return!0;let r=`CLI_COMPAT_${t?.toUpperCase()}`;return"1"===process.env[r]||"true"===process.env[r]||"1"===process.env.CLI_COMPAT_ALL||"true"===process.env.CLI_COMPAT_ALL}(this.provider)){let e=function(e,t,s){let o=r[e?.toLowerCase()];return o?(o.userAgent&&(t["User-Agent"]=o.userAgent),o.extraHeaders&&Object.assign(t,o.extraHeaders),{headers:function(e,t){if(!t?.length||!e)return e;let r={},s=new Map;for(let[t,r]of Object.entries(e))s.set(t.toLowerCase(),[t,r]);for(let e of t){let t=s.get(e.toLowerCase());t&&(r[t[0]]=t[1],s.delete(e.toLowerCase()))}for(let[,[e,t]]of s)r[e]=t;return r}(t,o.headerOrder),bodyString:JSON.stringify(s&&"object"==typeof s&&!Array.isArray(s)?function(e,t){if(!t?.length||!e||"object"!=typeof e)return e;let r={},s=new Set(Object.keys(e));for(let o of t)o in e&&(r[o]=e[o],s.delete(o));for(let t of s)r[t]=e[t];return r}(s,o.bodyFieldOrder):s)}):{headers:t,bodyString:JSON.stringify(s)}}(this.provider,y,b);i=e.headers,u=e.bodyString}let c={method:"POST",headers:i,body:u};o&&(c.signal=o);let h=await fetch(m,c);if(h.status===t.HTTP_STATUS.RATE_LIMITED&&(f[g]??0)<n.RETRY_CONFIG.maxAttempts){f[g]=(f[g]??0)+1;let e=f[g];d?.debug?.("RETRY",`429 intra-retry ${e}/${n.RETRY_CONFIG.maxAttempts} on ${m} — waiting ${n.RETRY_CONFIG.delayMs}ms`),await new Promise(e=>setTimeout(e,n.RETRY_CONFIG.delayMs)),g--;continue}if(this.shouldRetry(h.status,g)){d?.debug?.("RETRY",`${h.status} on ${m}, trying fallback ${g+1}`),p=h.status;continue}return{response:h,url:m,headers:y,transformedBody:b}}catch(r){let e=r instanceof Error?r:Error(String(r));if("TimeoutError"===e.name&&d?.warn?.("TIMEOUT",`Fetch timeout after ${t.FETCH_TIMEOUT_MS}ms on ${m}`),h=e,g+1<c){d?.debug?.("RETRY",`Error on ${m}, trying fallback ${g+1}`);continue}throw e}}throw h||Error(`All ${c} URLs failed with status ${p}`)}}let a=`You are Codex, based on GPT-5. You are running as a coding agent in the Codex CLI on a user's computer.
2
2
 
3
3
  ## General
4
4
 
@@ -114,6 +114,6 @@ You are producing plain text that will later be styled by the CLI. Follow these
114
114
  * Optionally include line/column (1‑based): :line[:column] or #Lline[Ccolumn] (column defaults to 1).
115
115
  * Do not use URIs like file://, vscode://, or https://.
116
116
  * Do not provide range of lines
117
- * Examples: src/app.ts, src/app.ts:42, b/server/index.js#L10, C:\\repo\\project\\main.rs:12:5`;async function i(e,o){try{let r=await fetch(t.OAUTH_ENDPOINTS.openai.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:e,client_id:t.PROVIDERS.codex.clientId,scope:"openid profile email offline_access"})});if(!r.ok){let e=await r.text(),t=null;try{let o=JSON.parse(e);t=o?.error?.code}catch{}if("refresh_token_reused"===t)return o?.error?.("TOKEN_REFRESH","Codex refresh token already used (rotating token consumed). Re-authentication required.",{status:r.status}),{error:"refresh_token_reused"};return o?.error?.("TOKEN_REFRESH","Failed to refresh Codex token",{status:r.status,error:e}),null}let s=await r.json();return o?.info?.("TOKEN_REFRESH","Successfully refreshed Codex token",{hasNewAccessToken:!!s.access_token,hasNewRefreshToken:!!s.refresh_token,expiresIn:s.expires_in}),{accessToken:s.access_token,refreshToken:s.refresh_token||e,expiresIn:s.expires_in}}catch(e){return o?.error?.("TOKEN_REFRESH",`Network error refreshing Codex token: ${e.message}`),null}}e.i(666680);let l=["none","low","medium","high","xhigh"],d="priority",u=!1;function c(e){u=e}let h={"gpt-5.3-codex":"xhigh","gpt-5.2-codex":"xhigh","gpt-5.1-codex-max":"xhigh","gpt-5-mini":"high","gpt-5.1-mini":"high","gpt-4.1-mini":"high"};function p(e,t){let o=h[e]??"xhigh";return l.indexOf(t)>l.indexOf(o)?(console.debug(`[Codex] clampEffort: "${t}" → "${o}" (model: ${e})`),o):t}class f extends n{constructor(){super("codex",t.PROVIDERS.codex)}buildHeaders(e,t=!0){let o=super.buildHeaders(e,!0),r=e?.providerSpecificData?.workspaceId;return r&&(o["chatgpt-account-id"]=r),o}async refreshCredentials(e,t){if(!e?.refreshToken)return t?.warn?.("TOKEN_REFRESH","Codex: no refresh token available, re-authentication required"),null;let o=await i(e.refreshToken,t);return!o||o.error?(t?.warn?.("TOKEN_REFRESH",`Codex: token refresh failed${o?.error?` (${o.error})`:""} — re-authentication required`),null):o}transformRequest(e,t,o,r){let s=t?._nativeCodexPassthrough===!0;t.stream=!0,delete t._nativeCodexPassthrough;let n=function(e){if("string"!=typeof e)return;let t=e.trim().toLowerCase();if(t)return"fast"===t?d:t}(t.service_tier);if(n?t.service_tier=n:u&&(t.service_tier=d),s)return t;t.instructions&&""!==t.instructions.trim()||(t.instructions=a),t.store=!1;let i=null,l=e;for(let o of["none","low","medium","high","xhigh"])if(e.endsWith(`-${o}`)){i=o,t.model=t.model.replace(`-${o}`,""),l=t.model;break}if(t.reasoning)t.reasoning.effort&&(t.reasoning.effort=p(l,t.reasoning.effort));else{let e=p(l,t.reasoning_effort||i||"medium");t.reasoning={effort:e}}return delete t.reasoning_effort,delete t.temperature,delete t.top_p,delete t.frequency_penalty,delete t.presence_penalty,delete t.logprobs,delete t.top_logprobs,delete t.n,delete t.seed,delete t.max_tokens,delete t.user,delete t.prompt_cache_retention,delete t.metadata,delete t.stream_options,delete t.safety_identifier,t}}e.s(["CodexExecutor",()=>f,"setDefaultFastServiceTierEnabled",()=>c],482191)}];
117
+ * Examples: src/app.ts, src/app.ts:42, b/server/index.js#L10, C:\\repo\\project\\main.rs:12:5`;async function i(e,r){try{let s=await fetch(t.OAUTH_ENDPOINTS.openai.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:e,client_id:t.PROVIDERS.codex.clientId,scope:"openid profile email offline_access"})});if(!s.ok){let e=await s.text(),t=null;try{let r=JSON.parse(e);t=r?.error?.code}catch{}if("refresh_token_reused"===t)return r?.error?.("TOKEN_REFRESH","Codex refresh token already used (rotating token consumed). Re-authentication required.",{status:s.status}),{error:"refresh_token_reused"};return r?.error?.("TOKEN_REFRESH","Failed to refresh Codex token",{status:s.status,error:e}),null}let o=await s.json();return r?.info?.("TOKEN_REFRESH","Successfully refreshed Codex token",{hasNewAccessToken:!!o.access_token,hasNewRefreshToken:!!o.refresh_token,expiresIn:o.expires_in}),{accessToken:o.access_token,refreshToken:o.refresh_token||e,expiresIn:o.expires_in}}catch(e){return r?.error?.("TOKEN_REFRESH",`Network error refreshing Codex token: ${e.message}`),null}}e.i(666680);let l=["none","low","medium","high","xhigh"],d="priority",u=!1;function c(e){let t=String(e||"").replace(/\/+$/,"").match(/(?:^|\/)responses(?:(\/.*))?$/i);return t?t[1]||"":null}function h(e){return c(e)?.toLowerCase()==="/compact"}function p(e){u=e}let f={"gpt-5.3-codex":"xhigh","gpt-5.2-codex":"xhigh","gpt-5.1-codex-max":"xhigh","gpt-5-mini":"high","gpt-5.1-mini":"high","gpt-4.1-mini":"high"};function g(e,t){let r=f[e]??"xhigh";return l.indexOf(t)>l.indexOf(r)?(console.debug(`[Codex] clampEffort: "${t}" → "${r}" (model: ${e})`),r):t}class m extends n{constructor(){super("codex",t.PROVIDERS.codex)}buildUrl(e,t,r=0,s=null){let o=c(s?.requestEndpointPath);if(null!==o){let e=String(this.config.baseUrl||"").replace(/\/$/,"");return e.endsWith("/responses")?`${e}${o}`:`${e}/responses${o}`}return super.buildUrl(e,t,r,s)}buildHeaders(e,t=!0){let r=h(e?.requestEndpointPath),s=super.buildHeaders(e,!r),o=e?.providerSpecificData?.workspaceId;return o&&(s["chatgpt-account-id"]=o),s}async refreshCredentials(e,t){if(!e?.refreshToken)return t?.warn?.("TOKEN_REFRESH","Codex: no refresh token available, re-authentication required"),null;let r=await i(e.refreshToken,t);return!r||r.error?(t?.warn?.("TOKEN_REFRESH",`Codex: token refresh failed${r?.error?` (${r.error})`:""} — re-authentication required`),null):r}transformRequest(e,t,r,s){let o=t?._nativeCodexPassthrough===!0;h(s?.requestEndpointPath)?(delete t.stream,delete t.stream_options):t.stream=!0,delete t._nativeCodexPassthrough;let n=function(e){if("string"!=typeof e)return;let t=e.trim().toLowerCase();if(t)return"fast"===t?d:t}(t.service_tier);if(n?t.service_tier=n:u&&(t.service_tier=d),o)return t;t.instructions&&""!==t.instructions.trim()||(t.instructions=a),t.store=!1;let i=null,l=e;for(let r of["none","low","medium","high","xhigh"])if(e.endsWith(`-${r}`)){i=r,t.model=t.model.replace(`-${r}`,""),l=t.model;break}if(t.reasoning)t.reasoning.effort&&(t.reasoning.effort=g(l,t.reasoning.effort));else{let e=g(l,t.reasoning_effort||i||"medium");t.reasoning={effort:e}}return delete t.reasoning_effort,delete t.temperature,delete t.top_p,delete t.frequency_penalty,delete t.presence_penalty,delete t.logprobs,delete t.top_logprobs,delete t.n,delete t.seed,delete t.max_tokens,delete t.user,delete t.prompt_cache_retention,delete t.metadata,delete t.stream_options,delete t.safety_identifier,t}}e.s(["CodexExecutor",()=>m,"setDefaultFastServiceTierEnabled",()=>p],482191)}];
118
118
 
119
119
  //# sourceMappingURL=open-sse_executors_codex_ts_6d18ec4b._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[821518,e=>{"use strict";var t=e.i(878947);let r={};for(let[e,i]of Object.entries(t.PROVIDER_ID_TO_ALIAS))r[i]&&console.log(`[MODEL] Warning: alias "${i}" maps to both "${r[i]}" and "${e}". Using "${e}".`),r[i]=e;let i={github:{"claude-4.5-opus":"claude-opus-4-5-20251101","claude-opus-4.5":"claude-opus-4-5-20251101","gemini-3-pro":"gemini-3-pro-preview","gemini-3-flash":"gemini-3-flash-preview","raptor-mini":"oswe-vscode-prime"},gemini:{"gemini-3.1-pro-preview":"gemini-3.1-pro","gemini-3-1-pro":"gemini-3.1-pro"},"gemini-cli":{"gemini-3.1-pro-preview":"gemini-3.1-pro","gemini-3-1-pro":"gemini-3.1-pro"},nvidia:{"gpt-oss-120b":"openai/gpt-oss-120b","nvidia/gpt-oss-120b":"openai/gpt-oss-120b"},antigravity:{}},o=new Map;for(let[e,i]of Object.entries(t.PROVIDER_MODELS)){let t=r[e]||e;for(let e of i||[]){let r=e?.id;if(!r)continue;let i=o.get(r)||[];i.includes(t)||(i.push(t),o.set(r,i))}}function n(e){return r[e]||e}function a(e,t){if(!t||"string"!=typeof t)return t;let r=i[n(e)];return r?.[t]||t}function s(e){if(!e)return{provider:null,model:null,isAlias:!1,providerAlias:null,extendedContext:!1};if(/\.\.[\/\\]/.test(e)||/[\x00-\x1f]/.test(e))return console.log(`[MODEL] Warning: rejected malformed model string: "${e.substring(0,50)}"`),{provider:null,model:null,isAlias:!1,providerAlias:null,extendedContext:!1};let t=!1,r=e;if(r.endsWith("[1m]")&&(t=!0,r=r.slice(0,-4)),r.includes("/")){let e=r.indexOf("/"),i=r.slice(0,e),o=r.slice(e+1);return{provider:n(i),model:o,isAlias:!1,providerAlias:i,extendedContext:t}}return{provider:null,model:r,isAlias:!0,providerAlias:null,extendedContext:t}}async function l(e,r){let i=s(e),{extendedContext:l}=i;if(!i.isAlias){let e=a(i.provider,i.model);return{provider:i.provider,model:e,extendedContext:l}}let c="function"==typeof r?await r():r,u=function(e,t){if(!t)return null;let r=t[e];if(!r)return null;if("string"==typeof r&&r.includes("/")){let e=r.indexOf("/");return{provider:n(r.slice(0,e)),model:r.slice(e+1)}}return"object"==typeof r&&r.provider&&r.model?{provider:n(r.provider),model:r.model}:null}(i.model,c);if(u){let e=a(u.provider,u.model);return{provider:u.provider,model:e,extendedContext:l}}if(c&&"object"==typeof c){let e=Object.entries(c).map(([e,t])=>({pattern:e,target:t})),t=function(e,t){if(!e||!t||!Array.isArray(t))return null;let r=[];for(let i of t){let t=i.pattern||i.alias||i.from,o=i.target||i.model||i.to;t&&o&&function(e,t){if(!e||!t)return!1;if("*"===t||t===e)return!0;let r=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return RegExp(`^${r}$`,"i").test(e)}(e,t)&&r.push({pattern:t,target:o,specificity:function(e){if(!e)return 0;let t=0;for(let r of e.split(/[/*?]/))r.length>0&&(t+=10*r.length);let r=(e.match(/\*/g)||[]).length,i=(e.match(/\?/g)||[]).length;return t-=50*r,t-=5*i,t+=e.length}(t),...i})}return 0===r.length?null:(r.sort((e,t)=>t.specificity-e.specificity),r[0])}(i.model,e);if(t){let e=t.target;if(e.includes("/")){let r=e.indexOf("/"),i=e.slice(0,r),o=e.slice(r+1),s=n(i),c=a(s,o);return{provider:s,model:c,extendedContext:l,wildcardPattern:t.pattern}}}}let d=i.model,m=o.get(d)||[];if(m.includes("openai"))return{provider:"openai",model:d,extendedContext:l};let p=m.filter(e=>"openai"!==e);if(1===p.length){let e=p[0],t=a(e,d);return{provider:e,model:t,extendedContext:l}}if(p.length>1){let e=p.map(e=>t.PROVIDER_ID_TO_ALIAS[e]||e),r=e.slice(0,2).map(e=>`${e}/${d}`),i=`Ambiguous model '${d}'. Use provider/model prefix (ex: ${r.join(" or ")}).`;return console.warn(`[MODEL] ${i} Candidates: ${e.join(", ")}`),{provider:null,model:d,errorType:"ambiguous_model",errorMessage:i,candidateProviders:p,candidateAliases:e}}return/^claude-/i.test(d)?{provider:"antigravity",model:d,extendedContext:l}:/^gemini-/i.test(d)||/^gemma-/i.test(d)?{provider:"gemini",model:d,extendedContext:l}:{provider:"openai",model:d,extendedContext:l}}e.s(["getModelInfoCore",()=>l,"parseModel",()=>s],821518)},928041,e=>{"use strict";var t=e.i(441637),r=e.i(719201),i=e.i(178578);let o={strategy:"priority",maxRetries:1,retryDelayMs:2e3,timeoutMs:12e4,concurrencyPerModel:3,queueTimeoutMs:3e4,healthCheckEnabled:!0,healthCheckTimeoutMs:3e3,maxComboDepth:3,trackMetrics:!0};function n(e,t,r){let i=t?.comboDefaults||{},n=r&&t?.providerOverrides?.[r]||{},a=e?.config||{},s=e=>Object.fromEntries(Object.entries(e).filter(([,e])=>null!=e));return{...o,...s(i),...s(n),...s(a)}}let a=new Map;function s(e,t=3){a.has(e)||a.set(e,{running:0,max:t,queue:[],rateLimitedUntil:null});let r=a.get(e);return r.max=t,r}function l(e){return!!e.rateLimitedUntil&&(!(Date.now()>=e.rateLimitedUntil)||(e.rateLimitedUntil=null,!1))}function c(e){let t=a.get(e);if(t)for(;t.queue.length>0&&t.running<t.max&&!l(t);){let r=t.queue.shift();clearTimeout(r.timer),t.running++,r.resolve(u(e))}}function u(e){let t=!1;return()=>{if(t)return;t=!0;let r=a.get(e);r&&r.running>0&&(r.running--,c(e))}}var d=e.i(260222),m=e.i(73114),p=e.i(821518);let f=/<omniModel>([^<]+)<\/omniModel>/,g=["function","class","import","def","SELECT","async","await","const","let","var","return","```","algorithm","compile","debug","refactor","typescript","python","javascript","code","implement","write a","create a component","endpoint","repository","deploy","install","script","api","database","query","schema","interface","generic","enum","module","package","dependency","função","classe","importar","definir","consulta","assíncrono","aguardar","constante","variável","retornar","algoritmo","compilar","depurar","refatorar","código","implementar","criar um","componente","como fazer","repositório","configurar","instalar","banco de dados","escrever uma função","criar uma classe","función","clase","importar","definir","consulta","asíncrono","esperar","constante","variable","retornar","algoritmo","compilar","depurar","refactorizar","código","implementar","函数","类","导入","定义","查询","异步","等待","常量","变量","返回","算法","编译","调试","代码","関数","クラス","インポート","非同期","定数","変数","コード","アルゴリズム","функция","класс","импорт","запрос","асинхронный","константа","переменная","алгоритм","код","funktion","klasse","importieren","abfrage","asynchron","konstante","variable","algorithmus","code","함수","클래스","가져오기","정의","쿼리","비동기","대기","상수","변수","반환","코드","دالة","فئة","استيراد","استعلام","غير متزامن","ثابت","متغير","كود","خوارزمية"],h=["prove","theorem","derive","step by step","chain of thought","formally","mathematical","proof","logically","analyze","reasoning","deduce","infer","hypothesis","convergence","provar","teorema","derivar","passo a passo","cadeia de pensamento","formalmente","matemático","prova","logicamente","analisar","raciocínio","deduzir","inferir","hipótese","demonstrar","cálculo","equação diferencial","integral","otimização","demostrar","teorema","derivar","paso a paso","formalmente","matemático","lógicamente","证明","定理","推导","逐步","思维链","数学","逻辑","分析","証明","定理","導出","論理的","分析","доказать","теорема","шаг за шагом","математически","логически","beweisen","theorem","schritt für schritt","mathematisch","logisch","증명","정리","단계별","수학적","논리적","إثبات","نظرية","خطوة بخطوة","رياضي","منطقياً"],y=["what is","define","translate","hello","yes or no","summarize","list","tell me","who is","o que é","definir","traduzir","olá","oi","sim ou não","resumir","listar","me diga","quem é","quando foi","onde fica","explique brevemente","de forma simples","qué es","definir","traducir","hola","resumir","listar","什么是","定义","翻译","你好","总结","列出","что такое","определить","перевести","привет","резюмировать","was ist","definieren","übersetzen","hallo","zusammenfassen","이란","정의","번역","안녕","요약","ما هو","تعريف","ترجمة","مرحبا","ملخص"],b={enabled:!0,simpleMaxWords:60},w={quota:.2,health:.25,costInv:.2,latencyInv:.15,taskFit:.1,stability:.05,tierPriority:.05};function v(e,t,r=w,i=()=>.5){return e.map(o=>{var n,a;let s,l,c,u=(s=Math.max(...e.map(e=>e.costPer1MTokens),.001),l=Math.max(...e.map(e=>e.p95LatencyMs),1),c=Math.max(...e.map(e=>e.latencyStdDev),.001),{quota:Math.min(1,o.quotaRemaining/100),health:"CLOSED"===o.circuitBreakerState?1:.5*("HALF_OPEN"===o.circuitBreakerState),costInv:1-o.costPer1MTokens/s,latencyInv:1-o.p95LatencyMs/l,taskFit:i(o.model,t),stability:1-o.latencyStdDev/c,tierPriority:(n=o.accountTier,a=o.quotaResetIntervalSecs,Math.min(1,.8*(({ultra:1,pro:.67,standard:.33,free:0})[n?.toLowerCase()??""]??.33)+.2*(null!=a&&a>0?Math.max(0,1-a/2592e3):0)))});return{provider:o.provider,model:o.model,score:r.quota*u.quota+r.health*u.health+r.costInv*u.costInv+r.latencyInv*u.latencyInv+r.taskFit*u.taskFit+r.stability*u.stability+r.tierPriority*u.tierPriority,factors:u}}).sort((e,t)=>t.score-e.score)}let M={coding:{"claude-sonnet":.95,"claude-opus":.92,"claude-haiku":.78,"gpt-4o":.9,"gpt-4o-mini":.8,"gpt-4-turbo":.88,o1:.93,o3:.95,"o4-mini":.88,codex:.98,"gemini-pro":.85,"gemini-flash":.8,"gemini-2.5-pro":.92,"gemini-2.5-flash":.82,"deepseek-coder":.9,"deepseek-v3":.85,"deepseek-r1":.88,"deepseek-chat":.84,"deepseek-v3.2":.86,qwen:.78,llama:.72,mistral:.75,mixtral:.77,"grok-4-fast":.8,"grok-4":.82,"grok-3":.8,"kimi-k2":.82,"glm-5":.78,"minimax-m2.5":.75,"minimax-m2":.72},review:{"claude-sonnet":.92,"claude-opus":.95,"claude-haiku":.7,"gpt-4o":.88,"gpt-4o-mini":.72,o1:.9,o3:.92,"gemini-pro":.9,"gemini-2.5-pro":.93,"gemini-flash":.75,"deepseek-r1":.85,"deepseek-v3":.8},planning:{"claude-opus":.95,"claude-sonnet":.9,"gpt-4o":.88,o1:.92,o3:.95,"gemini-2.5-pro":.93,"gemini-pro":.88,"deepseek-r1":.85},analysis:{"claude-opus":.95,"claude-sonnet":.92,"gemini-2.5-pro":.95,"gemini-pro":.88,"gemini-3.1-pro":.95,"gpt-4o":.85,o1:.9,o3:.93,"deepseek-r1":.88,"deepseek-chat":.8,"kimi-k2":.82,"glm-5":.78,"minimax-m2.5":.76},debugging:{"claude-sonnet":.93,"claude-opus":.9,"gpt-4o":.88,o1:.85,"deepseek-coder":.9,"deepseek-v3":.82,"gemini-flash":.78,codex:.92},documentation:{"claude-sonnet":.9,"claude-opus":.88,"gpt-4o":.92,"gpt-4o-mini":.85,"gemini-pro":.88,"gemini-flash":.82,"deepseek-v3":.78},default:{"claude-sonnet":.85,"claude-opus":.85,"gpt-4o":.85,"gemini-pro":.8,"gemini-3.1-pro":.85,"deepseek-v3":.75,"deepseek-chat":.74,"gemini-flash":.72,"grok-4-fast":.72,"grok-4":.74,"grok-3":.73,"kimi-k2":.76,"glm-5":.7,"minimax-m2.5":.7}},k=[{pattern:"coder",taskType:"coding",boost:.15},{pattern:"code",taskType:"coding",boost:.1},{pattern:"fast",taskType:"coding",boost:.05},{pattern:"thinking",taskType:"planning",boost:.1},{pattern:"thinking",taskType:"analysis",boost:.1}];function x(e,t){let r=e.toLowerCase(),i=t.toLowerCase();for(let[e,t]of Object.entries(M[i]||M.default))if(r.includes(e))return t;let o=.5;for(let e of k)r.includes(e.pattern)&&i===e.taskType&&(o+=e.boost);return Math.min(1,o)}let $={"ship-fast":{quota:.15,health:.3,costInv:.05,latencyInv:.35,taskFit:.1,stability:0,tierPriority:.05},"cost-saver":{quota:.15,health:.2,costInv:.4,latencyInv:.05,taskFit:.1,stability:.05,tierPriority:.05},"quality-first":{quota:.1,health:.2,costInv:.05,latencyInv:.05,taskFit:.4,stability:.15,tierPriority:.05},"offline-friendly":{quota:.4,health:.3,costInv:.1,latencyInv:.05,taskFit:0,stability:.1,tierPriority:.05}};class O{exclusions=new Map;incidentMode=!1;isExcluded(e){let t=this.exclusions.get(e);return!(!t||Date.now()-t.excludedAt>t.cooldownMs)}evaluate(e,t,r){let i=this.exclusions.get(e);if(i&&t>=.3&&Date.now()-i.excludedAt>i.cooldownMs)return this.exclusions.delete(e),{excluded:!1,reason:`Re-admitted: score ${t.toFixed(2)} >= 0.3`};if(this.isExcluded(e))return"HALF_OPEN"===r&&i?(i.probeCount++,{excluded:!1,isProbe:!0,reason:`Probe request #${i.probeCount}`}):{excluded:!0,reason:i?.reason||"Excluded"};if(t<.2){let r=i?Math.min(2*i.cooldownMs,18e5):3e5;return this.exclusions.set(e,{provider:e,excludedAt:Date.now(),cooldownMs:r,reason:`Score ${t.toFixed(2)} < 0.2`,probeCount:0}),{excluded:!0,reason:`Excluded: score ${t.toFixed(2)} below threshold`}}return"OPEN"===r?(this.exclusions.set(e,{provider:e,excludedAt:Date.now(),cooldownMs:3e5,reason:"Circuit breaker OPEN",probeCount:0}),{excluded:!0,reason:"Circuit breaker OPEN"}):{excluded:!1}}recordProbeResult(e,t){let r=this.exclusions.get(e);r&&(t&&r.probeCount>=3?this.exclusions.delete(e):t||(r.cooldownMs=Math.min(2*r.cooldownMs,18e5),r.excludedAt=Date.now(),r.probeCount=0))}updateIncidentMode(e){let t=e.length;if(0===t)return this.incidentMode=!1,!1;let r=e.filter(e=>"OPEN"===e).length;return this.incidentMode=r/t>.5,this.incidentMode}isInIncidentMode(){return this.incidentMode}getExclusions(){return[...this.exclusions.values()]}getStatus(){let e=Date.now();return{exclusionCount:this.exclusions.size,incidentMode:this.incidentMode,exclusions:[...this.exclusions.values()].map(t=>({provider:t.provider,reason:t.reason,remainingMs:Math.max(0,t.cooldownMs-(e-t.excludedAt))}))}}}let C=null,R=new Map,A=new class{name="rules";description="6-factor weighted scoring: quota, health, cost, latency, taskFit, stability";select(e,t){let r=e.filter(e=>"OPEN"!==e.circuitBreakerState),i=v(r.length>0?r:e,t.taskType,void 0,x),o=i[0];if(!o)throw Error("[RulesStrategy] No candidates to score");return{provider:o.provider,model:o.model,strategy:this.name,reason:`RulesStrategy: score=${o.score.toFixed(3)} (quota=${o.factors.quota.toFixed(2)}, health=${o.factors.health.toFixed(2)}, cost=${o.factors.costInv.toFixed(2)}, taskFit=${o.factors.taskFit.toFixed(2)})`,candidatesConsidered:i.length,finalScore:o.score}}},S=new class{name="cost";description="Always selects cheapest available provider (by costPer1MTokens)";select(e,t){let r=e.filter(e=>"OPEN"!==e.circuitBreakerState),i=r.length>0?r:e,o=[...i].sort((e,t)=>e.costPer1MTokens-t.costPer1MTokens)[0];if(!o)throw Error("[CostStrategy] No candidates available");return{provider:o.provider,model:o.model,strategy:this.name,reason:`CostStrategy: cheapest at $${o.costPer1MTokens.toFixed(3)}/1M tokens`,candidatesConsidered:i.length,finalScore:0===o.costPer1MTokens?1:1/o.costPer1MTokens}}},E=new class{name="latency";description="Prioritizes lowest p95 latency with reliability weighting";select(e,t){let r=e.filter(e=>"OPEN"!==e.circuitBreakerState),i=r.length>0?r:e,o=[...i].sort((e,t)=>{let r=1e3*e.errorRate,i=1e3*t.errorRate;return e.p95LatencyMs+r-(t.p95LatencyMs+i)})[0];if(!o)throw Error("[LatencyStrategy] No candidates available");let n=o.p95LatencyMs>0?Math.max(.001,1e4/o.p95LatencyMs):1,a=Math.max(0,1-o.errorRate);return{provider:o.provider,model:o.model,strategy:this.name,reason:`LatencyStrategy: p95=${o.p95LatencyMs}ms, errorRate=${(100*o.errorRate).toFixed(2)}%`,candidatesConsidered:i.length,finalScore:.7*n+.3*a}}};R.set("rules",A),R.set("cost",S),R.set("eco",S),R.set("latency",E),R.set("fast",E);var P=e.i(878947);let B=["gpt-oss-120b","deepseek-reasoner","glm-4.7","glm4.7"],N=[429,502,503,504],T={"grok-4-fast-non-reasoning":1143,"grok-4-1-fast-non-reasoning":1244,"gemini-2.5-flash":1238,"kimi-k2.5":1646,"gpt-4o-mini":2764,"claude-sonnet-4.6":4e3,"claude-opus-4.6":6e3,"deepseek-chat":2e3},D=new Map;function q(e){return"string"==typeof e?{model:e,weight:0}:{model:e.model,weight:e.weight||0}}function L(e,t,r=new Set,i=0){if(i>3)return e.models.map(e=>q(e).model);if(r.has(e.name))return[];r.add(e.name);let o=Array.isArray(t)?t:t?.combos||[],n=[];for(let t of e.models||[]){let e=q(t).model,a=o.find(t=>t.name===e);if(a){let e=L(a,o,new Set(r),i+1);n.push(...e)}else n.push(e)}return n}function I(e){let t=e.map(e=>q(e)),r=t.reduce((e,t)=>e+t.weight,0);if(r<=0)return t[Math.floor(Math.random()*t.length)].model;let i=Math.random()*r;for(let e of t)if((i-=e.weight)<=0)return e.model;return t[t.length-1].model}function F(e,t){let r=e.map(e=>q(e));return[r.find(e=>e.model===t),...r.filter(e=>e.model!==t).sort((e,t)=>t.weight-e.weight)].filter(Boolean).map(e=>e.model)}async function _(t){try{let{getPricingForModel:r}=await e.A(605589),i=await Promise.all(t.map(async e=>{let t=(0,p.parseModel)(e),i=t.provider||t.providerAlias||"unknown",o=t.model||e;try{let t=await r(i,o);return{modelStr:e,cost:t?.input??1/0}}catch{return{modelStr:e,cost:1/0}}}));return i.sort((e,t)=>e.cost-t.cost),i.map(e=>e.modelStr)}catch{return t}}function j(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?e.trim():"").filter(Boolean):"string"==typeof e?e.split(",").map(e=>e.trim()).filter(Boolean):[]}function z(e){return T[String(e||"").toLowerCase()]??1500}async function K(t,r){let o=(0,i.getComboMetrics)(r),{getPricingForModel:n}=await e.A(605589),a={};try{let{getModelLatencyStats:t}=await e.A(537776);a=await t({windowHours:24,minSamples:3,maxRows:1e4})}catch{}return await Promise.all(t.map(async e=>{let t=(0,p.parseModel)(e),r=t.provider||t.providerAlias||"unknown",i=t.model||e,s=a[`${r}/${i}`]||null,l=Number(s?.totalRequests),c=Number.isFinite(l)&&l>=10,u=1;try{let e=await n(r,i),t=Number(e?.input);Number.isFinite(t)&&t>=0&&(u=t)}catch{}let m=o?.byModel?.[e]||null,f=Number(m?.avgLatencyMs),g=Number(m?.successRate),h=Number(s?.p95LatencyMs),y=Number(s?.latencyStdDev),b=Number(s?.successRate),w=c?Number.isFinite(h)&&h>0?h:z(i):Number.isFinite(f)&&f>0?f:z(i),v=c?Number.isFinite(b)&&b>=0&&b<=1?1-b:.05:Number.isFinite(g)&&g>=0&&g<=100?1-g/100:.05,M=c&&Number.isFinite(y)&&y>0?Math.max(10,y):Math.max(10,.1*w),k=(0,d.getCircuitBreaker)(`combo:${e}`)?.getStatus?.()?.state;return{provider:r,model:i,quotaRemaining:100,quotaTotal:100,circuitBreakerState:"OPEN"===k||"HALF_OPEN"===k?k:"CLOSED",costPer1MTokens:u,p95LatencyMs:w,latencyStdDev:M,errorRate:v,accountTier:"standard",quotaResetIntervalSecs:86400}}))}async function U({body:e,combo:a,handleSingleModel:s,isModelAvailable:l,log:c,settings:u,allCombos:M}){let k,S=a.strategy||"priority",E=a.models||[],{body:T,pinnedModel:D}=function(e,t,r){var i;if(!t)return{body:e,pinnedModel:null};let o=Array.isArray(e.messages)?[...e.messages]:[],n=null;t.context_cache_protection&&(n=function(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if("assistant"===r.role&&"string"==typeof r.content){let e=f.exec(r.content);if(e)return e[1]}}return null}(o)),t.system_message&&t.system_message.trim()&&(i=o,o=[{role:"system",content:t.system_message},...i.filter(e=>"system"!==e.role)]);let a=function(e,t){let r;if(!e||!t)return e;try{r=new RegExp(t)}catch{return console.warn(`[ComboAgent] Invalid tool_filter_regex: "${t}"`),e}return e.filter(e=>{let t=e.function?.name??e.name??"";return r.test(String(t))})}(e.tools,t.tool_filter_regex);return{body:{...e,messages:o,...a!==e.tools&&{tools:a}},pinnedModel:n}}(e,a,0);e=T,D&&c.info("COMBO",`[#401] Context caching: pinned model=${D}`);let z=a.context_cache_protection?async(e,t)=>{let r=await s(e,t);if(r.ok&&!e.stream)try{let e=await r.clone().json(),i=Array.isArray(e?.messages)?e.messages:[];if(i.length>0){let o=function(e,t){let r=e.map(e=>"assistant"===e.role&&"string"==typeof e.content?{...e,content:e.content.replace(f,"").trimEnd()}:e),i=r.map(e=>e.role).lastIndexOf("assistant");if(-1===i)return r;let o=r[i];if("string"!=typeof o.content)return r;let n=[...r];return n[i]={...o,content:`${o.content}
2
- <omniModel>${t}</omniModel>`},n}(i,t);return new Response(JSON.stringify({...e,messages:o}),{status:r.status,headers:r.headers})}}catch{}return r}:s;if("round-robin"===S)return W({body:e,combo:a,handleSingleModel:z,isModelAvailable:l,log:c,settings:u,allCombos:M});let U=u?n(a,u):{...o,...a.config||{}},H=U.maxRetries??1,J=U.retryDelayMs??2e3;if(M){let e=L(a,M);if("weighted"===S){let e=I(E);k=(k=F(E,e)).flatMap(e=>{let t=(Array.isArray(M)?M:M?.combos||[]).find(t=>t.name===e);return t?L(t,M):[e]}),c.info("COMBO",`Weighted selection with nested resolution: ${k.length} total models`)}else k=e,c.info("COMBO",`${S} with nested resolution: ${k.length} total models`)}else if("weighted"===S){let e=I(E);k=F(E,e),c.info("COMBO",`Weighted selection: ${e} (from ${E.length} models)`)}else k=E.map(e=>q(e).model);if("auto"===S){let t,r=Array.isArray(e?.tools)&&e.tools.length>0,o=[...k];if(r){let e=o.filter(e=>(function(e){let t=(0,p.parseModel)(e),r=t.provider||t.providerAlias||"",i=t.model||e;if(r){let e=function(e,t){let r=P.PROVIDER_ID_TO_ALIAS[e]||e,i=P.PROVIDER_MODELS[r];if(!Array.isArray(i))return null;let o=i.find(e=>e?.id===t);return o&&"boolean"==typeof o.toolCalling?o.toolCalling:null}(r,i);if(null!==e)return e}let o=String(e||"").toLowerCase();return!!o&&!B.some(e=>!!(o===e||o.endsWith(`/${e}`))||o.includes(e))})(e));e.length>0?o=e:c.warn("COMBO","Auto strategy: all candidates filtered by tool-calling policy, falling back to full pool")}let n=function(e){if(!e||"object"!=typeof e)return"";let t=Array.isArray(e.messages)?[...e.messages].reverse().find(e=>e&&"object"==typeof e&&"user"===e.role):null;if(t){var r;return"string"==typeof(r=t.content)?r:Array.isArray(r)?r.map(e=>e&&"object"==typeof e&&"string"==typeof e.text?e.text:"").join("\n"):""}if("string"==typeof e.input)return e.input;if(Array.isArray(e.input)){let t=e.input.map(e=>e&&"object"==typeof e?"string"==typeof e.content?e.content:"string"==typeof e.text?e.text:"":"").filter(Boolean).join("\n");if(t)return t}return"string"==typeof e.prompt?e.prompt:""}(e),s="string"==typeof a?.system_message?a.system_message:void 0,l=function(e,t,r){if(!t.enabled)return"medium";let i=`${r??""} ${e}`.toLowerCase(),o=e.trim().split(/\s+/).length,n=t.simpleMaxWords??60,a=[...g,...t.extraCodeKeywords??[]],s=[...h,...t.extraReasoningKeywords??[]],l=[...y,...t.extraSimpleKeywords??[]];for(let e of a)if(i.includes(e.toLowerCase()))return"code";for(let e of s)if(i.includes(e.toLowerCase()))return"reasoning";if(o<n){for(let e of l)if(i.includes(e.toLowerCase()))return"simple"}return"medium"}(n,(t=a?.autoConfig?.intentConfig||a?.config?.auto?.intentConfig||a?.config?.intentConfig||{},{...b,...t,..."boolean"==typeof u?.intentDetectionEnabled?{enabled:u.intentDetectionEnabled}:{},...Number.isFinite(Number(u?.intentSimpleMaxWords))?{simpleMaxWords:Number(u.intentSimpleMaxWords)}:{},...j(u?.intentExtraCodeKeywords).length>0?{extraCodeKeywords:j(u.intentExtraCodeKeywords)}:{},...j(u?.intentExtraReasoningKeywords).length>0?{extraReasoningKeywords:j(u.intentExtraReasoningKeywords)}:{},...j(u?.intentExtraSimpleKeywords).length>0?{extraSimpleKeywords:j(u.intentExtraSimpleKeywords)}:{}}),s);(0,i.recordComboIntent)(a.name,l);let d=function(e){switch(e){case"code":return"coding";case"reasoning":return"analysis";default:return"default"}}(l),m=a?.autoConfig||a?.config?.auto||a?.config||{},f="string"==typeof m.routingStrategy?m.routingStrategy:"string"==typeof m.strategyName?m.strategyName:"rules",M=Array.isArray(m.candidatePool)?m.candidatePool:[...new Set(o.map(e=>{let t=(0,p.parseModel)(e);return t.provider||t.providerAlias||"unknown"}))],S=m.weights&&"object"==typeof m.weights?m.weights:w,E=Number.isFinite(Number(m.explorationRate))?Number(m.explorationRate):.05,N=Number.isFinite(Number(m.budgetCap))?Number(m.budgetCap):void 0,T="string"==typeof m.modePack?m.modePack:void 0,D=await K(o,a.name);if(D.length>0){let e=null,t=null,i="";if("rules"!==f)try{let o=function(e,t,r="rules"){let i;return(!(i=R.get(r))?(console.warn(`[RouterStrategy] Strategy '${r}' not found, falling back to 'rules'`),A):i).select(e,t)}(D,{taskType:d,requestHasTools:r},f);e=o.provider,t=o.model,i=o.reason}catch(e){c.warn("COMBO",`Auto strategy '${f}' failed (${e?.message||"unknown"}), falling back to rules`)}if(!e||!t){let r=function(e,t,r="default",i){let o,n=(C||(C=new O),C),a=e.weights;if(e.modePack){let t=$[e.modePack];t&&(a=t)}.01>Math.abs(Object.values(a).reduce((e,t)=>e+t,0)-1)||(a=w);let s=[],l=t.filter(t=>(!(e.candidatePool.length>0)||!!e.candidatePool.includes(t.provider))&&(!n.evaluate(t.provider,.5,t.circuitBreakerState).excluded||(s.push(t.provider),!1)));0===l.length&&(l.push(...t),s.length=0);let c=v(l,r,a,x),u=c.filter(e=>!n.evaluate(e.provider,e.score,"CLOSED").excluded||(s.push(e.provider),!1)),d=u.length>0?u:c,m=Math.random()<(n.isInIncidentMode()?0:e.explorationRate)&&d.length>1;if(m){let e=Math.floor(Math.random()*d.length);o=d[e]}else o=d[0];if(e.budgetCap){let r=t.find(e=>e.provider===o.provider);if(r&&r.costPer1MTokens/1e6*1e3>e.budgetCap){let e=d.map(e=>({...e,cost:t.find(t=>t.provider===e.provider)?.costPer1MTokens||0})).sort((e,t)=>e.cost-t.cost)[0];e&&(o=e)}}return{provider:o.provider,model:o.model,score:o.score,isExploration:m,factors:o.factors,excluded:s}}({id:a.id||a.name,name:a.name,type:"auto",candidatePool:M,weights:S,modePack:T,budgetCap:N,explorationRate:E},D,d);e=r.provider,t=r.model,i=`score=${r.score.toFixed(3)}${r.isExploration?" (exploration)":""}`}let n=new Map;for(let e of o){let t=(0,p.parseModel)(e),r=t.provider||t.providerAlias||"unknown",i=t.model||e;n.set(`${r}/${i}`,e)}let s=v(D,d,S).map(e=>n.get(`${e.provider}/${e.model}`)||`${e.provider}/${e.model}`).filter(Boolean),u=n.get(`${e}/${t}`)||`${e}/${t}`;k=[...new Set([u,...s,...o])],c.info("COMBO",`Auto selection: ${u} | intent=${l} task=${d} | strategy=${f} | ${i}`)}else c.warn("COMBO","Auto strategy has no candidates, keeping default ordering")}else if("strict-random"===S){let e=await (0,m.getNextFromDeck)(`combo:${a.name}`,k),t=k.filter(t=>t!==e);k=[e,...t],c.info("COMBO",`Strict-random deck: ${e} selected (${k.length} models)`)}else"random"===S?(k=(0,m.fisherYatesShuffle)([...k]),c.info("COMBO",`Random shuffle: ${k.length} models`)):"least-used"===S?(k=function(e,t){let r=(0,i.getComboMetrics)(t);if(!r||!r.byModel)return e;let o=e.map(e=>({modelStr:e,requests:r.byModel[e]?.requests??0}));return o.sort((e,t)=>e.requests-t.requests),o.map(e=>e.modelStr)}(k,a.name),c.info("COMBO",`Least-used ordering: ${k[0]} has fewest requests`)):"cost-optimized"===S&&(k=await _(k),c.info("COMBO",`Cost-optimized ordering: cheapest first (${k[0]})`));let V=null,G=null,Y=null,Q=Date.now(),X=0;for(let r=0;r<k.length;r++){let o=k[r],n=(0,p.parseModel)(o),s=n.provider||n.providerAlias||"unknown",u=(0,t.getProviderProfile)(s),m=`combo:${o}`,f=(0,d.getCircuitBreaker)(m,{failureThreshold:u.circuitBreakerThreshold,resetTimeout:u.circuitBreakerReset});if(!f.canExecute()){c.info("COMBO",`Skipping ${o}: circuit breaker OPEN for ${s}`),r>0&&X++;continue}if(l&&!await l(o)){c.info("COMBO",`Skipping ${o} (all accounts in cooldown)`),r>0&&X++;continue}for(let n=0;n<=H;n++){n>0&&(c.info("COMBO",`Retrying ${o} in ${J}ms (attempt ${n+1}/${H+1})`),await new Promise(e=>setTimeout(e,J))),c.info("COMBO",`Trying model ${r+1}/${k.length}: ${o}${n>0?` (retry ${n})`:""}`);let l=await z(e,o);if(l.ok){let e=Date.now()-Q;return c.info("COMBO",`Model ${o} succeeded (${e}ms, ${X} fallbacks)`),(0,i.recordComboRequest)(a.name,o,{success:!0,latencyMs:e,fallbackCount:X,strategy:S}),l}let u=l.statusText||"",d=null;try{let e=l.clone();try{let t=await e.json();u=t?.error?.message||t?.error||t?.message||u,d=t?.retryAfter||null}catch{try{let e=await l.text();e&&(u=e.substring(0,500))}catch{}}}catch{}if(d&&(!G||new Date(d)<new Date(G))&&(G=d),"string"!=typeof u)try{u=JSON.stringify(u)}catch{u=String(u)}let{shouldFallback:m,cooldownMs:p}=(0,t.checkFallbackError)(l.status,u,0,null,s);if(N.includes(l.status)&&f._onFailure(),!m)return c.warn("COMBO",`Model ${o} failed (no fallback)`,{status:l.status}),l;let g=[408,429,500,502,503,504].includes(l.status);if(!(n<H)||!g){V=u||String(l.status),Y||(Y=l.status),r>0&&X++,c.warn("COMBO",`Model ${o} failed, trying next`,{status:l.status});break}}}let Z=k.every(e=>!(0,d.getCircuitBreaker)(`combo:${e}`).canExecute()),ee=Date.now()-Q;if((0,i.recordComboRequest)(a.name,null,{success:!1,latencyMs:ee,fallbackCount:X,strategy:S}),Z)return c.warn("COMBO","All models have circuit breaker OPEN — aborting"),(0,r.unavailableResponse)(503,"All providers temporarily unavailable (circuit breakers open)");let et=Y||406,er=V||"All combo models unavailable";if(G){let e=(0,t.formatRetryAfter)(G);return c.warn("COMBO",`All models failed | ${er} (${e})`),(0,r.unavailableResponse)(et,er,G,e)}return c.warn("COMBO",`All models failed | ${er}`),new Response(JSON.stringify({error:{message:er}}),{status:et,headers:{"Content-Type":"application/json"}})}async function W({body:e,combo:a,handleSingleModel:m,isModelAvailable:f,log:g,settings:h,allCombos:y}){let b,w=a.models||[],v=h?n(a,h):{...o,...a.config||{}},M=v.concurrencyPerModel??3,k=v.queueTimeoutMs??3e4,x=v.maxRetries??1,$=v.retryDelayMs??2e3,O=(b=y?L(a,y):w.map(e=>q(e).model)).length;if(0===O)return(0,r.unavailableResponse)(406,"Round-robin combo has no models");let C=D.get(a.name)||0;D.set(a.name,C+1);let R=C%O,A=Date.now(),S=null,E=null,P=null,B=0;for(let r=0;r<O;r++){let o,n=b[(R+r)%O],h=(0,p.parseModel)(n),y=h.provider||h.providerAlias||"unknown",w=(0,t.getProviderProfile)(y),v=`combo:${n}`,T=(0,d.getCircuitBreaker)(v,{failureThreshold:w.circuitBreakerThreshold,resetTimeout:w.circuitBreakerReset});if(!T.canExecute()){g.info("COMBO-RR",`Skipping ${n}: circuit breaker OPEN for ${y}`),r>0&&B++;continue}if(f&&!await f(n)){g.info("COMBO-RR",`Skipping ${n} (all accounts in cooldown)`),r>0&&B++;continue}try{o=await function(e,{maxConcurrency:t=3,timeoutMs:r=3e4}={}){let i=s(e,t);return i.running<i.max&&!l(i)?(i.running++,Promise.resolve(u(e))):new Promise((t,o)=>{let n=setTimeout(()=>{let t=i.queue.findIndex(e=>e.timer===n);-1!==t&&i.queue.splice(t,1);let a=Error(`Semaphore timeout after ${r}ms for ${e}`);a.code="SEMAPHORE_TIMEOUT",o(a)},r);i.queue.push({resolve:t,reject:o,timer:n})})}(n,{maxConcurrency:M,timeoutMs:k})}catch(e){if("SEMAPHORE_TIMEOUT"===e.code){g.warn("COMBO-RR",`Semaphore timeout for ${n}, trying next model`),r>0&&B++;continue}throw e}try{for(let o=0;o<=x;o++){o>0&&(g.info("COMBO-RR",`Retrying ${n} in ${$}ms (attempt ${o+1}/${x+1})`),await new Promise(e=>setTimeout(e,$))),g.info("COMBO-RR",`[RR #${C}] → ${n}${r>0?` (fallback +${r})`:""}${o>0?` (retry ${o})`:""}`);let l=await m(e,n);if(l.ok){let e=Date.now()-A;return g.info("COMBO-RR",`${n} succeeded (${e}ms, ${B} fallbacks)`),(0,i.recordComboRequest)(a.name,n,{success:!0,latencyMs:e,fallbackCount:B,strategy:"round-robin"}),l}let u=l.statusText||"",d=null;try{let e=l.clone();try{let t=await e.json();u=t?.error?.message||t?.error||t?.message||u,d=t?.retryAfter||null}catch{try{let e=await l.text();e&&(u=e.substring(0,500))}catch{}}}catch{}if(d&&(!P||new Date(d)<new Date(P))&&(P=d),"string"!=typeof u)try{u=JSON.stringify(u)}catch{u=String(u)}let{shouldFallback:p,cooldownMs:f}=(0,t.checkFallbackError)(l.status,u,0,null,y);if(N.includes(l.status)&&f>0&&(!function(e,t){let r=s(e);r.rateLimitedUntil=Date.now()+t,setTimeout(()=>{r.rateLimitedUntil&&Date.now()>=r.rateLimitedUntil&&(r.rateLimitedUntil=null,c(e))},t+50)}(n,f),T._onFailure(),g.warn("COMBO-RR",`${n} error ${l.status}, cooldown ${f}ms (breaker: ${T.getStatus().failureCount}/${w.circuitBreakerThreshold})`)),!p)return g.warn("COMBO-RR",`${n} failed (no fallback)`,{status:l.status}),l;let h=[408,429,500,502,503,504].includes(l.status);if(!(o<x)||!h){S=u||String(l.status),E||(E=l.status),r>0&&B++,g.warn("COMBO-RR",`${n} failed, trying next model`,{status:l.status});break}}}finally{o()}}let T=Date.now()-A;if((0,i.recordComboRequest)(a.name,null,{success:!1,latencyMs:T,fallbackCount:B,strategy:"round-robin"}),b.every(e=>!(0,d.getCircuitBreaker)(`combo:${e}`).canExecute()))return g.warn("COMBO-RR","All models have circuit breaker OPEN — aborting"),(0,r.unavailableResponse)(503,"All providers temporarily unavailable (circuit breakers open)");let I=E||406,F=S||"All round-robin combo models unavailable";if(P){let e=(0,t.formatRetryAfter)(P);return g.warn("COMBO-RR",`All models failed | ${F} (${e})`),(0,r.unavailableResponse)(I,F,P,e)}return g.warn("COMBO-RR",`All models failed | ${F}`),new Response(JSON.stringify({error:{message:F}}),{status:I,headers:{"Content-Type":"application/json"}})}e.s(["handleComboChat",()=>U,"validateComboDAG",()=>function e(t,r,i=new Set,o=0){if(o>3)throw Error(`Max combo nesting depth (3) exceeded at "${t}"`);if(i.has(t))throw Error(`Circular combo reference detected: ${t}`);i.add(t);let n=Array.isArray(r)?r:r?.combos||[],a=n.find(e=>e.name===t);if(a&&a.models)for(let t of a.models){let r=q(t).model;n.find(e=>e.name===r)&&e(r,n,new Set(i),o+1)}}],928041)}];
1
+ module.exports=[821518,e=>{"use strict";var t=e.i(878947);let r={};for(let[e,o]of Object.entries(t.PROVIDER_ID_TO_ALIAS))r[o]&&console.log(`[MODEL] Warning: alias "${o}" maps to both "${r[o]}" and "${e}". Using "${e}".`),r[o]=e;let o={github:{"claude-4.5-opus":"claude-opus-4-5-20251101","claude-opus-4.5":"claude-opus-4-5-20251101","gemini-3-pro":"gemini-3-pro-preview","gemini-3-flash":"gemini-3-flash-preview","raptor-mini":"oswe-vscode-prime"},gemini:{"gemini-3.1-pro-preview":"gemini-3.1-pro","gemini-3-1-pro":"gemini-3.1-pro"},"gemini-cli":{"gemini-3.1-pro-preview":"gemini-3.1-pro","gemini-3-1-pro":"gemini-3.1-pro"},nvidia:{"gpt-oss-120b":"openai/gpt-oss-120b","nvidia/gpt-oss-120b":"openai/gpt-oss-120b"},antigravity:{}},i=new Map;for(let[e,o]of Object.entries(t.PROVIDER_MODELS)){let t=r[e]||e;for(let e of o||[]){let r=e?.id;if(!r)continue;let o=i.get(r)||[];o.includes(t)||(o.push(t),i.set(r,o))}}function n(e){return r[e]||e}function a(e,t){if(!t||"string"!=typeof t)return t;let r=o[n(e)];return r?.[t]||t}function s(e){if(!e)return{provider:null,model:null,isAlias:!1,providerAlias:null,extendedContext:!1};if(/\.\.[\/\\]/.test(e)||/[\x00-\x1f]/.test(e))return console.log(`[MODEL] Warning: rejected malformed model string: "${e.substring(0,50)}"`),{provider:null,model:null,isAlias:!1,providerAlias:null,extendedContext:!1};let t=!1,r=e;if(r.endsWith("[1m]")&&(t=!0,r=r.slice(0,-4)),r.includes("/")){let e=r.indexOf("/"),o=r.slice(0,e),i=r.slice(e+1);return{provider:n(o),model:i,isAlias:!1,providerAlias:o,extendedContext:t}}return{provider:null,model:r,isAlias:!0,providerAlias:null,extendedContext:t}}async function l(e,r){let o=s(e),{extendedContext:l}=o;if(!o.isAlias){let e=a(o.provider,o.model);return{provider:o.provider,model:e,extendedContext:l}}let c="function"==typeof r?await r():r,u=function(e,t){if(!t)return null;let r=t[e];if(!r)return null;if("string"==typeof r&&r.includes("/")){let e=r.indexOf("/");return{provider:n(r.slice(0,e)),model:r.slice(e+1)}}return"object"==typeof r&&r.provider&&r.model?{provider:n(r.provider),model:r.model}:null}(o.model,c);if(u){let e=a(u.provider,u.model);return{provider:u.provider,model:e,extendedContext:l}}if(c&&"object"==typeof c){let e=Object.entries(c).map(([e,t])=>({pattern:e,target:t})),t=function(e,t){if(!e||!t||!Array.isArray(t))return null;let r=[];for(let o of t){let t=o.pattern||o.alias||o.from,i=o.target||o.model||o.to;t&&i&&function(e,t){if(!e||!t)return!1;if("*"===t||t===e)return!0;let r=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return RegExp(`^${r}$`,"i").test(e)}(e,t)&&r.push({pattern:t,target:i,specificity:function(e){if(!e)return 0;let t=0;for(let r of e.split(/[/*?]/))r.length>0&&(t+=10*r.length);let r=(e.match(/\*/g)||[]).length,o=(e.match(/\?/g)||[]).length;return t-=50*r,t-=5*o,t+=e.length}(t),...o})}return 0===r.length?null:(r.sort((e,t)=>t.specificity-e.specificity),r[0])}(o.model,e);if(t){let e=t.target;if(e.includes("/")){let r=e.indexOf("/"),o=e.slice(0,r),i=e.slice(r+1),s=n(o),c=a(s,i);return{provider:s,model:c,extendedContext:l,wildcardPattern:t.pattern}}}}let d=o.model,m=i.get(d)||[];if(m.includes("openai"))return{provider:"openai",model:d,extendedContext:l};let p=m.filter(e=>"openai"!==e);if(1===p.length){let e=p[0],t=a(e,d);return{provider:e,model:t,extendedContext:l}}if(p.length>1){let e=p.map(e=>t.PROVIDER_ID_TO_ALIAS[e]||e),r=e.slice(0,2).map(e=>`${e}/${d}`),o=`Ambiguous model '${d}'. Use provider/model prefix (ex: ${r.join(" or ")}).`;return console.warn(`[MODEL] ${o} Candidates: ${e.join(", ")}`),{provider:null,model:d,errorType:"ambiguous_model",errorMessage:o,candidateProviders:p,candidateAliases:e}}return/^claude-/i.test(d)?{provider:"antigravity",model:d,extendedContext:l}:/^gemini-/i.test(d)||/^gemma-/i.test(d)?{provider:"gemini",model:d,extendedContext:l}:{provider:"openai",model:d,extendedContext:l}}e.s(["getModelInfoCore",()=>l,"parseModel",()=>s],821518)},928041,e=>{"use strict";var t=e.i(441637),r=e.i(719201),o=e.i(178578);let i={strategy:"priority",maxRetries:1,retryDelayMs:2e3,timeoutMs:12e4,concurrencyPerModel:3,queueTimeoutMs:3e4,healthCheckEnabled:!0,healthCheckTimeoutMs:3e3,maxComboDepth:3,trackMetrics:!0};function n(e,t,r){let o=t?.comboDefaults||{},n=r&&t?.providerOverrides?.[r]||{},a=e?.config||{},s=e=>Object.fromEntries(Object.entries(e).filter(([,e])=>null!=e));return{...i,...s(o),...s(n),...s(a)}}let a=new Map;function s(e,t=3){a.has(e)||a.set(e,{running:0,max:t,queue:[],rateLimitedUntil:null});let r=a.get(e);return r.max=t,r}function l(e){return!!e.rateLimitedUntil&&(!(Date.now()>=e.rateLimitedUntil)||(e.rateLimitedUntil=null,!1))}function c(e){let t=a.get(e);if(t)for(;t.queue.length>0&&t.running<t.max&&!l(t);){let r=t.queue.shift();clearTimeout(r.timer),t.running++,r.resolve(u(e))}}function u(e){let t=!1;return()=>{if(t)return;t=!0;let r=a.get(e);r&&r.running>0&&(r.running--,c(e))}}var d=e.i(260222),m=e.i(73114),p=e.i(821518);let f=/<omniModel>([^<]+)<\/omniModel>/,g=["function","class","import","def","SELECT","async","await","const","let","var","return","```","algorithm","compile","debug","refactor","typescript","python","javascript","code","implement","write a","create a component","endpoint","repository","deploy","install","script","api","database","query","schema","interface","generic","enum","module","package","dependency","função","classe","importar","definir","consulta","assíncrono","aguardar","constante","variável","retornar","algoritmo","compilar","depurar","refatorar","código","implementar","criar um","componente","como fazer","repositório","configurar","instalar","banco de dados","escrever uma função","criar uma classe","función","clase","importar","definir","consulta","asíncrono","esperar","constante","variable","retornar","algoritmo","compilar","depurar","refactorizar","código","implementar","函数","类","导入","定义","查询","异步","等待","常量","变量","返回","算法","编译","调试","代码","関数","クラス","インポート","非同期","定数","変数","コード","アルゴリズム","функция","класс","импорт","запрос","асинхронный","константа","переменная","алгоритм","код","funktion","klasse","importieren","abfrage","asynchron","konstante","variable","algorithmus","code","함수","클래스","가져오기","정의","쿼리","비동기","대기","상수","변수","반환","코드","دالة","فئة","استيراد","استعلام","غير متزامن","ثابت","متغير","كود","خوارزمية"],h=["prove","theorem","derive","step by step","chain of thought","formally","mathematical","proof","logically","analyze","reasoning","deduce","infer","hypothesis","convergence","provar","teorema","derivar","passo a passo","cadeia de pensamento","formalmente","matemático","prova","logicamente","analisar","raciocínio","deduzir","inferir","hipótese","demonstrar","cálculo","equação diferencial","integral","otimização","demostrar","teorema","derivar","paso a paso","formalmente","matemático","lógicamente","证明","定理","推导","逐步","思维链","数学","逻辑","分析","証明","定理","導出","論理的","分析","доказать","теорема","шаг за шагом","математически","логически","beweisen","theorem","schritt für schritt","mathematisch","logisch","증명","정리","단계별","수학적","논리적","إثبات","نظرية","خطوة بخطوة","رياضي","منطقياً"],y=["what is","define","translate","hello","yes or no","summarize","list","tell me","who is","o que é","definir","traduzir","olá","oi","sim ou não","resumir","listar","me diga","quem é","quando foi","onde fica","explique brevemente","de forma simples","qué es","definir","traducir","hola","resumir","listar","什么是","定义","翻译","你好","总结","列出","что такое","определить","перевести","привет","резюмировать","was ist","definieren","übersetzen","hallo","zusammenfassen","이란","정의","번역","안녕","요약","ما هو","تعريف","ترجمة","مرحبا","ملخص"],b={enabled:!0,simpleMaxWords:60},w={quota:.2,health:.25,costInv:.2,latencyInv:.15,taskFit:.1,stability:.05,tierPriority:.05};function v(e,t,r=w,o=()=>.5){return e.map(i=>{var n,a;let s,l,c,u=(s=Math.max(...e.map(e=>e.costPer1MTokens),.001),l=Math.max(...e.map(e=>e.p95LatencyMs),1),c=Math.max(...e.map(e=>e.latencyStdDev),.001),{quota:Math.min(1,i.quotaRemaining/100),health:"CLOSED"===i.circuitBreakerState?1:.5*("HALF_OPEN"===i.circuitBreakerState),costInv:1-i.costPer1MTokens/s,latencyInv:1-i.p95LatencyMs/l,taskFit:o(i.model,t),stability:1-i.latencyStdDev/c,tierPriority:(n=i.accountTier,a=i.quotaResetIntervalSecs,Math.min(1,.8*(({ultra:1,pro:.67,standard:.33,free:0})[n?.toLowerCase()??""]??.33)+.2*(null!=a&&a>0?Math.max(0,1-a/2592e3):0)))});return{provider:i.provider,model:i.model,score:r.quota*u.quota+r.health*u.health+r.costInv*u.costInv+r.latencyInv*u.latencyInv+r.taskFit*u.taskFit+r.stability*u.stability+r.tierPriority*u.tierPriority,factors:u}}).sort((e,t)=>t.score-e.score)}let M={coding:{"claude-sonnet":.95,"claude-opus":.92,"claude-haiku":.78,"gpt-4o":.9,"gpt-4o-mini":.8,"gpt-4-turbo":.88,o1:.93,o3:.95,"o4-mini":.88,codex:.98,"gemini-pro":.85,"gemini-flash":.8,"gemini-2.5-pro":.92,"gemini-2.5-flash":.82,"deepseek-coder":.9,"deepseek-v3":.85,"deepseek-r1":.88,"deepseek-chat":.84,"deepseek-v3.2":.86,qwen:.78,llama:.72,mistral:.75,mixtral:.77,"grok-4-fast":.8,"grok-4":.82,"grok-3":.8,"kimi-k2":.82,"glm-5":.78,"minimax-m2.5":.75,"minimax-m2":.72},review:{"claude-sonnet":.92,"claude-opus":.95,"claude-haiku":.7,"gpt-4o":.88,"gpt-4o-mini":.72,o1:.9,o3:.92,"gemini-pro":.9,"gemini-2.5-pro":.93,"gemini-flash":.75,"deepseek-r1":.85,"deepseek-v3":.8},planning:{"claude-opus":.95,"claude-sonnet":.9,"gpt-4o":.88,o1:.92,o3:.95,"gemini-2.5-pro":.93,"gemini-pro":.88,"deepseek-r1":.85},analysis:{"claude-opus":.95,"claude-sonnet":.92,"gemini-2.5-pro":.95,"gemini-pro":.88,"gemini-3.1-pro":.95,"gpt-4o":.85,o1:.9,o3:.93,"deepseek-r1":.88,"deepseek-chat":.8,"kimi-k2":.82,"glm-5":.78,"minimax-m2.5":.76},debugging:{"claude-sonnet":.93,"claude-opus":.9,"gpt-4o":.88,o1:.85,"deepseek-coder":.9,"deepseek-v3":.82,"gemini-flash":.78,codex:.92},documentation:{"claude-sonnet":.9,"claude-opus":.88,"gpt-4o":.92,"gpt-4o-mini":.85,"gemini-pro":.88,"gemini-flash":.82,"deepseek-v3":.78},default:{"claude-sonnet":.85,"claude-opus":.85,"gpt-4o":.85,"gemini-pro":.8,"gemini-3.1-pro":.85,"deepseek-v3":.75,"deepseek-chat":.74,"gemini-flash":.72,"grok-4-fast":.72,"grok-4":.74,"grok-3":.73,"kimi-k2":.76,"glm-5":.7,"minimax-m2.5":.7}},k=[{pattern:"coder",taskType:"coding",boost:.15},{pattern:"code",taskType:"coding",boost:.1},{pattern:"fast",taskType:"coding",boost:.05},{pattern:"thinking",taskType:"planning",boost:.1},{pattern:"thinking",taskType:"analysis",boost:.1}];function x(e,t){let r=e.toLowerCase(),o=t.toLowerCase();for(let[e,t]of Object.entries(M[o]||M.default))if(r.includes(e))return t;let i=.5;for(let e of k)r.includes(e.pattern)&&o===e.taskType&&(i+=e.boost);return Math.min(1,i)}let $={"ship-fast":{quota:.15,health:.3,costInv:.05,latencyInv:.35,taskFit:.1,stability:0,tierPriority:.05},"cost-saver":{quota:.15,health:.2,costInv:.4,latencyInv:.05,taskFit:.1,stability:.05,tierPriority:.05},"quality-first":{quota:.1,health:.2,costInv:.05,latencyInv:.05,taskFit:.4,stability:.15,tierPriority:.05},"offline-friendly":{quota:.4,health:.3,costInv:.1,latencyInv:.05,taskFit:0,stability:.1,tierPriority:.05}};class O{exclusions=new Map;incidentMode=!1;isExcluded(e){let t=this.exclusions.get(e);return!(!t||Date.now()-t.excludedAt>t.cooldownMs)}evaluate(e,t,r){let o=this.exclusions.get(e);if(o&&t>=.3&&Date.now()-o.excludedAt>o.cooldownMs)return this.exclusions.delete(e),{excluded:!1,reason:`Re-admitted: score ${t.toFixed(2)} >= 0.3`};if(this.isExcluded(e))return"HALF_OPEN"===r&&o?(o.probeCount++,{excluded:!1,isProbe:!0,reason:`Probe request #${o.probeCount}`}):{excluded:!0,reason:o?.reason||"Excluded"};if(t<.2){let r=o?Math.min(2*o.cooldownMs,18e5):3e5;return this.exclusions.set(e,{provider:e,excludedAt:Date.now(),cooldownMs:r,reason:`Score ${t.toFixed(2)} < 0.2`,probeCount:0}),{excluded:!0,reason:`Excluded: score ${t.toFixed(2)} below threshold`}}return"OPEN"===r?(this.exclusions.set(e,{provider:e,excludedAt:Date.now(),cooldownMs:3e5,reason:"Circuit breaker OPEN",probeCount:0}),{excluded:!0,reason:"Circuit breaker OPEN"}):{excluded:!1}}recordProbeResult(e,t){let r=this.exclusions.get(e);r&&(t&&r.probeCount>=3?this.exclusions.delete(e):t||(r.cooldownMs=Math.min(2*r.cooldownMs,18e5),r.excludedAt=Date.now(),r.probeCount=0))}updateIncidentMode(e){let t=e.length;if(0===t)return this.incidentMode=!1,!1;let r=e.filter(e=>"OPEN"===e).length;return this.incidentMode=r/t>.5,this.incidentMode}isInIncidentMode(){return this.incidentMode}getExclusions(){return[...this.exclusions.values()]}getStatus(){let e=Date.now();return{exclusionCount:this.exclusions.size,incidentMode:this.incidentMode,exclusions:[...this.exclusions.values()].map(t=>({provider:t.provider,reason:t.reason,remainingMs:Math.max(0,t.cooldownMs-(e-t.excludedAt))}))}}}let C=null,R=new Map,A=new class{name="rules";description="6-factor weighted scoring: quota, health, cost, latency, taskFit, stability";select(e,t){let r=e.filter(e=>"OPEN"!==e.circuitBreakerState),o=v(r.length>0?r:e,t.taskType,void 0,x),i=o[0];if(!i)throw Error("[RulesStrategy] No candidates to score");return{provider:i.provider,model:i.model,strategy:this.name,reason:`RulesStrategy: score=${i.score.toFixed(3)} (quota=${i.factors.quota.toFixed(2)}, health=${i.factors.health.toFixed(2)}, cost=${i.factors.costInv.toFixed(2)}, taskFit=${i.factors.taskFit.toFixed(2)})`,candidatesConsidered:o.length,finalScore:i.score}}},S=new class{name="cost";description="Always selects cheapest available provider (by costPer1MTokens)";select(e,t){let r=e.filter(e=>"OPEN"!==e.circuitBreakerState),o=r.length>0?r:e,i=[...o].sort((e,t)=>e.costPer1MTokens-t.costPer1MTokens)[0];if(!i)throw Error("[CostStrategy] No candidates available");return{provider:i.provider,model:i.model,strategy:this.name,reason:`CostStrategy: cheapest at $${i.costPer1MTokens.toFixed(3)}/1M tokens`,candidatesConsidered:o.length,finalScore:0===i.costPer1MTokens?1:1/i.costPer1MTokens}}},E=new class{name="latency";description="Prioritizes lowest p95 latency with reliability weighting";select(e,t){let r=e.filter(e=>"OPEN"!==e.circuitBreakerState),o=r.length>0?r:e,i=[...o].sort((e,t)=>{let r=1e3*e.errorRate,o=1e3*t.errorRate;return e.p95LatencyMs+r-(t.p95LatencyMs+o)})[0];if(!i)throw Error("[LatencyStrategy] No candidates available");let n=i.p95LatencyMs>0?Math.max(.001,1e4/i.p95LatencyMs):1,a=Math.max(0,1-i.errorRate);return{provider:i.provider,model:i.model,strategy:this.name,reason:`LatencyStrategy: p95=${i.p95LatencyMs}ms, errorRate=${(100*i.errorRate).toFixed(2)}%`,candidatesConsidered:o.length,finalScore:.7*n+.3*a}}};R.set("rules",A),R.set("cost",S),R.set("eco",S),R.set("latency",E),R.set("fast",E);var P=e.i(878947);let B=["gpt-oss-120b","deepseek-reasoner","glm-4.7","glm4.7"],N=[429,502,503,504],T={"grok-4-fast-non-reasoning":1143,"grok-4-1-fast-non-reasoning":1244,"gemini-2.5-flash":1238,"kimi-k2.5":1646,"gpt-4o-mini":2764,"claude-sonnet-4.6":4e3,"claude-opus-4.6":6e3,"deepseek-chat":2e3},D=new Map;function q(e){return"string"==typeof e?{model:e,weight:0}:{model:e.model,weight:e.weight||0}}function L(e,t,r=new Set,o=0){if(o>3)return e.models.map(e=>q(e).model);if(r.has(e.name))return[];r.add(e.name);let i=Array.isArray(t)?t:t?.combos||[],n=[];for(let t of e.models||[]){let e=q(t).model,a=i.find(t=>t.name===e);if(a){let e=L(a,i,new Set(r),o+1);n.push(...e)}else n.push(e)}return n}function I(e){let t=e.map(e=>q(e)),r=t.reduce((e,t)=>e+t.weight,0);if(r<=0)return t[Math.floor(Math.random()*t.length)].model;let o=Math.random()*r;for(let e of t)if((o-=e.weight)<=0)return e.model;return t[t.length-1].model}function F(e,t){let r=e.map(e=>q(e));return[r.find(e=>e.model===t),...r.filter(e=>e.model!==t).sort((e,t)=>t.weight-e.weight)].filter(Boolean).map(e=>e.model)}async function _(t){try{let{getPricingForModel:r}=await e.A(605589),o=await Promise.all(t.map(async e=>{let t=(0,p.parseModel)(e),o=t.provider||t.providerAlias||"unknown",i=t.model||e;try{let t=await r(o,i);return{modelStr:e,cost:t?.input??1/0}}catch{return{modelStr:e,cost:1/0}}}));return o.sort((e,t)=>e.cost-t.cost),o.map(e=>e.modelStr)}catch{return t}}function j(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?e.trim():"").filter(Boolean):"string"==typeof e?e.split(",").map(e=>e.trim()).filter(Boolean):[]}function z(e){return T[String(e||"").toLowerCase()]??1500}async function K(t,r){let i=(0,o.getComboMetrics)(r),{getPricingForModel:n}=await e.A(605589),a={};try{let{getModelLatencyStats:t}=await e.A(537776);a=await t({windowHours:24,minSamples:3,maxRows:1e4})}catch{}return await Promise.all(t.map(async e=>{let t=(0,p.parseModel)(e),r=t.provider||t.providerAlias||"unknown",o=t.model||e,s=a[`${r}/${o}`]||null,l=Number(s?.totalRequests),c=Number.isFinite(l)&&l>=10,u=1;try{let e=await n(r,o),t=Number(e?.input);Number.isFinite(t)&&t>=0&&(u=t)}catch{}let m=i?.byModel?.[e]||null,f=Number(m?.avgLatencyMs),g=Number(m?.successRate),h=Number(s?.p95LatencyMs),y=Number(s?.latencyStdDev),b=Number(s?.successRate),w=c?Number.isFinite(h)&&h>0?h:z(o):Number.isFinite(f)&&f>0?f:z(o),v=c?Number.isFinite(b)&&b>=0&&b<=1?1-b:.05:Number.isFinite(g)&&g>=0&&g<=100?1-g/100:.05,M=c&&Number.isFinite(y)&&y>0?Math.max(10,y):Math.max(10,.1*w),k=(0,d.getCircuitBreaker)(`combo:${e}`)?.getStatus?.()?.state;return{provider:r,model:o,quotaRemaining:100,quotaTotal:100,circuitBreakerState:"OPEN"===k||"HALF_OPEN"===k?k:"CLOSED",costPer1MTokens:u,p95LatencyMs:w,latencyStdDev:M,errorRate:v,accountTier:"standard",quotaResetIntervalSecs:86400}}))}async function U({body:e,combo:a,handleSingleModel:s,isModelAvailable:l,log:c,settings:u,allCombos:M}){let k,S=a.strategy||"priority",E=a.models||[],{body:T,pinnedModel:D}=function(e,t,r){var o;if(!t)return{body:e,pinnedModel:null};let i=Array.isArray(e.messages)?[...e.messages]:[],n=null;t.context_cache_protection&&(n=function(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if("assistant"===r.role&&"string"==typeof r.content){let e=f.exec(r.content);if(e)return e[1]}}return null}(i)),t.system_message&&t.system_message.trim()&&(o=i,i=[{role:"system",content:t.system_message},...o.filter(e=>"system"!==e.role)]);let a=function(e,t){let r;if(!e||!t)return e;try{r=new RegExp(t)}catch{return console.warn(`[ComboAgent] Invalid tool_filter_regex: "${t}"`),e}return e.filter(e=>{let t=e.function?.name??e.name??"";return r.test(String(t))})}(e.tools,t.tool_filter_regex);return i=i.map(e=>"string"==typeof e.content&&f.test(e.content)?{...e,content:e.content.replace(f,"").trimEnd()}:e),{body:{...e,messages:i,...a!==e.tools&&{tools:a}},pinnedModel:n}}(e,a,0);e=T,D&&c.info("COMBO",`[#401] Context caching: pinned model=${D}`);let z=a.context_cache_protection?async(e,t)=>{let r=await s(e,t);if(r.ok&&!e.stream)try{let e=await r.clone().json(),o=Array.isArray(e?.messages)?e.messages:[];if(o.length>0){let i=function(e,t){let r=e.map(e=>"assistant"===e.role&&"string"==typeof e.content?{...e,content:e.content.replace(f,"").trimEnd()}:e),o=r.map(e=>e.role).lastIndexOf("assistant");if(-1===o)return r;let i=r[o];if("string"!=typeof i.content)return r;let n=[...r];return n[o]={...i,content:`${i.content}
2
+ <omniModel>${t}</omniModel>`},n}(o,t);return new Response(JSON.stringify({...e,messages:i}),{status:r.status,headers:r.headers})}}catch{}return r}:s;if("round-robin"===S)return W({body:e,combo:a,handleSingleModel:z,isModelAvailable:l,log:c,settings:u,allCombos:M});let U=u?n(a,u):{...i,...a.config||{}},H=U.maxRetries??1,J=U.retryDelayMs??2e3;if(M){let e=L(a,M);if("weighted"===S){let e=I(E);k=(k=F(E,e)).flatMap(e=>{let t=(Array.isArray(M)?M:M?.combos||[]).find(t=>t.name===e);return t?L(t,M):[e]}),c.info("COMBO",`Weighted selection with nested resolution: ${k.length} total models`)}else k=e,c.info("COMBO",`${S} with nested resolution: ${k.length} total models`)}else if("weighted"===S){let e=I(E);k=F(E,e),c.info("COMBO",`Weighted selection: ${e} (from ${E.length} models)`)}else k=E.map(e=>q(e).model);if("auto"===S){let t,r=Array.isArray(e?.tools)&&e.tools.length>0,i=[...k];if(r){let e=i.filter(e=>(function(e){let t=(0,p.parseModel)(e),r=t.provider||t.providerAlias||"",o=t.model||e;if(r){let e=function(e,t){let r=P.PROVIDER_ID_TO_ALIAS[e]||e,o=P.PROVIDER_MODELS[r];if(!Array.isArray(o))return null;let i=o.find(e=>e?.id===t);return i&&"boolean"==typeof i.toolCalling?i.toolCalling:null}(r,o);if(null!==e)return e}let i=String(e||"").toLowerCase();return!!i&&!B.some(e=>!!(i===e||i.endsWith(`/${e}`))||i.includes(e))})(e));e.length>0?i=e:c.warn("COMBO","Auto strategy: all candidates filtered by tool-calling policy, falling back to full pool")}let n=function(e){if(!e||"object"!=typeof e)return"";let t=Array.isArray(e.messages)?[...e.messages].reverse().find(e=>e&&"object"==typeof e&&"user"===e.role):null;if(t){var r;return"string"==typeof(r=t.content)?r:Array.isArray(r)?r.map(e=>e&&"object"==typeof e&&"string"==typeof e.text?e.text:"").join("\n"):""}if("string"==typeof e.input)return e.input;if(Array.isArray(e.input)){let t=e.input.map(e=>e&&"object"==typeof e?"string"==typeof e.content?e.content:"string"==typeof e.text?e.text:"":"").filter(Boolean).join("\n");if(t)return t}return"string"==typeof e.prompt?e.prompt:""}(e),s="string"==typeof a?.system_message?a.system_message:void 0,l=function(e,t,r){if(!t.enabled)return"medium";let o=`${r??""} ${e}`.toLowerCase(),i=e.trim().split(/\s+/).length,n=t.simpleMaxWords??60,a=[...g,...t.extraCodeKeywords??[]],s=[...h,...t.extraReasoningKeywords??[]],l=[...y,...t.extraSimpleKeywords??[]];for(let e of a)if(o.includes(e.toLowerCase()))return"code";for(let e of s)if(o.includes(e.toLowerCase()))return"reasoning";if(i<n){for(let e of l)if(o.includes(e.toLowerCase()))return"simple"}return"medium"}(n,(t=a?.autoConfig?.intentConfig||a?.config?.auto?.intentConfig||a?.config?.intentConfig||{},{...b,...t,..."boolean"==typeof u?.intentDetectionEnabled?{enabled:u.intentDetectionEnabled}:{},...Number.isFinite(Number(u?.intentSimpleMaxWords))?{simpleMaxWords:Number(u.intentSimpleMaxWords)}:{},...j(u?.intentExtraCodeKeywords).length>0?{extraCodeKeywords:j(u.intentExtraCodeKeywords)}:{},...j(u?.intentExtraReasoningKeywords).length>0?{extraReasoningKeywords:j(u.intentExtraReasoningKeywords)}:{},...j(u?.intentExtraSimpleKeywords).length>0?{extraSimpleKeywords:j(u.intentExtraSimpleKeywords)}:{}}),s);(0,o.recordComboIntent)(a.name,l);let d=function(e){switch(e){case"code":return"coding";case"reasoning":return"analysis";default:return"default"}}(l),m=a?.autoConfig||a?.config?.auto||a?.config||{},f="string"==typeof m.routingStrategy?m.routingStrategy:"string"==typeof m.strategyName?m.strategyName:"rules",M=Array.isArray(m.candidatePool)?m.candidatePool:[...new Set(i.map(e=>{let t=(0,p.parseModel)(e);return t.provider||t.providerAlias||"unknown"}))],S=m.weights&&"object"==typeof m.weights?m.weights:w,E=Number.isFinite(Number(m.explorationRate))?Number(m.explorationRate):.05,N=Number.isFinite(Number(m.budgetCap))?Number(m.budgetCap):void 0,T="string"==typeof m.modePack?m.modePack:void 0,D=await K(i,a.name);if(D.length>0){let e=null,t=null,o="";if("rules"!==f)try{let i=function(e,t,r="rules"){let o;return(!(o=R.get(r))?(console.warn(`[RouterStrategy] Strategy '${r}' not found, falling back to 'rules'`),A):o).select(e,t)}(D,{taskType:d,requestHasTools:r},f);e=i.provider,t=i.model,o=i.reason}catch(e){c.warn("COMBO",`Auto strategy '${f}' failed (${e?.message||"unknown"}), falling back to rules`)}if(!e||!t){let r=function(e,t,r="default",o){let i,n=(C||(C=new O),C),a=e.weights;if(e.modePack){let t=$[e.modePack];t&&(a=t)}.01>Math.abs(Object.values(a).reduce((e,t)=>e+t,0)-1)||(a=w);let s=[],l=t.filter(t=>(!(e.candidatePool.length>0)||!!e.candidatePool.includes(t.provider))&&(!n.evaluate(t.provider,.5,t.circuitBreakerState).excluded||(s.push(t.provider),!1)));0===l.length&&(l.push(...t),s.length=0);let c=v(l,r,a,x),u=c.filter(e=>!n.evaluate(e.provider,e.score,"CLOSED").excluded||(s.push(e.provider),!1)),d=u.length>0?u:c,m=Math.random()<(n.isInIncidentMode()?0:e.explorationRate)&&d.length>1;if(m){let e=Math.floor(Math.random()*d.length);i=d[e]}else i=d[0];if(e.budgetCap){let r=t.find(e=>e.provider===i.provider);if(r&&r.costPer1MTokens/1e6*1e3>e.budgetCap){let e=d.map(e=>({...e,cost:t.find(t=>t.provider===e.provider)?.costPer1MTokens||0})).sort((e,t)=>e.cost-t.cost)[0];e&&(i=e)}}return{provider:i.provider,model:i.model,score:i.score,isExploration:m,factors:i.factors,excluded:s}}({id:a.id||a.name,name:a.name,type:"auto",candidatePool:M,weights:S,modePack:T,budgetCap:N,explorationRate:E},D,d);e=r.provider,t=r.model,o=`score=${r.score.toFixed(3)}${r.isExploration?" (exploration)":""}`}let n=new Map;for(let e of i){let t=(0,p.parseModel)(e),r=t.provider||t.providerAlias||"unknown",o=t.model||e;n.set(`${r}/${o}`,e)}let s=v(D,d,S).map(e=>n.get(`${e.provider}/${e.model}`)||`${e.provider}/${e.model}`).filter(Boolean),u=n.get(`${e}/${t}`)||`${e}/${t}`;k=[...new Set([u,...s,...i])],c.info("COMBO",`Auto selection: ${u} | intent=${l} task=${d} | strategy=${f} | ${o}`)}else c.warn("COMBO","Auto strategy has no candidates, keeping default ordering")}else if("strict-random"===S){let e=await (0,m.getNextFromDeck)(`combo:${a.name}`,k),t=k.filter(t=>t!==e);k=[e,...t],c.info("COMBO",`Strict-random deck: ${e} selected (${k.length} models)`)}else"random"===S?(k=(0,m.fisherYatesShuffle)([...k]),c.info("COMBO",`Random shuffle: ${k.length} models`)):"least-used"===S?(k=function(e,t){let r=(0,o.getComboMetrics)(t);if(!r||!r.byModel)return e;let i=e.map(e=>({modelStr:e,requests:r.byModel[e]?.requests??0}));return i.sort((e,t)=>e.requests-t.requests),i.map(e=>e.modelStr)}(k,a.name),c.info("COMBO",`Least-used ordering: ${k[0]} has fewest requests`)):"cost-optimized"===S&&(k=await _(k),c.info("COMBO",`Cost-optimized ordering: cheapest first (${k[0]})`));let V=null,G=null,Y=null,Q=Date.now(),X=0;for(let r=0;r<k.length;r++){let i=k[r],n=(0,p.parseModel)(i),s=n.provider||n.providerAlias||"unknown",u=(0,t.getProviderProfile)(s),m=`combo:${i}`,f=(0,d.getCircuitBreaker)(m,{failureThreshold:u.circuitBreakerThreshold,resetTimeout:u.circuitBreakerReset});if(!f.canExecute()){c.info("COMBO",`Skipping ${i}: circuit breaker OPEN for ${s}`),r>0&&X++;continue}if(l&&!await l(i)){c.info("COMBO",`Skipping ${i} (all accounts in cooldown)`),r>0&&X++;continue}for(let n=0;n<=H;n++){n>0&&(c.info("COMBO",`Retrying ${i} in ${J}ms (attempt ${n+1}/${H+1})`),await new Promise(e=>setTimeout(e,J))),c.info("COMBO",`Trying model ${r+1}/${k.length}: ${i}${n>0?` (retry ${n})`:""}`);let l=await z(e,i);if(l.ok){let e=Date.now()-Q;return c.info("COMBO",`Model ${i} succeeded (${e}ms, ${X} fallbacks)`),(0,o.recordComboRequest)(a.name,i,{success:!0,latencyMs:e,fallbackCount:X,strategy:S}),l}let u=l.statusText||"",d=null;try{let e=l.clone();try{let t=await e.json();u=t?.error?.message||t?.error||t?.message||u,d=t?.retryAfter||null}catch{try{let e=await l.text();e&&(u=e.substring(0,500))}catch{}}}catch{}if(d&&(!G||new Date(d)<new Date(G))&&(G=d),"string"!=typeof u)try{u=JSON.stringify(u)}catch{u=String(u)}let{shouldFallback:m,cooldownMs:p}=(0,t.checkFallbackError)(l.status,u,0,null,s);if(N.includes(l.status)&&f._onFailure(),!m)return c.warn("COMBO",`Model ${i} failed (no fallback)`,{status:l.status}),l;let g=[408,429,500,502,503,504].includes(l.status);if(!(n<H)||!g){V=u||String(l.status),Y||(Y=l.status),r>0&&X++,c.warn("COMBO",`Model ${i} failed, trying next`,{status:l.status});break}}}let Z=k.every(e=>!(0,d.getCircuitBreaker)(`combo:${e}`).canExecute()),ee=Date.now()-Q;if((0,o.recordComboRequest)(a.name,null,{success:!1,latencyMs:ee,fallbackCount:X,strategy:S}),Z)return c.warn("COMBO","All models have circuit breaker OPEN — aborting"),(0,r.unavailableResponse)(503,"All providers temporarily unavailable (circuit breakers open)");let et=Y||406,er=V||"All combo models unavailable";if(G){let e=(0,t.formatRetryAfter)(G);return c.warn("COMBO",`All models failed | ${er} (${e})`),(0,r.unavailableResponse)(et,er,G,e)}return c.warn("COMBO",`All models failed | ${er}`),new Response(JSON.stringify({error:{message:er}}),{status:et,headers:{"Content-Type":"application/json"}})}async function W({body:e,combo:a,handleSingleModel:m,isModelAvailable:f,log:g,settings:h,allCombos:y}){let b,w=a.models||[],v=h?n(a,h):{...i,...a.config||{}},M=v.concurrencyPerModel??3,k=v.queueTimeoutMs??3e4,x=v.maxRetries??1,$=v.retryDelayMs??2e3,O=(b=y?L(a,y):w.map(e=>q(e).model)).length;if(0===O)return(0,r.unavailableResponse)(406,"Round-robin combo has no models");let C=D.get(a.name)||0;D.set(a.name,C+1);let R=C%O,A=Date.now(),S=null,E=null,P=null,B=0;for(let r=0;r<O;r++){let i,n=b[(R+r)%O],h=(0,p.parseModel)(n),y=h.provider||h.providerAlias||"unknown",w=(0,t.getProviderProfile)(y),v=`combo:${n}`,T=(0,d.getCircuitBreaker)(v,{failureThreshold:w.circuitBreakerThreshold,resetTimeout:w.circuitBreakerReset});if(!T.canExecute()){g.info("COMBO-RR",`Skipping ${n}: circuit breaker OPEN for ${y}`),r>0&&B++;continue}if(f&&!await f(n)){g.info("COMBO-RR",`Skipping ${n} (all accounts in cooldown)`),r>0&&B++;continue}try{i=await function(e,{maxConcurrency:t=3,timeoutMs:r=3e4}={}){let o=s(e,t);return o.running<o.max&&!l(o)?(o.running++,Promise.resolve(u(e))):new Promise((t,i)=>{let n=setTimeout(()=>{let t=o.queue.findIndex(e=>e.timer===n);-1!==t&&o.queue.splice(t,1);let a=Error(`Semaphore timeout after ${r}ms for ${e}`);a.code="SEMAPHORE_TIMEOUT",i(a)},r);o.queue.push({resolve:t,reject:i,timer:n})})}(n,{maxConcurrency:M,timeoutMs:k})}catch(e){if("SEMAPHORE_TIMEOUT"===e.code){g.warn("COMBO-RR",`Semaphore timeout for ${n}, trying next model`),r>0&&B++;continue}throw e}try{for(let i=0;i<=x;i++){i>0&&(g.info("COMBO-RR",`Retrying ${n} in ${$}ms (attempt ${i+1}/${x+1})`),await new Promise(e=>setTimeout(e,$))),g.info("COMBO-RR",`[RR #${C}] → ${n}${r>0?` (fallback +${r})`:""}${i>0?` (retry ${i})`:""}`);let l=await m(e,n);if(l.ok){let e=Date.now()-A;return g.info("COMBO-RR",`${n} succeeded (${e}ms, ${B} fallbacks)`),(0,o.recordComboRequest)(a.name,n,{success:!0,latencyMs:e,fallbackCount:B,strategy:"round-robin"}),l}let u=l.statusText||"",d=null;try{let e=l.clone();try{let t=await e.json();u=t?.error?.message||t?.error||t?.message||u,d=t?.retryAfter||null}catch{try{let e=await l.text();e&&(u=e.substring(0,500))}catch{}}}catch{}if(d&&(!P||new Date(d)<new Date(P))&&(P=d),"string"!=typeof u)try{u=JSON.stringify(u)}catch{u=String(u)}let{shouldFallback:p,cooldownMs:f}=(0,t.checkFallbackError)(l.status,u,0,null,y);if(N.includes(l.status)&&f>0&&(!function(e,t){let r=s(e);r.rateLimitedUntil=Date.now()+t,setTimeout(()=>{r.rateLimitedUntil&&Date.now()>=r.rateLimitedUntil&&(r.rateLimitedUntil=null,c(e))},t+50)}(n,f),T._onFailure(),g.warn("COMBO-RR",`${n} error ${l.status}, cooldown ${f}ms (breaker: ${T.getStatus().failureCount}/${w.circuitBreakerThreshold})`)),!p)return g.warn("COMBO-RR",`${n} failed (no fallback)`,{status:l.status}),l;let h=[408,429,500,502,503,504].includes(l.status);if(!(i<x)||!h){S=u||String(l.status),E||(E=l.status),r>0&&B++,g.warn("COMBO-RR",`${n} failed, trying next model`,{status:l.status});break}}}finally{i()}}let T=Date.now()-A;if((0,o.recordComboRequest)(a.name,null,{success:!1,latencyMs:T,fallbackCount:B,strategy:"round-robin"}),b.every(e=>!(0,d.getCircuitBreaker)(`combo:${e}`).canExecute()))return g.warn("COMBO-RR","All models have circuit breaker OPEN — aborting"),(0,r.unavailableResponse)(503,"All providers temporarily unavailable (circuit breakers open)");let I=E||406,F=S||"All round-robin combo models unavailable";if(P){let e=(0,t.formatRetryAfter)(P);return g.warn("COMBO-RR",`All models failed | ${F} (${e})`),(0,r.unavailableResponse)(I,F,P,e)}return g.warn("COMBO-RR",`All models failed | ${F}`),new Response(JSON.stringify({error:{message:F}}),{status:I,headers:{"Content-Type":"application/json"}})}e.s(["handleComboChat",()=>U,"validateComboDAG",()=>function e(t,r,o=new Set,i=0){if(i>3)throw Error(`Max combo nesting depth (3) exceeded at "${t}"`);if(o.has(t))throw Error(`Circular combo reference detected: ${t}`);o.add(t);let n=Array.isArray(r)?r:r?.combos||[],a=n.find(e=>e.name===t);if(a&&a.models)for(let t of a.models){let r=q(t).model;n.find(e=>e.name===r)&&e(r,n,new Set(o),i+1)}}],928041)}];
3
3
 
4
4
  //# sourceMappingURL=open-sse_services_826884e1._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[676088,e=>e.a(async(o,t)=>{try{var i=e.i(677850),n=e.i(200392),a=o([i,n]);[i,n]=a.then?(await a)():a;let r=i.z.object({provider:i.z.string().min(1).max(100),apiKey:i.z.string().min(1).max(1e4),name:i.z.string().min(1).max(200),priority:i.z.number().int().min(1).max(100).optional(),globalPriority:i.z.number().int().min(1).max(100).nullable().optional(),defaultModel:i.z.string().max(200).nullable().optional(),testStatus:i.z.string().max(50).optional()}),s=i.z.object({name:i.z.string().min(1,"Name is required").max(200)}),l=i.z.union([i.z.string(),i.z.object({model:i.z.string().min(1),weight:i.z.number().min(0).max(100).default(0)})]),m=i.z.object({maxRetries:i.z.number().int().min(0).max(10).optional(),retryDelayMs:i.z.number().int().min(0).max(6e4).optional(),timeoutMs:i.z.number().int().min(1e3).max(6e5).optional(),healthCheckEnabled:i.z.boolean().optional()}).optional(),d=i.z.enum(["priority","weighted","round-robin","random","least-used","cost-optimized","strict-random","auto"]),c=i.z.object({strategy:d.optional(),maxRetries:i.z.coerce.number().int().min(0).max(10).optional(),retryDelayMs:i.z.coerce.number().int().min(0).max(6e4).optional(),timeoutMs:i.z.coerce.number().int().min(1e3).max(6e5).optional(),concurrencyPerModel:i.z.coerce.number().int().min(1).max(20).optional(),queueTimeoutMs:i.z.coerce.number().int().min(1e3).max(12e4).optional(),healthCheckEnabled:i.z.boolean().optional(),healthCheckTimeoutMs:i.z.coerce.number().int().min(100).max(3e4).optional(),maxComboDepth:i.z.coerce.number().int().min(1).max(10).optional(),trackMetrics:i.z.boolean().optional()}).strict(),z=i.z.object({name:i.z.string().min(1,"Name is required").max(100).regex(/^[a-zA-Z0-9_/.-]+$/,"Name can only contain letters, numbers, -, _, / and ."),models:i.z.array(l).optional().default([]),strategy:d.optional().default("priority"),config:m,allowedProviders:i.z.array(i.z.string().max(200)).optional()}),p=i.z.object({quota:i.z.number().min(0).max(1),health:i.z.number().min(0).max(1),costInv:i.z.number().min(0).max(1),latencyInv:i.z.number().min(0).max(1),taskFit:i.z.number().min(0).max(1),stability:i.z.number().min(0).max(1),tierPriority:i.z.number().min(0).max(1).optional().default(.05)}).optional(),u=i.z.object({id:i.z.string().trim().min(1,"id is required").max(100),name:i.z.string().trim().min(1,"name is required").max(200),candidatePool:i.z.array(i.z.string().min(1)).optional().default([]),weights:p,modePack:i.z.string().max(100).optional(),budgetCap:i.z.number().positive().optional(),explorationRate:i.z.number().min(0).max(1).optional().default(.05)});i.z.object({newPassword:i.z.string().min(1).max(200).optional(),currentPassword:i.z.string().max(200).optional(),theme:i.z.string().max(50).optional(),language:i.z.string().max(10).optional(),requireLogin:i.z.boolean().optional(),enableRequestLogs:i.z.boolean().optional(),enableSocks5Proxy:i.z.boolean().optional(),instanceName:i.z.string().max(100).optional(),corsOrigins:i.z.string().max(500).optional(),logRetentionDays:i.z.number().int().min(1).max(365).optional(),cloudUrl:i.z.string().max(500).optional(),baseUrl:i.z.string().max(500).optional(),setupComplete:i.z.boolean().optional(),requireAuthForModels:i.z.boolean().optional(),blockedProviders:i.z.array(i.z.string().max(100)).optional(),hideHealthCheckLogs:i.z.boolean().optional(),fallbackStrategy:i.z.enum(["fill-first","round-robin","p2c","random","least-used","cost-optimized","strict-random"]).optional(),wildcardAliases:i.z.array(i.z.object({pattern:i.z.string(),target:i.z.string()})).optional(),stickyRoundRobinLimit:i.z.number().int().min(0).max(1e3).optional(),intentDetectionEnabled:i.z.boolean().optional(),intentSimpleMaxWords:i.z.number().int().min(1).max(500).optional(),intentExtraCodeKeywords:i.z.array(i.z.string().max(100)).optional(),intentExtraReasoningKeywords:i.z.array(i.z.string().max(100)).optional(),intentExtraSimpleKeywords:i.z.array(i.z.string().max(100)).optional(),mcpEnabled:i.z.boolean().optional(),a2aEnabled:i.z.boolean().optional()});let b=i.z.object({password:i.z.string().min(1,"Password is required").max(200)}),g=i.z.string().trim().min(1,"Model is required").max(200),h=i.z.string().trim().min(1,"Field is required"),v=i.z.array(i.z.number().int().min(0)).min(1,"input token array must contain at least one item"),y=i.z.union([h,i.z.array(h).min(1,"input must contain at least one item"),v,i.z.array(v).min(1,"input must contain at least one item")]),x=i.z.object({role:i.z.string().trim().min(1,"messages[].role is required"),content:i.z.union([h,i.z.array(i.z.unknown()).min(1),i.z.null()]).optional()}).catchall(i.z.unknown()),f=i.z.object({content:i.z.union([h,i.z.array(i.z.object({type:i.z.string().optional(),text:i.z.string().optional()}).catchall(i.z.unknown())).min(1,"messages[].content must contain at least one item")])}).catchall(i.z.unknown()),j=i.z.object({model:g,input:y,dimensions:i.z.coerce.number().int().positive().optional(),encoding_format:i.z.enum(["float","base64"]).optional()}).catchall(i.z.unknown()),k=i.z.object({model:g,prompt:h}).catchall(i.z.unknown()),S=i.z.object({model:g,input:h}).catchall(i.z.unknown()),I=i.z.object({model:g.optional(),input:i.z.unknown().refine(e=>null!=e&&("string"==typeof e?e.trim().length>0:!Array.isArray(e)||e.length>0),"Input is required")}).catchall(i.z.unknown()),q=i.z.object({model:g,query:h,documents:i.z.array(i.z.unknown()).min(1,"documents must contain at least one item")}).catchall(i.z.unknown()),w=i.z.object({model:g,messages:i.z.array(x).min(1).optional(),input:i.z.union([h,i.z.array(i.z.unknown()).min(1)]).optional(),prompt:h.optional()}).catchall(i.z.unknown()).superRefine((e,o)=>{void 0===e.messages&&void 0===e.input&&void 0===e.prompt&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"messages, input or prompt is required",path:[]})}),C=i.z.object({messages:i.z.array(f).min(1,"messages must contain at least one item")}).catchall(i.z.unknown()),P=i.z.object({apiKeyId:i.z.string().trim().min(1,"apiKeyId is required"),dailyLimitUsd:i.z.coerce.number().positive("dailyLimitUsd must be greater than zero"),monthlyLimitUsd:i.z.coerce.number().positive("monthlyLimitUsd must be greater than zero").optional(),warningThreshold:i.z.coerce.number().min(0).max(1).optional()}),R=i.z.object({action:i.z.enum(["unlock"]),identifier:i.z.string().trim().min(1).optional()}).superRefine((e,o)=>{"unlock"!==e.action||e.identifier||o.addIssue({code:i.z.ZodIssueCode.custom,message:"identifier is required for unlock action",path:["identifier"]})}),M=i.z.object({provider:i.z.string().trim().min(1,"provider is required"),priority:i.z.number().int().min(1).max(100).optional(),enabled:i.z.boolean().optional()}).catchall(i.z.unknown()),_=i.z.object({model:g,chain:i.z.array(M).min(1,"chain must contain at least one provider")}),A=i.z.object({model:g}),Z=i.z.object({model:g,alias:i.z.string().trim().min(1,"Alias is required").max(200)}),T=i.z.object({provider:i.z.string().trim().min(1,"provider is required").max(120),model:g}),N=i.z.object({provider:i.z.string().trim().min(1,"provider is required").max(120),modelId:i.z.string().trim().min(1,"modelId is required").max(240),modelName:i.z.string().trim().max(240).optional(),source:i.z.string().trim().max(80).optional(),apiFormat:i.z.enum(["chat-completions","responses"]).default("chat-completions"),supportedEndpoints:i.z.array(i.z.enum(["chat","embeddings","images","audio"])).default(["chat"])}),L=i.z.object({input:i.z.number().min(0).optional(),output:i.z.number().min(0).optional(),cached:i.z.number().min(0).optional(),reasoning:i.z.number().min(0).optional(),cache_creation:i.z.number().min(0).optional()}).strict(),U=i.z.record(i.z.string().trim().min(1),i.z.record(i.z.string().trim().min(1),L)),E=i.z.object({connectionId:i.z.string().trim().min(1,"connectionId is required"),enabled:i.z.boolean()}),B=i.z.object({transientCooldown:i.z.number().min(0),rateLimitCooldown:i.z.number().min(0),maxBackoffLevel:i.z.number().int().min(0),circuitBreakerThreshold:i.z.number().int().min(0),circuitBreakerReset:i.z.number().min(0)}),K=i.z.object({requestsPerMinute:i.z.number().int().min(1).optional(),minTimeBetweenRequests:i.z.number().int().min(1).optional(),concurrentRequests:i.z.number().int().min(1).optional()}).strict(),D=i.z.object({profiles:i.z.object({oauth:B.optional(),apikey:B.optional()}).strict().optional(),defaults:K.optional()}).superRefine((e,o)=>{e.profiles||e.defaults||o.addIssue({code:i.z.ZodIssueCode.custom,message:"Must provide profiles or defaults",path:[]})}),O=i.z.record(i.z.string(),i.z.unknown()),F=i.z.object({action:i.z.literal("reset-stats")}),W=i.z.enum(["litellm"]),H=i.z.object({sources:i.z.array(W).min(1).optional(),dryRun:i.z.boolean().optional()}).strict(),$=i.z.object({coding:i.z.string().max(200).optional(),creative:i.z.string().max(200).optional(),analysis:i.z.string().max(200).optional(),vision:i.z.string().max(200).optional(),summarization:i.z.string().max(200).optional(),background:i.z.string().max(200).optional(),chat:i.z.string().max(200).optional()}).strict(),V=i.z.object({enabled:i.z.boolean().optional(),taskModelMap:$.optional(),detectionEnabled:i.z.boolean().optional()}).strict().superRefine((e,o)=>{void 0===e.enabled&&void 0===e.taskModelMap&&void 0===e.detectionEnabled&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),G=i.z.discriminatedUnion("action",[F,i.z.object({action:i.z.literal("detect"),body:O.optional()}).strict()]),Q=i.z.object({comboDefaults:c.optional(),providerOverrides:i.z.record(i.z.string().trim().min(1),c).optional()}).superRefine((e,o)=>{e.comboDefaults||e.providerOverrides||o.addIssue({code:i.z.ZodIssueCode.custom,message:"Nothing to update",path:[]})}),J=i.z.object({requireLogin:i.z.boolean().optional(),password:i.z.string().min(4,"Password must be at least 4 characters").optional()}).superRefine((e,o)=>{void 0!==e.requireLogin||e.password||o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),X=i.z.object({prompt:i.z.string().max(5e4).optional(),enabled:i.z.boolean().optional()}).strict().superRefine((e,o)=>{void 0===e.prompt&&void 0===e.enabled&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),Y=i.z.object({mode:i.z.enum(["passthrough","auto","custom","adaptive"]).optional(),customBudget:i.z.coerce.number().int().min(0).max(131072).optional(),effortLevel:i.z.enum(["none","low","medium","high"]).optional(),baseBudget:i.z.coerce.number().int().min(0).max(131072).optional(),complexityMultiplier:i.z.coerce.number().min(0).optional()}).strict().superRefine((e,o)=>{void 0===e.mode&&void 0===e.customBudget&&void 0===e.effortLevel&&void 0===e.baseBudget&&void 0===e.complexityMultiplier&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),ee=i.z.object({enabled:i.z.boolean()}).strict(),eo=i.z.enum(["blacklist","whitelist"]),et=i.z.object({ip:i.z.string().trim().min(1),durationMs:i.z.coerce.number().int().min(1).optional(),reason:i.z.string().max(200).optional()}),ei=i.z.object({enabled:i.z.boolean().optional(),mode:eo.optional(),blacklist:i.z.array(i.z.string()).optional(),whitelist:i.z.array(i.z.string()).optional(),addBlacklist:i.z.string().optional(),removeBlacklist:i.z.string().optional(),addWhitelist:i.z.string().optional(),removeWhitelist:i.z.string().optional(),tempBan:et.optional(),removeBan:i.z.string().optional()}).strict().superRefine((e,o)=>{0===Object.keys(e).length&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),en=i.z.object({aliases:i.z.record(i.z.string().trim().min(1),i.z.string().trim().min(1))}),ea=i.z.object({from:i.z.string().trim().min(1),to:i.z.string().trim().min(1)}),er=i.z.object({from:i.z.string().trim().min(1)}),es=i.z.object({type:i.z.preprocess(e=>"string"==typeof e?e.trim().toLowerCase():e,i.z.enum(["http","https","socks5"])).optional(),host:i.z.string().trim().min(1).optional(),port:i.z.coerce.number().int().min(1).max(65535).optional(),username:i.z.string().optional(),password:i.z.string().optional()}).strict(),el=i.z.object({proxy:es.nullable().optional(),global:es.nullable().optional(),providers:i.z.record(i.z.string().trim().min(1),es.nullable()).optional(),combos:i.z.record(i.z.string().trim().min(1),es.nullable()).optional(),keys:i.z.record(i.z.string().trim().min(1),es.nullable()).optional(),level:i.z.enum(["global","provider","combo","key"]).optional(),id:i.z.string().optional()}).strict().superRefine((e,o)=>{void 0===e.proxy&&void 0===e.global&&void 0===e.providers&&void 0===e.combos&&void 0===e.keys&&void 0===e.level&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]}),void 0!==e.level&&void 0===e.proxy&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"proxy is required when level is provided",path:["proxy"]}),e.level&&"global"!==e.level&&!e.id?.trim()&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"id is required for provider/combo/key level updates",path:["id"]})}),em=i.z.object({proxy:i.z.object({type:i.z.string().optional(),host:i.z.string().trim().min(1,"proxy.host is required"),port:i.z.union([i.z.string(),i.z.number()]),username:i.z.string().optional(),password:i.z.string().optional()})}),ed=i.z.object({name:i.z.string().trim().min(1,"name is required").max(120),type:i.z.preprocess(e=>"string"==typeof e?e.trim().toLowerCase():e,i.z.enum(["http","https","socks5"])).optional().default("http"),host:i.z.string().trim().min(1,"host is required").max(255),port:i.z.coerce.number().int().min(1).max(65535),username:i.z.string().optional(),password:i.z.string().optional(),region:i.z.string().trim().max(64).nullable().optional(),notes:i.z.string().trim().max(1e3).nullable().optional(),status:i.z.enum(["active","inactive"]).optional().default("active")}).strict(),ec=ed.partial().extend({id:i.z.string().trim().min(1,"id is required")}),ez=i.z.object({scope:i.z.enum(["global","provider","account","combo","key"]),scopeId:i.z.string().trim().nullable().optional(),proxyId:i.z.string().trim().nullable().optional()}).strict().superRefine((e,o)=>{"global"===e.scope||e.scopeId?.trim()||o.addIssue({code:i.z.ZodIssueCode.custom,message:"scopeId is required for provider/account/combo/key scope",path:["scopeId"]})}),ep=i.z.object({scope:i.z.enum(["global","provider","account","combo","key"]),scopeIds:i.z.array(i.z.string().trim().min(1)).optional().default([]),proxyId:i.z.string().trim().nullable().optional()}).strict().superRefine((e,o)=>{"global"===e.scope||Array.isArray(e.scopeIds)&&0!==e.scopeIds.length||o.addIssue({code:i.z.ZodIssueCode.custom,message:"scopeIds is required for provider/account/combo/key scope",path:["scopeIds"]})}),eu=i.z.record(i.z.string(),i.z.unknown()).refine(e=>Object.keys(e).length>0,"Body must be a non-empty object"),eb=i.z.enum(["1_req_client.json","2_req_source.json","3_req_openai.json","4_req_target.json","5_res_provider.txt"]),eg=i.z.object({body:eu}),eh=i.z.object({file:eb,content:i.z.string().min(1,"Content is required").max(1e6,"Content is too large")}),ev=i.z.object({provider:i.z.string().trim().min(1,"Provider is required"),body:eu}),ey=i.z.object({step:i.z.union([i.z.number().int().min(1).max(4),i.z.literal("direct")]),provider:i.z.string().trim().min(1).optional(),body:eu,sourceFormat:i.z.string().optional(),targetFormat:i.z.string().optional()}).superRefine((e,o)=>{"direct"===e.step||e.provider||o.addIssue({code:i.z.ZodIssueCode.custom,message:"Step and provider are required",path:["provider"]})}),ex=i.z.object({code:i.z.string().trim().min(1),redirectUri:i.z.string().trim().min(1),codeVerifier:i.z.string().trim().min(1),state:i.z.string().optional()}),ef=i.z.object({deviceCode:i.z.string().trim().min(1),codeVerifier:i.z.string().optional(),extraData:i.z.unknown().optional()}),ej=i.z.object({accessToken:i.z.string().trim().min(1,"Access token is required"),machineId:i.z.string().trim().min(1,"Machine ID is required")}),ek=i.z.object({refreshToken:i.z.string().trim().min(1,"Refresh token is required")}),eS=i.z.object({code:i.z.string().trim().min(1,"Code is required"),codeVerifier:i.z.string().trim().min(1,"Code verifier is required"),provider:i.z.enum(["google","github"])}),eI=i.z.object({provider:i.z.string().trim().min(1,"Provider is required"),credentials:i.z.object({accessToken:i.z.string().optional(),refreshToken:i.z.string().optional(),expiresIn:i.z.coerce.number().positive().optional()}).strict().superRefine((e,o)=>{void 0===e.accessToken&&void 0===e.refreshToken&&void 0===e.expiresIn&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"At least one credential field must be provided",path:[]})})}),eq=i.z.object({alias:i.z.string().trim().min(1,"Missing alias")}),ew=i.z.object({model:i.z.string().trim().min(1,"Model and alias required"),alias:i.z.string().trim().min(1,"Model and alias required")}),eC=i.z.object({action:i.z.enum(["enable","sync","disable"])}),eP=i.z.object({name:i.z.string().min(1,"Name is required").max(100).regex(/^[a-zA-Z0-9_/.-]+$/,"Name can only contain letters, numbers, -, _, / and .").optional(),models:i.z.array(l).optional(),strategy:d.optional(),config:c.optional(),isActive:i.z.boolean().optional(),allowedProviders:i.z.array(i.z.string().max(200)).optional()}).superRefine((e,o)=>{void 0===e.name&&void 0===e.models&&void 0===e.strategy&&void 0===e.config&&void 0===e.isActive&&void 0===e.allowedProviders&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),eR=i.z.object({comboName:i.z.string().trim().min(1,"comboName is required")}),eM=i.z.object({backupId:i.z.string().trim().min(1,"backupId is required")}),e_=i.z.object({suiteId:i.z.string().trim().min(1,"suiteId is required"),outputs:i.z.record(i.z.string(),i.z.string())}),eA=i.z.object({enabled:i.z.boolean(),from:i.z.string().regex(/^\d{2}:\d{2}$/,"Time must be in HH:MM format"),until:i.z.string().regex(/^\d{2}:\d{2}$/,"Time must be in HH:MM format"),days:i.z.array(i.z.number().int().min(0).max(6)).min(1,"At least one day is required").max(7),tz:i.z.string().min(1).max(100)}),eZ=i.z.object({name:i.z.string().trim().min(1).max(200).optional(),allowedModels:i.z.array(i.z.string().trim().min(1)).max(1e3).optional(),allowedConnections:i.z.array(i.z.string().uuid()).max(100).optional(),noLog:i.z.boolean().optional(),autoResolve:i.z.boolean().optional(),isActive:i.z.boolean().optional(),accessSchedule:i.z.union([eA,i.z.null()]).optional()}).superRefine((e,o)=>{void 0===e.name&&void 0===e.allowedModels&&void 0===e.allowedConnections&&void 0===e.noLog&&void 0===e.autoResolve&&void 0===e.isActive&&void 0===e.accessSchedule&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),eT=i.z.object({name:i.z.string().trim().min(1,"Name is required"),prefix:i.z.string().trim().min(1,"Prefix is required"),apiType:i.z.enum(["chat","responses"]).optional(),baseUrl:i.z.string().trim().min(1).optional(),type:i.z.enum(["openai-compatible","anthropic-compatible"]).optional(),chatPath:i.z.string().trim().startsWith("/").max(500).optional().or(i.z.literal("")),modelsPath:i.z.string().trim().startsWith("/").max(500).optional().or(i.z.literal(""))}).superRefine((e,o)=>{let t=e.type||"openai-compatible";"openai-compatible"!==t||e.apiType||o.addIssue({code:i.z.ZodIssueCode.custom,message:"Invalid OpenAI compatible API type",path:["apiType"]})}),eN=i.z.object({name:i.z.string().trim().min(1,"Name is required"),prefix:i.z.string().trim().min(1,"Prefix is required"),apiType:i.z.enum(["chat","responses"]).optional(),baseUrl:i.z.string().trim().min(1,"Base URL is required"),chatPath:i.z.string().trim().startsWith("/").max(500).optional().or(i.z.literal("")),modelsPath:i.z.string().trim().startsWith("/").max(500).optional().or(i.z.literal(""))}),eL=i.z.object({baseUrl:i.z.string().trim().min(1,"Base URL and API key required"),apiKey:i.z.string().trim().min(1,"Base URL and API key required"),type:i.z.enum(["openai-compatible","anthropic-compatible"]).optional(),modelsPath:i.z.string().trim().startsWith("/").max(500).optional().or(i.z.literal(""))}),eU=i.z.object({name:i.z.string().max(200).optional(),priority:i.z.coerce.number().int().min(1).max(100).optional(),globalPriority:i.z.union([i.z.coerce.number().int().min(1).max(100),i.z.null()]).optional(),defaultModel:i.z.union([i.z.string().max(200),i.z.null()]).optional(),isActive:i.z.boolean().optional(),apiKey:i.z.string().max(1e4).optional(),testStatus:i.z.string().max(50).optional(),lastError:i.z.union([i.z.string(),i.z.null()]).optional(),lastErrorAt:i.z.union([i.z.string(),i.z.null()]).optional(),lastErrorType:i.z.union([i.z.string(),i.z.null()]).optional(),lastErrorSource:i.z.union([i.z.string(),i.z.null()]).optional(),errorCode:i.z.union([i.z.string(),i.z.null()]).optional(),rateLimitedUntil:i.z.union([i.z.string(),i.z.null()]).optional(),lastTested:i.z.union([i.z.string(),i.z.null()]).optional(),healthCheckInterval:i.z.coerce.number().int().min(0).optional(),group:i.z.union([i.z.string().max(100),i.z.null()]).optional(),providerSpecificData:i.z.record(i.z.string(),i.z.unknown()).optional()}).superRefine((e,o)=>{0===Object.keys(e).length&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),eE=i.z.object({mode:i.z.enum(["provider","oauth","free","apikey","compatible","all"]),providerId:i.z.string().trim().min(1).nullable().optional()}).superRefine((e,o)=>{let t=e.providerId??null;"provider"!==e.mode||t||o.addIssue({code:i.z.ZodIssueCode.custom,message:"providerId is required when mode=provider",path:["providerId"]})}),eB=i.z.object({provider:i.z.string().trim().min(1,"Provider and API key required"),apiKey:i.z.string().trim().min(1,"Provider and API key required")}),eK=i.z.object({text:i.z.string().optional()}).catchall(i.z.unknown()),eD=i.z.object({role:i.z.string().optional(),parts:i.z.array(eK).optional()}).catchall(i.z.unknown()),eO=i.z.object({contents:i.z.array(eD).optional(),systemInstruction:i.z.object({parts:i.z.array(eK).optional()}).catchall(i.z.unknown()).optional(),generationConfig:i.z.object({stream:i.z.boolean().optional(),maxOutputTokens:i.z.coerce.number().int().min(1).optional(),temperature:i.z.coerce.number().optional(),topP:i.z.coerce.number().optional()}).catchall(i.z.unknown()).optional()}).catchall(i.z.unknown()).superRefine((e,o)=>{e.contents||e.systemInstruction||o.addIssue({code:i.z.ZodIssueCode.custom,message:"contents or systemInstruction is required",path:[]})}),eF=i.z.object({apiKey:i.z.string().trim().min(1,"Missing apiKey"),sudoPassword:i.z.string().optional()}),eW=i.z.object({sudoPassword:i.z.string().optional()}),eH=i.z.object({tool:i.z.string().trim().min(1,"tool and mappings required"),mappings:i.z.record(i.z.string(),i.z.string().optional())}),e$=i.z.object({tool:i.z.string().trim().min(1).optional(),toolId:i.z.string().trim().min(1).optional(),backupId:i.z.string().trim().min(1,"tool and backupId are required")}).superRefine((e,o)=>{e.tool||e.toolId||o.addIssue({code:i.z.ZodIssueCode.custom,message:"tool and backupId are required",path:["tool"]})}),eV=i.z.string().trim().min(1,"Environment key is required").max(120).regex(/^[A-Z_][A-Z0-9_]*$/,"Invalid environment key format"),eG=i.z.union([i.z.string(),i.z.number(),i.z.boolean()]).transform(e=>String(e)).refine(e=>e.length>0,"Environment value is required").refine(e=>e.length<=1e4,"Environment value is too long"),eQ=i.z.object({env:i.z.record(eV,eG).refine(e=>Object.keys(e).length>0,"env must contain at least one key")}),eJ=i.z.object({baseUrl:i.z.string().trim().min(1,"baseUrl and model are required"),apiKey:i.z.string().optional(),model:i.z.string().trim().min(1,"baseUrl and model are required")}),eX=i.z.object({name:i.z.string().trim().min(1,"Profile name is required")}),eY=i.z.object({profileId:i.z.string().trim().min(1,"profileId is required")}),e0=i.z.object({baseUrl:i.z.string().trim().min(1).optional(),apiKey:i.z.string().optional(),model:i.z.string().trim().min(1,"Model is required")}),e1=i.z.object({query:i.z.string().trim().min(1,"Query is required").max(500,"Query must be 500 characters or fewer"),provider:i.z.enum(["serper-search","brave-search","perplexity-search","exa-search","tavily-search"]).optional(),max_results:i.z.coerce.number().int().min(1).max(100).default(5),search_type:i.z.enum(["web","news"]).default("web"),offset:i.z.coerce.number().int().min(0).default(0),country:i.z.string().max(2).toUpperCase().optional(),language:i.z.string().min(2).max(5).optional(),time_range:i.z.enum(["any","day","week","month","year"]).optional(),content:i.z.object({snippet:i.z.boolean().default(!0),full_page:i.z.boolean().default(!1),format:i.z.enum(["text","markdown"]).default("text"),max_characters:i.z.coerce.number().int().min(100).max(1e5).optional()}).optional(),filters:i.z.object({include_domains:i.z.array(i.z.string().max(253)).max(20).optional(),exclude_domains:i.z.array(i.z.string().max(253)).max(20).optional(),safe_search:i.z.enum(["off","moderate","strict"]).optional()}).optional(),synthesis:i.z.object({strategy:i.z.enum(["none","auto","provider","internal"]).default("none"),model:i.z.string().optional(),max_tokens:i.z.coerce.number().int().min(1).max(4e3).optional()}).optional(),provider_options:i.z.record(i.z.string(),i.z.unknown()).optional(),strict_filters:i.z.boolean().default(!1)}).catchall(i.z.unknown()),e2=i.z.object({title:i.z.string(),url:i.z.string(),display_url:i.z.string().optional(),snippet:i.z.string(),position:i.z.number().int().positive(),score:i.z.number().min(0).max(1).nullable().optional(),published_at:i.z.string().nullable().optional(),favicon_url:i.z.string().nullable().optional(),content:i.z.object({format:i.z.enum(["text","markdown"]).optional(),text:i.z.string().optional(),length:i.z.number().int().optional()}).nullable().optional(),metadata:i.z.object({author:i.z.string().nullable().optional(),language:i.z.string().nullable().optional(),source_type:i.z.enum(["article","blog","forum","video","academic","news","other"]).nullable().optional(),image_url:i.z.string().nullable().optional()}).nullable().optional(),citation:i.z.object({provider:i.z.string(),retrieved_at:i.z.string(),rank:i.z.number().int().positive()}),provider_raw:i.z.record(i.z.string(),i.z.unknown()).nullable().optional()});i.z.object({id:i.z.string(),provider:i.z.string(),query:i.z.string(),results:i.z.array(e2),cached:i.z.boolean(),answer:i.z.object({source:i.z.enum(["none","provider","internal"]).optional(),text:i.z.string().nullable().optional(),model:i.z.string().nullable().optional()}).nullable().optional(),usage:i.z.object({queries_used:i.z.number().int().min(0),search_cost_usd:i.z.number().min(0),llm_tokens:i.z.number().int().min(0).optional()}),metrics:i.z.object({response_time_ms:i.z.number().int().min(0),upstream_latency_ms:i.z.number().int().min(0).optional(),gateway_latency_ms:i.z.number().int().min(0).optional(),total_results_available:i.z.number().int().nullable()}),errors:i.z.array(i.z.object({provider:i.z.string(),code:i.z.string(),message:i.z.string()})).optional()}),e.s(["addModelAliasSchema",0,ea,"bulkProxyAssignmentSchema",0,ep,"clearModelAvailabilitySchema",0,T,"cliBackupMutationSchema",0,e$,"cliMitmAliasUpdateSchema",0,eH,"cliMitmStartSchema",0,eF,"cliMitmStopSchema",0,eW,"cliModelConfigSchema",0,eJ,"cliSettingsEnvSchema",0,eQ,"cloudCredentialUpdateSchema",0,eI,"cloudModelAliasUpdateSchema",0,ew,"cloudResolveAliasSchema",0,eq,"cloudSyncActionSchema",0,eC,"codexProfileIdSchema",0,eY,"codexProfileNameSchema",0,eX,"createAutoComboSchema",0,u,"createComboSchema",0,z,"createKeySchema",0,s,"createProviderNodeSchema",0,eT,"createProviderSchema",0,r,"createProxyRegistrySchema",0,ed,"cursorImportSchema",0,ej,"dbBackupRestoreSchema",0,eM,"evalRunSuiteSchema",0,e_,"guideSettingsSaveSchema",0,e0,"jsonObjectSchema",0,O,"kiroImportSchema",0,ek,"kiroSocialExchangeSchema",0,eS,"loginSchema",0,b,"oauthExchangeSchema",0,ex,"oauthPollSchema",0,ef,"policyActionSchema",0,R,"pricingSyncRequestSchema",0,H,"providerChatCompletionSchema",0,w,"providerModelMutationSchema",0,N,"providerNodeValidateSchema",0,eL,"providersBatchTestSchema",0,eE,"proxyAssignmentSchema",0,ez,"registerFallbackSchema",0,_,"removeFallbackSchema",0,A,"removeModelAliasSchema",0,er,"resetStatsActionSchema",0,F,"setBudgetSchema",0,P,"taskRoutingActionSchema",0,G,"testComboSchema",0,eR,"testProxySchema",0,em,"toggleRateLimitSchema",0,E,"translatorDetectSchema",0,eg,"translatorSaveSchema",0,eh,"translatorSendSchema",0,ev,"translatorTranslateSchema",0,ey,"updateCodexServiceTierSchema",0,ee,"updateComboDefaultsSchema",0,Q,"updateComboSchema",0,eP,"updateIpFilterSchema",0,ei,"updateKeyPermissionsSchema",0,eZ,"updateModelAliasSchema",0,Z,"updateModelAliasesSchema",0,en,"updatePricingSchema",0,U,"updateProviderConnectionSchema",0,eU,"updateProviderNodeSchema",0,eN,"updateProxyConfigSchema",0,el,"updateProxyRegistrySchema",0,ec,"updateRequireLoginSchema",0,J,"updateResilienceSchema",0,D,"updateSystemPromptSchema",0,X,"updateTaskRoutingSchema",0,V,"updateThinkingBudgetSchema",0,Y,"v1AudioSpeechSchema",0,S,"v1CountTokensSchema",0,C,"v1EmbeddingsSchema",0,j,"v1ImageGenerationSchema",0,k,"v1ModerationSchema",0,I,"v1RerankSchema",0,q,"v1SearchSchema",0,e1,"v1betaGeminiGenerateSchema",0,eO,"validateProviderApiKeySchema",0,eB]),t()}catch(e){t(e)}},!1)];
1
+ module.exports=[676088,e=>e.a(async(o,t)=>{try{var i=e.i(677850),n=e.i(200392),a=o([i,n]);[i,n]=a.then?(await a)():a;let r=i.z.object({provider:i.z.string().min(1).max(100),apiKey:i.z.string().min(1).max(1e4),name:i.z.string().min(1).max(200),priority:i.z.number().int().min(1).max(100).optional(),globalPriority:i.z.number().int().min(1).max(100).nullable().optional(),defaultModel:i.z.string().max(200).nullable().optional(),testStatus:i.z.string().max(50).optional()}),s=i.z.object({name:i.z.string().min(1,"Name is required").max(200)}),l=i.z.union([i.z.string(),i.z.object({model:i.z.string().min(1),weight:i.z.number().min(0).max(100).default(0)})]),m=i.z.object({maxRetries:i.z.number().int().min(0).max(10).optional(),retryDelayMs:i.z.number().int().min(0).max(6e4).optional(),timeoutMs:i.z.number().int().min(1e3).max(6e5).optional(),healthCheckEnabled:i.z.boolean().optional()}).optional(),d=i.z.enum(["priority","weighted","round-robin","random","least-used","cost-optimized","strict-random","auto"]),c=i.z.object({strategy:d.optional(),maxRetries:i.z.coerce.number().int().min(0).max(10).optional(),retryDelayMs:i.z.coerce.number().int().min(0).max(6e4).optional(),timeoutMs:i.z.coerce.number().int().min(1e3).max(6e5).optional(),concurrencyPerModel:i.z.coerce.number().int().min(1).max(20).optional(),queueTimeoutMs:i.z.coerce.number().int().min(1e3).max(12e4).optional(),healthCheckEnabled:i.z.boolean().optional(),healthCheckTimeoutMs:i.z.coerce.number().int().min(100).max(3e4).optional(),maxComboDepth:i.z.coerce.number().int().min(1).max(10).optional(),trackMetrics:i.z.boolean().optional()}).strict(),z=i.z.object({name:i.z.string().min(1,"Name is required").max(100).regex(/^[a-zA-Z0-9_/.-]+$/,"Name can only contain letters, numbers, -, _, / and ."),models:i.z.array(l).optional().default([]),strategy:d.optional().default("priority"),config:m,allowedProviders:i.z.array(i.z.string().max(200)).optional(),system_message:i.z.string().max(5e4).optional(),tool_filter_regex:i.z.string().max(1e3).optional(),context_cache_protection:i.z.boolean().optional()}),p=i.z.object({quota:i.z.number().min(0).max(1),health:i.z.number().min(0).max(1),costInv:i.z.number().min(0).max(1),latencyInv:i.z.number().min(0).max(1),taskFit:i.z.number().min(0).max(1),stability:i.z.number().min(0).max(1),tierPriority:i.z.number().min(0).max(1).optional().default(.05)}).optional(),u=i.z.object({id:i.z.string().trim().min(1,"id is required").max(100),name:i.z.string().trim().min(1,"name is required").max(200),candidatePool:i.z.array(i.z.string().min(1)).optional().default([]),weights:p,modePack:i.z.string().max(100).optional(),budgetCap:i.z.number().positive().optional(),explorationRate:i.z.number().min(0).max(1).optional().default(.05)});i.z.object({newPassword:i.z.string().min(1).max(200).optional(),currentPassword:i.z.string().max(200).optional(),theme:i.z.string().max(50).optional(),language:i.z.string().max(10).optional(),requireLogin:i.z.boolean().optional(),enableRequestLogs:i.z.boolean().optional(),enableSocks5Proxy:i.z.boolean().optional(),instanceName:i.z.string().max(100).optional(),corsOrigins:i.z.string().max(500).optional(),logRetentionDays:i.z.number().int().min(1).max(365).optional(),cloudUrl:i.z.string().max(500).optional(),baseUrl:i.z.string().max(500).optional(),setupComplete:i.z.boolean().optional(),requireAuthForModels:i.z.boolean().optional(),blockedProviders:i.z.array(i.z.string().max(100)).optional(),hideHealthCheckLogs:i.z.boolean().optional(),fallbackStrategy:i.z.enum(["fill-first","round-robin","p2c","random","least-used","cost-optimized","strict-random"]).optional(),wildcardAliases:i.z.array(i.z.object({pattern:i.z.string(),target:i.z.string()})).optional(),stickyRoundRobinLimit:i.z.number().int().min(0).max(1e3).optional(),intentDetectionEnabled:i.z.boolean().optional(),intentSimpleMaxWords:i.z.number().int().min(1).max(500).optional(),intentExtraCodeKeywords:i.z.array(i.z.string().max(100)).optional(),intentExtraReasoningKeywords:i.z.array(i.z.string().max(100)).optional(),intentExtraSimpleKeywords:i.z.array(i.z.string().max(100)).optional(),mcpEnabled:i.z.boolean().optional(),a2aEnabled:i.z.boolean().optional()});let g=i.z.object({password:i.z.string().min(1,"Password is required").max(200)}),b=i.z.string().trim().min(1,"Model is required").max(200),h=i.z.string().trim().min(1,"Field is required"),v=i.z.array(i.z.number().int().min(0)).min(1,"input token array must contain at least one item"),y=i.z.union([h,i.z.array(h).min(1,"input must contain at least one item"),v,i.z.array(v).min(1,"input must contain at least one item")]),x=i.z.object({role:i.z.string().trim().min(1,"messages[].role is required"),content:i.z.union([h,i.z.array(i.z.unknown()).min(1),i.z.null()]).optional()}).catchall(i.z.unknown()),f=i.z.object({content:i.z.union([h,i.z.array(i.z.object({type:i.z.string().optional(),text:i.z.string().optional()}).catchall(i.z.unknown())).min(1,"messages[].content must contain at least one item")])}).catchall(i.z.unknown()),j=i.z.object({model:b,input:y,dimensions:i.z.coerce.number().int().positive().optional(),encoding_format:i.z.enum(["float","base64"]).optional()}).catchall(i.z.unknown()),k=i.z.object({model:b,prompt:h}).catchall(i.z.unknown()),S=i.z.object({model:b,input:h}).catchall(i.z.unknown()),I=i.z.object({model:b.optional(),input:i.z.unknown().refine(e=>null!=e&&("string"==typeof e?e.trim().length>0:!Array.isArray(e)||e.length>0),"Input is required")}).catchall(i.z.unknown()),q=i.z.object({model:b,query:h,documents:i.z.array(i.z.unknown()).min(1,"documents must contain at least one item")}).catchall(i.z.unknown()),w=i.z.object({model:b,messages:i.z.array(x).min(1).optional(),input:i.z.union([h,i.z.array(i.z.unknown()).min(1)]).optional(),prompt:h.optional()}).catchall(i.z.unknown()).superRefine((e,o)=>{void 0===e.messages&&void 0===e.input&&void 0===e.prompt&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"messages, input or prompt is required",path:[]})}),_=i.z.object({messages:i.z.array(f).min(1,"messages must contain at least one item")}).catchall(i.z.unknown()),C=i.z.object({apiKeyId:i.z.string().trim().min(1,"apiKeyId is required"),dailyLimitUsd:i.z.coerce.number().positive("dailyLimitUsd must be greater than zero"),monthlyLimitUsd:i.z.coerce.number().positive("monthlyLimitUsd must be greater than zero").optional(),warningThreshold:i.z.coerce.number().min(0).max(1).optional()}),P=i.z.object({action:i.z.enum(["unlock"]),identifier:i.z.string().trim().min(1).optional()}).superRefine((e,o)=>{"unlock"!==e.action||e.identifier||o.addIssue({code:i.z.ZodIssueCode.custom,message:"identifier is required for unlock action",path:["identifier"]})}),R=i.z.object({provider:i.z.string().trim().min(1,"provider is required"),priority:i.z.number().int().min(1).max(100).optional(),enabled:i.z.boolean().optional()}).catchall(i.z.unknown()),M=i.z.object({model:b,chain:i.z.array(R).min(1,"chain must contain at least one provider")}),A=i.z.object({model:b}),Z=i.z.object({model:b,alias:i.z.string().trim().min(1,"Alias is required").max(200)}),T=i.z.object({provider:i.z.string().trim().min(1,"provider is required").max(120),model:b}),N=i.z.object({provider:i.z.string().trim().min(1,"provider is required").max(120),modelId:i.z.string().trim().min(1,"modelId is required").max(240),modelName:i.z.string().trim().max(240).optional(),source:i.z.string().trim().max(80).optional(),apiFormat:i.z.enum(["chat-completions","responses"]).default("chat-completions"),supportedEndpoints:i.z.array(i.z.enum(["chat","embeddings","images","audio"])).default(["chat"])}),L=i.z.object({input:i.z.number().min(0).optional(),output:i.z.number().min(0).optional(),cached:i.z.number().min(0).optional(),reasoning:i.z.number().min(0).optional(),cache_creation:i.z.number().min(0).optional()}).strict(),U=i.z.record(i.z.string().trim().min(1),i.z.record(i.z.string().trim().min(1),L)),E=i.z.object({connectionId:i.z.string().trim().min(1,"connectionId is required"),enabled:i.z.boolean()}),B=i.z.object({transientCooldown:i.z.number().min(0),rateLimitCooldown:i.z.number().min(0),maxBackoffLevel:i.z.number().int().min(0),circuitBreakerThreshold:i.z.number().int().min(0),circuitBreakerReset:i.z.number().min(0)}),K=i.z.object({requestsPerMinute:i.z.number().int().min(1).optional(),minTimeBetweenRequests:i.z.number().int().min(1).optional(),concurrentRequests:i.z.number().int().min(1).optional()}).strict(),D=i.z.object({profiles:i.z.object({oauth:B.optional(),apikey:B.optional()}).strict().optional(),defaults:K.optional()}).superRefine((e,o)=>{e.profiles||e.defaults||o.addIssue({code:i.z.ZodIssueCode.custom,message:"Must provide profiles or defaults",path:[]})}),O=i.z.record(i.z.string(),i.z.unknown()),F=i.z.object({action:i.z.literal("reset-stats")}),W=i.z.enum(["litellm"]),H=i.z.object({sources:i.z.array(W).min(1).optional(),dryRun:i.z.boolean().optional()}).strict(),$=i.z.object({coding:i.z.string().max(200).optional(),creative:i.z.string().max(200).optional(),analysis:i.z.string().max(200).optional(),vision:i.z.string().max(200).optional(),summarization:i.z.string().max(200).optional(),background:i.z.string().max(200).optional(),chat:i.z.string().max(200).optional()}).strict(),V=i.z.object({enabled:i.z.boolean().optional(),taskModelMap:$.optional(),detectionEnabled:i.z.boolean().optional()}).strict().superRefine((e,o)=>{void 0===e.enabled&&void 0===e.taskModelMap&&void 0===e.detectionEnabled&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),G=i.z.discriminatedUnion("action",[F,i.z.object({action:i.z.literal("detect"),body:O.optional()}).strict()]),Q=i.z.object({comboDefaults:c.optional(),providerOverrides:i.z.record(i.z.string().trim().min(1),c).optional()}).superRefine((e,o)=>{e.comboDefaults||e.providerOverrides||o.addIssue({code:i.z.ZodIssueCode.custom,message:"Nothing to update",path:[]})}),J=i.z.object({requireLogin:i.z.boolean().optional(),password:i.z.string().min(4,"Password must be at least 4 characters").optional()}).superRefine((e,o)=>{void 0!==e.requireLogin||e.password||o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),X=i.z.object({prompt:i.z.string().max(5e4).optional(),enabled:i.z.boolean().optional()}).strict().superRefine((e,o)=>{void 0===e.prompt&&void 0===e.enabled&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),Y=i.z.object({mode:i.z.enum(["passthrough","auto","custom","adaptive"]).optional(),customBudget:i.z.coerce.number().int().min(0).max(131072).optional(),effortLevel:i.z.enum(["none","low","medium","high"]).optional(),baseBudget:i.z.coerce.number().int().min(0).max(131072).optional(),complexityMultiplier:i.z.coerce.number().min(0).optional()}).strict().superRefine((e,o)=>{void 0===e.mode&&void 0===e.customBudget&&void 0===e.effortLevel&&void 0===e.baseBudget&&void 0===e.complexityMultiplier&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),ee=i.z.object({enabled:i.z.boolean()}).strict(),eo=i.z.enum(["blacklist","whitelist"]),et=i.z.object({ip:i.z.string().trim().min(1),durationMs:i.z.coerce.number().int().min(1).optional(),reason:i.z.string().max(200).optional()}),ei=i.z.object({enabled:i.z.boolean().optional(),mode:eo.optional(),blacklist:i.z.array(i.z.string()).optional(),whitelist:i.z.array(i.z.string()).optional(),addBlacklist:i.z.string().optional(),removeBlacklist:i.z.string().optional(),addWhitelist:i.z.string().optional(),removeWhitelist:i.z.string().optional(),tempBan:et.optional(),removeBan:i.z.string().optional()}).strict().superRefine((e,o)=>{0===Object.keys(e).length&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),en=i.z.object({aliases:i.z.record(i.z.string().trim().min(1),i.z.string().trim().min(1))}),ea=i.z.object({from:i.z.string().trim().min(1),to:i.z.string().trim().min(1)}),er=i.z.object({from:i.z.string().trim().min(1)}),es=i.z.object({type:i.z.preprocess(e=>"string"==typeof e?e.trim().toLowerCase():e,i.z.enum(["http","https","socks5"])).optional(),host:i.z.string().trim().min(1).optional(),port:i.z.coerce.number().int().min(1).max(65535).optional(),username:i.z.string().optional(),password:i.z.string().optional()}).strict(),el=i.z.object({proxy:es.nullable().optional(),global:es.nullable().optional(),providers:i.z.record(i.z.string().trim().min(1),es.nullable()).optional(),combos:i.z.record(i.z.string().trim().min(1),es.nullable()).optional(),keys:i.z.record(i.z.string().trim().min(1),es.nullable()).optional(),level:i.z.enum(["global","provider","combo","key"]).optional(),id:i.z.string().optional()}).strict().superRefine((e,o)=>{void 0===e.proxy&&void 0===e.global&&void 0===e.providers&&void 0===e.combos&&void 0===e.keys&&void 0===e.level&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]}),void 0!==e.level&&void 0===e.proxy&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"proxy is required when level is provided",path:["proxy"]}),e.level&&"global"!==e.level&&!e.id?.trim()&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"id is required for provider/combo/key level updates",path:["id"]})}),em=i.z.object({proxy:i.z.object({type:i.z.string().optional(),host:i.z.string().trim().min(1,"proxy.host is required"),port:i.z.union([i.z.string(),i.z.number()]),username:i.z.string().optional(),password:i.z.string().optional()})}),ed=i.z.object({name:i.z.string().trim().min(1,"name is required").max(120),type:i.z.preprocess(e=>"string"==typeof e?e.trim().toLowerCase():e,i.z.enum(["http","https","socks5"])).optional().default("http"),host:i.z.string().trim().min(1,"host is required").max(255),port:i.z.coerce.number().int().min(1).max(65535),username:i.z.string().optional(),password:i.z.string().optional(),region:i.z.string().trim().max(64).nullable().optional(),notes:i.z.string().trim().max(1e3).nullable().optional(),status:i.z.enum(["active","inactive"]).optional().default("active")}).strict(),ec=ed.partial().extend({id:i.z.string().trim().min(1,"id is required")}),ez=i.z.object({scope:i.z.enum(["global","provider","account","combo","key"]),scopeId:i.z.string().trim().nullable().optional(),proxyId:i.z.string().trim().nullable().optional()}).strict().superRefine((e,o)=>{"global"===e.scope||e.scopeId?.trim()||o.addIssue({code:i.z.ZodIssueCode.custom,message:"scopeId is required for provider/account/combo/key scope",path:["scopeId"]})}),ep=i.z.object({scope:i.z.enum(["global","provider","account","combo","key"]),scopeIds:i.z.array(i.z.string().trim().min(1)).optional().default([]),proxyId:i.z.string().trim().nullable().optional()}).strict().superRefine((e,o)=>{"global"===e.scope||Array.isArray(e.scopeIds)&&0!==e.scopeIds.length||o.addIssue({code:i.z.ZodIssueCode.custom,message:"scopeIds is required for provider/account/combo/key scope",path:["scopeIds"]})}),eu=i.z.record(i.z.string(),i.z.unknown()).refine(e=>Object.keys(e).length>0,"Body must be a non-empty object"),eg=i.z.enum(["1_req_client.json","2_req_source.json","3_req_openai.json","4_req_target.json","5_res_provider.txt"]),eb=i.z.object({body:eu}),eh=i.z.object({file:eg,content:i.z.string().min(1,"Content is required").max(1e6,"Content is too large")}),ev=i.z.object({provider:i.z.string().trim().min(1,"Provider is required"),body:eu}),ey=i.z.object({step:i.z.union([i.z.number().int().min(1).max(4),i.z.literal("direct")]),provider:i.z.string().trim().min(1).optional(),body:eu,sourceFormat:i.z.string().optional(),targetFormat:i.z.string().optional()}).superRefine((e,o)=>{"direct"===e.step||e.provider||o.addIssue({code:i.z.ZodIssueCode.custom,message:"Step and provider are required",path:["provider"]})}),ex=i.z.object({code:i.z.string().trim().min(1),redirectUri:i.z.string().trim().min(1),codeVerifier:i.z.string().trim().min(1),state:i.z.string().optional()}),ef=i.z.object({deviceCode:i.z.string().trim().min(1),codeVerifier:i.z.string().optional(),extraData:i.z.unknown().optional()}),ej=i.z.object({accessToken:i.z.string().trim().min(1,"Access token is required"),machineId:i.z.string().trim().min(1,"Machine ID is required")}),ek=i.z.object({refreshToken:i.z.string().trim().min(1,"Refresh token is required")}),eS=i.z.object({code:i.z.string().trim().min(1,"Code is required"),codeVerifier:i.z.string().trim().min(1,"Code verifier is required"),provider:i.z.enum(["google","github"])}),eI=i.z.object({provider:i.z.string().trim().min(1,"Provider is required"),credentials:i.z.object({accessToken:i.z.string().optional(),refreshToken:i.z.string().optional(),expiresIn:i.z.coerce.number().positive().optional()}).strict().superRefine((e,o)=>{void 0===e.accessToken&&void 0===e.refreshToken&&void 0===e.expiresIn&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"At least one credential field must be provided",path:[]})})}),eq=i.z.object({alias:i.z.string().trim().min(1,"Missing alias")}),ew=i.z.object({model:i.z.string().trim().min(1,"Model and alias required"),alias:i.z.string().trim().min(1,"Model and alias required")}),e_=i.z.object({action:i.z.enum(["enable","sync","disable"])}),eC=i.z.object({name:i.z.string().min(1,"Name is required").max(100).regex(/^[a-zA-Z0-9_/.-]+$/,"Name can only contain letters, numbers, -, _, / and .").optional(),models:i.z.array(l).optional(),strategy:d.optional(),config:c.optional(),isActive:i.z.boolean().optional(),allowedProviders:i.z.array(i.z.string().max(200)).optional(),system_message:i.z.string().max(5e4).optional(),tool_filter_regex:i.z.string().max(1e3).optional(),context_cache_protection:i.z.boolean().optional()}).superRefine((e,o)=>{void 0===e.name&&void 0===e.models&&void 0===e.strategy&&void 0===e.config&&void 0===e.isActive&&void 0===e.allowedProviders&&void 0===e.system_message&&void 0===e.tool_filter_regex&&void 0===e.context_cache_protection&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),eP=i.z.object({comboName:i.z.string().trim().min(1,"comboName is required")}),eR=i.z.object({backupId:i.z.string().trim().min(1,"backupId is required")}),eM=i.z.object({suiteId:i.z.string().trim().min(1,"suiteId is required"),outputs:i.z.record(i.z.string(),i.z.string())}),eA=i.z.object({enabled:i.z.boolean(),from:i.z.string().regex(/^\d{2}:\d{2}$/,"Time must be in HH:MM format"),until:i.z.string().regex(/^\d{2}:\d{2}$/,"Time must be in HH:MM format"),days:i.z.array(i.z.number().int().min(0).max(6)).min(1,"At least one day is required").max(7),tz:i.z.string().min(1).max(100)}),eZ=i.z.object({name:i.z.string().trim().min(1).max(200).optional(),allowedModels:i.z.array(i.z.string().trim().min(1)).max(1e3).optional(),allowedConnections:i.z.array(i.z.string().uuid()).max(100).optional(),noLog:i.z.boolean().optional(),autoResolve:i.z.boolean().optional(),isActive:i.z.boolean().optional(),accessSchedule:i.z.union([eA,i.z.null()]).optional()}).superRefine((e,o)=>{void 0===e.name&&void 0===e.allowedModels&&void 0===e.allowedConnections&&void 0===e.noLog&&void 0===e.autoResolve&&void 0===e.isActive&&void 0===e.accessSchedule&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),eT=i.z.object({name:i.z.string().trim().min(1,"Name is required"),prefix:i.z.string().trim().min(1,"Prefix is required"),apiType:i.z.enum(["chat","responses"]).optional(),baseUrl:i.z.string().trim().min(1).optional(),type:i.z.enum(["openai-compatible","anthropic-compatible"]).optional(),chatPath:i.z.string().trim().startsWith("/").max(500).optional().or(i.z.literal("")),modelsPath:i.z.string().trim().startsWith("/").max(500).optional().or(i.z.literal(""))}).superRefine((e,o)=>{let t=e.type||"openai-compatible";"openai-compatible"!==t||e.apiType||o.addIssue({code:i.z.ZodIssueCode.custom,message:"Invalid OpenAI compatible API type",path:["apiType"]})}),eN=i.z.object({name:i.z.string().trim().min(1,"Name is required"),prefix:i.z.string().trim().min(1,"Prefix is required"),apiType:i.z.enum(["chat","responses"]).optional(),baseUrl:i.z.string().trim().min(1,"Base URL is required"),chatPath:i.z.string().trim().startsWith("/").max(500).optional().or(i.z.literal("")),modelsPath:i.z.string().trim().startsWith("/").max(500).optional().or(i.z.literal(""))}),eL=i.z.object({baseUrl:i.z.string().trim().min(1,"Base URL and API key required"),apiKey:i.z.string().trim().min(1,"Base URL and API key required"),type:i.z.enum(["openai-compatible","anthropic-compatible"]).optional(),modelsPath:i.z.string().trim().startsWith("/").max(500).optional().or(i.z.literal(""))}),eU=i.z.object({name:i.z.string().max(200).optional(),priority:i.z.coerce.number().int().min(1).max(100).optional(),globalPriority:i.z.union([i.z.coerce.number().int().min(1).max(100),i.z.null()]).optional(),defaultModel:i.z.union([i.z.string().max(200),i.z.null()]).optional(),isActive:i.z.boolean().optional(),apiKey:i.z.string().max(1e4).optional(),testStatus:i.z.string().max(50).optional(),lastError:i.z.union([i.z.string(),i.z.null()]).optional(),lastErrorAt:i.z.union([i.z.string(),i.z.null()]).optional(),lastErrorType:i.z.union([i.z.string(),i.z.null()]).optional(),lastErrorSource:i.z.union([i.z.string(),i.z.null()]).optional(),errorCode:i.z.union([i.z.string(),i.z.null()]).optional(),rateLimitedUntil:i.z.union([i.z.string(),i.z.null()]).optional(),lastTested:i.z.union([i.z.string(),i.z.null()]).optional(),healthCheckInterval:i.z.coerce.number().int().min(0).optional(),group:i.z.union([i.z.string().max(100),i.z.null()]).optional(),providerSpecificData:i.z.record(i.z.string(),i.z.unknown()).optional()}).superRefine((e,o)=>{0===Object.keys(e).length&&o.addIssue({code:i.z.ZodIssueCode.custom,message:"No valid fields to update",path:[]})}),eE=i.z.object({mode:i.z.enum(["provider","oauth","free","apikey","compatible","all"]),providerId:i.z.string().trim().min(1).nullable().optional()}).superRefine((e,o)=>{let t=e.providerId??null;"provider"!==e.mode||t||o.addIssue({code:i.z.ZodIssueCode.custom,message:"providerId is required when mode=provider",path:["providerId"]})}),eB=i.z.object({provider:i.z.string().trim().min(1,"Provider and API key required"),apiKey:i.z.string().trim().min(1,"Provider and API key required")}),eK=i.z.object({text:i.z.string().optional()}).catchall(i.z.unknown()),eD=i.z.object({role:i.z.string().optional(),parts:i.z.array(eK).optional()}).catchall(i.z.unknown()),eO=i.z.object({contents:i.z.array(eD).optional(),systemInstruction:i.z.object({parts:i.z.array(eK).optional()}).catchall(i.z.unknown()).optional(),generationConfig:i.z.object({stream:i.z.boolean().optional(),maxOutputTokens:i.z.coerce.number().int().min(1).optional(),temperature:i.z.coerce.number().optional(),topP:i.z.coerce.number().optional()}).catchall(i.z.unknown()).optional()}).catchall(i.z.unknown()).superRefine((e,o)=>{e.contents||e.systemInstruction||o.addIssue({code:i.z.ZodIssueCode.custom,message:"contents or systemInstruction is required",path:[]})}),eF=i.z.object({apiKey:i.z.string().trim().min(1,"Missing apiKey"),sudoPassword:i.z.string().optional()}),eW=i.z.object({sudoPassword:i.z.string().optional()}),eH=i.z.object({tool:i.z.string().trim().min(1,"tool and mappings required"),mappings:i.z.record(i.z.string(),i.z.string().optional())}),e$=i.z.object({tool:i.z.string().trim().min(1).optional(),toolId:i.z.string().trim().min(1).optional(),backupId:i.z.string().trim().min(1,"tool and backupId are required")}).superRefine((e,o)=>{e.tool||e.toolId||o.addIssue({code:i.z.ZodIssueCode.custom,message:"tool and backupId are required",path:["tool"]})}),eV=i.z.string().trim().min(1,"Environment key is required").max(120).regex(/^[A-Z_][A-Z0-9_]*$/,"Invalid environment key format"),eG=i.z.union([i.z.string(),i.z.number(),i.z.boolean()]).transform(e=>String(e)).refine(e=>e.length>0,"Environment value is required").refine(e=>e.length<=1e4,"Environment value is too long"),eQ=i.z.object({env:i.z.record(eV,eG).refine(e=>Object.keys(e).length>0,"env must contain at least one key")}),eJ=i.z.object({baseUrl:i.z.string().trim().min(1,"baseUrl and model are required"),apiKey:i.z.string().optional(),model:i.z.string().trim().min(1,"baseUrl and model are required")}),eX=i.z.object({name:i.z.string().trim().min(1,"Profile name is required")}),eY=i.z.object({profileId:i.z.string().trim().min(1,"profileId is required")}),e0=i.z.object({baseUrl:i.z.string().trim().min(1).optional(),apiKey:i.z.string().optional(),model:i.z.string().trim().min(1,"Model is required")}),e1=i.z.object({query:i.z.string().trim().min(1,"Query is required").max(500,"Query must be 500 characters or fewer"),provider:i.z.enum(["serper-search","brave-search","perplexity-search","exa-search","tavily-search"]).optional(),max_results:i.z.coerce.number().int().min(1).max(100).default(5),search_type:i.z.enum(["web","news"]).default("web"),offset:i.z.coerce.number().int().min(0).default(0),country:i.z.string().max(2).toUpperCase().optional(),language:i.z.string().min(2).max(5).optional(),time_range:i.z.enum(["any","day","week","month","year"]).optional(),content:i.z.object({snippet:i.z.boolean().default(!0),full_page:i.z.boolean().default(!1),format:i.z.enum(["text","markdown"]).default("text"),max_characters:i.z.coerce.number().int().min(100).max(1e5).optional()}).optional(),filters:i.z.object({include_domains:i.z.array(i.z.string().max(253)).max(20).optional(),exclude_domains:i.z.array(i.z.string().max(253)).max(20).optional(),safe_search:i.z.enum(["off","moderate","strict"]).optional()}).optional(),synthesis:i.z.object({strategy:i.z.enum(["none","auto","provider","internal"]).default("none"),model:i.z.string().optional(),max_tokens:i.z.coerce.number().int().min(1).max(4e3).optional()}).optional(),provider_options:i.z.record(i.z.string(),i.z.unknown()).optional(),strict_filters:i.z.boolean().default(!1)}).catchall(i.z.unknown()),e2=i.z.object({title:i.z.string(),url:i.z.string(),display_url:i.z.string().optional(),snippet:i.z.string(),position:i.z.number().int().positive(),score:i.z.number().min(0).max(1).nullable().optional(),published_at:i.z.string().nullable().optional(),favicon_url:i.z.string().nullable().optional(),content:i.z.object({format:i.z.enum(["text","markdown"]).optional(),text:i.z.string().optional(),length:i.z.number().int().optional()}).nullable().optional(),metadata:i.z.object({author:i.z.string().nullable().optional(),language:i.z.string().nullable().optional(),source_type:i.z.enum(["article","blog","forum","video","academic","news","other"]).nullable().optional(),image_url:i.z.string().nullable().optional()}).nullable().optional(),citation:i.z.object({provider:i.z.string(),retrieved_at:i.z.string(),rank:i.z.number().int().positive()}),provider_raw:i.z.record(i.z.string(),i.z.unknown()).nullable().optional()});i.z.object({id:i.z.string(),provider:i.z.string(),query:i.z.string(),results:i.z.array(e2),cached:i.z.boolean(),answer:i.z.object({source:i.z.enum(["none","provider","internal"]).optional(),text:i.z.string().nullable().optional(),model:i.z.string().nullable().optional()}).nullable().optional(),usage:i.z.object({queries_used:i.z.number().int().min(0),search_cost_usd:i.z.number().min(0),llm_tokens:i.z.number().int().min(0).optional()}),metrics:i.z.object({response_time_ms:i.z.number().int().min(0),upstream_latency_ms:i.z.number().int().min(0).optional(),gateway_latency_ms:i.z.number().int().min(0).optional(),total_results_available:i.z.number().int().nullable()}),errors:i.z.array(i.z.object({provider:i.z.string(),code:i.z.string(),message:i.z.string()})).optional()}),e.s(["addModelAliasSchema",0,ea,"bulkProxyAssignmentSchema",0,ep,"clearModelAvailabilitySchema",0,T,"cliBackupMutationSchema",0,e$,"cliMitmAliasUpdateSchema",0,eH,"cliMitmStartSchema",0,eF,"cliMitmStopSchema",0,eW,"cliModelConfigSchema",0,eJ,"cliSettingsEnvSchema",0,eQ,"cloudCredentialUpdateSchema",0,eI,"cloudModelAliasUpdateSchema",0,ew,"cloudResolveAliasSchema",0,eq,"cloudSyncActionSchema",0,e_,"codexProfileIdSchema",0,eY,"codexProfileNameSchema",0,eX,"createAutoComboSchema",0,u,"createComboSchema",0,z,"createKeySchema",0,s,"createProviderNodeSchema",0,eT,"createProviderSchema",0,r,"createProxyRegistrySchema",0,ed,"cursorImportSchema",0,ej,"dbBackupRestoreSchema",0,eR,"evalRunSuiteSchema",0,eM,"guideSettingsSaveSchema",0,e0,"jsonObjectSchema",0,O,"kiroImportSchema",0,ek,"kiroSocialExchangeSchema",0,eS,"loginSchema",0,g,"oauthExchangeSchema",0,ex,"oauthPollSchema",0,ef,"policyActionSchema",0,P,"pricingSyncRequestSchema",0,H,"providerChatCompletionSchema",0,w,"providerModelMutationSchema",0,N,"providerNodeValidateSchema",0,eL,"providersBatchTestSchema",0,eE,"proxyAssignmentSchema",0,ez,"registerFallbackSchema",0,M,"removeFallbackSchema",0,A,"removeModelAliasSchema",0,er,"resetStatsActionSchema",0,F,"setBudgetSchema",0,C,"taskRoutingActionSchema",0,G,"testComboSchema",0,eP,"testProxySchema",0,em,"toggleRateLimitSchema",0,E,"translatorDetectSchema",0,eb,"translatorSaveSchema",0,eh,"translatorSendSchema",0,ev,"translatorTranslateSchema",0,ey,"updateCodexServiceTierSchema",0,ee,"updateComboDefaultsSchema",0,Q,"updateComboSchema",0,eC,"updateIpFilterSchema",0,ei,"updateKeyPermissionsSchema",0,eZ,"updateModelAliasSchema",0,Z,"updateModelAliasesSchema",0,en,"updatePricingSchema",0,U,"updateProviderConnectionSchema",0,eU,"updateProviderNodeSchema",0,eN,"updateProxyConfigSchema",0,el,"updateProxyRegistrySchema",0,ec,"updateRequireLoginSchema",0,J,"updateResilienceSchema",0,D,"updateSystemPromptSchema",0,X,"updateTaskRoutingSchema",0,V,"updateThinkingBudgetSchema",0,Y,"v1AudioSpeechSchema",0,S,"v1CountTokensSchema",0,_,"v1EmbeddingsSchema",0,j,"v1ImageGenerationSchema",0,k,"v1ModerationSchema",0,I,"v1RerankSchema",0,q,"v1SearchSchema",0,e1,"v1betaGeminiGenerateSchema",0,eO,"validateProviderApiKeySchema",0,eB]),t()}catch(e){t(e)}},!1)];
2
2
 
3
3
  //# sourceMappingURL=src_shared_validation_schemas_ts_4e63863a._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[918622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},677850,a=>a.a(async(b,c)=>{try{let b=await a.y("zod");a.n(b),c()}catch(a){c(a)}},!0),342602,(a,b,c)=>{"use strict";b.exports=a.r(918622)},187924,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].ReactJsxRuntime},572131,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].React},804730,a=>{a.v({name:"omniroute",version:"2.7.7",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"next build","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.1.6","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",zod:"^4.3.6",zustand:"^5.0.10","@swc/helpers":"0.5.19"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"16.1.6",husky:"^9.1.7","lint-staged":"^16.2.7",prettier:"^3.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]}})},588788,a=>{"use strict";var b=a.i(32886),c=a.i(187924);function d({locale:a,...d}){if(!a)throw Error(void 0);return(0,c.jsx)(b.IntlProvider,{locale:a,...d})}a.s(["default",()=>d])}];
1
+ module.exports=[918622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},677850,a=>a.a(async(b,c)=>{try{let b=await a.y("zod");a.n(b),c()}catch(a){c(a)}},!0),342602,(a,b,c)=>{"use strict";b.exports=a.r(918622)},187924,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].ReactJsxRuntime},572131,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].React},804730,a=>{a.v({name:"omniroute",version:"2.7.9",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"next build","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.1.6","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",zod:"^4.3.6",zustand:"^5.0.10","@swc/helpers":"0.5.19"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"16.1.6",husky:"^9.1.7","lint-staged":"^16.2.7",prettier:"^3.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]}})},588788,a=>{"use strict";var b=a.i(32886),c=a.i(187924);function d({locale:a,...d}){if(!a)throw Error(void 0);return(0,c.jsx)(b.IntlProvider,{locale:a,...d})}a.s(["default",()=>d])}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__9affb65e._.js.map