switchboard-router 0.9.70 → 0.9.72

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 (384) hide show
  1. package/app/.next/static/chunks/1321-37ecf3f45c464e7e.js +1 -0
  2. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/{page-5503dc94b3b73efc.js → page-c49c2c45881644c2.js} +1 -1
  3. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-6e36b61f4ae58378.js → page-15f9f168b6ba8411.js} +1 -1
  4. package/app/.next-cli-build/BUILD_ID +1 -1
  5. package/app/.next-cli-build/app-path-routes-manifest.json +17 -17
  6. package/app/.next-cli-build/build-manifest.json +2 -2
  7. package/app/.next-cli-build/prerender-manifest.json +3 -3
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page.js.nft.json +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page.js.nft.json +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js.nft.json +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  62. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  64. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  65. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  66. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  67. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  68. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  69. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  71. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  72. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  73. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  74. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  75. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  76. package/app/.next-cli-build/server/app/api/agent-library/catalog/route.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/api/agent-library/doctor/route.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/api/agent-library/export/route.js.nft.json +1 -1
  79. package/app/.next-cli-build/server/app/api/agent-library/mcp/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/agent-library/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/agent-library/skills/route.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/api/agent-library/sync/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/agent-library/updates/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  86. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
  89. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
  91. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  93. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/cli-tools/claude-full-catalog/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/cli-tools/claude-picker-labels/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  99. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  103. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  105. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  107. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  109. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  111. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/cli-tools/fx-settings/manual-configs/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/cli-tools/fx-settings/route.js +2 -2
  114. package/app/.next-cli-build/server/app/api/cli-tools/fx-settings/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +3 -3
  116. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +2 -2
  118. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/hermes-profiles/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  123. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  125. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  127. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  129. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/manual-configs/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/picker-labels/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/health/live/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  146. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/mgmt/v1/health/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/mgmt/v1/metrics/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/mgmt/v1/providers/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/mgmt/v1/routing/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/mgmt/v1/usage/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/mgmt/v1/version/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/models/routable/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/models/routable/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/pricing/defaults/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/batch/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/cache/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/prepare/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/remove-unavailable/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/cancel/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/start/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/status/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/providers/[id]/overrides/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/routing/feedback/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/routing/insights/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/routing/learn/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/routing/stats/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/routing/versions/promote/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/routing/versions/rollback/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/skills/[id]/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/token-saver/vault-stats/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/usage/request-details/[id]/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  252. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  254. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  256. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  258. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  260. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  262. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  265. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  266. package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js +1 -1
  267. package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js.nft.json +1 -1
  268. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  269. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  271. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  273. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  275. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  277. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  279. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/v1/systemone/route.js +1 -1
  281. package/app/.next-cli-build/server/app/api/v1/systemone/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  283. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  285. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  287. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  291. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  293. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  295. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  297. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  301. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  302. package/app/.next-cli-build/server/app/callback.html +1 -1
  303. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  304. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  305. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  306. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +3 -3
  307. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  309. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  310. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  311. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  312. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  313. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +3 -3
  314. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/index.html +1 -1
  316. package/app/.next-cli-build/server/app/index.rsc +3 -3
  317. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  318. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  319. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  320. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  322. package/app/.next-cli-build/server/app/landing.html +1 -1
  323. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  324. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  325. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  326. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +3 -3
  327. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  328. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  329. package/app/.next-cli-build/server/app/login.html +1 -1
  330. package/app/.next-cli-build/server/app/login.rsc +4 -4
  331. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  332. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  333. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  334. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  335. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  336. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  337. package/app/.next-cli-build/server/app-paths-manifest.json +17 -17
  338. package/app/.next-cli-build/server/chunks/1350.js +1 -1
  339. package/app/.next-cli-build/server/chunks/1757.js +1 -1
  340. package/app/.next-cli-build/server/chunks/2348.js +1 -1
  341. package/app/.next-cli-build/server/chunks/2574.js +1 -1
  342. package/app/.next-cli-build/server/chunks/2766.js +1 -1
  343. package/app/.next-cli-build/server/chunks/2770.js +1 -1
  344. package/app/.next-cli-build/server/chunks/629.js +1 -1
  345. package/app/.next-cli-build/server/chunks/7730.js +1 -0
  346. package/app/.next-cli-build/server/chunks/8102.js +1 -0
  347. package/app/.next-cli-build/server/chunks/8400.js +1 -1
  348. package/app/.next-cli-build/server/chunks/869.js +1 -1
  349. package/app/.next-cli-build/server/chunks/8998.js +3 -3
  350. package/app/.next-cli-build/server/chunks/9264.js +1 -1
  351. package/app/.next-cli-build/server/chunks/9353.js +1 -1
  352. package/app/.next-cli-build/server/chunks/9662.js +1 -1
  353. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  354. package/app/.next-cli-build/server/middleware.js +1 -1
  355. package/app/.next-cli-build/server/pages/404.html +1 -1
  356. package/app/.next-cli-build/server/pages/500.html +1 -1
  357. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  358. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  359. package/app/.next-cli-build/static/chunks/1321-37ecf3f45c464e7e.js +1 -0
  360. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/{page-5503dc94b3b73efc.js → page-c49c2c45881644c2.js} +1 -1
  361. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-6e36b61f4ae58378.js → page-15f9f168b6ba8411.js} +1 -1
  362. package/app/config-writers.cjs +2 -1
  363. package/app/open-sse/identity/tls/bin/darwin/arm64/switchboard-claude-tls +0 -0
  364. package/app/open-sse/identity/tls/bin/darwin/x64/switchboard-claude-tls +0 -0
  365. package/app/open-sse/identity/tls/bin/linux/arm64/switchboard-claude-tls +0 -0
  366. package/app/open-sse/identity/tls/bin/linux/x64/switchboard-claude-tls +0 -0
  367. package/app/open-sse/identity/tls/bin/win32/arm64/switchboard-claude-tls.exe +0 -0
  368. package/app/open-sse/identity/tls/bin/win32/x64/switchboard-claude-tls.exe +0 -0
  369. package/app/package.json +1 -1
  370. package/app/public/providers/api-airforce.png +0 -0
  371. package/app/public/providers/grok-cli.png +0 -0
  372. package/app/public/providers/muse.png +0 -0
  373. package/app/public/providers/ollama-search.png +0 -0
  374. package/app/public/providers/opencode-zen.png +0 -0
  375. package/app/public/providers/venice.png +0 -0
  376. package/app/public/providers/vercel-ai-gateway.png +0 -0
  377. package/package.json +1 -1
  378. package/app/.next/static/chunks/1321-76df19b6a38e6fa9.js +0 -1
  379. package/app/.next-cli-build/server/chunks/6074.js +0 -1
  380. package/app/.next-cli-build/static/chunks/1321-76df19b6a38e6fa9.js +0 -1
  381. /package/app/.next/static/{5WtWAuXu4p-ILkKMsJE4i → mIIf1bKJ8KlrHk03nHIsh}/_buildManifest.js +0 -0
  382. /package/app/.next/static/{5WtWAuXu4p-ILkKMsJE4i → mIIf1bKJ8KlrHk03nHIsh}/_ssgManifest.js +0 -0
  383. /package/app/.next-cli-build/static/{5WtWAuXu4p-ILkKMsJE4i → mIIf1bKJ8KlrHk03nHIsh}/_buildManifest.js +0 -0
  384. /package/app/.next-cli-build/static/{5WtWAuXu4p-ILkKMsJE4i → mIIf1bKJ8KlrHk03nHIsh}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=2348,exports.ids=[2348],exports.modules={72348:(a,b,c)=>{c.d(b,{g:()=>F,s:()=>H});var d=c(67133),e=c(59353),f=c(38775),g=c(89865),h=c(60290),i=c(41029),j=c(18129),k=c(45350),l=c(46052);let m=new Set(["generations"]);function n(a,b){return{Accept:"application/json",...a.headers||{},...b?{Authorization:`Bearer ${b}`}:{}}}let o=/^projects\/[^/]+\/locations\/[^/]+\/publishers\/[^/]+\/models\/[^/]+\/operations\/[^/]+$/;async function p(a,b){let c=(0,i.Sc)(a?.apiKey),d=c?.project_id||a?.projectId||a?.providerSpecificData?.projectId,e=a?.providerSpecificData?.location||"us-central1";if(!d)return{error:"Vertex video requires a project_id — use Service Account JSON or set providerSpecificData.projectId"};let f=a?.accessToken;if(c){let a=await (0,i.pb)(c,b);if(!a?.accessToken)return{error:"Vertex video: failed to mint access token from service account JSON"};f=a.accessToken}return f?{token:f,projectId:d,location:e}:{error:"Vertex video requires Service Account JSON or an OAuth access token (raw API keys are not supported)"}}let q={openrouter:{buildRequest({config:a,action:b,requestId:c,rawBody:d,contentType:e,token:f}){let g=a.baseUrl.replace(/\/$/,"");return c?{method:"GET",url:`${g}/${encodeURIComponent(c)}`,headers:n(a,f)}:m.has(b)?e&&!e.includes("application/json")?{error:"OpenRouter video requires an application/json body"}:{method:"POST",url:g,headers:{...n(a,f),"Content-Type":"application/json"},body:d}:{error:`OpenRouter video supports 'generations' only (got '${b}')`}}},vertex:{async buildRequest({config:a,action:b,requestId:c,rawBody:d,contentType:e,credentials:f,log:g}){let h;if(e&&!e.includes("application/json"))return{error:"Vertex video requires an application/json body"};let i=await p(f,g);if(i.error)return{error:i.error};let{token:j,projectId:k,location:l}=i,m=(a.baseUrl||"https://aiplatform.googleapis.com").replace(/\/$/,""),n={Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${j}`};if(c){let a=function(a){let b=String(a??"");if(!b||b.length>1024||!/^[A-Za-z0-9_-]+$/.test(b))return null;let c=Buffer.from(b,"base64url").toString("utf8");return Buffer.from(c,"utf8").toString("base64url")!==b?null:o.test(c)?c:null}(c);return a?{method:"POST",url:`${m}/v1/${a.slice(0,a.indexOf("/operations/"))}:fetchPredictOperation`,headers:n,body:JSON.stringify({operationName:a})}:{error:"Invalid Vertex video job id"}}if("generations"!==b)return{error:`Vertex video supports 'generations' only (got '${b}')`};try{h=JSON.parse("string"==typeof d?d:d.toString("utf8"))}catch{return{error:"Invalid JSON body"}}return h.model?/^[A-Za-z0-9._-]+$/.test(h.model)?h.prompt||h.image||h.image_url?{method:"POST",url:`${m}/v1/projects/${k}/locations/${l}/publishers/google/models/${h.model}:predictLongRunning`,headers:n,body:JSON.stringify(function(a){let b={prompt:a.prompt},c=a.image??a.image_url;if(c&&"object"==typeof c)b.image=c;else if("string"==typeof c){let a=c.match(/^data:([^;]+);base64,(.*)$/s);b.image=a?{bytesBase64Encoded:a[2],mimeType:a[1]}:{gcsUri:c}}a.video&&"object"==typeof a.video&&(b.video=a.video);let d={};return null!=a.n&&(d.sampleCount=Number(a.n)),null!=a.duration&&(d.durationSeconds=Number(a.duration)),a.aspect_ratio&&(d.aspectRatio=a.aspect_ratio),a.resolution&&(d.resolution=a.resolution),null!=a.seed&&(d.seed=a.seed),a.negative_prompt&&(d.negativePrompt=a.negative_prompt),a.storage_uri&&(d.storageUri=a.storage_uri),null!=a.generate_audio&&(d.generateAudio=!!a.generate_audio),{instances:[b],...Object.keys(d).length?{parameters:d}:{}}}(h))}:{error:"Vertex video requires a prompt or an image"}:{error:"Invalid Vertex video model id"}:{error:"Vertex video requires a model (e.g. vertex/veo-3.1-generate-preview)"}},transformResponse:function(a){let b;if(!a?.name)return a;let c=(b=a.name,Buffer.from(b,"utf8").toString("base64url"));if(a.error)return{id:c,request_id:c,status:"failed",error:a.error};if(!a.done)return{id:c,request_id:c,status:"pending"};let d=(a.response?.videos||a.response?.generateVideoResponse?.generatedSamples||[]).map(a=>({url:a.gcsUri||a.video?.uri||a.uri||null,b64_json:a.bytesBase64Encoded||a.video?.bytesBase64Encoded||null,mime_type:a.mimeType||a.video?.mimeType||"video/mp4"}));return{id:c,request_id:c,status:"completed",video:d[0]||null,videos:d}}}},r=Number(process.env.VIDEO_FETCH_TIMEOUT_MS||12e4),s=new Set(["generations","edits","extensions"]);function t(a){return k.B$[a]?.videoConfig||null}function u(a,b=null){if(!a)return a;let c=String(a).replace(/Bearer\s+[A-Za-z0-9._~+/=-]{8,}/gi,"Bearer [redacted]");for(let a of["accessToken","refreshToken","apiKey"]){let d=b?.[a];"string"==typeof d&&d.length>=8&&(c=c.split(d).join("[redacted]"))}return c}async function v({provider:a,action:b=null,requestId:c=null,rawBody:d=null,contentType:e=null,idempotencyKey:f=null,credentials:m,signal:n,timeoutMs:o=r,log:p,onCredentialsRefreshed:w}){let x,y,z,A=t(a);if(!A)return(0,g.A1)(h.gx.BAD_REQUEST,`Provider '${a}' does not support video generation`);if(!c&&!s.has(b))return(0,g.A1)(h.gx.BAD_REQUEST,`Unknown video action: ${b}`);let{identity:B,format:C}=(y=k.xq[a]||{},{identity:(t(a)||{}).identity||y.identity||"openai-node",format:y.format||"openai"}),D=q[a]||null,E=(z="function"==typeof AbortSignal?.timeout?AbortSignal.timeout(o):null,n&&z&&"function"==typeof AbortSignal.any?AbortSignal.any([n,z]):n||z||void 0),F=(0,l.$6)(m),G=async()=>{let g,h,i=D?await D.buildRequest({config:A,action:b,requestId:c,rawBody:d,contentType:e,idempotencyKey:f,credentials:m,log:p,token:m?.accessToken||m?.apiKey}):{method:g=c?"GET":"POST",url:(h=A.baseUrl.replace(/\/$/,""),c?`${h}/${encodeURIComponent(c)}`:`${h}/${b}`),headers:function({token:a,contentType:b,idempotencyKey:c}){let d={Accept:"application/json"};return a&&(d.Authorization=`Bearer ${a}`),b&&(d["Content-Type"]=b),c&&(d["Idempotency-Key"]=c),d}({token:m?.accessToken||m?.apiKey,contentType:"POST"===g?e:null,idempotencyKey:"POST"===g?f:null}),body:"POST"===g?d:void 0};return i.error?{planError:i.error}:{response:await (0,l.Fm)(i.url,{method:i.method,headers:i.headers,body:i.body,signal:E,identity:B,format:C,provider:a},F)}},H=c?"GET":"POST";try{let b=await G();if(b.planError)return(0,g.A1)(h.gx.BAD_REQUEST,`[${a}] ${b.planError}`);x=b.response}catch(b){if(b?.name==="AbortError"||b?.name==="TimeoutError")return(0,g.A1)(h.gx.REQUEST_TIMEOUT,`[${a}] video ${H} aborted: ${b.message}`);return(0,g.A1)(h.gx.BAD_GATEWAY,u(`[${a}] video upstream fetch failed: ${b.message}`,m))}if((x.status===h.gx.UNAUTHORIZED||x.status===h.gx.FORBIDDEN)&&m?.refreshToken){let b=null;try{b=await (0,j.MF)(a,m,()=>(0,i.$B)(a,m,p))}catch(b){p?.warn?.("TOKEN",`${a} | video refresh error: ${u(b.message,m)}`)}if(b?.accessToken){p?.info?.("TOKEN",`${a.toUpperCase()} | refreshed for video ${H}`),Object.assign(m,b),w&&await w(b);try{await x.body?.cancel?.()}catch{}try{let b=await G();if(b.planError)return(0,g.A1)(h.gx.BAD_REQUEST,`[${a}] ${b.planError}`);x=b.response}catch(b){return(0,g.A1)(h.gx.BAD_GATEWAY,u(`[${a}] video retry after refresh failed: ${b.message}`,m))}}else p?.warn?.("TOKEN",`${a.toUpperCase()} | video refresh failed — account needs re-auth`)}let I=await x.text().catch(()=>"");if(!x.ok){let b=u(I||`HTTP ${x.status}`,m);return(0,g.A1)(x.status,`[${a}] ${b.slice(0,2e3)}`)}let J=I,K=x.headers.get("content-type")||"application/json";if(D?.transformResponse)try{J=JSON.stringify(D.transformResponse(JSON.parse(I))),K="application/json"}catch{}return{success:!0,response:new Response(J,{status:x.status,headers:{"Content-Type":K}})}}var w=c(67828),x=c(7803),y=c(78102),z=c(66077);let A=new Set([h.gx.UNAUTHORIZED,h.gx.FORBIDDEN,h.gx.RATE_LIMITED]);async function B(a,b={kind:"model",id:null}){let c=await (0,e.mt)();return(0,y.DM)({settings:c,rawKey:(0,d.Tr)(a),request:a,target:b})}async function C(a){let b=a.headers.get("content-type")||"";if(b.includes("application/json")){let c,d=await a.text();try{c=JSON.parse(d)}catch{return{error:(0,g.yj)(h.gx.BAD_REQUEST,"Invalid JSON body")}}return{raw:d,parsed:c,contentType:b}}return{raw:Buffer.from(await a.arrayBuffer()),parsed:null,contentType:b}}async function D(a){if(!a?.model)return{provider:"xai",model:null};let b=String(a.model),c=await (0,f.getModelInfo)(b);return c.provider?t(c.provider)?{provider:c.provider,model:c.model}:b.includes("/")?{error:(0,g.yj)(h.gx.BAD_REQUEST,`Provider '${c.provider}' does not support video generation`)}:{provider:"xai",model:b}:{error:(0,g.yj)(h.gx.BAD_REQUEST,"Combos are not supported for video generation")}}function E(a,b){if(!b)return a;let c=new Headers(a.headers);return c.set("x-switchboard-connection-id",String(b)),new Response(a.body,{status:a.status,headers:c})}async function F(a,b){let c=await B(a,null);return c.ok?(0,y.yH)(c.lease,async()=>{let e=await C(a);if(e.error)return e.error;let f=await D(e.parsed);if(f.error)return f.error;let{provider:i,model:j}=f,k=await (0,y.LI)(c.clientKey,{resolved:!0,id:e.parsed?.model?String(e.parsed.model):"",provider:i,model:j});if(k)return k.response;let l=e.raw;e.parsed&&j&&e.parsed.model!==j&&(l=JSON.stringify({...e.parsed,model:j}));let m=a.headers.get("x-connection-id")||null,n="1"===a.headers.get("x-switchboard-strict-connection"),o=a.headers.get("idempotency-key")||null,{clientKeyId:p}=c,q=new Set,r=null,s=null;for(;;){let c=await (0,d.getProviderCredentials)(i,q,j,{preferredConnectionId:m,strictPreferredConnection:n,clientKeyId:p});if(!c||c.allRateLimited){if(c?.allRateLimited){let a=r||c.lastError||"Unavailable",b=s||Number(c.lastErrorCode)||h.gx.SERVICE_UNAVAILABLE;return(0,g.wO)(b,`[${i}/${j||"video"}] ${a}`,c.retryAfter,c.retryAfterHuman)}if(0===q.size)return(0,g.yj)(h.gx.BAD_REQUEST,`No credentials for provider: ${i}`);return(0,g.yj)(s||h.gx.SERVICE_UNAVAILABLE,r||"All accounts unavailable")}let f=await (0,z.G)({provider:i,model:j,connectionId:c.connectionId},async()=>{let f=await (0,w.eU)(i,c),g=await v({provider:i,action:b,rawBody:l,contentType:e.contentType||null,idempotencyKey:o,credentials:f,signal:a.signal,log:x,onCredentialsRefreshed:async a=>{await (0,w.vN)(c.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})}});if(g.success)return await (0,d.Pt)(c.connectionId,c,j),x.info("VIDEO",`${i.toUpperCase()} | ${b} accepted (connection ${c.connectionId})`),{finalResponse:E(g.response,c.connectionId)};let{shouldFallback:h}=await (0,d.vk)(c.connectionId,g.status,u(g.error,f),i,j);return h&&A.has(g.status)?{retry:!0,error:g.error,status:g.status}:{finalResponse:g.response}});if(f.finalResponse)return f.finalResponse;q.add(c.connectionId),r=f.error,s=f.status}}):c.response}async function G(a,b){if(b){let a=await (0,e.Mc)(b).catch(()=>null);if(a?.provider&&t(a.provider))return a.provider}let c=new URL(a.url).searchParams.get("provider");return c&&t(c)?c:"xai"}async function H(a,b){let c=await B(a);return c.ok?(0,y.yH)(c.lease,async()=>{if(!b)return(0,g.yj)(h.gx.BAD_REQUEST,"Missing video request id");let e=a.headers.get("x-connection-id")||null,f=await G(a,e),{clientKeyId:i}=c,j=await (0,d.getProviderCredentials)(f,null,null,{preferredConnectionId:e,clientKeyId:i});if(!j||j.allRateLimited)return(0,g.yj)(h.gx.BAD_REQUEST,`No credentials for provider: ${f}`);let k=await (0,w.eU)(f,j),l=await v({provider:f,requestId:b,credentials:k,signal:a.signal,log:x,onCredentialsRefreshed:async a=>{await (0,w.vN)(j.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})}});return l.success?(await (0,d.Pt)(j.connectionId,j,null),E(l.response,j.connectionId)):(await (0,d.vk)(j.connectionId,l.status,u(l.error,k),f,null),l.response)}):c.response}},89865:(a,b,c)=>{c.d(b,{A1:()=>h,lR:()=>j,wO:()=>i,yj:()=>f,zL:()=>g});var d=c(87252);async function e(a,b){let c=a?.body?.getReader?.();if(!c)try{return(await a.text()).slice(0,b)}catch{return""}let d=new TextDecoder,e="",f=0;try{for(;f<b;){let{done:a,value:g}=await c.read();if(a)break;let h=g instanceof Uint8Array?g:new Uint8Array(g),i=b-f;if(e+=d.decode(h.subarray(0,i),{stream:h.byteLength<=i}),f+=Math.min(h.byteLength,i),h.byteLength>i){try{await c.cancel("upstream error body limit")}catch{}break}}return e+d.decode()}catch{return e}finally{try{c.releaseLock?.()}catch{}}}function f(a,b,c=null){let e;return new Response(JSON.stringify((e=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""}),{error:{message:b||d.O[a]||"An error occurred",type:e.type,code:e.code}})),{status:a,headers:{...c,"Content-Type":"application/json"}})}async function g(a,b=null){let c=await e(a,65536);if(b&&"function"==typeof b.parseError)try{let e=b.parseError(a,c);if(e&&"object"==typeof e){let b=e.message||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:e.status||a.status,message:b,resetsAtMs:e.resetsAtMs,rawBody:c}}}catch{}let f="";try{let a=JSON.parse(c);f="string"==typeof a?.error?.message?a.error.message:"string"==typeof a?.message?a.message:"string"==typeof a?.error_description?a.error_description:"string"==typeof a?.error?a.error:""}catch{f=c}let h=("string"==typeof f?f:"")||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:h,rawBody:c}}function h(a,b,c,d,e=null){let g=null;if("string"==typeof d&&d)try{JSON.parse(d),g=new Response(d,{status:a,headers:{...e,"Content-Type":"application/json"}})}catch{}return{success:!1,status:a,error:b,resetsAtMs:c,response:g||f(a,b,e)}}function i(a,b,c,d,e=null){let f=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1);return new Response(JSON.stringify({error:{message:`${b} (${d})`}}),{status:a,headers:{...Object.fromEntries(Object.entries(e||{}).filter(([a])=>"retry-after"!==a.toLowerCase())),"Content-Type":"application/json","Retry-After":String(f)}})}function j(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error",g=a.cause?.code,h=a.cause?.message,i=g||h?` (cause: ${[g,h].filter(Boolean).join(": ")})`:"";return`[${e}]: ${f}${i}`}}};
1
+ "use strict";exports.id=2348,exports.ids=[2348],exports.modules={66077:(a,b,c)=>{c.d(b,{G:()=>e});var d=c(23832);async function e({provider:a,model:b,connectionId:c},f){if(!c||"noauth"===c)return f();let g=!1,h=()=>{g||(g=!0,(0,d.uw)(b,a,c,!1))};(0,d.uw)(b,a,c,!0);try{let a=await f();if(a instanceof Response){if(!(a instanceof Response)||!a.body)return h(),a;let b=a.body.getReader();return new Response(new ReadableStream({async pull(a){try{let{done:c,value:d}=await b.read();c?(h(),a.close()):a.enqueue(d)}catch(b){h(),a.error(b)}},async cancel(a){try{await b.cancel(a)}finally{h()}}}),{status:a.status,statusText:a.statusText,headers:a.headers})}return h(),a}catch(a){throw h(),a}}},72348:(a,b,c)=>{c.d(b,{g:()=>F,s:()=>H});var d=c(67133),e=c(59353),f=c(38775),g=c(89865),h=c(60290),i=c(41029),j=c(18129),k=c(45350),l=c(46052);let m=new Set(["generations"]);function n(a,b){return{Accept:"application/json",...a.headers||{},...b?{Authorization:`Bearer ${b}`}:{}}}let o=/^projects\/[^/]+\/locations\/[^/]+\/publishers\/[^/]+\/models\/[^/]+\/operations\/[^/]+$/;async function p(a,b){let c=(0,i.Sc)(a?.apiKey),d=c?.project_id||a?.projectId||a?.providerSpecificData?.projectId,e=a?.providerSpecificData?.location||"us-central1";if(!d)return{error:"Vertex video requires a project_id — use Service Account JSON or set providerSpecificData.projectId"};let f=a?.accessToken;if(c){let a=await (0,i.pb)(c,b);if(!a?.accessToken)return{error:"Vertex video: failed to mint access token from service account JSON"};f=a.accessToken}return f?{token:f,projectId:d,location:e}:{error:"Vertex video requires Service Account JSON or an OAuth access token (raw API keys are not supported)"}}let q={openrouter:{buildRequest({config:a,action:b,requestId:c,rawBody:d,contentType:e,token:f}){let g=a.baseUrl.replace(/\/$/,"");return c?{method:"GET",url:`${g}/${encodeURIComponent(c)}`,headers:n(a,f)}:m.has(b)?e&&!e.includes("application/json")?{error:"OpenRouter video requires an application/json body"}:{method:"POST",url:g,headers:{...n(a,f),"Content-Type":"application/json"},body:d}:{error:`OpenRouter video supports 'generations' only (got '${b}')`}}},vertex:{async buildRequest({config:a,action:b,requestId:c,rawBody:d,contentType:e,credentials:f,log:g}){let h;if(e&&!e.includes("application/json"))return{error:"Vertex video requires an application/json body"};let i=await p(f,g);if(i.error)return{error:i.error};let{token:j,projectId:k,location:l}=i,m=(a.baseUrl||"https://aiplatform.googleapis.com").replace(/\/$/,""),n={Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${j}`};if(c){let a=function(a){let b=String(a??"");if(!b||b.length>1024||!/^[A-Za-z0-9_-]+$/.test(b))return null;let c=Buffer.from(b,"base64url").toString("utf8");return Buffer.from(c,"utf8").toString("base64url")!==b?null:o.test(c)?c:null}(c);return a?{method:"POST",url:`${m}/v1/${a.slice(0,a.indexOf("/operations/"))}:fetchPredictOperation`,headers:n,body:JSON.stringify({operationName:a})}:{error:"Invalid Vertex video job id"}}if("generations"!==b)return{error:`Vertex video supports 'generations' only (got '${b}')`};try{h=JSON.parse("string"==typeof d?d:d.toString("utf8"))}catch{return{error:"Invalid JSON body"}}return h.model?/^[A-Za-z0-9._-]+$/.test(h.model)?h.prompt||h.image||h.image_url?{method:"POST",url:`${m}/v1/projects/${k}/locations/${l}/publishers/google/models/${h.model}:predictLongRunning`,headers:n,body:JSON.stringify(function(a){let b={prompt:a.prompt},c=a.image??a.image_url;if(c&&"object"==typeof c)b.image=c;else if("string"==typeof c){let a=c.match(/^data:([^;]+);base64,(.*)$/s);b.image=a?{bytesBase64Encoded:a[2],mimeType:a[1]}:{gcsUri:c}}a.video&&"object"==typeof a.video&&(b.video=a.video);let d={};return null!=a.n&&(d.sampleCount=Number(a.n)),null!=a.duration&&(d.durationSeconds=Number(a.duration)),a.aspect_ratio&&(d.aspectRatio=a.aspect_ratio),a.resolution&&(d.resolution=a.resolution),null!=a.seed&&(d.seed=a.seed),a.negative_prompt&&(d.negativePrompt=a.negative_prompt),a.storage_uri&&(d.storageUri=a.storage_uri),null!=a.generate_audio&&(d.generateAudio=!!a.generate_audio),{instances:[b],...Object.keys(d).length?{parameters:d}:{}}}(h))}:{error:"Vertex video requires a prompt or an image"}:{error:"Invalid Vertex video model id"}:{error:"Vertex video requires a model (e.g. vertex/veo-3.1-generate-preview)"}},transformResponse:function(a){let b;if(!a?.name)return a;let c=(b=a.name,Buffer.from(b,"utf8").toString("base64url"));if(a.error)return{id:c,request_id:c,status:"failed",error:a.error};if(!a.done)return{id:c,request_id:c,status:"pending"};let d=(a.response?.videos||a.response?.generateVideoResponse?.generatedSamples||[]).map(a=>({url:a.gcsUri||a.video?.uri||a.uri||null,b64_json:a.bytesBase64Encoded||a.video?.bytesBase64Encoded||null,mime_type:a.mimeType||a.video?.mimeType||"video/mp4"}));return{id:c,request_id:c,status:"completed",video:d[0]||null,videos:d}}}},r=Number(process.env.VIDEO_FETCH_TIMEOUT_MS||12e4),s=new Set(["generations","edits","extensions"]);function t(a){return k.B$[a]?.videoConfig||null}function u(a,b=null){if(!a)return a;let c=String(a).replace(/Bearer\s+[A-Za-z0-9._~+/=-]{8,}/gi,"Bearer [redacted]");for(let a of["accessToken","refreshToken","apiKey"]){let d=b?.[a];"string"==typeof d&&d.length>=8&&(c=c.split(d).join("[redacted]"))}return c}async function v({provider:a,action:b=null,requestId:c=null,rawBody:d=null,contentType:e=null,idempotencyKey:f=null,credentials:m,signal:n,timeoutMs:o=r,log:p,onCredentialsRefreshed:w}){let x,y,z,A=t(a);if(!A)return(0,g.A1)(h.gx.BAD_REQUEST,`Provider '${a}' does not support video generation`);if(!c&&!s.has(b))return(0,g.A1)(h.gx.BAD_REQUEST,`Unknown video action: ${b}`);let{identity:B,format:C}=(y=k.xq[a]||{},{identity:(t(a)||{}).identity||y.identity||"openai-node",format:y.format||"openai"}),D=q[a]||null,E=(z="function"==typeof AbortSignal?.timeout?AbortSignal.timeout(o):null,n&&z&&"function"==typeof AbortSignal.any?AbortSignal.any([n,z]):n||z||void 0),F=(0,l.$6)(m),G=async()=>{let g,h,i=D?await D.buildRequest({config:A,action:b,requestId:c,rawBody:d,contentType:e,idempotencyKey:f,credentials:m,log:p,token:m?.accessToken||m?.apiKey}):{method:g=c?"GET":"POST",url:(h=A.baseUrl.replace(/\/$/,""),c?`${h}/${encodeURIComponent(c)}`:`${h}/${b}`),headers:function({token:a,contentType:b,idempotencyKey:c}){let d={Accept:"application/json"};return a&&(d.Authorization=`Bearer ${a}`),b&&(d["Content-Type"]=b),c&&(d["Idempotency-Key"]=c),d}({token:m?.accessToken||m?.apiKey,contentType:"POST"===g?e:null,idempotencyKey:"POST"===g?f:null}),body:"POST"===g?d:void 0};return i.error?{planError:i.error}:{response:await (0,l.Fm)(i.url,{method:i.method,headers:i.headers,body:i.body,signal:E,identity:B,format:C,provider:a},F)}},H=c?"GET":"POST";try{let b=await G();if(b.planError)return(0,g.A1)(h.gx.BAD_REQUEST,`[${a}] ${b.planError}`);x=b.response}catch(b){if(b?.name==="AbortError"||b?.name==="TimeoutError")return(0,g.A1)(h.gx.REQUEST_TIMEOUT,`[${a}] video ${H} aborted: ${b.message}`);return(0,g.A1)(h.gx.BAD_GATEWAY,u(`[${a}] video upstream fetch failed: ${b.message}`,m))}if((x.status===h.gx.UNAUTHORIZED||x.status===h.gx.FORBIDDEN)&&m?.refreshToken){let b=null;try{b=await (0,j.MF)(a,m,()=>(0,i.$B)(a,m,p))}catch(b){p?.warn?.("TOKEN",`${a} | video refresh error: ${u(b.message,m)}`)}if(b?.accessToken){p?.info?.("TOKEN",`${a.toUpperCase()} | refreshed for video ${H}`),Object.assign(m,b),w&&await w(b);try{await x.body?.cancel?.()}catch{}try{let b=await G();if(b.planError)return(0,g.A1)(h.gx.BAD_REQUEST,`[${a}] ${b.planError}`);x=b.response}catch(b){return(0,g.A1)(h.gx.BAD_GATEWAY,u(`[${a}] video retry after refresh failed: ${b.message}`,m))}}else p?.warn?.("TOKEN",`${a.toUpperCase()} | video refresh failed — account needs re-auth`)}let I=await x.text().catch(()=>"");if(!x.ok){let b=u(I||`HTTP ${x.status}`,m);return(0,g.A1)(x.status,`[${a}] ${b.slice(0,2e3)}`)}let J=I,K=x.headers.get("content-type")||"application/json";if(D?.transformResponse)try{J=JSON.stringify(D.transformResponse(JSON.parse(I))),K="application/json"}catch{}return{success:!0,response:new Response(J,{status:x.status,headers:{"Content-Type":K}})}}var w=c(67828),x=c(7803),y=c(78102),z=c(66077);let A=new Set([h.gx.UNAUTHORIZED,h.gx.FORBIDDEN,h.gx.RATE_LIMITED]);async function B(a,b={kind:"model",id:null}){let c=await (0,e.mt)();return(0,y.DM)({settings:c,rawKey:(0,d.Tr)(a),request:a,target:b})}async function C(a){let b=a.headers.get("content-type")||"";if(b.includes("application/json")){let c,d=await a.text();try{c=JSON.parse(d)}catch{return{error:(0,g.yj)(h.gx.BAD_REQUEST,"Invalid JSON body")}}return{raw:d,parsed:c,contentType:b}}return{raw:Buffer.from(await a.arrayBuffer()),parsed:null,contentType:b}}async function D(a){if(!a?.model)return{provider:"xai",model:null};let b=String(a.model),c=await (0,f.getModelInfo)(b);return c.provider?t(c.provider)?{provider:c.provider,model:c.model}:b.includes("/")?{error:(0,g.yj)(h.gx.BAD_REQUEST,`Provider '${c.provider}' does not support video generation`)}:{provider:"xai",model:b}:{error:(0,g.yj)(h.gx.BAD_REQUEST,"Combos are not supported for video generation")}}function E(a,b){if(!b)return a;let c=new Headers(a.headers);return c.set("x-switchboard-connection-id",String(b)),new Response(a.body,{status:a.status,headers:c})}async function F(a,b){let c=await B(a,null);return c.ok?(0,y.yH)(c.lease,async()=>{let e=await C(a);if(e.error)return e.error;let f=await D(e.parsed);if(f.error)return f.error;let{provider:i,model:j}=f,k=await (0,y.LI)(c.clientKey,{resolved:!0,id:e.parsed?.model?String(e.parsed.model):"",provider:i,model:j});if(k)return k.response;let l=e.raw;e.parsed&&j&&e.parsed.model!==j&&(l=JSON.stringify({...e.parsed,model:j}));let m=a.headers.get("x-connection-id")||null,n="1"===a.headers.get("x-switchboard-strict-connection"),o=a.headers.get("idempotency-key")||null,{clientKeyId:p}=c,q=new Set,r=null,s=null;for(;;){let c=await (0,d.getProviderCredentials)(i,q,j,{preferredConnectionId:m,strictPreferredConnection:n,clientKeyId:p});if(!c||c.allRateLimited){if(c?.allRateLimited){let a=r||c.lastError||"Unavailable",b=s||Number(c.lastErrorCode)||h.gx.SERVICE_UNAVAILABLE;return(0,g.wO)(b,`[${i}/${j||"video"}] ${a}`,c.retryAfter,c.retryAfterHuman)}if(0===q.size)return(0,g.yj)(h.gx.BAD_REQUEST,`No credentials for provider: ${i}`);return(0,g.yj)(s||h.gx.SERVICE_UNAVAILABLE,r||"All accounts unavailable")}let f=await (0,z.G)({provider:i,model:j,connectionId:c.connectionId},async()=>{let f=await (0,w.eU)(i,c),g=await v({provider:i,action:b,rawBody:l,contentType:e.contentType||null,idempotencyKey:o,credentials:f,signal:a.signal,log:x,onCredentialsRefreshed:async a=>{await (0,w.vN)(c.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})}});if(g.success)return await (0,d.Pt)(c.connectionId,c,j),x.info("VIDEO",`${i.toUpperCase()} | ${b} accepted (connection ${c.connectionId})`),{finalResponse:E(g.response,c.connectionId)};let{shouldFallback:h}=await (0,d.vk)(c.connectionId,g.status,u(g.error,f),i,j);return h&&A.has(g.status)?{retry:!0,error:g.error,status:g.status}:{finalResponse:g.response}});if(f.finalResponse)return f.finalResponse;q.add(c.connectionId),r=f.error,s=f.status}}):c.response}async function G(a,b){if(b){let a=await (0,e.Mc)(b).catch(()=>null);if(a?.provider&&t(a.provider))return a.provider}let c=new URL(a.url).searchParams.get("provider");return c&&t(c)?c:"xai"}async function H(a,b){let c=await B(a);return c.ok?(0,y.yH)(c.lease,async()=>{if(!b)return(0,g.yj)(h.gx.BAD_REQUEST,"Missing video request id");let e=a.headers.get("x-connection-id")||null,f=await G(a,e),{clientKeyId:i}=c,j=await (0,d.getProviderCredentials)(f,null,null,{preferredConnectionId:e,clientKeyId:i});if(!j||j.allRateLimited)return(0,g.yj)(h.gx.BAD_REQUEST,`No credentials for provider: ${f}`);let k=await (0,w.eU)(f,j),l=await v({provider:f,requestId:b,credentials:k,signal:a.signal,log:x,onCredentialsRefreshed:async a=>{await (0,w.vN)(j.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})}});return l.success?(await (0,d.Pt)(j.connectionId,j,null),E(l.response,j.connectionId)):(await (0,d.vk)(j.connectionId,l.status,u(l.error,k),f,null),l.response)}):c.response}},89865:(a,b,c)=>{c.d(b,{A1:()=>h,lR:()=>j,wO:()=>i,yj:()=>f,zL:()=>g});var d=c(87252);async function e(a,b){let c=a?.body?.getReader?.();if(!c)try{return(await a.text()).slice(0,b)}catch{return""}let d=new TextDecoder,e="",f=0;try{for(;f<b;){let{done:a,value:g}=await c.read();if(a)break;let h=g instanceof Uint8Array?g:new Uint8Array(g),i=b-f;if(e+=d.decode(h.subarray(0,i),{stream:h.byteLength<=i}),f+=Math.min(h.byteLength,i),h.byteLength>i){try{await c.cancel("upstream error body limit")}catch{}break}}return e+d.decode()}catch{return e}finally{try{c.releaseLock?.()}catch{}}}function f(a,b,c=null){let e;return new Response(JSON.stringify((e=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""}),{error:{message:b||d.O[a]||"An error occurred",type:e.type,code:e.code}})),{status:a,headers:{...c,"Content-Type":"application/json"}})}async function g(a,b=null){let c=await e(a,65536);if(b&&"function"==typeof b.parseError)try{let e=b.parseError(a,c);if(e&&"object"==typeof e){let b=e.message||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:e.status||a.status,message:b,resetsAtMs:e.resetsAtMs,rawBody:c}}}catch{}let f="";try{let a=JSON.parse(c);f="string"==typeof a?.error?.message?a.error.message:"string"==typeof a?.message?a.message:"string"==typeof a?.error_description?a.error_description:"string"==typeof a?.error?a.error:""}catch{f=c}let h=("string"==typeof f?f:"")||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:h,rawBody:c}}function h(a,b,c,d,e=null){let g=null;if("string"==typeof d&&d)try{JSON.parse(d),g=new Response(d,{status:a,headers:{...e,"Content-Type":"application/json"}})}catch{}return{success:!1,status:a,error:b,resetsAtMs:c,response:g||f(a,b,e)}}function i(a,b,c,d,e=null){let f=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1);return new Response(JSON.stringify({error:{message:`${b} (${d})`}}),{status:a,headers:{...Object.fromEntries(Object.entries(e||{}).filter(([a])=>"retry-after"!==a.toLowerCase())),"Content-Type":"application/json","Retry-After":String(f)}})}function j(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error",g=a.cause?.code,h=a.cause?.message,i=g||h?` (cause: ${[g,h].filter(Boolean).join(": ")})`:"";return`[${e}]: ${f}${i}`}}};
@@ -1 +1 @@
1
- "use strict";exports.id=2574,exports.ids=[2574],exports.modules={2574:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>z,OPTIONS:()=>x,buildClaudeFullCatalogDiscoveryModels:()=>y,buildModelsList:()=>w});var d=c(81329),e=c(40615),f=c(59353),g=c(27811),h=c(13474),i=c(16655),j=c(19617),k=c(38955),l=c(21161),m=c(9155),n=c(43904),o=c(7071),p=c(60290),q=c(32524),r=c(68393);async function s(a,b){let c,d;if(b?.aborted)return null;try{let e=await Promise.race([(0,l.U)(a),new Promise(a=>{c=setTimeout(()=>a(null),1e4),d=()=>a(null),b?.addEventListener?.("abort",d,{once:!0})})]);return e&&"models"in e?e:null}catch(b){return console.log(`Live model fetch failed for ${a?.provider}: ${b?.message||b}`),null}finally{clearTimeout(c),d&&b?.removeEventListener?.("abort",d)}}let t={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText",video:"video"};async function u(a,b=null){if(!a?.apiKey)return null;let c="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!c)return null;let d=`${c}/models`,f={"Content-Type":"application/json",[j.M]:"1"};if((0,e.mq)(a.provider))f.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return null;d.endsWith("/messages/models")?d=d.slice(0,-9):d.endsWith("/messages")&&(d=`${d.slice(0,-9)}/models`),f["x-api-key"]=a.apiKey,f["anthropic-version"]="2023-06-01",f.Authorization=`Bearer ${a.apiKey}`}try{let a=new AbortController,c=setTimeout(()=>a.abort(),5e3);b&&"function"!=typeof AbortSignal.any&&b.addEventListener("abort",()=>{clearTimeout(c),a.abort(b.reason)},{once:!0});let e=b&&"function"==typeof AbortSignal.any?AbortSignal.any([b,a.signal]):a.signal;try{let a=await fetch(d,{method:"GET",headers:f,cache:"no-store",signal:e});if(!a.ok)return null;let b=await a.json(),c=(a=>{if(Array.isArray(a))return a;for(let b of["data","models","results"])if(Array.isArray(a?.[b]))return a[b];return null})(b);if(!c)return null;let g=Array.from(new Set(c.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim()))),h=new Map;for(let a of c){let b=a?.id||a?.name||a?.model;"string"==typeof b&&""!==b.trim()&&a&&"object"==typeof a&&a.capabilities&&"object"==typeof a.capabilities&&h.set(b.trim(),a.capabilities)}return c.length>0&&0===g.length?null:{ids:g,capsById:h}}finally{clearTimeout(c)}}catch{return null}}function v(a,b){let c=e.Q2[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}async function w(a,{signal:b=null,skipCompatibleDiscovery:c=!1}={}){let g=[],h=!1;try{g=await (0,f.getProviderConnections)()}catch(a){h=!0,console.log("Could not fetch providers, returning all models")}let j=g.filter(a=>!1!==a.isActive),l=[];try{l=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let q=[];try{q=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let x={};try{x=await (0,f.OM)()}catch(a){console.log("Could not fetch model aliases")}let y={};try{y=await (0,i.vF)()}catch(a){console.log("Could not fetch disabled models")}let z=new Map(Object.entries(y).map(([a,b])=>[a,(0,k.Iz)(b,a)])),A=(a,b)=>{let c=(0,e.rs)(a);return[...new Set([a,c,(0,e.wG)(c),d.Xg[c]].filter(Boolean))].some(a=>{let c=z.get(a);return!!c&&(0,k.uJ)(c,b,a)})},B=new Map;for(let a of j){if(b?.aborted)break;B.has(a.provider)||B.set(a.provider,a)}let C=new Map;if(!c){let a=Array.from(B.entries()).filter(([a])=>(0,e.mq)(a)||(0,e.gb)(a));await Promise.all(a.map(async([a,c])=>{C.set(a,await u(c,b))}))}let D=new Map,E=Array.from(B.entries()).filter(([b])=>v(b,a)&&!(0,e.mq)(b)&&!(0,e.gb)(b));for(let[a,c]of(await Promise.all(E.map(async([a,c])=>{let d=await s(c,b);d&&D.set(a,d)})),E))if(("qoder"===a||"qoder-cn"===a)&&D.has(a))try{let b=await (0,m.EV)({provider:a,accessToken:c.accessToken,apiKey:c.apiKey,refreshToken:c.refreshToken,email:c.email,displayName:c.displayName,providerSpecificData:c.providerSpecificData||{}}),d=(0,m.So)(b);d.length&&D.set(a,{...D.get(a),models:d.map(a=>({id:a.id,name:a.name}))})}catch{}let F=[],G=a=>{if("string"!=typeof a)return!1;let b=a.indexOf("/");if(b<=0)return!1;let c=a.slice(0,b),d=(0,e.rs)(c);return!!d&&!!e.Q2[d]&&!B.has(d)},H=!h;for(let b of l){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;if(H){let a=Array.isArray(b.models)?b.models:[];if(a.length>0&&a.every(G))continue}let c={id:b.name,object:"model",owned_by:"combo",name:b.name};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),F.push(c)}if(a.includes("llm")){for(let[a,b]of Object.entries(x||{}))if((0,r.Ng)(a)&&!(H&&G(b))){if("string"==typeof b&&b.includes("/")){let a=b.indexOf("/"),c=b.slice(0,a),d=b.slice(a+1),e=j.find(a=>a.providerSpecificData?.prefix===c);if(A(c,d)||e&&A(e.provider,d))continue}F.push({id:a,object:"model",owned_by:"switchboard-alias",display_name:`Switchboard \xb7 ${a}`})}}if(h){for(let[b,c]of Object.entries(d.PROVIDER_MODELS))if(v((0,e.rs)(b),a))for(let d of c)a.includes(function(a){let b=a?.kind||a?.type;return b&&t[b]||"llm"}(d))&&(A(b,d.id)||F.push({id:`${b}/${d.id}`,object:"model",owned_by:b}));for(let b of q){if(!b?.id||b.type&&"llm"!==b.type||!a.includes("llm"))continue;let c=b.providerAlias;if(!c)continue;let d=String(b.id).trim();!d||A(c,d)||F.push({id:`${c}/${d}`,object:"model",owned_by:c})}}else for(let[c,f]of B.entries()){if(b?.aborted)break;if(!v(c,a))continue;let g=d.Xg[c]||c,h=(f?.providerSpecificData?.prefix||(0,e.wG)(c)||g).trim(),i=(0,e.mq)(c)||(0,e.gb)(c),j=C.get(c),l=j&&j.capsById instanceof Map?j.capsById:null,m=(0,k.BA)({providerId:c,staticModels:i?[]:d.PROVIDER_MODELS[g]||[],discoveredModels:D.get(c)?.models||[],customModels:q,modelAliases:x,isCompatible:i}),p=a=>{for(let b of[h,g,c])if(a.startsWith(`${b}/`))return a.slice(b.length+1);return a};for(let b of m){let d=p(b.id);if(!d)continue;let e="custom"===b.source?b.kind:null,f="live"===b.source?b.kind:null,i=b.kind,j="imageToText"===i&&a.includes("llm");if(!a.includes(i)&&!j||b.storageAlias&&(A(b.storageAlias,b.id)||A(b.storageAlias,d))||A(h,d)||A(g,d))continue;let k={id:`${h}/${d}`,object:"model",owned_by:h},m=function(a,b,c,d,e){if(!a)return null;for(let f of[e,`${b}/${e}`,`${c}/${e}`,`${d}/${e}`])if(a.has(f))return a.get(f);return null}(l,h,g,c,d),q=(0,n.a0)(e||f),r=b.capabilities||(m||q?{...q||{},...m||{}}:null),s=(0,o.sM)(c,d),t=(0,n.k1)(d)||s,u=(0,n.hX)(r,t),v=u?{...r||{},...u}:r;v&&(k.capabilities=v),F.push(k)}let r=e.Q2[c];a.includes("webSearch")&&r?.searchConfig&&F.push({id:`${h}/search`,object:"model",kind:"webSearch",owned_by:h}),a.includes("webFetch")&&r?.fetchConfig&&F.push({id:`${h}/fetch`,object:"model",kind:"webFetch",owned_by:h})}let I=[],J=new Set;for(let a of F)!a?.id||J.has(a.id)||(J.add(a.id),"number"!=typeof a.created&&(a.created=0),I.push(a));let K=new Map((Array.isArray(l)?l:[]).filter(a=>a&&"string"==typeof a.name).map(a=>[a.name,a])),L=new Map(I.map(a=>[a.id,a])),M=(a,b=new Set,c=0)=>{if("string"!=typeof a||!a||b.has(a)||b.size>32)return null;b.add(a);let d=null,e=K.get(a);if(e){let a=c+1;if(a<=p.wg){let c=Array.isArray(e.models)?e.models:[];d=(0,n.G6)(c.map(c=>M(c,b,a)))}}else if(x&&Object.hasOwn(x,a))d=M(x[a],b,c);else{let b=L.get(a);d=b?.capabilities?.effort?{effort:b.capabilities.effort}:(a=>{let[b,...c]=a.split("/"),d=c.join("/")||b;return(0,n.k1)(a)||(0,o.sM)(b,d)})(a)}return b.delete(a),d};for(let a of I){if(a.capabilities?.effort)continue;let b=null;if("combo"===a.owned_by){let c=K.get(a.id);if(!c||"llm"!==(c.kind||"llm"))continue;b=M(a.id)}else"switchboard-alias"===a.owned_by&&(b=M(a.id));b?.effort&&(a.capabilities={...a.capabilities||{},effort:b.effort})}return I}async function x(){return new Response(null,{headers:{"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}function y(a,b={}){let c=(0,r.OU)(b,a),d=(0,q.HL)(a);return a.map(a=>({id:(0,r.El)(a),object:"model",created:0,owned_by:"switchboard-catalog",display_name:c[a]||(0,q.u0)(a,d),description:a}))}async function z(a){return(0,h.j)(a,async b=>{try{if((0,r.at)(a?.headers)){let c=(0,r._1)(a?.headers),d=await (0,g.j)(b,y(c,(0,r.LU)(a?.headers)));return Response.json({object:"list",data:d})}let c=await w(["llm"],{signal:a?.signal,skipCompatibleDiscovery:(0,j.k)(a)}),d=await (0,g.j)(b,c);return Response.json({object:"list",data:d},{})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:"Failed to fetch models",type:"server_error"}},{status:500})}})}},7071:(a,b,c)=>{c.d(b,{sM:()=>s,QX:()=>o,kl:()=>r});var d=c(43904),e=c(84646),f=c(66755);let g={glm:["zai","zai-coding-plan"],zai:["zai","zai-coding-plan"],"z-ai":["zai","zai-coding-plan"],opencode:["opencode","opencode-go"],"opencode-go":["opencode-go","opencode"]};var h=c(29485);let i=["none","low","medium","high"],j=["none","thinking"],k=["none","low","medium","high","xhigh","max"],l={openai:["none","minimal","low","medium","high","xhigh"],"claude-adaptive":k,"claude-budget":k,"gemini-level":["minimal","low","medium","high"],"gemini-budget":i,zai:j,qwen:i,kimi:["none","low","medium","high","max"],deepseek:["none","high","max"],commandcode:["none","low","medium","high","xhigh","max"],minimax:j,hunyuan:i,step:i,nous:i},m=["none","low","medium","high","max"],n=[{pattern:"*gemini-4*",levels:["low","medium","high"]},{pattern:"*claude*4.6*",levels:m},{pattern:"*claude*4-6*",levels:m},{pattern:"*codex*",levels:["low","medium","high","xhigh"]},{provider:"opencode",pattern:"*mimo*v2.6*",levels:["none","minimal","low","medium","high","xhigh","max"]},{provider:"alicode",pattern:"*deepseek-v4.*",levels:["none","low","medium","high","xhigh","max"]},{provider:"alicode-intl",pattern:"*deepseek-v4.*",levels:["none","low","medium","high","xhigh","max"]},{provider:"codebuddy-cn",pattern:"glm-5.3",levels:["low","high","max"]},{provider:"codebuddy-cn",pattern:"glm-5.3-flash",levels:["low","high","max"]},{provider:"codebuddy-cn",pattern:"glm-5.2",levels:["high","xhigh"]},{provider:"codebuddy-cn",pattern:"deepseek-v4-pro",levels:["low","high","xhigh"]},{provider:"codebuddy-cn",pattern:"deepseek-v4.1-flash",levels:["low","high","max"]},{pattern:"*deepseek-v4.1-flash-free*",levels:["low","high","max"]},{provider:"codebuddy-cn",pattern:"kimi-k2.8-preview",levels:["low","medium","high"]},{provider:"codebuddy-cn",pattern:"hy3",levels:["low","high"]},{provider:"codebuddy-cn",pattern:"hy4-preview",levels:["high"]},{provider:"minimax-code",pattern:"MiniMax-M3.1*",levels:["low","medium","high","xhigh","max"]},{provider:"minimax-code",pattern:"MiniMax-M3",levels:["none","high"]},{provider:"minimax-code-global",pattern:"MiniMax-M3.1*",levels:["low","medium","high","xhigh","max"]},{provider:"minimax-code-global",pattern:"MiniMax-M3",levels:["none","high"]}];function o(a,b){return Array.isArray(a)?a.includes(b)?b:"max"===b&&a.includes("xhigh")?"max":null:null}let p=/(?:^|\/)gpt-(?:5\.6|6)(?:[.-]|$)/i,q=["none","minimal","low","medium","high","xhigh","max"];function r(a,b){let c=(0,d.nl)(a,b);if(!c.reasoning)return null;let k=String(b||"").replace(/\([^()]+\)\s*$/,""),m="codex"===a?(0,h.SM)("cx").find(a=>a.id===k)?.thinkingLevels:null,o=n.find(c=>(!c.provider||c.provider===a)&&(0,e.gH)(c.pattern,b)),r=m||o?.levels||(String(a||"").startsWith("openai-compatible-")&&p.test(k)?q:null)||null,s=null;if(!r){let d=l[c.thinkingFormat]||i;d===j&&(s=function(a,b){try{return function(a,b,c){let d;if(!a||"object"!=typeof a||!c)return null;let e=(d=String(c||""),String((d.includes("/")?d.split("/").pop():d)||"").split(":")[0].toLowerCase());if(!e)return null;let f=String(c).toLowerCase(),h=String(b||"").toLowerCase();for(let b of[h,...g[h]||[]].filter(Boolean)){if(a[`${b}/${f}`])return a[`${b}/${f}`];if(a[`${b}/${e}`])return a[`${b}/${e}`]}return a[e]||a[f]||null}((0,f.CQ)(),a,b)}catch{return null}}(a,b),Array.isArray(s?.levels)&&s.levels.length>0&&(r=["none",...s.levels])),r||(r=d)}return(!1===c.thinkingCanDisable||s?.mandatory===!0)&&(r=r.filter(a=>"none"!==a)),r}function s(a,b){let c=r(a,b);if(!Array.isArray(c)||0===c.length)return null;let d=c.filter(a=>"none"!==a&&"thinking"!==a);if(0===d.length)return null;let e={supported:!0};for(let a of d)e[a]={supported:!0};return{effort:e}}},13474:(a,b,c)=>{c.d(b,{j:()=>g});var d=c(59353),e=c(27811),f=c(78102);async function g(a,b){let c=(0,e.Wl)(a);if(!c)return b(null);let g=await (0,f.DM)({settings:await (0,d.mt)(),rawKey:c,request:a});return g.ok?(0,f.yH)(g.lease,()=>b((0,e.xP)(g.clientKey))):g.response}},16655:(a,b,c)=>{c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(59353)},27811:(a,b,c)=>{c.d(b,{K2:()=>q,Wl:()=>j,j:()=>u,ji:()=>t,sH:()=>s,xP:()=>k});var d=c(59353),e=c(38775),f=c(40615),g=c(1486);let h=a=>String(a).toLowerCase(),i=(a,b)=>h(`${a}/${b}`);function j(a){let b=a?.headers;if(!b?.get)return null;let c=(0,g.d)(b);if(c)return c;try{return new URL(a.url).searchParams.get("key")||null}catch{return null}}function k(a){let b=[...Array.isArray(a?.allowedModels)?a.allowedModels:[],...Array.isArray(a?.allowedCombos)?a.allowedCombos:[]].map(a=>String(a??"").trim()).filter(Boolean);return 0===b.length?null:{keyId:a.id,keyName:a.name||a.id,allow:b,_sets:null}}function l(a,b){if(!b||"string"!=typeof b)return!1;let c=b.trim().toLowerCase();if(!c.includes("*"))return!1;if("*"===c)return!0;let d=String(a||"").trim().toLowerCase(),e=c.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return RegExp(`^${e}$`,"i").test(d)}function m(a,b,c){if(!Array.isArray(c)||0===c.length)return!1;for(let d of c){if(l(b,d)||l(a,d))return!0;let c=/^([^/*]+)\/\*$/.exec(String(d||"").trim().toLowerCase());if(c){let b=(0,f.rs)(c[1]);if(b&&a.startsWith(`${b}/`))return!0}}return!1}function n(a,b,c){for(let d of a.deny){if(l(b,d)||l(c,d))return!0;let a=String(b||"").toLowerCase(),e=a.includes("/")?a.split("/").slice(1).join("/"):a;if(!d.includes("*")&&(a.includes(d)||e.includes(d)||String(c||"").toLowerCase().includes(d)))return!0}return!1}async function o(a){if(a._sets)return a._sets;let b=new Set((await (0,d.Uv)()).map(a=>h(a.name))),c=new Set,g=new Set,j=new Set,k=[],l=0;for(let d of a.allow){let a=String(d??"").trim();if((a.startsWith("!")||a.startsWith("-"))&&a.length>1){k.push(a.slice(1).toLowerCase());continue}l+=1;let m=h(d);if(b.has(m)){c.add(m);continue}let n=await (0,e.getModelInfo)(d);n?.provider&&n.model&&g.add(i(n.provider,n.model)),d.includes("/")||j.add(h((0,f.rs)(d)))}return a._sets={combos:c,models:g,providers:j,deny:k,openExceptDenied:k.length>0&&0===l},a._sets}async function p(a,b){let c=await o(a),d=await (0,e.getModelInfo)(b);if(!d?.provider)return c.combos.has(h(b))||c.openExceptDenied;let f=i(d.provider,d.model);return!n(c,b,f)&&(!!(c.openExceptDenied||c.models.has(f))||m(f,b,a.allow))}async function q(a,b){if(!a)return!0;if("string"!=typeof b||!b)return!1;let c=await o(a),d=await (0,e.getComboModels)(b);return d?!n(c,b,b)&&!!(c.combos.has(h(b))||c.openExceptDenied||m(b,b,a.allow))&&!await r(c,d,new Set([b])):await p(a,b)}async function r(a,b,c,d=!1){for(let g of b){if("string"!=typeof g||c.has(g)||n(a,g,g))return!0;let b=await (0,e.getComboModels)(g);if(b){if(await r(a,b,new Set([...c,g]),d))return!0}else if(d){if(n(a,g,(0,f.rs)(g)))return!0}else{let b=await (0,e.getModelInfo)(g);if(!b?.provider||!b.model||n(a,g,i(b.provider,b.model)))return!0}}return!1}async function s(a,b,c,d){if(!a)return!0;let e=b||(c?`${c}/${d??""}`:"");if(!c||!d)return!1;let f=await o(a),g=i(c,d);return!n(f,e,g)&&(!!(f.models.has(g)||m(g,e,a.allow))||!!f.openExceptDenied)}async function t(a,b,c){if(!a)return!0;if("string"!=typeof b||!b)return!1;let d=await o(a),e=h((0,f.rs)(b));return!n(d,b,e)&&(c?!!(d.combos.has(h(b))||d.openExceptDenied||m(b,b,a.allow))&&!await r(d,c,new Set([b]),!0):d.providers.has(e)||d.openExceptDenied||m(e,b,a.allow))}async function u(a,b){if(!a||!Array.isArray(b))return b;let c=await o(a),d=[];for(let f of b){if(!f?.id)continue;if("combo"===f.owned_by){await q(a,f.id)&&d.push(f);continue}let b=await (0,e.getModelInfo)(f.id);if(!b?.provider)continue;if("webSearch"===f.kind||"webFetch"===f.kind){!n(c,f.id,b.provider)&&(c.providers.has(h(b.provider))||c.openExceptDenied||m(f.id,f.id,a.allow))&&d.push(f);continue}let g=i(b.provider,b.model);!n(c,f.id,g)&&(c.models.has(g)||c.openExceptDenied||m(g,f.id,a.allow))&&d.push(f)}return d}},32524:(a,b,c)=>{c.d(b,{HL:()=>i,pD:()=>h,u0:()=>j});let d=Object.freeze({"lite-llm":"llm",litellm:"llm"}),e=["opus","sonnet","haiku","fable","gemini","gpt","glm","deepseek","composer","kimi","qwen"],f=[{pattern:/ap-southeast|low-carbon-apac|\bapac\b/i,tag:"apac"},{pattern:/eu-west|europe|\beu\b/i,tag:"eu"},{pattern:/us-east|us-west|\bus\b/i,tag:"us"}],g=["bedrock","vertex","azure","openai"];function h(a){var b;let c,h,i,j,k,l,m,n=String(a||"").trim();if(!n)return"";let o=n.indexOf("/");if(o<0)return n;let p=d[c=String(n.slice(0,o)||"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-+/g,"-")]||c.slice(0,10),q=n.slice(o+1).split("/").filter(Boolean),r=(h=q.join("/").toLowerCase(),i=e.find(a=>h.includes(a))||null,j=f.find(a=>a.pattern.test(h))?.tag||null,k=g.find(a=>h.includes(a))||null,l=h.match(/\b(\d+m)\b/i)?.[1]?.toLowerCase()||null,m=(b=i?h.match(RegExp(`${i}[-._]?(\\d+(?:[._-]\\d+)*)`,"i"))?.[1]:null)?b.replace(/[._-]/g,"."):null,{family:i,region:j,infra:k,variant:l,version:m}),s=[p];if(r.region&&s.push(r.region),r.infra&&s.push(r.infra),r.family){let a=r.variant?`${r.family} ${r.variant}`:r.version?`${r.family} ${r.version}`:r.family;s.push(a)}else if(q.length>0){let a=q[q.length-1].replace(/^anthropic\./i,"").replace(/[._]/g," ").trim();a&&s.push(a.slice(0,24))}return s.join(" | ")}function i(a){let b=a.map(a=>String(a||"").trim()).filter(Boolean).map(a=>({modelId:a,base:h(a)})),c=new Map;for(let a of b){let b=c.get(a.base)||[];b.push(a.modelId),c.set(a.base,b)}let d=new Map;for(let[a,b]of c.entries()){if(1===b.length){d.set(b[0],a);continue}let c=new Set;b.forEach((b,e)=>{let f=`${a} | ${function(a,b){let c=String(a||"").split("/").filter(Boolean);return c.length>=3?c[1].replace(/[._-]/g," ").trim().slice(0,20):2===c.length?c[1].replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20):(c[c.length-1]||`model-${b+1}`).replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20)||String(b+1)}(b,e)}`,g=2;for(;c.has(f);){let d=b.split("/").filter(Boolean).pop()||`alt-${g}`;f=`${a} | ${d.replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20)}`,c.has(f)&&(f=`${a} | ${e+1}`),g+=1}c.add(f),d.set(b,f)})}return d}function j(a,b){let c=String(a||"").trim();return c?b?.get(c)||h(c):""}},38955:(a,b,c)=>{c.d(b,{BA:()=>k,Iz:()=>i,uJ:()=>j});var d=c(65089),e=c(4489),f=c(40615),g=c(29485);function h(a){return(0,e.ki)(a?.kind||a?.type||"llm")}function i(a,b=""){return new Set((Array.isArray(a)?a:[]).map(a=>(0,d.v)(a,b)).filter(Boolean))}function j(a,b,c=""){return a.has((0,d.v)(b,c))}function k({providerId:a,staticModels:b=[],discoveredModels:c=[],customModels:d=[],modelAliases:e={},isCompatible:i=!1}){let j=i?a:(0,f.wG)(a),l=new Map;if(!i){for(let a of b)a?.id&&l.set(a.id,{...a,source:"static"});for(let a of c){let b="string"==typeof a?a:a?.id;if(!b)continue;let c="string"==typeof a?{id:b}:a;l.set(b,{...l.get(b),...c,id:b,source:"live"})}}let m=[];for(let a of l.values())m.push({id:a.id,kind:h(a),source:a.source,...a.capabilities?{capabilities:a.capabilities}:{},storageAlias:j});for(let a of function({customModels:a=[],modelAliases:b={},providerAlias:c,builtInModels:d=[],type:e="llm",includeLegacyAliases:i=!0,legacyStorageAliases:j=[]}){let k=new Set(d.map(a=>a.id)),l=new Set,m=[],n=new Set([c,...j.filter(a=>"string"==typeof a&&a&&a!==c)]),o=c?f.js[c]:null;o&&(n.add(o),g.Xg[o]&&n.add(g.Xg[o]));let p=new Set(a.filter(a=>a?.providerAlias===c).map(a=>a?.id));for(let b of a){if(!b?.id||!n.has(b.providerAlias)||b.providerAlias!==c&&p.has(b.id))continue;let a=h(b);if(e&&a!==e||k.has(b.id))continue;let d=`${c}/${b.id}`;l.has(d)||(l.add(d),m.push({id:b.id,name:b.name||b.id,fullModel:d,source:"custom",type:a}))}if(!i)return m;let q=`${c}/`;for(let[a,c]of Object.entries(b||{})){if("string"!=typeof c||!c.startsWith(q))continue;let b=c.slice(q.length);!b||k.has(b)||l.has(c)||(l.add(c),m.push({id:b,alias:a,fullModel:c,source:"legacyAlias",type:e||"llm"}))}return m}({customModels:d,modelAliases:e,providerAlias:j,builtInModels:[...l.values()],type:null}))m.push({id:a.id,kind:a.type||"llm",source:a.source,storageAlias:j});return m}},78102:(a,b,c)=>{c.d(b,{DM:()=>m,LI:()=>j,yH:()=>n});var d=c(59353),e=c(68658),f=c(41460),g=c(27811);function h(){return global._clientKeyPolicyState}function i(a,b){if(!a)return!0;let c=(0,g.xP)(b);return!c||(a.resolved?(0,g.sH)(c,a.id,a.provider,a.model):"provider"===a.role?(0,g.ji)(c,a.id,a.comboModels||null):(0,g.K2)(c,a.id))}async function j(a,b){return await i(b,a)?null:k(403,"client_key_target_not_allowed")}function k(a,b,c=null,d=null){let e={"content-type":"application/json"};return null!=c&&(e["retry-after"]=String(c)),{ok:!1,response:new Response(JSON.stringify({error:{message:d||"API key policy rejected this request",type:"client_key_policy_error",code:b}}),{status:a,headers:e})}}function l(a){return{ok:!0,mode:a,clientKey:null,clientKeyId:null,lease:null}}async function m({settings:a,rawKey:b,request:c,target:g}){if(c&&(0,e.v5)(c))return l("local");if(c)try{if(await (0,f.gN)(c))return l("cli")}catch{}if(!b)return a?.requireApiKey?k(401,"missing_api_key"):l("local");let j=await (0,d.PW)(b,{includeInactive:!0});if(!j)return a?.requireApiKey?k(401,"invalid_api_key"):l("local");if(!1===j.isActive)return k(401,"client_key_paused");let n=Date.now();if(j.expiresAt&&new Date(j.expiresAt).getTime()<=n)return k(403,"client_key_expired");if(!await i(g,j))return k(403,"client_key_target_not_allowed");if(null!=j.spendLimitUsd){let a=await (0,d.fz)(j.id);if(j.spentUsd=a,a>=j.spendLimitUsd)return k(429,"client_key_spend_limit_exceeded")}if(null!=j.tokenLimit&&j.tokenLimit>0){let a=Number(j.usedTokens||0);if(a>=j.tokenLimit)return k(429,"client_key_token_quota_exceeded",null,`Token limit exceeded for this API key (${a.toLocaleString()} / ${j.tokenLimit.toLocaleString()} tokens used)`)}let o=h().byId.get(j.id);if((!o||n-o.windowStartedAt>=6e4)&&(o={windowStartedAt:n,acceptedStarts:0,inFlight:o?.inFlight||0},h().byId.set(j.id,o)),null!=j.concurrencyLimit&&o.inFlight>=j.concurrencyLimit)return k(429,"client_key_concurrency_limit_exceeded",1);if(null!=j.rateLimitPerMinute&&o.acceptedStarts>=j.rateLimitPerMinute)return k(429,"client_key_rate_limit_exceeded",Math.max(1,Math.ceil((6e4-(n-o.windowStartedAt))/1e3)));o.acceptedStarts++,o.inFlight++;let p=!1;return{ok:!0,mode:"api-key",clientKey:j,clientKeyId:j.id,lease:{release(){if(p)return;p=!0;let a=h().byId.get(j.id);a&&(a.inFlight=Math.max(0,a.inFlight-1))}}}}async function n(a,b){let c;if(!a)return await b();let d=!1,e=()=>{d||(d=!0,a.release())};try{c=await b()}catch(a){throw e(),a}if(!(c instanceof Response&&c.body&&(c.headers.get("content-type")||"").toLowerCase().includes("text/event-stream")))return e(),c;let f=c.body.getReader();return new Response(new ReadableStream({async pull(a){try{let{done:b,value:c}=await f.read();b?(e(),a.close()):a.enqueue(c)}catch(b){e(),a.error(b)}},async cancel(a){e(),await f.cancel(a)}}),{status:c.status,statusText:c.statusText,headers:c.headers})}global._clientKeyPolicyState||(global._clientKeyPolicyState={byId:new Map})}};
1
+ "use strict";exports.id=2574,exports.ids=[2574],exports.modules={2574:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>z,OPTIONS:()=>x,buildClaudeFullCatalogDiscoveryModels:()=>y,buildModelsList:()=>w});var d=c(81329),e=c(40615),f=c(59353),g=c(27811),h=c(13474),i=c(16655),j=c(19617),k=c(38955),l=c(21161),m=c(9155),n=c(43904),o=c(7071),p=c(60290),q=c(32524),r=c(68393);async function s(a,b){let c,d;if(b?.aborted)return null;try{let e=await Promise.race([(0,l.U)(a),new Promise(a=>{c=setTimeout(()=>a(null),1e4),d=()=>a(null),b?.addEventListener?.("abort",d,{once:!0})})]);return e&&"models"in e?e:null}catch(b){return console.log(`Live model fetch failed for ${a?.provider}: ${b?.message||b}`),null}finally{clearTimeout(c),d&&b?.removeEventListener?.("abort",d)}}let t={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText",video:"video"};async function u(a,b=null){if(!a?.apiKey)return null;let c="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!c)return null;let d=`${c}/models`,f={"Content-Type":"application/json",[j.M]:"1"};if((0,e.mq)(a.provider))f.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return null;d.endsWith("/messages/models")?d=d.slice(0,-9):d.endsWith("/messages")&&(d=`${d.slice(0,-9)}/models`),f["x-api-key"]=a.apiKey,f["anthropic-version"]="2023-06-01",f.Authorization=`Bearer ${a.apiKey}`}try{let a=new AbortController,c=setTimeout(()=>a.abort(),5e3);b&&"function"!=typeof AbortSignal.any&&b.addEventListener("abort",()=>{clearTimeout(c),a.abort(b.reason)},{once:!0});let e=b&&"function"==typeof AbortSignal.any?AbortSignal.any([b,a.signal]):a.signal;try{let a=await fetch(d,{method:"GET",headers:f,cache:"no-store",signal:e});if(!a.ok)return null;let b=await a.json(),c=(a=>{if(Array.isArray(a))return a;for(let b of["data","models","results"])if(Array.isArray(a?.[b]))return a[b];return null})(b);if(!c)return null;let g=Array.from(new Set(c.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim()))),h=new Map;for(let a of c){let b=a?.id||a?.name||a?.model;"string"==typeof b&&""!==b.trim()&&a&&"object"==typeof a&&a.capabilities&&"object"==typeof a.capabilities&&h.set(b.trim(),a.capabilities)}return c.length>0&&0===g.length?null:{ids:g,capsById:h}}finally{clearTimeout(c)}}catch{return null}}function v(a,b){let c=e.Q2[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}async function w(a,{signal:b=null,skipCompatibleDiscovery:c=!1}={}){let g=[],h=!1;try{g=await (0,f.getProviderConnections)()}catch(a){h=!0,console.log("Could not fetch providers, returning all models")}let j=g.filter(a=>!1!==a.isActive),l=[];try{l=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let q=[];try{q=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let x={};try{x=await (0,f.OM)()}catch(a){console.log("Could not fetch model aliases")}let y={};try{y=await (0,i.vF)()}catch(a){console.log("Could not fetch disabled models")}let z=new Map(Object.entries(y).map(([a,b])=>[a,(0,k.Iz)(b,a)])),A=(a,b)=>{let c=(0,e.rs)(a);return[...new Set([a,c,(0,e.wG)(c),d.Xg[c]].filter(Boolean))].some(a=>{let c=z.get(a);return!!c&&(0,k.uJ)(c,b,a)})},B=new Map;for(let a of j){if(b?.aborted)break;B.has(a.provider)||B.set(a.provider,a)}let C=new Map;if(!c){let a=Array.from(B.entries()).filter(([a])=>(0,e.mq)(a)||(0,e.gb)(a));await Promise.all(a.map(async([a,c])=>{C.set(a,await u(c,b))}))}let D=new Map,E=Array.from(B.entries()).filter(([b])=>v(b,a)&&!(0,e.mq)(b)&&!(0,e.gb)(b));for(let[a,c]of(await Promise.all(E.map(async([a,c])=>{let d=await s(c,b);d&&D.set(a,d)})),E))if(("qoder"===a||"qoder-cn"===a)&&D.has(a))try{let b=await (0,m.EV)({provider:a,accessToken:c.accessToken,apiKey:c.apiKey,refreshToken:c.refreshToken,email:c.email,displayName:c.displayName,providerSpecificData:c.providerSpecificData||{}}),d=(0,m.So)(b);d.length&&D.set(a,{...D.get(a),models:d.map(a=>({id:a.id,name:a.name}))})}catch{}let F=[],G=a=>{if("string"!=typeof a)return!1;let b=a.indexOf("/");if(b<=0)return!1;let c=a.slice(0,b),d=(0,e.rs)(c);return!!d&&!!e.Q2[d]&&!B.has(d)},H=!h;for(let b of l){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;if(H){let a=Array.isArray(b.models)?b.models:[];if(a.length>0&&a.every(G))continue}let c={id:b.name,object:"model",owned_by:"combo",name:b.name};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),F.push(c)}if(a.includes("llm")){for(let[a,b]of Object.entries(x||{}))if((0,r.Ng)(a)&&!(H&&G(b))){if("string"==typeof b&&b.includes("/")){let a=b.indexOf("/"),c=b.slice(0,a),d=b.slice(a+1),e=j.find(a=>a.providerSpecificData?.prefix===c);if(A(c,d)||e&&A(e.provider,d))continue}F.push({id:a,object:"model",owned_by:"switchboard-alias",display_name:`Switchboard \xb7 ${a}`})}}if(h){for(let[b,c]of Object.entries(d.PROVIDER_MODELS))if(v((0,e.rs)(b),a))for(let d of c)a.includes(function(a){let b=a?.kind||a?.type;return b&&t[b]||"llm"}(d))&&(A(b,d.id)||F.push({id:`${b}/${d.id}`,object:"model",owned_by:b}));for(let b of q){if(!b?.id||b.type&&"llm"!==b.type||!a.includes("llm"))continue;let c=b.providerAlias;if(!c)continue;let d=String(b.id).trim();!d||A(c,d)||F.push({id:`${c}/${d}`,object:"model",owned_by:c})}}else for(let[c,f]of B.entries()){if(b?.aborted)break;if(!v(c,a))continue;let g=d.Xg[c]||c,h=(f?.providerSpecificData?.prefix||(0,e.wG)(c)||g).trim(),i=(0,e.mq)(c)||(0,e.gb)(c),j=C.get(c),l=j&&j.capsById instanceof Map?j.capsById:null,m=(0,k.BA)({providerId:c,staticModels:i?[]:d.PROVIDER_MODELS[g]||[],discoveredModels:D.get(c)?.models||[],customModels:q,modelAliases:x,isCompatible:i}),p=a=>{for(let b of[h,g,c])if(a.startsWith(`${b}/`))return a.slice(b.length+1);return a};for(let b of m){let d=p(b.id);if(!d)continue;let e="custom"===b.source?b.kind:null,f="live"===b.source?b.kind:null,i=b.kind,j="imageToText"===i&&a.includes("llm");if(!a.includes(i)&&!j||b.storageAlias&&(A(b.storageAlias,b.id)||A(b.storageAlias,d))||A(h,d)||A(g,d))continue;let k={id:`${h}/${d}`,object:"model",owned_by:h},m=function(a,b,c,d,e){if(!a)return null;for(let f of[e,`${b}/${e}`,`${c}/${e}`,`${d}/${e}`])if(a.has(f))return a.get(f);return null}(l,h,g,c,d),q=(0,n.a0)(e||f),r=b.capabilities||(m||q?{...q||{},...m||{}}:null),s=(0,o.sM)(c,d),t=(0,n.k1)(d)||s,u=(0,n.hX)(r,t),v=u?{...r||{},...u}:r;v&&(k.capabilities=v),F.push(k)}let r=e.Q2[c];a.includes("webSearch")&&r?.searchConfig&&F.push({id:`${h}/search`,object:"model",kind:"webSearch",owned_by:h}),a.includes("webFetch")&&r?.fetchConfig&&F.push({id:`${h}/fetch`,object:"model",kind:"webFetch",owned_by:h})}let I=[],J=new Set;for(let a of F)!a?.id||J.has(a.id)||(J.add(a.id),"number"!=typeof a.created&&(a.created=0),I.push(a));let K=new Map((Array.isArray(l)?l:[]).filter(a=>a&&"string"==typeof a.name).map(a=>[a.name,a])),L=new Map(I.map(a=>[a.id,a])),M=(a,b=new Set,c=0)=>{if("string"!=typeof a||!a||b.has(a)||b.size>32)return null;b.add(a);let d=null,e=K.get(a);if(e){let a=c+1;if(a<=p.wg){let c=Array.isArray(e.models)?e.models:[];d=(0,n.G6)(c.map(c=>M(c,b,a)))}}else if(x&&Object.hasOwn(x,a))d=M(x[a],b,c);else{let b=L.get(a);d=b?.capabilities?.effort?{effort:b.capabilities.effort}:(a=>{let[b,...c]=a.split("/"),d=c.join("/")||b;return(0,n.k1)(a)||(0,o.sM)(b,d)})(a)}return b.delete(a),d};for(let a of I){if(a.capabilities?.effort)continue;let b=null;if("combo"===a.owned_by){let c=K.get(a.id);if(!c||"llm"!==(c.kind||"llm"))continue;b=M(a.id)}else"switchboard-alias"===a.owned_by&&(b=M(a.id));b?.effort&&(a.capabilities={...a.capabilities||{},effort:b.effort})}return I}async function x(){return new Response(null,{headers:{"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}function y(a,b={}){let c=(0,r.OU)(b,a),d=(0,q.HL)(a);return a.map(a=>({id:(0,r.El)(a),object:"model",created:0,owned_by:"switchboard-catalog",display_name:c[a]||(0,q.u0)(a,d),description:a}))}async function z(a){return(0,h.j)(a,async b=>{try{if((0,r.at)(a?.headers)){let c=(0,r._1)(a?.headers),d=await (0,g.j)(b,y(c,(0,r.LU)(a?.headers)));return Response.json({object:"list",data:d})}let c=await w(["llm"],{signal:a?.signal,skipCompatibleDiscovery:(0,j.k)(a)}),d=await (0,g.j)(b,c);return Response.json({object:"list",data:d},{})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:"Failed to fetch models",type:"server_error"}},{status:500})}})}},7071:(a,b,c)=>{c.d(b,{sM:()=>s,QX:()=>o,kl:()=>r});var d=c(43904),e=c(84646),f=c(66755);let g={glm:["zai","zai-coding-plan"],zai:["zai","zai-coding-plan"],"z-ai":["zai","zai-coding-plan"],opencode:["opencode","opencode-go"],"opencode-go":["opencode-go","opencode"]};var h=c(29485);let i=["none","low","medium","high"],j=["none","thinking"],k=["none","low","medium","high","xhigh","max"],l={openai:["none","minimal","low","medium","high","xhigh"],"claude-adaptive":k,"claude-budget":k,"gemini-level":["minimal","low","medium","high"],"gemini-budget":i,zai:j,qwen:i,kimi:["none","low","medium","high","max"],deepseek:["none","high","max"],commandcode:["none","low","medium","high","xhigh","max"],minimax:j,hunyuan:i,step:i,nous:i},m=["none","low","medium","high","max"],n=[{pattern:"*gemini-4*",levels:["low","medium","high"]},{pattern:"*claude*4.6*",levels:m},{pattern:"*claude*4-6*",levels:m},{pattern:"*codex*",levels:["low","medium","high","xhigh"]},{provider:"opencode",pattern:"*mimo*v2.6*",levels:["none","minimal","low","medium","high","xhigh","max"]},{provider:"alicode",pattern:"*deepseek-v4.*",levels:["none","low","medium","high","xhigh","max"]},{provider:"alicode-intl",pattern:"*deepseek-v4.*",levels:["none","low","medium","high","xhigh","max"]},{provider:"codebuddy-cn",pattern:"glm-5.3",levels:["low","high","max"]},{provider:"codebuddy-cn",pattern:"glm-5.3-flash",levels:["low","high","max"]},{provider:"codebuddy-cn",pattern:"glm-5.2",levels:["high","xhigh"]},{provider:"codebuddy-cn",pattern:"deepseek-v4-pro",levels:["low","high","xhigh"]},{provider:"codebuddy-cn",pattern:"deepseek-v4.1-flash",levels:["low","high","max"]},{pattern:"*deepseek-v4.1-flash-free*",levels:["low","high","max"]},{provider:"codebuddy-cn",pattern:"kimi-k2.8-preview",levels:["low","medium","high"]},{provider:"codebuddy-cn",pattern:"hy3",levels:["low","high"]},{provider:"codebuddy-cn",pattern:"hy4-preview",levels:["high"]},{provider:"minimax-code",pattern:"MiniMax-M3.1*",levels:["low","medium","high","xhigh","max"]},{provider:"minimax-code",pattern:"MiniMax-M3",levels:["none","high"]},{provider:"minimax-code-global",pattern:"MiniMax-M3.1*",levels:["low","medium","high","xhigh","max"]},{provider:"minimax-code-global",pattern:"MiniMax-M3",levels:["none","high"]}];function o(a,b){return Array.isArray(a)?a.includes(b)?b:"max"===b&&a.includes("xhigh")?"max":null:null}let p=/(?:^|\/)gpt-(?:5\.6|6)(?:[.-]|$)/i,q=["none","minimal","low","medium","high","xhigh","max"];function r(a,b){let c=(0,d.nl)(a,b);if(!c.reasoning)return null;let k=String(b||"").replace(/\([^()]+\)\s*$/,""),m="codex"===a?(0,h.SM)("cx").find(a=>a.id===k)?.thinkingLevels:null,o=n.find(c=>(!c.provider||c.provider===a)&&(0,e.gH)(c.pattern,b)),r=m||o?.levels||(String(a||"").startsWith("openai-compatible-")&&p.test(k)?q:null)||null,s=null;if(!r){let d=l[c.thinkingFormat]||i;d===j&&(s=function(a,b){try{return function(a,b,c){let d;if(!a||"object"!=typeof a||!c)return null;let e=(d=String(c||""),String((d.includes("/")?d.split("/").pop():d)||"").split(":")[0].toLowerCase());if(!e)return null;let f=String(c).toLowerCase(),h=String(b||"").toLowerCase();for(let b of[h,...g[h]||[]].filter(Boolean)){if(a[`${b}/${f}`])return a[`${b}/${f}`];if(a[`${b}/${e}`])return a[`${b}/${e}`]}return a[e]||a[f]||null}((0,f.CQ)(),a,b)}catch{return null}}(a,b),Array.isArray(s?.levels)&&s.levels.length>0&&(r=["none",...s.levels])),r||(r=d)}return(!1===c.thinkingCanDisable||s?.mandatory===!0)&&(r=r.filter(a=>"none"!==a)),r}function s(a,b){let c=r(a,b);if(!Array.isArray(c)||0===c.length)return null;let d=c.filter(a=>"none"!==a&&"thinking"!==a);if(0===d.length)return null;let e={supported:!0};for(let a of d)e[a]={supported:!0};return{effort:e}}},13474:(a,b,c)=>{c.d(b,{j:()=>g});var d=c(59353),e=c(27811),f=c(78102);async function g(a,b){let c=(0,e.Wl)(a);if(!c)return b(null);let g=await (0,f.DM)({settings:await (0,d.mt)(),rawKey:c,request:a,metered:!1});return g.ok?b((0,e.xP)(g.clientKey)):g.response}},16655:(a,b,c)=>{c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(59353)},32524:(a,b,c)=>{c.d(b,{HL:()=>i,pD:()=>h,u0:()=>j});let d=Object.freeze({"lite-llm":"llm",litellm:"llm"}),e=["opus","sonnet","haiku","fable","gemini","gpt","glm","deepseek","composer","kimi","qwen"],f=[{pattern:/ap-southeast|low-carbon-apac|\bapac\b/i,tag:"apac"},{pattern:/eu-west|europe|\beu\b/i,tag:"eu"},{pattern:/us-east|us-west|\bus\b/i,tag:"us"}],g=["bedrock","vertex","azure","openai"];function h(a){var b;let c,h,i,j,k,l,m,n=String(a||"").trim();if(!n)return"";let o=n.indexOf("/");if(o<0)return n;let p=d[c=String(n.slice(0,o)||"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-+/g,"-")]||c.slice(0,10),q=n.slice(o+1).split("/").filter(Boolean),r=(h=q.join("/").toLowerCase(),i=e.find(a=>h.includes(a))||null,j=f.find(a=>a.pattern.test(h))?.tag||null,k=g.find(a=>h.includes(a))||null,l=h.match(/\b(\d+m)\b/i)?.[1]?.toLowerCase()||null,m=(b=i?h.match(RegExp(`${i}[-._]?(\\d+(?:[._-]\\d+)*)`,"i"))?.[1]:null)?b.replace(/[._-]/g,"."):null,{family:i,region:j,infra:k,variant:l,version:m}),s=[p];if(r.region&&s.push(r.region),r.infra&&s.push(r.infra),r.family){let a=r.variant?`${r.family} ${r.variant}`:r.version?`${r.family} ${r.version}`:r.family;s.push(a)}else if(q.length>0){let a=q[q.length-1].replace(/^anthropic\./i,"").replace(/[._]/g," ").trim();a&&s.push(a.slice(0,24))}return s.join(" | ")}function i(a){let b=a.map(a=>String(a||"").trim()).filter(Boolean).map(a=>({modelId:a,base:h(a)})),c=new Map;for(let a of b){let b=c.get(a.base)||[];b.push(a.modelId),c.set(a.base,b)}let d=new Map;for(let[a,b]of c.entries()){if(1===b.length){d.set(b[0],a);continue}let c=new Set;b.forEach((b,e)=>{let f=`${a} | ${function(a,b){let c=String(a||"").split("/").filter(Boolean);return c.length>=3?c[1].replace(/[._-]/g," ").trim().slice(0,20):2===c.length?c[1].replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20):(c[c.length-1]||`model-${b+1}`).replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20)||String(b+1)}(b,e)}`,g=2;for(;c.has(f);){let d=b.split("/").filter(Boolean).pop()||`alt-${g}`;f=`${a} | ${d.replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20)}`,c.has(f)&&(f=`${a} | ${e+1}`),g+=1}c.add(f),d.set(b,f)})}return d}function j(a,b){let c=String(a||"").trim();return c?b?.get(c)||h(c):""}},38955:(a,b,c)=>{c.d(b,{BA:()=>k,Iz:()=>i,uJ:()=>j});var d=c(65089),e=c(4489),f=c(40615),g=c(29485);function h(a){return(0,e.ki)(a?.kind||a?.type||"llm")}function i(a,b=""){return new Set((Array.isArray(a)?a:[]).map(a=>(0,d.v)(a,b)).filter(Boolean))}function j(a,b,c=""){return a.has((0,d.v)(b,c))}function k({providerId:a,staticModels:b=[],discoveredModels:c=[],customModels:d=[],modelAliases:e={},isCompatible:i=!1}){let j=i?a:(0,f.wG)(a),l=new Map;if(!i){for(let a of b)a?.id&&l.set(a.id,{...a,source:"static"});for(let a of c){let b="string"==typeof a?a:a?.id;if(!b)continue;let c="string"==typeof a?{id:b}:a;l.set(b,{...l.get(b),...c,id:b,source:"live"})}}let m=[];for(let a of l.values())m.push({id:a.id,kind:h(a),source:a.source,...a.capabilities?{capabilities:a.capabilities}:{},storageAlias:j});for(let a of function({customModels:a=[],modelAliases:b={},providerAlias:c,builtInModels:d=[],type:e="llm",includeLegacyAliases:i=!0,legacyStorageAliases:j=[]}){let k=new Set(d.map(a=>a.id)),l=new Set,m=[],n=new Set([c,...j.filter(a=>"string"==typeof a&&a&&a!==c)]),o=c?f.js[c]:null;o&&(n.add(o),g.Xg[o]&&n.add(g.Xg[o]));let p=new Set(a.filter(a=>a?.providerAlias===c).map(a=>a?.id));for(let b of a){if(!b?.id||!n.has(b.providerAlias)||b.providerAlias!==c&&p.has(b.id))continue;let a=h(b);if(e&&a!==e||k.has(b.id))continue;let d=`${c}/${b.id}`;l.has(d)||(l.add(d),m.push({id:b.id,name:b.name||b.id,fullModel:d,source:"custom",type:a}))}if(!i)return m;let q=`${c}/`;for(let[a,c]of Object.entries(b||{})){if("string"!=typeof c||!c.startsWith(q))continue;let b=c.slice(q.length);!b||k.has(b)||l.has(c)||(l.add(c),m.push({id:b,alias:a,fullModel:c,source:"legacyAlias",type:e||"llm"}))}return m}({customModels:d,modelAliases:e,providerAlias:j,builtInModels:[...l.values()],type:null}))m.push({id:a.id,kind:a.type||"llm",source:a.source,storageAlias:j});return m}}};