tokenhop 1.0.0 → 1.0.1

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 (599) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +7 -7
  3. package/app/.next-cli-build/build-manifest.json +3 -3
  4. package/app/.next-cli-build/prerender-manifest.json +3 -3
  5. package/app/.next-cli-build/react-loadable-manifest.json +43 -43
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/[...missing]/page.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/[...missing]/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/[...missing]/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.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 +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js.nft.json +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/page.js +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  79. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  81. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ui-kit/page.js +1 -1
  82. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ui-kit/page.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ui-kit/page_client-reference-manifest.js +1 -1
  84. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  85. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  87. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  89. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  90. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  91. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  92. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  93. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  94. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  95. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  97. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  98. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  99. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  100. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
  101. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  102. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/cli-tool-settings/[toolId]/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/cli-tool-settings/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  116. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  118. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  121. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  123. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +2 -2
  125. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  127. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
  135. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js +2 -2
  137. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  139. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +1 -1
  141. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +3 -3
  143. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +3 -3
  145. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  147. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  149. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  151. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/combos/[id]/headroom/route.js +1 -1
  153. package/app/.next-cli-build/server/app/api/combos/[id]/headroom/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  155. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/combos/[id]/test/route.js +1 -1
  157. package/app/.next-cli-build/server/app/api/combos/[id]/test/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  159. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/gateway/status/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/home/live-routes/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/home/quota/route.js +1 -1
  170. package/app/.next-cli-build/server/app/api/home/quota/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/home/summary/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  180. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  184. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  186. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/models/catalog-sync/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  190. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  193. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  195. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  201. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  204. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +1 -1
  216. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  220. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  222. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  224. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  234. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  237. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  239. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/settings/config/export/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/settings/config/import/route.js +1 -1
  256. package/app/.next-cli-build/server/app/api/settings/config/import/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  258. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/settings/environment/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  262. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/shell/savings-milestone/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/shell/summary/route.js +1 -1
  265. package/app/.next-cli-build/server/app/api/shell/summary/route.js.nft.json +1 -1
  266. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  268. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  269. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  271. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  275. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  277. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  285. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  287. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/usage/last-activity/route.js.nft.json +1 -1
  293. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  295. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  297. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/usage/savings/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  301. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  302. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  303. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  304. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  305. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  306. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  307. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  308. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  309. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  310. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  311. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  312. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  313. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  314. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  316. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  318. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js +1 -1
  320. package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  322. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  323. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  324. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  325. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  326. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  327. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  328. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  329. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  330. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  331. package/app/.next-cli-build/server/app/api/v1/search/route.js +2 -2
  332. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  333. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  334. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  335. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  336. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  337. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  338. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  339. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  340. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  341. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  342. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  343. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  344. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  345. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  346. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  347. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  348. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  349. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  350. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  351. package/app/.next-cli-build/server/app/callback.html +1 -1
  352. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  353. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  354. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  355. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
  356. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +2 -2
  357. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +10 -10
  358. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +10 -10
  359. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +10 -10
  360. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  361. package/app/.next-cli-build/server/app/dashboard/combos.html +2 -2
  362. package/app/.next-cli-build/server/app/dashboard/combos.rsc +10 -10
  363. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +10 -10
  364. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +10 -10
  365. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  366. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  367. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
  368. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +7 -7
  369. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
  370. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  371. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +2 -2
  372. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +10 -10
  373. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +10 -10
  374. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +10 -10
  375. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  376. package/app/.next-cli-build/server/app/dashboard/media-providers.html +1 -1
  377. package/app/.next-cli-build/server/app/dashboard/media-providers.rsc +9 -9
  378. package/app/.next-cli-build/server/app/dashboard/media-providers.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/__PAGE__.segment.rsc +9 -9
  379. package/app/.next-cli-build/server/app/dashboard/media-providers.segments/_full.segment.rsc +9 -9
  380. package/app/.next-cli-build/server/app/dashboard/media-providers.segments/_tree.segment.rsc +1 -1
  381. package/app/.next-cli-build/server/app/dashboard/mitm.html +2 -2
  382. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +10 -10
  383. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +10 -10
  384. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +10 -10
  385. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  386. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  387. package/app/.next-cli-build/server/app/dashboard/profile.rsc +9 -9
  388. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +9 -9
  389. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +9 -9
  390. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  391. package/app/.next-cli-build/server/app/dashboard/providers/new.html +2 -2
  392. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +10 -10
  393. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +10 -10
  394. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +10 -10
  395. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  396. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +2 -2
  397. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +9 -9
  398. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +9 -9
  399. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +9 -9
  400. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  401. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +2 -2
  402. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +9 -9
  403. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +9 -9
  404. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +9 -9
  405. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  406. package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
  407. package/app/.next-cli-build/server/app/dashboard/quota.rsc +10 -10
  408. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +10 -10
  409. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +10 -10
  410. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  411. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  412. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  413. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  414. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  415. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  416. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  417. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  418. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
  419. package/app/.next-cli-build/server/app/dashboard/settings.html +2 -2
  420. package/app/.next-cli-build/server/app/dashboard/settings.rsc +10 -10
  421. package/app/.next-cli-build/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +10 -10
  422. package/app/.next-cli-build/server/app/dashboard/settings.segments/_full.segment.rsc +10 -10
  423. package/app/.next-cli-build/server/app/dashboard/settings.segments/_tree.segment.rsc +1 -1
  424. package/app/.next-cli-build/server/app/dashboard/skills.html +2 -2
  425. package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
  426. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +7 -7
  427. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
  428. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  429. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  430. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +10 -10
  431. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +10 -10
  432. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +10 -10
  433. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  434. package/app/.next-cli-build/server/app/dashboard/translator.html +2 -2
  435. package/app/.next-cli-build/server/app/dashboard/translator.rsc +10 -10
  436. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +10 -10
  437. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +10 -10
  438. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  439. package/app/.next-cli-build/server/app/dashboard/ui-kit.html +1 -1
  440. package/app/.next-cli-build/server/app/dashboard/ui-kit.rsc +9 -9
  441. package/app/.next-cli-build/server/app/dashboard/ui-kit.segments/!KGRhc2hib2FyZCk/dashboard/ui-kit/__PAGE__.segment.rsc +9 -9
  442. package/app/.next-cli-build/server/app/dashboard/ui-kit.segments/_full.segment.rsc +9 -9
  443. package/app/.next-cli-build/server/app/dashboard/ui-kit.segments/_tree.segment.rsc +1 -1
  444. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  445. package/app/.next-cli-build/server/app/dashboard/usage.rsc +10 -10
  446. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +10 -10
  447. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +10 -10
  448. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  449. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  450. package/app/.next-cli-build/server/app/dashboard.rsc +10 -10
  451. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +10 -10
  452. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +10 -10
  453. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  454. package/app/.next-cli-build/server/app/index.html +1 -1
  455. package/app/.next-cli-build/server/app/index.rsc +4 -4
  456. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  457. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  458. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  459. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  460. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  461. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  462. package/app/.next-cli-build/server/app/landing.html +1 -1
  463. package/app/.next-cli-build/server/app/landing.rsc +5 -5
  464. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
  465. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  466. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +5 -5
  467. package/app/.next-cli-build/server/app/login/page.js +1 -1
  468. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  469. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  470. package/app/.next-cli-build/server/app/login.html +1 -1
  471. package/app/.next-cli-build/server/app/login.rsc +4 -4
  472. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  473. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  474. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  475. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  476. package/app/.next-cli-build/server/app/page.js +1 -1
  477. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  478. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  479. package/app/.next-cli-build/server/app/skills/[...slug]/route.js.nft.json +1 -1
  480. package/app/.next-cli-build/server/app-paths-manifest.json +7 -7
  481. package/app/.next-cli-build/server/chunks/1152.js +1 -1
  482. package/app/.next-cli-build/server/chunks/1336.js +1 -1
  483. package/app/.next-cli-build/server/chunks/1432.js +1 -1
  484. package/app/.next-cli-build/server/chunks/1533.js +1 -1
  485. package/app/.next-cli-build/server/chunks/1764.js +1 -1
  486. package/app/.next-cli-build/server/chunks/1854.js +1 -0
  487. package/app/.next-cli-build/server/chunks/2380.js +7 -7
  488. package/app/.next-cli-build/server/chunks/24.js +1 -1
  489. package/app/.next-cli-build/server/chunks/2460.js +1 -1
  490. package/app/.next-cli-build/server/chunks/2592.js +1 -1
  491. package/app/.next-cli-build/server/chunks/318.js +10 -9
  492. package/app/.next-cli-build/server/chunks/3558.js +1 -1
  493. package/app/.next-cli-build/server/chunks/3593.js +1 -1
  494. package/app/.next-cli-build/server/chunks/3676.js +1 -1
  495. package/app/.next-cli-build/server/chunks/368.js +1 -0
  496. package/app/.next-cli-build/server/chunks/3919.js +1 -1
  497. package/app/.next-cli-build/server/chunks/3943.js +1 -1
  498. package/app/.next-cli-build/server/chunks/4037.js +1 -1
  499. package/app/.next-cli-build/server/chunks/4123.js +1 -1
  500. package/app/.next-cli-build/server/chunks/4125.js +1 -1
  501. package/app/.next-cli-build/server/chunks/4199.js +1 -1
  502. package/app/.next-cli-build/server/chunks/4334.js +1 -1
  503. package/app/.next-cli-build/server/chunks/4406.js +2 -2
  504. package/app/.next-cli-build/server/chunks/4521.js +1 -1
  505. package/app/.next-cli-build/server/chunks/4730.js +1 -1
  506. package/app/.next-cli-build/server/chunks/4780.js +1 -1
  507. package/app/.next-cli-build/server/chunks/4903.js +1 -0
  508. package/app/.next-cli-build/server/chunks/5055.js +1 -0
  509. package/app/.next-cli-build/server/chunks/5260.js +1 -0
  510. package/app/.next-cli-build/server/chunks/5335.js +1 -0
  511. package/app/.next-cli-build/server/chunks/5765.js +1 -0
  512. package/app/.next-cli-build/server/chunks/5827.js +1 -0
  513. package/app/.next-cli-build/server/chunks/6000.js +1 -0
  514. package/app/.next-cli-build/server/chunks/620.js +1 -0
  515. package/app/.next-cli-build/server/chunks/6252.js +1 -1
  516. package/app/.next-cli-build/server/chunks/6328.js +1 -0
  517. package/app/.next-cli-build/server/chunks/6403.js +1 -0
  518. package/app/.next-cli-build/server/chunks/6496.js +1 -1
  519. package/app/.next-cli-build/server/chunks/6565.js +1 -0
  520. package/app/.next-cli-build/server/chunks/6734.js +1 -1
  521. package/app/.next-cli-build/server/chunks/7211.js +1 -1
  522. package/app/.next-cli-build/server/chunks/7616.js +1 -1
  523. package/app/.next-cli-build/server/chunks/7716.js +1 -1
  524. package/app/.next-cli-build/server/chunks/7819.js +1 -1
  525. package/app/.next-cli-build/server/chunks/7828.js +1 -1
  526. package/app/.next-cli-build/server/chunks/7901.js +1 -1
  527. package/app/.next-cli-build/server/chunks/8171.js +1 -1
  528. package/app/.next-cli-build/server/chunks/8255.js +1 -1
  529. package/app/.next-cli-build/server/chunks/8372.js +1 -1
  530. package/app/.next-cli-build/server/chunks/8416.js +1 -1
  531. package/app/.next-cli-build/server/chunks/8895.js +12 -12
  532. package/app/.next-cli-build/server/chunks/8988.js +1 -0
  533. package/app/.next-cli-build/server/chunks/9219.js +1 -0
  534. package/app/.next-cli-build/server/chunks/9243.js +1 -0
  535. package/app/.next-cli-build/server/chunks/9326.js +1 -0
  536. package/app/.next-cli-build/server/chunks/9343.js +1 -1
  537. package/app/.next-cli-build/server/chunks/9489.js +3 -0
  538. package/app/.next-cli-build/server/chunks/9578.js +1 -1
  539. package/app/.next-cli-build/server/chunks/9594.js +1 -0
  540. package/app/.next-cli-build/server/chunks/965.js +1 -1
  541. package/app/.next-cli-build/server/chunks/9899.js +1 -1
  542. package/app/.next-cli-build/server/instrumentation.js +1 -1
  543. package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
  544. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  545. package/app/.next-cli-build/server/middleware-react-loadable-manifest.js +1 -1
  546. package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
  547. package/app/.next-cli-build/server/pages/404.html +1 -1
  548. package/app/.next-cli-build/server/pages/500.html +1 -1
  549. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  550. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  551. package/app/.next-cli-build/static/chunks/{198-145d0ed2ec3c54f5.js → 198-0c7f5eadfd257db1.js} +1 -1
  552. package/app/.next-cli-build/static/chunks/{3670-e7a22341025498f8.js → 3670-90f5cd325f460eb5.js} +1 -1
  553. package/app/.next-cli-build/static/chunks/5014-a5d960f4c6bc6297.js +1 -0
  554. package/app/.next-cli-build/static/chunks/{6174.18e2c57e892d721a.js → 6174.f1da2912aec81c15.js} +1 -1
  555. package/app/.next-cli-build/static/chunks/6448-71a8c2ac8d9ecc09.js +1 -0
  556. package/app/.next-cli-build/static/chunks/7899-83edd7bbf1a98c4a.js +1 -0
  557. package/app/.next-cli-build/static/chunks/8105-bdd81b911fed8537.js +1 -0
  558. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/{page-8147ae8fa9c04381.js → page-42bfc760fbea3b96.js} +1 -1
  559. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/{page-9cbf62f78701882a.js → page-084fc21b1dbae00d.js} +1 -1
  560. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-5f91e148400a241b.js → page-59ee0b412f972940.js} +3 -3
  561. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/{page-dac4ab98fc595054.js → page-de53f51d191eec46.js} +1 -1
  562. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-463f9fa33be9426a.js +1 -0
  563. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/{page-06f4e52ee3b63f82.js → page-243d3da0a2c6cbe9.js} +1 -1
  564. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/ui-kit/{page-6c982cc50b6af101.js → page-998f8c5a36dac961.js} +1 -1
  565. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-923f864ec0be0fc8.js +1 -0
  566. package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-dd9d1e49b2f69197.js → layout-96ebd2b46f1f8d39.js} +1 -1
  567. package/app/.next-cli-build/static/chunks/app/landing/{page-02b7bfebd65c41f1.js → page-bcaea5febe1c68c0.js} +1 -1
  568. package/app/.next-cli-build/static/chunks/webpack-8693ccf029e9af63.js +1 -0
  569. package/app/custom-server.js +0 -37
  570. package/app/package.json +1 -1
  571. package/app/src/lib/db/adapters/sqljsAdapter.js +39 -4
  572. package/app/src/lib/oauth/services/xai.js +19 -12
  573. package/app/src/shared/services/quotaAutoPing.js +43 -8
  574. package/app/src/shared/services/quotaSnapshotPoller.js +2 -1
  575. package/app/src/sse/services/backgroundTokenRefresh.js +13 -1
  576. package/package.json +1 -1
  577. package/src/cli/menus/combos.js +3 -1
  578. package/app/.next-cli-build/server/chunks/1026.js +0 -1
  579. package/app/.next-cli-build/server/chunks/2384.js +0 -1
  580. package/app/.next-cli-build/server/chunks/3093.js +0 -1
  581. package/app/.next-cli-build/server/chunks/331.js +0 -1
  582. package/app/.next-cli-build/server/chunks/3414.js +0 -1
  583. package/app/.next-cli-build/server/chunks/3586.js +0 -1
  584. package/app/.next-cli-build/server/chunks/4278.js +0 -1
  585. package/app/.next-cli-build/server/chunks/6158.js +0 -1
  586. package/app/.next-cli-build/server/chunks/6354.js +0 -1
  587. package/app/.next-cli-build/server/chunks/6769.js +0 -1
  588. package/app/.next-cli-build/server/chunks/7261.js +0 -1
  589. package/app/.next-cli-build/server/chunks/8635.js +0 -3
  590. package/app/.next-cli-build/server/chunks/994.js +0 -1
  591. package/app/.next-cli-build/static/chunks/5014-a441cde708542153.js +0 -1
  592. package/app/.next-cli-build/static/chunks/6448-4eabf683083596e6.js +0 -1
  593. package/app/.next-cli-build/static/chunks/7899-e6a70cb9d3684f7f.js +0 -1
  594. package/app/.next-cli-build/static/chunks/8105-5c7e7c73b4bd532d.js +0 -1
  595. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-9fadf2c38665c20c.js +0 -1
  596. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-7571538830147099.js +0 -1
  597. package/app/.next-cli-build/static/chunks/webpack-187fa25c98ba99f3.js +0 -1
  598. /package/app/.next-cli-build/static/{3Qm_WgU2xvFJ9U_G7SKhT → J4xdfHpBUAMOCO5dsemSj}/_buildManifest.js +0 -0
  599. /package/app/.next-cli-build/static/{3Qm_WgU2xvFJ9U_G7SKhT → J4xdfHpBUAMOCO5dsemSj}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=24,exports.ids=[24],exports.modules={24:(a,b,c)=>{c.r(b),c.d(b,{DEFAULT_CAPABILITIES:()=>h,MODEL_CAPABILITIES:()=>k,PATTERN_CAPABILITIES:()=>p,PROVIDER_CAPABILITIES:()=>o,capabilitiesFromServiceKind:()=>j,getCapabilitiesForModel:()=>v,setCatalogSource:()=>s});var d=c(58920);let e="[-_/:.]",f=RegExp(`(^|${e})(image|img)(${e}|$)|stable-image|gen[0-9]_image|nanobanana|imagine|t2v|i2v|flux|dall|sdxl|diffusion|embed|rerank|guard|moderation|tts|stt|whisper|voice|speech|audio`,"i"),g=RegExp(`(^|${e})(vision|vl|vlm|multimodal|omni|visual)(${e}|$)|[0-9]\\.[0-9]+v(${e}|$)|(^|${e})glm-[0-9]+v(${e}|$)|(^|[-_/:.])(llava|pixtral|internvl|cogvlm|minicpm-v|moondream|idefics|fuyu)`,"i"),h={vision:!1,pdf:!1,audioInput:!1,videoInput:!1,imageOutput:!1,audioOutput:!1,search:!1,tools:!0,reasoning:!1,thinkingFormat:null,thinkingCanDisable:!0,thinkingRange:null,thinkingEffortSupported:!1,contextWindow:2e5,maxOutput:64e3},i={imageToText:{vision:!0},image:{imageOutput:!0},stt:{audioInput:!0},tts:{audioOutput:!0},embedding:{tools:!1}};function j(a){return i[a]||null}let k={"claude-fable-5-1":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},"claude-opus-5-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},"claude-opus-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-thinking-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.7":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-7":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.8":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-8":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.8-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-8-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4.6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4-6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-thinking-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"gpt-image-1":{imageOutput:!0,tools:!1},"glm-5.3-flash":{vision:!0,videoInput:!0,pdf:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:1e6,maxOutput:131072},"glm-4.6v":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:128e3,maxOutput:32768},"glm-4.5v":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:64e3,maxOutput:16384},"deepseek-v4-flash-vision-exp":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"deepseek-flash":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:128e3,maxOutput:64e3},"vision-model":{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6},"coder-model":{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6},"kimi-k3":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072},k3:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072},"kimi-for-coding":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-for-coding-highspeed":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-k2.7-code":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-k2.7-code-highspeed":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"muse-spark-1.2-contributor-free":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"muse-spark-1.3-contributor-free":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"union-alpha":{vision:!0,contextWindow:262144,maxOutput:131072}},l={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},m={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:372e3,maxOutput:128e3},n={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},o={nvidia:{"minimaxai/minimax-m2.7":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:131072},"minimaxai/minimax-m3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:512e3,maxOutput:131072},"z-ai/glm-5.2":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:128e3},"deepseek-ai/deepseek-v4-pro":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536},"deepseek-ai/deepseek-v4-flash":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536}},codex:{"gpt-6-astra":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},"gpt-5.6-sol":m,"gpt-5.6-sol-review":m,"gpt-5.6-terra":n,"gpt-5.6-terra-review":n,"gpt-5.6-luna":n,"gpt-5.6-luna-review":n},kiro:{"gpt-5.6-sol":l,"gpt-5.6-terra":l,"gpt-5.6-luna":l,"gpt-5.6-sol-thinking":l,"gpt-5.6-terra-thinking":l,"gpt-5.6-luna-thinking":l,"gpt-5.6-sol-agentic":l,"gpt-5.6-terra-agentic":l,"gpt-5.6-luna-agentic":l,"gpt-5.6-sol-thinking-agentic":l,"gpt-5.6-terra-thinking-agentic":l,"gpt-5.6-luna-thinking-agentic":l},"codebuddy-cn":{"glm-5.2":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:48e3},"glm-5.1":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:48e3},"glm-5.0":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:48e3},"glm-5v-turbo":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:64e3},"glm-4.7":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:48e3},"minimax-m3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:512e3,maxOutput:128e3},"kimi-k2.7":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},"kimi-k2.6":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},hy3:{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:192e3,maxOutput:64e3},"hy4-preview":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:64e3},"glm-5.3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:48e3},"glm-5.3-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:32e3},"kimi-k3-1":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:32e3},"deepseek-v4-pro":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:5e4},"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:128e3}},"codebuddy-intl":{"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:128e3}},qoder:{ultimate:{vision:!0,reasoning:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},performance:{vision:!0,reasoning:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},dmodel:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},dfmodel:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},gmodel:{reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},gfmodel:{vision:!0,reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},kmodel_latest:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},kmodel:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:65536},mmodel:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:512e3},qmodel_latest:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qmodel:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qfmodel:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qmodel_38max:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536}},poolside:{"laguna-s-2.1":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:32e3},"laguna-xs-2.1":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},ollama:{"deepseek-v4.1-flash:cloud":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3}}},p=[{pattern:"*claude*opus-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude*opus-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.8*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*haiku*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*opus*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*sonnet*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*fable*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude*mythos*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude-3*",caps:{vision:!0}},{pattern:"*claude*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*gemini*image*",caps:{vision:!0,imageOutput:!0,contextWindow:1048576}},{pattern:"*gemini-3.8*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-3.7*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-3*pro*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65535}},{pattern:"*gemini-3*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2.5*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-budget",thinkingRange:{min:0,max:24576},contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2*",caps:{vision:!0,audioInput:!0,videoInput:!0,search:!0,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini*",caps:{vision:!0,search:!0,contextWindow:1048576}},{pattern:"*gemma*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*nanobanana*",caps:{vision:!0,imageOutput:!0}},{pattern:"*gpt-6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3}},{pattern:"*gpt-5*image*",caps:{imageOutput:!0}},{pattern:"*gpt-5*codex*",caps:{reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-4o*",caps:{vision:!0,search:!0,contextWindow:128e3,maxOutput:16384}},{pattern:"*gpt-4.1*",caps:{vision:!0,contextWindow:1e6,maxOutput:32768}},{pattern:"*gpt-4-turbo*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*gpt-4*",caps:{contextWindow:128e3}},{pattern:"*gpt-3.5*",caps:{contextWindow:16385,maxOutput:4096}},{pattern:"*gpt-oss*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1-mini*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o4*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*grok*image*",caps:{imageOutput:!0}},{pattern:"*grok-code*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:5e5}},{pattern:"*grok-4.5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:64e3}},{pattern:"*grok-4*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-3*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:131072}},{pattern:"*grok*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*qwen*vl*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwen*omni*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144,maxOutput:65536}},{pattern:"*qwen*coder*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6}},{pattern:"*qwen*max*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.5*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.6*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.7*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*plus*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*235b*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwq*",caps:{reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:131072}},{pattern:"*qwen*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*kimi*k3*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072}},{pattern:"*kimi*for-coding*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536}},{pattern:"*kimi*k2.7*code*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536}},{pattern:"*kimi*k2*",caps:{vision:!0,reasoning:!0,thinkingFormat:"kimi",contextWindow:262144,maxOutput:262144}},{pattern:"*kimi*",caps:{reasoning:!0,thinkingFormat:"kimi",contextWindow:262144}},{pattern:"*glm-5.3*",caps:{reasoning:!0,thinkingFormat:"zai",thinkingEffortSupported:!0,contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-5.2*",caps:{reasoning:!0,thinkingFormat:"zai",thinkingEffortSupported:!0,contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-5*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4.7*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*glm*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*deepseek-v4.*",caps:{vision:!0,reasoning:!0,thinkingFormat:"deepseek",thinkingEffortSupported:!0,contextWindow:1e6,maxOutput:128e3}},{pattern:"*deepseek-v4*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingEffortSupported:!0,contextWindow:1e6,maxOutput:384e3}},{pattern:"*reasoner*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-r*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-chat*",caps:{contextWindow:128e3}},{pattern:"*deepseek*",caps:{reasoning:!0,thinkingFormat:"deepseek",contextWindow:128e3}},{pattern:"*minimax*image*",caps:{imageOutput:!0}},{pattern:"*minimax-m3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"minimax",contextWindow:1048576,maxOutput:512e3}},{pattern:"*minimax-m2.7*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:204800,maxOutput:131072}},{pattern:"*minimax*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:131072}},{pattern:"*mimo*v2.5*",caps:{vision:!0,audioInput:!0,videoInput:!0,contextWindow:1048576,maxOutput:131072}},{pattern:"*mimo*omni*",caps:{vision:!0,audioInput:!0,contextWindow:262144,maxOutput:131072}},{pattern:"*mimo*",caps:{vision:!0,contextWindow:262144,maxOutput:131072}},{pattern:"*llama-4*",caps:{vision:!0,contextWindow:1e6}},{pattern:"*llama*",caps:{contextWindow:128e3}},{pattern:"*codestral*",caps:{contextWindow:256e3}},{pattern:"*mistral-large*",caps:{vision:!0,contextWindow:256e3}},{pattern:"*mistral*",caps:{contextWindow:128e3}},{pattern:"*command-a-vision*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*command*",caps:{contextWindow:128e3}},{pattern:"*sonar*",caps:{search:!0,contextWindow:128e3}},{pattern:"*pplx*",caps:{search:!0,contextWindow:128e3}},{pattern:"*perplexity*",caps:{search:!0,contextWindow:128e3}},{pattern:"*laguna-s-2.1*free*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},{pattern:"*laguna-s-2.1*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:32e3}},{pattern:"*laguna*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},{pattern:"*muse*spark*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072}},{pattern:"*hunyuan*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"hy3*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"*step-*",caps:{reasoning:!0,thinkingFormat:"step",contextWindow:128e3}},{pattern:"*nemotron*",caps:{reasoning:!0,contextWindow:128e3}},{pattern:"*ling-*",caps:{reasoning:!0,contextWindow:128e3}}],q=["vision","pdf","audioInput","videoInput"],r=null;function s(a){r=a,"u">typeof globalThis&&(globalThis.__9rCatalogSource=a)}function t(a,b,c){let d={...h,...a},e=r||("u"<typeof globalThis?null:r=globalThis.__9rCatalogSource||null);if(e){let a=e.getModalities(b,c);if(a)for(let b of q)!0===a[b]&&(d[b]=!0);let f=e.getLimits(b,c);f&&(f.contextWindow>0&&(d.contextWindow=f.contextWindow),f.maxOutput>0&&(d.maxOutput=f.maxOutput))}return!d.vision&&function(a){if(!a)return!1;let b=String(a).toLowerCase();return!f.test(b)&&g.test(b)}(c)&&(d.vision=!0),d}let u=new Set(["deepseek/deepseek-v4-pro","deepseek/deepseek-v4-flash","deepseek/deepseek-v4-flash-fast","zai-org/glm-5.3","zai-org/glm-5.2","zai-org/glm-5.2-fast","zai-org/glm-5.1","zai-org/glm-5","minimaxai/minimax-m2.7","minimax/minimax-m2.7-free","minimaxai/minimax-m2.5","xiaomi/mimo-v2.5-pro","qwen/qwen3.6-max-preview","qwen/qwen3.7-max","meituan/longcat-2.0:free","stepfun/step-3.5-flash","tencent/hy4-preview","tencent/hy3","tencent/hy3-paid","nvidia/nemotron-3-ultra-550b-a55b","poolside/laguna-s-2.1-free","inclusionai/ling-3.0-flash-free","inclusionai/ling-3.0-flash-sante:free"]);function v(a,b){if(!b)return{...h};let c=b.includes("/")?b.split("/").pop():b;if("commandcode"===a||"cmc"===a){let a=o.commandcode;return a?.[b]?{...h,...a[b]}:a?.[c]?{...h,...a[c]}:{...h,reasoning:!0,thinkingFormat:"commandcode",thinkingEffortSupported:!0,vision:!function(a){let b=String(a||"").toLowerCase();if(u.has(b))return!0;for(let a of u){let c=a.includes("/")?a.slice(a.lastIndexOf("/")+1):a;if(b===c||b.endsWith("/"+c))return!0}return!1}(b),contextWindow:1e6,maxOutput:384e3}}if(a){let d=o[a];if(d?.[b])return{...h,...d[b]};if(d?.[c])return{...h,...d[c]}}if(k[c])return{...h,...k[c]};if(k[b])return{...h,...k[b]};for(let{pattern:e,caps:f}of p)if((0,d.gH)(e,c)||(0,d.gH)(e,b))return t(f,a,b);return t(null,a,b)}}};
1
+ "use strict";exports.id=24,exports.ids=[24],exports.modules={24:(a,b,c)=>{c.r(b),c.d(b,{DEFAULT_CAPABILITIES:()=>h,MODEL_CAPABILITIES:()=>k,PATTERN_CAPABILITIES:()=>p,PROVIDER_CAPABILITIES:()=>o,capabilitiesFromServiceKind:()=>j,getCapabilitiesForModel:()=>x,setCatalogSource:()=>s,setCustomCapsSource:()=>w});var d=c(58920);let e="[-_/:.]",f=RegExp(`(^|${e})(image|img)(${e}|$)|stable-image|gen[0-9]_image|nanobanana|imagine|t2v|i2v|flux|dall|sdxl|diffusion|embed|rerank|guard|moderation|tts|stt|whisper|voice|speech|audio`,"i"),g=RegExp(`(^|${e})(vision|vl|vlm|multimodal|omni|visual)(${e}|$)|[0-9]\\.[0-9]+v(${e}|$)|(^|${e})glm-[0-9]+v(${e}|$)|(^|[-_/:.])(llava|pixtral|internvl|cogvlm|minicpm-v|moondream|idefics|fuyu)`,"i"),h={vision:!1,pdf:!1,audioInput:!1,videoInput:!1,imageOutput:!1,audioOutput:!1,search:!1,tools:!0,reasoning:!1,thinkingFormat:null,thinkingCanDisable:!0,thinkingRange:null,thinkingEffortSupported:!1,contextWindow:2e5,maxOutput:64e3},i={imageToText:{vision:!0},image:{imageOutput:!0},stt:{audioInput:!0},tts:{audioOutput:!0},embedding:{tools:!1}};function j(a){return i[a]||null}let k={"claude-fable-5-1":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},"claude-opus-5-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},"claude-opus-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-thinking-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.7":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-7":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.8":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-8":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.8-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-8-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4.6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4-6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-thinking-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"gpt-image-1":{imageOutput:!0,tools:!1},"glm-5.3-flash":{vision:!0,videoInput:!0,pdf:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:1e6,maxOutput:131072},"glm-4.6v":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:128e3,maxOutput:32768},"glm-4.5v":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:64e3,maxOutput:16384},"deepseek-v4-flash-vision-exp":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"deepseek-flash":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:128e3,maxOutput:64e3},"vision-model":{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6},"coder-model":{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6},"kimi-k3":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072},k3:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072},"kimi-for-coding":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-for-coding-highspeed":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-k2.7-code":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-k2.7-code-highspeed":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"muse-spark-1.2-contributor-free":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"muse-spark-1.3-contributor-free":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"union-alpha":{vision:!0,contextWindow:262144,maxOutput:131072}},l={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},m={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:372e3,maxOutput:128e3},n={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},o={nvidia:{"minimaxai/minimax-m2.7":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:131072},"minimaxai/minimax-m3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:512e3,maxOutput:131072},"z-ai/glm-5.2":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:128e3},"deepseek-ai/deepseek-v4-pro":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536},"deepseek-ai/deepseek-v4-flash":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536}},"opencode-go":{"glm-5.3-flash":{vision:!0,videoInput:!0,pdf:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:131072},"glm-5.3":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:128e3},"glm-5.2":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:128e3},"glm-5.1":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:128e3}},codex:{"gpt-6-astra":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},"gpt-5.6-sol":m,"gpt-5.6-sol-review":m,"gpt-5.6-terra":n,"gpt-5.6-terra-review":n,"gpt-5.6-luna":n,"gpt-5.6-luna-review":n},kiro:{"gpt-5.6-sol":l,"gpt-5.6-terra":l,"gpt-5.6-luna":l,"gpt-5.6-sol-thinking":l,"gpt-5.6-terra-thinking":l,"gpt-5.6-luna-thinking":l,"gpt-5.6-sol-agentic":l,"gpt-5.6-terra-agentic":l,"gpt-5.6-luna-agentic":l,"gpt-5.6-sol-thinking-agentic":l,"gpt-5.6-terra-thinking-agentic":l,"gpt-5.6-luna-thinking-agentic":l},"codebuddy-cn":{"glm-5.2":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:48e3},"glm-5.1":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:48e3},"glm-5.0":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:48e3},"glm-5v-turbo":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:64e3},"glm-4.7":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:48e3},"minimax-m3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:512e3,maxOutput:128e3},"kimi-k2.7":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},"kimi-k2.6":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},hy3:{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:192e3,maxOutput:64e3},"hy4-preview":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:64e3},"glm-5.3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:48e3},"glm-5.3-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:32e3},"kimi-k3-1":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:32e3},"deepseek-v4-pro":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:5e4},"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:128e3}},"codebuddy-intl":{"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:128e3}},qoder:{ultimate:{vision:!0,reasoning:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},performance:{vision:!0,reasoning:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},dmodel:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},dfmodel:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},gmodel:{reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},gfmodel:{vision:!0,reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},kmodel_latest:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},kmodel:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:65536},mmodel:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:512e3},qmodel_latest:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qmodel:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qfmodel:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qmodel_38max:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536}},poolside:{"laguna-s-2.1":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:32e3},"laguna-xs-2.1":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},ollama:{"deepseek-v4.1-flash:cloud":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3}}},p=[{pattern:"*claude*opus-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude*opus-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.8*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*haiku*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*opus*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*sonnet*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*fable*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude*mythos*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude-3*",caps:{vision:!0}},{pattern:"*claude*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*gemini*image*",caps:{vision:!0,imageOutput:!0,contextWindow:1048576}},{pattern:"*gemini-3.8*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-3.7*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-3*pro*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65535}},{pattern:"*gemini-3*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2.5*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-budget",thinkingRange:{min:0,max:24576},contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2*",caps:{vision:!0,audioInput:!0,videoInput:!0,search:!0,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini*",caps:{vision:!0,search:!0,contextWindow:1048576}},{pattern:"*gemma*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*nanobanana*",caps:{vision:!0,imageOutput:!0}},{pattern:"*gpt-6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3}},{pattern:"*gpt-5*image*",caps:{imageOutput:!0}},{pattern:"*gpt-5*codex*",caps:{reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-4o*",caps:{vision:!0,search:!0,contextWindow:128e3,maxOutput:16384}},{pattern:"*gpt-4.1*",caps:{vision:!0,contextWindow:1e6,maxOutput:32768}},{pattern:"*gpt-4-turbo*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*gpt-4*",caps:{contextWindow:128e3}},{pattern:"*gpt-3.5*",caps:{contextWindow:16385,maxOutput:4096}},{pattern:"*gpt-oss*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1-mini*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o4*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*grok*image*",caps:{imageOutput:!0}},{pattern:"*grok-code*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:5e5}},{pattern:"*grok-4.5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:64e3}},{pattern:"*grok-4*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-3*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:131072}},{pattern:"*grok*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*qwen*vl*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwen*omni*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144,maxOutput:65536}},{pattern:"*qwen*coder*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6}},{pattern:"*qwen*max*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.5*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.6*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.7*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*plus*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*235b*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwq*",caps:{reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:131072}},{pattern:"*qwen*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*kimi*k3*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072}},{pattern:"*kimi*for-coding*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536}},{pattern:"*kimi*k2.7*code*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536}},{pattern:"*kimi*k2*",caps:{vision:!0,reasoning:!0,thinkingFormat:"kimi",contextWindow:262144,maxOutput:262144}},{pattern:"*kimi*",caps:{reasoning:!0,thinkingFormat:"kimi",contextWindow:262144}},{pattern:"*glm-5.3*",caps:{reasoning:!0,thinkingFormat:"zai",thinkingEffortSupported:!0,contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-5.2*",caps:{reasoning:!0,thinkingFormat:"zai",thinkingEffortSupported:!0,contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-5*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4.7*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*glm*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*deepseek-v4.*",caps:{vision:!0,reasoning:!0,thinkingFormat:"deepseek",thinkingEffortSupported:!0,contextWindow:1e6,maxOutput:128e3}},{pattern:"*deepseek-v4*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingEffortSupported:!0,contextWindow:1e6,maxOutput:384e3}},{pattern:"*reasoner*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-r*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-chat*",caps:{contextWindow:128e3}},{pattern:"*deepseek*",caps:{reasoning:!0,thinkingFormat:"deepseek",contextWindow:128e3}},{pattern:"*minimax*image*",caps:{imageOutput:!0}},{pattern:"*minimax-m3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"minimax",contextWindow:1048576,maxOutput:512e3}},{pattern:"*minimax-m2.7*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:204800,maxOutput:131072}},{pattern:"*minimax*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:131072}},{pattern:"*mimo*v2.5*",caps:{vision:!0,audioInput:!0,videoInput:!0,contextWindow:1048576,maxOutput:131072}},{pattern:"*mimo*omni*",caps:{vision:!0,audioInput:!0,contextWindow:262144,maxOutput:131072}},{pattern:"*mimo*preview*",caps:{vision:!0,reasoning:!0,thinkingFormat:"mimo",contextWindow:262144,maxOutput:131072}},{pattern:"*mimo*",caps:{vision:!0,contextWindow:262144,maxOutput:131072}},{pattern:"*llama-4*",caps:{vision:!0,contextWindow:1e6}},{pattern:"*llama*",caps:{contextWindow:128e3}},{pattern:"*codestral*",caps:{contextWindow:256e3}},{pattern:"*mistral-large*",caps:{vision:!0,contextWindow:256e3}},{pattern:"*mistral*",caps:{contextWindow:128e3}},{pattern:"*command-a-vision*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*command*",caps:{contextWindow:128e3}},{pattern:"*sonar*",caps:{search:!0,contextWindow:128e3}},{pattern:"*pplx*",caps:{search:!0,contextWindow:128e3}},{pattern:"*perplexity*",caps:{search:!0,contextWindow:128e3}},{pattern:"*laguna-s-2.1*free*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},{pattern:"*laguna-s-2.1*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:32e3}},{pattern:"*laguna*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},{pattern:"*muse*spark*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072}},{pattern:"*hunyuan*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"hy3*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"*step-*",caps:{reasoning:!0,thinkingFormat:"step",contextWindow:128e3}},{pattern:"*nemotron*",caps:{reasoning:!0,contextWindow:128e3}},{pattern:"*ling-*",caps:{reasoning:!0,contextWindow:128e3}}],q=["vision","pdf","audioInput","videoInput"],r=null;function s(a){r=a,"u">typeof globalThis&&(globalThis.__9rCatalogSource=a)}function t(a,b,c){let d={...h,...a},e=r||("u"<typeof globalThis?null:r=globalThis.__9rCatalogSource||null);if(e){let a=e.getModalities(b,c);if(a)for(let b of q)!0===a[b]&&(d[b]=!0);let f=e.getLimits(b,c);f&&(f.contextWindow>0&&(d.contextWindow=f.contextWindow),f.maxOutput>0&&(d.maxOutput=f.maxOutput))}return!d.vision&&function(a){if(!a)return!1;let b=String(a).toLowerCase();return!f.test(b)&&g.test(b)}(c)&&(d.vision=!0),d}let u=new Set(["deepseek/deepseek-v4-pro","deepseek/deepseek-v4-flash","deepseek/deepseek-v4-flash-fast","zai-org/glm-5.3","zai-org/glm-5.2","zai-org/glm-5.2-fast","zai-org/glm-5.1","zai-org/glm-5","minimaxai/minimax-m2.7","minimax/minimax-m2.7-free","minimaxai/minimax-m2.5","xiaomi/mimo-v2.5-pro","qwen/qwen3.6-max-preview","qwen/qwen3.7-max","meituan/longcat-2.0:free","stepfun/step-3.5-flash","tencent/hy4-preview","tencent/hy3","tencent/hy3-paid","nvidia/nemotron-3-ultra-550b-a55b","poolside/laguna-s-2.1-free","inclusionai/ling-3.0-flash-free","inclusionai/ling-3.0-flash-sante:free"]),v=null;function w(a){v=a||null,"u">typeof globalThis&&(globalThis.__9rCustomCapsSource=v)}function x(a,b){let c,e=function(a,b){if(!b)return{...h};let c=b.includes("/")?b.split("/").pop():b;if("commandcode"===a||"cmc"===a){let a=o.commandcode;return a?.[b]?{...h,...a[b]}:a?.[c]?{...h,...a[c]}:{...h,reasoning:!0,thinkingFormat:"commandcode",thinkingEffortSupported:!0,vision:!function(a){let b=String(a||"").toLowerCase();if(u.has(b))return!0;for(let a of u){let c=a.includes("/")?a.slice(a.lastIndexOf("/")+1):a;if(b===c||b.endsWith("/"+c))return!0}return!1}(b),contextWindow:1e6,maxOutput:384e3}}if(a){let d=o[a];if(d?.[b])return{...h,...d[b]};if(d?.[c])return{...h,...d[c]}}if(k[c])return{...h,...k[c]};if(k[b])return{...h,...k[b]};for(let{pattern:e,caps:f}of p)if((0,d.gH)(e,c)||(0,d.gH)(e,b))return t(f,a,b);return t(null,a,b)}(a,b),f=b&&(c=v||globalThis?.__9rCustomCapsSource)&&a&&c.get(`${a}|${b}`)||null;if(!f)return e;let g={};for(let[a,b]of Object.entries(f))"boolean"==typeof b&&(g[a]=b);return{...e,...g}}}};
@@ -1,3 +1,3 @@
1
1
  exports.id=2460,exports.ids=[2460],exports.modules={7985:(a,b,c)=>{"use strict";c.d(b,{Jm:()=>i,N:()=>o,eI:()=>j,eW:()=>l,mH:()=>n,uZ:()=>r,wu:()=>p,x7:()=>q});var d=c(15081),e=c(31673);c(42655);var f=c(31223);globalThis.__tokenhopSamlRequestCache||(globalThis.__tokenhopSamlRequestCache=new e.InMemoryCacheProvider({keyExpirationPeriodMs:6e5}));let g=globalThis.__tokenhopSamlRequestCache,h=new Set;function i(a){if(!a||"string"!=typeof a)return"";let b=a.replace(/-----BEGIN CERTIFICATE-----/gi,"").replace(/-----END CERTIFICATE-----/gi,"").replace(/[^A-Za-z0-9+/=]/g,"");if(!b)return"";let c=b.match(/.{1,64}/g)||[];return`-----BEGIN CERTIFICATE-----
2
2
  ${c.join("\n")}
3
- -----END CERTIFICATE-----`}function j(a){return!!(a?.samlEntryPoint&&a?.samlCert)}function k(a){return(a||"").replace(/\/+$/,"")}function l(a,b){let c=(b?.baseUrl||"").trim()||process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||"";if(c)return k(c);if(a){let b=a?.headers?.get?.("x-forwarded-proto")||"",c=a?.headers?.get?.("x-forwarded-host")||a?.headers?.get?.("host")||"";if(c){let d=(b||new URL(a.url).protocol||"http:").replace(/:$/,"");return`${d}://${c}`.replace(/\/+$/,"")}if(a.url)return k(new URL(a.url).origin)}return"http://localhost:20128"}function m(a,b){let c=i(a?.samlCert||"")||"-----BEGIN CERTIFICATE-----\nMIIC...DUMMY...\n-----END CERTIFICATE-----",e=`${b}/api/auth/saml/acs`;return new d.Qb({entryPoint:a?.samlEntryPoint||"https://example.com/sso",issuer:a?.samlIssuer||f.Hc.samlIssuerDefault,idpCert:c,cert:c,callbackUrl:e,acceptedClockSkewMs:6e4,wantAssertionsSigned:!0,validateInResponseTo:d.EK.always,requestIdExpirationPeriodMs:6e5,cacheProvider:g})}async function n(a,b){let c=l(a,b),d=m(b,c),e=await d.generateAuthorizeRequestAsync(!1,!1),f=e.match(/ID="([^"]+)"/),g=f?f[1]:"";return{authorizeUrl:await d._requestToUrlAsync(e,null,"authorize",{}),requestId:g}}async function o(a,b,c,d){if(!c)throw Error("Missing SAML request state (saml_state cookie); start sign-in again");if(!d?.samlCert)throw Error("IdP X.509 certificate (samlCert) is missing or not configured");let e=l(a,d),f=m(d,e),g=("object"==typeof b&&null!==b?b:{SAMLResponse:b}).SAMLResponse;if(!g)throw Error("Missing SAMLResponse parameter in assertion POST body");let i=Buffer.from(g,"base64").toString("utf8").match(/InResponseTo=["']([^"']+)["']/i),j=i?i[1]:null;if(!j||j!==c)throw Error(`InResponseTo mismatch: expected ${c}, received ${j||"none"}`);if(h.has(c))throw Error("SAML response for this request is already being processed");h.add(c);try{let a=await f.validatePostResponseAsync({SAMLResponse:g}),b=a?.profile||a;if(b?.inResponseTo!==c)throw Error("InResponseTo mismatch after validation");return b}finally{h.delete(c)}}function p(a,b){return m(b,a).generateServiceProviderMetadata()}function q(a={},b={}){if(!a)return"";let c=b.samlAttributeEmail;if(c&&a[c]){let b=a[c];return Array.isArray(b)?b[0]:String(b)}let d=["email","emailAddress","mail","nameID","nameId","upn","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"];for(let b of d)if(a[b]){let c=a[b];return Array.isArray(c)?c[0]:String(c)}if(a.attributes){for(let b of d)if(a.attributes[b]){let c=a.attributes[b];return Array.isArray(c)?c[0]:String(c)}}return""}function r(a={},b={}){if(!a)return"";let c=b.samlAttributeName;if(c&&a[c]){let b=a[c];return Array.isArray(b)?b[0]:String(b)}for(let b of["displayName","name","cn","commonName","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"])if(a[b]){let c=a[b];return Array.isArray(c)?c[0]:String(c)}if(a.givenName||a.sn||a.surname){let b=a.givenName||"",c=a.sn||a.surname||"",d=`${b} ${c}`.trim();if(d)return d}return q(a,b)}},11720:(a,b,c)=>{"use strict";c.d(b,{E8:()=>h,X8:()=>i});var d=c(70900);let e=null;async function f(a){try{let b=await a();(0,d.aj)(g(b))}catch{}}function g(a){let b={};for(let c of["retryPolicy","cooldowns","backoff","streamTimeouts"])a?.[c]!==void 0&&(b[c]=a[c]);return b}function h(a,b){!a||"object"!=typeof a||(Object.hasOwn(a,"retryPolicy")||Object.hasOwn(a,"cooldowns")||Object.hasOwn(a,"backoff")||Object.hasOwn(a,"streamTimeouts"))&&(0,d.aj)(g(b))}function i(a){return e??=f(a)}},13708:(a,b,c)=>{"use strict";function d({authMode:a,ssoType:b}={}){let c="sso"===a||"oidc"===a||"saml"===a,e=c||"both"===a,f="oidc"===a||"saml"===a?a:"saml"===b?"saml":"oidc";return{password:!c,oidc:e&&"oidc"===f,saml:e&&"saml"===f,protocol:f,ssoOnly:c}}c.d(b,{b:()=>d})},25334:(a,b,c)=>{"use strict";function d(a){return null==a?"":String(a).trim()}c.d(b,{k:()=>f});let e=["http:","https:","socks5:","socks4:","socks5h:","socks4a:"];function f({outboundProxyEnabled:a,outboundProxyUrl:b,outboundNoProxy:c}={}){if("u"<typeof process||!process.env)return;let g=d(b),h=d(c);if(!a){"1"===process.env.TOKENHOP_PROXY_MANAGED&&(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.NO_PROXY,delete process.env.TOKENHOP_PROXY_MANAGED,delete process.env.TOKENHOP_PROXY_URL,delete process.env.TOKENHOP_NO_PROXY);return}let i="1"===process.env.TOKENHOP_PROXY_MANAGED,j=!1;if(i&&(g||(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.TOKENHOP_PROXY_URL),h||(delete process.env.NO_PROXY,delete process.env.TOKENHOP_NO_PROXY)),g){let a=function(a){if(!a||/[\n\r`$]/.test(a))return null;try{let b=new URL(a);if(!e.includes(b.protocol))return null;return b.href}catch{return null}}(g);a&&(process.env.HTTP_PROXY=a,process.env.HTTPS_PROXY=a,process.env.ALL_PROXY=a,process.env.TOKENHOP_PROXY_URL=a,j=!0)}h&&(process.env.NO_PROXY=h,process.env.TOKENHOP_NO_PROXY=h,j=!0),j?process.env.TOKENHOP_PROXY_MANAGED="1":i&&delete process.env.TOKENHOP_PROXY_MANAGED}},57729:()=>{},58691:(a,b,c)=>{"use strict";c.d(b,{VF:()=>i,er:()=>h});let d=Object.freeze(["fallback","round-robin","fusion","weighted"]),e="fallback",f=new Set(["__proto__","constructor","prototype"]);function g(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function h(a,b){let c=a?.comboStrategies,f=g(c)&&Object.hasOwn(c,b)&&g(c[b])?c[b]:{},h=f.fallbackStrategy||a?.comboStrategy||e;return{strategy:d.includes(h)?h:e,stickyLimit:a?.comboStickyRoundRobinLimit,weights:g(f.weights)?f.weights:{},judgeModel:f.judgeModel,fusionTuning:f.fusionTuning}}function i(a){if(!g(a))return null;if(Object.hasOwn(a,"comboStrategy")&&!d.includes(a.comboStrategy))return"Invalid comboStrategy";if(!Object.hasOwn(a,"comboStrategies"))return null;let b=a.comboStrategies;if(!g(b))return"comboStrategies must be an object";let c=Object.entries(b);if(c.length>500)return"Too many comboStrategies entries";for(let[a,b]of c){if(f.has(a))return`Invalid combo name "${a}"`;if(!g(b)||void 0!==b.fallbackStrategy&&!d.includes(b.fallbackStrategy))return`Invalid strategy for combo "${a}"`;let c=b.weights;if(void 0!==c){if(!g(c)||Object.keys(c).length>200)return`Invalid weights for combo "${a}"`;for(let[b,d]of Object.entries(c))if(f.has(b)||"number"!=typeof d||!Number.isFinite(d)||d<0||d>1e3)return`Invalid weight for combo "${a}" model "${b}"`}}return null}},73284:(a,b,c)=>{"use strict";let d;c.d(b,{gR:()=>F,hT:()=>E,Pf:()=>D,GY:()=>C,sP:()=>G,Ir:()=>B,Mj:()=>A,iw:()=>y,EJ:()=>z,Ui:()=>M,Rj:()=>N,HO:()=>H,mx:()=>L,x8:()=>K});var e=c(77598),f=c.n(e),g=c(38805),h=c(99129),i=c(64416),j=c(80700);async function k(a,b,c){let d=a.get(b)||a.set(b,{}).get(b),{alg:e}=c;if(void 0===d[e]){let a=(0,i.xY)(c,b,!0).then(a=>{if("public"!==a.type)throw new h.Dm("JSON Web Key Set members must be public keys");return d[e]=a,a}).catch(b=>{throw d[e]===a&&delete d[e],b});d[e]=a}return d[e]}function l(a){let b;try{b=structuredClone(a)}catch{}if(!(0,g.fV)(b))throw new h.Dm("JSON Web Key Set malformed");let c=b.keys.map(a=>{let b=(0,i.ZZ)(a);return Array.isArray(b.key_ops)&&(b.key_ops=[...b.key_ops]),b}),d=new WeakMap;return Object.defineProperty(async(a,e)=>{let{alg:f,kid:g}={...a,...e?.header},i="string"==typeof f?j.p[f]:void 0;if(!i||i.secret)throw new h.T0('Unsupported "alg" value for a JSON Web Key Set');let l=b.keys.filter((a,b)=>(function(a,b,c,d){let{kty:e,key_ops:f,ext:g,kid:h,alg:i,use:j,crv:k}=a;return(void 0===g||"boolean"==typeof g)&&(void 0===f||Array.isArray(f)&&f.every((a,b)=>"string"==typeof a&&f.indexOf(a)===b)&&f.includes("verify"))&&b.kty.includes(e)&&(void 0===d||"string"==typeof d&&d===h)&&(void 0===i?"AKP"!==e:c===i)&&(void 0===j||"sig"===j)&&(!b.crv||k===b.crv)})(c[b],i,f,g)),{0:m,length:n}=l;if(!n)throw new h.BT;if(1!==n){let a=new h.$4;throw a[Symbol.asyncIterator]=async function*(){for(let a of l)try{yield await k(d,a,i)}catch{}},a}return k(d,m,i)},"jwks",{value:()=>structuredClone(b)})}(typeof navigator>"u"||!navigator.userAgent?.startsWith?.("Mozilla/5.0 "))&&(d="jose/v6.2.12");let m=Symbol();async function n(a,b,c,d=fetch){let e=await d(a,{method:"GET",signal:c,redirect:"manual",headers:b}).catch(a=>{throw"TimeoutError"===a.name?new h.xb:a});if(200!==e.status)throw new h.i4("Expected 200 OK from the JSON Web Key Set HTTP response");try{return await e.json()}catch{throw new h.i4("Failed to parse the JSON Web Key Set HTTP response as JSON")}}let o=Symbol();function p(a,b){return Number.isFinite(a)&&Date.now()<a+b}function q(a,b,c){if(Number.isNaN(a))throw TypeError(`"${c}" option must not be NaN`);return"number"==typeof a?a:b}var r=c(17509),s=c(89718),t=c(13708);let u="openid profile email",v="Sign in with OIDC";function w(a){return(a||"").trim().replace(/\/+$/,"")}function x(a){return(a||u).trim()||u}function y(a){let b=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||"";if(b)return w(b);let c=a?.headers?.get?.("x-forwarded-proto")||"",d=a?.headers?.get?.("x-forwarded-host")||a?.headers?.get?.("host")||"";if(d){let b=(c||new URL(a.url).protocol||"http:").replace(/:$/,"");return`${b}://${d}`.replace(/\/+$/,"")}return w(new URL(a.url).origin)}function z(a){return!!(w(a?.oidcIssuerUrl)&&(a?.oidcClientId||"").trim()&&(a?.oidcClientSecret||"").trim())}async function A(){let a=await (0,s.getSettings)();return(0,t.b)(a).oidc&&z(a)?{issuerUrl:w(a.oidcIssuerUrl),clientId:a.oidcClientId.trim(),clientSecret:a.oidcClientSecret.trim(),scopes:x(a.oidcScopes),loginLabel:(a.oidcLoginLabel||v).trim()||v}:null}async function B(a){let b=`${w(a)}/.well-known/openid-configuration`,c=await fetch(b,{cache:"no-store"});if(!c.ok)throw Error(`Failed to load OIDC discovery document from ${b}`);return await c.json()}function C(){let a=f().randomBytes(32).toString("base64url"),b=f().createHash("sha256").update(a).digest("base64url");return{verifier:a,challenge:b}}function D(){return f().randomBytes(16).toString("base64url")}function E(){return f().randomBytes(16).toString("base64url")}function F({authorizationEndpoint:a,clientId:b,redirectUri:c,scopes:d=u,state:e,nonce:f,codeChallenge:g}){let h=new URL(a);return h.searchParams.set("response_type","code"),h.searchParams.set("client_id",b),h.searchParams.set("redirect_uri",c),h.searchParams.set("scope",x(d)),h.searchParams.set("state",e),h.searchParams.set("nonce",f),h.searchParams.set("code_challenge",g),h.searchParams.set("code_challenge_method","S256"),h.toString()}async function G({tokenEndpoint:a,clientId:b,clientSecret:c,code:d,redirectUri:e,codeVerifier:f}){let g=new URLSearchParams({grant_type:"authorization_code",client_id:b,code:d,redirect_uri:e,code_verifier:f});c&&g.set("client_secret",c);let h=await fetch(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:g}),i=await h.json().catch(()=>({}));if(!h.ok)throw Error(i?.error_description||i?.error||`OIDC token exchange failed (${h.status})`);return i}async function H({tokenEndpoint:a,clientId:b,clientSecret:c,redirectUri:d}){if(!c)return{tested:!1,valid:null,message:"No client secret was provided, so secret validation was skipped."};let e=new URLSearchParams({grant_type:"authorization_code",client_id:b,client_secret:c,code:"__oidc_test_invalid_code__",redirect_uri:d,code_verifier:"__oidc_test_invalid_verifier__"}),f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e}),g=await f.json().catch(()=>({})),h=(g?.error||"").toLowerCase(),i=g?.error_description||g?.error||"";return f.ok?{tested:!0,valid:!0,message:"Client secret was accepted by the token endpoint.",raw:g}:"invalid_client"===h||"unauthorized_client"===h||/client.*(invalid|failed|mismatch)/i.test(i)?{tested:!0,valid:!1,message:i||"Client secret is not valid.",raw:g}:"invalid_grant"===h||"invalid_code"===h||/grant|code/i.test(i)?{tested:!0,valid:!0,message:"Client secret was accepted; the token exchange failed only because the test authorization code is invalid.",raw:g}:{tested:!0,valid:null,message:i||`Token endpoint responded with ${f.status}`,raw:g}}let I=["RS256","RS384","RS512","PS256","PS384","PS512","ES256","ES384","ES512","EdDSA"],J=["HS256","HS384","HS512"];async function K({idToken:a,issuer:b,audience:c,jwksUri:e,nonce:f,clientSecret:i,allowedAlgs:j}){let k,s;if(!f)throw Error("id_token verification requires the login nonce");let t=(s=Array.isArray(j)?j.filter(a=>"string"==typeof a&&"none"!==a.toLowerCase()):[]).length>0?s:I,{alg:u}=function(a){let b;if("string"==typeof a){let c=a.split(".");(3===c.length||5===c.length)&&([b]=c)}else if("object"==typeof a&&a)if("protected"in a)b=a.protected;else throw TypeError("Token does not contain a Protected Header");let c="Invalid Token or Protected Header formatting";if("string"!=typeof b||!b)throw TypeError(c);return(0,g.OX)(b,TypeError,c)}(a);if(!u||"none"===u.toLowerCase()||!t.includes(u))throw Error(`id_token alg "${u}" is not allowed (advertised: ${t.join(", ")})`);if(J.includes(u)){if(!i)throw Error(`id_token alg "${u}" requires a client secret`);k=new TextEncoder().encode(i)}else{if(!e)throw Error("OIDC discovery document has no jwks_uri");k=function(a){if(!(a instanceof URL))throw TypeError("url must be an instance of URL");let b=new URL(a.href).href,c=(void 0)??{},e=c.timeoutDuration;if("number"==typeof e&&(!Number.isInteger(e)||e<0))throw TypeError('"timeoutDuration" option must be a non-negative integer');let f="number"==typeof e?e:5e3,i=q(c.cooldownDuration,3e4,"cooldownDuration"),j=q(c.cacheMaxAge,6e5,"cacheMaxAge"),k=new Headers(c.headers);d&&!k.has("User-Agent")&&k.set("User-Agent",d),k.has("accept")||k.set("accept","application/json, application/jwk-set+json");let r=c[m],s=c[o],t,u,v=0,w=0,x;if(s&&"object"==typeof s){let{uat:a,jwks:b}=s;p(a,j)&&(0,g.fV)(b)&&(t=a,x=l(b))}let y=async()=>{if(u&&("u">typeof WebSocketPair||"u">typeof navigator&&"Cloudflare-Workers"===navigator.userAgent||"u">typeof EdgeRuntime&&"vercel"===EdgeRuntime)&&(u=void 0),!u){let a=++v,c=u=n(b,k,AbortSignal.timeout(f),r).then(b=>{let c=l(b);if(a<=w)return;x=c;let d=Date.now();s&&(s.uat=d,s.jwks=b),t=d,w=a}).finally(()=>{u===c&&(u=void 0)})}await u};return Object.defineProperties(async(a,b)=>{x&&p(t,j)||await y();try{return await x(a,b)}catch(c){if(c instanceof h.BT&&!p(t,i))return await y(),x(a,b);throw c}},{coolingDown:{get:()=>p(t,i),enumerable:!0},fresh:{get:()=>p(t,j),enumerable:!0},reload:{value:y,enumerable:!0},reloading:{get:()=>!!u,enumerable:!0},jwks:{value:()=>x?.jwks(),enumerable:!0}})}(new URL(e))}let{payload:v}=await (0,r.V)(a,k,{issuer:b,audience:c,algorithms:[u]});if(v.nonce!==f)throw Error("id_token nonce mismatch");return v}function L(a,b){let c=Array.isArray(a?.id_token_signing_alg_values_supported)?a.id_token_signing_alg_values_supported.filter(a=>"string"==typeof a):[],d=c.length>0&&c.every(a=>J.includes(a)),e=c.some(a=>"none"!==a.toLowerCase()&&!J.includes(a)),f=[];return d?f.push("The provider signs id_tokens only with HS* (client secret). Sign-in works, but selecting a signing key in the IdP (RS256) is recommended."):0===b&&(e||0===c.length)&&f.push("The provider's JWKS has no keys, so RS/ES-signed id_tokens cannot be verified."),c.some(a=>"none"===a.toLowerCase())&&f.push('The provider advertises alg "none"; unsigned id_tokens are always rejected.'),{signingAlgs:c,warnings:f}}function M(a={}){return a.preferred_username||a.email||a.name||a.given_name||a.sub||"OIDC user"}function N(a={}){return a.email||""}},92844:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GET:()=>ag,PATCH:()=>ah,dynamic:()=>O,revalidate:()=>P,ssoLockoutError:()=>ad,validateSettingsBody:()=>af});var d=c(23211),e=c(89718),f=c(25334),g=c(50835),h=c(25921),i=c(58691);let j=new Set(["__proto__","constructor","prototype"]),k=new Set(["tunnelProvider","SEARXNG_URL","CLAUDE_CLI_VERSION","CODEX_CLI_VERSION","GROK_CLI_VERSION","ZED_CLIENT_VERSION"]);function l(a){for(let b=0;b<a.length;b+=1){let c=a.charCodeAt(b);if(c<=31||127===c)return!0}return!1}let m=/[\n\r`$]/,n=new Set(["http:","https:","socks5:","socks4:","socks5h:","socks4a:"]),o=new Set(["fill-first","round-robin","weighted"]),p=new Set(["round-robin","random"]),q=new Set(["vision","pdf","audioInput","videoInput"]),r=new Set(["enabled","roundRobin","models"]),s=new Set(["lite","full","ultra","wenyan-lite","wenyan","wenyan-ultra"]),t=new Set(["lite","full","ultra"]),u=new Set(["auto","none","minimal","low","medium","high","xhigh","max","ultra","thinking"]),v=new Set(["enabled","connections"]);function w(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)&&Object.getPrototypeOf(a)===Object.prototype}function x(a,b,c){return Number.isInteger(a)&&a>=b&&a<=c}function y(a,b=256){return"string"==typeof a&&a.length>0&&a.length<=b&&a===a.trim()&&!j.has(a)}function z(a){if("string"!=typeof a||a.length>2048)return!1;let b=a.trim();if(!b)return!0;if(l(a))return!1;try{let a=new URL(b);return"http:"===a.protocol||"https:"===a.protocol}catch{return!1}}let A=new Set(["__proto__","constructor","prototype"]),B=["retryPolicy","cooldowns","backoff","streamTimeouts"],C=new Set(["502","503","504"]),D=new Set(["rateLimitCapMs","longMs","shortMs","transientMs"]),E=new Set(["startMs","maxMs","levels"]),F=new Set(["firstChunkMs","stallMs","connectMs"]);function G(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)&&Object.getPrototypeOf(a)===Object.prototype}function H(a,b,c){return Number.isInteger(a)&&a>=b&&a<=c}var I=c(11720),J=c(56588),K=c(34013),L=c(73284),M=c(7985),N=c(13708);let O="force-dynamic",P=0,Q={"Cache-Control":"no-store"},R=["password","mitmSudoEncrypted"],S=/^[a-zA-Z0-9_.-]+$/,T=new Set(["__proto__","constructor","prototype"]);function U(a){let b=Object.fromEntries(Object.entries(a).filter(([a])=>!J.Pq.has(a)));return b.oidcConfigured=!!(a.oidcIssuerUrl&&a.oidcClientId&&a.oidcClientSecret),b}function V(a){let b=U(a);return b.startPage=(0,g.ES)(b.startPage),b.uiDensity=(0,g.b5)(b.uiDensity),d.NextResponse.json(b,{headers:Q})}async function W(a){let b,f,{name:g,patch:j}=a.comboStrategyPatch||{};if("string"!=typeof g||!S.test(g)||T.has(g))return d.NextResponse.json({error:"Invalid combo name"},{status:400});if(!j||"object"!=typeof j||Array.isArray(j))return d.NextResponse.json({error:"Invalid combo strategy patch"},{status:400});let k=new Set(["fallbackStrategy","weights","judgeModel","fusionTuning"]);if(Object.keys(j).some(a=>!k.has(a)))return d.NextResponse.json({error:"Invalid combo strategy patch"},{status:400});let l=(0,i.VF)({comboStrategies:{[g]:j}});if(l)return d.NextResponse.json({error:l},{status:400});let m=!1;try{f=await (0,e.ln)(a=>{let c=Object.hasOwn(a,g)?a[g]:{};if(Object.hasOwn(j,"weights")&&!Object.hasOwn(j,"fallbackStrategy")&&c?.fallbackStrategy!=="weighted")return m=!0,a;let d={...c,...j};if(j.weights&&(d.weights={...c?.weights,...j.weights}),b=(0,i.VF)({comboStrategies:{[g]:d}}))return a;let e={...a};return d.fallbackStrategy&&"fallback"!==d.fallbackStrategy?e[g]=d:delete e[g],e},g)}catch(a){if("COMBO_NOT_FOUND"===a.code)return d.NextResponse.json({error:"Combo not found"},{status:409});throw a}return m?d.NextResponse.json({error:"Combo not found"},{status:409}):b?d.NextResponse.json({error:b},{status:400}):((0,h.UP)(),Promise.all([c.e(7774),c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(3943),c.e(965),c.e(3225),c.e(2051),c.e(9124),c.e(2380),c.e(8416),c.e(318),c.e(8895),c.e(1245),c.e(7211),c.e(1026)]).then(c.bind(c,78632)).then(({syncQuotaSnapshotPoller:a})=>a()).catch(a=>console.warn("[QuotaSnapshotPoller] settings update failed:",a.message)),V(f))}let X=new Set(["fill-first","round-robin","weighted"]),Y=new Set(["password","sso","both","saml","oidc"]),Z=new Set(["oidc","saml"]),$=new Set(["__proto__","constructor","prototype"]);function _(a){return Number.isInteger(a)&&a>=1&&a<=100}function aa(a,b=256){return"string"==typeof a&&a.length<=b}function ab(a){if("string"!=typeof a||a.length>2048)return!1;if(!a.trim())return!0;try{let b=new URL(a.trim());return"http:"===b.protocol||"https:"===b.protocol}catch{return!1}}let ac=["authMode","ssoType","oidcIssuerUrl","oidcClientId","oidcClientSecret","samlEntryPoint","samlCert"];function ad(a,b){if(!ac.some(a=>Object.hasOwn(b,a)))return"";let c={...a,...b};String(b.oidcClientSecret??"").trim()||(c.oidcClientSecret=a.oidcClientSecret);let d=(0,N.b)(c);return d.ssoOnly?d.saml&&!(0,M.eI)(c)?'Cannot enable SSO-only sign-in: SAML is not fully configured (entry point and certificate are required). Configure and test it with "Password + SSO" first.':d.oidc&&!(0,L.EJ)(c)?'Cannot enable SSO-only sign-in: OIDC is not fully configured (issuer URL, client ID and client secret are required). Configure and test it with "Password + SSO" first.':"":""}function ae(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)&&Object.getPrototypeOf(a)===Object.prototype}function af(a){let b=(0,i.VF)(a);return b||(!function(a){if(Object.hasOwn(a,"fallbackStrategy")&&!X.has(a.fallbackStrategy)||Object.hasOwn(a,"stickyRoundRobinLimit")&&!_(a.stickyRoundRobinLimit))return!1;if(Object.hasOwn(a,"providerStrategies")){if(!ae(a.providerStrategies))return!1;for(let[b,c]of Object.entries(a.providerStrategies))if(b!==b.trim()||!b||$.has(b)||!ae(c)||Object.keys(c).some(a=>$.has(a))||Object.hasOwn(c,"fallbackStrategy")&&!X.has(c.fallbackStrategy)||Object.hasOwn(c,"stickyRoundRobinLimit")&&!_(c.stickyRoundRobinLimit))return!1}return!0}(a)?"Invalid account strategy settings":function(a){for(let b of["requireLogin","requireApiKey","tunnelDashboardAccess"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;for(let b of["requestLogsEnabled","translatorEnabled"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;if(Object.hasOwn(a,"startPage")&&("string"!=typeof a.startPage||(0,g.ES)(a.startPage)!==a.startPage))return"Invalid startPage: must be a dashboard route";if(Object.hasOwn(a,"uiDensity")&&("string"!=typeof a.uiDensity||(0,g.b5)(a.uiDensity)!==a.uiDensity))return"Invalid uiDensity: must be comfortable or compact";if(Object.hasOwn(a,"authMode")&&!Y.has(a.authMode))return"Invalid authMode";if(Object.hasOwn(a,"ssoType")&&!Z.has(a.ssoType))return"Invalid ssoType";for(let b of["oidcClientId","oidcScopes","oidcLoginLabel"])if(Object.hasOwn(a,b)&&!aa(a[b]))return`Invalid ${b}`;if(Object.hasOwn(a,"oidcIssuerUrl")&&!ab(a.oidcIssuerUrl))return"Invalid oidcIssuerUrl: must be an http(s) URL";if(Object.hasOwn(a,"oidcClientSecret")&&!aa(a.oidcClientSecret,2048))return"Invalid oidcClientSecret";if(Object.hasOwn(a,"samlEntryPoint")&&!ab(a.samlEntryPoint))return"Invalid samlEntryPoint: must be an http(s) URL";for(let b of["samlIssuer","samlLoginLabel","samlAttributeEmail","samlAttributeName"])if(Object.hasOwn(a,b)&&!aa(a[b]))return`Invalid ${b}`;if(Object.hasOwn(a,"samlCert")&&!aa(a.samlCert,16384))return"Invalid samlCert";for(let b of["currentPassword","newPassword"])if(Object.hasOwn(a,b)&&("string"!=typeof a[b]||a[b].length>256))return`Invalid ${b}`;return""}(a)||function(a){if(!w(a))return null;for(let b of Object.keys(a)){if(j.has(b))return`Invalid setting "${b}"`;if(k.has(b))return`Invalid ${b}: read-only`}if(Object.hasOwn(a,"fallbackStrategy")&&!o.has(a.fallbackStrategy))return"Invalid fallbackStrategy";if(Object.hasOwn(a,"stickyRoundRobinLimit")&&!x(a.stickyRoundRobinLimit,1,100))return"Invalid stickyRoundRobinLimit: must be an integer between 1 and 100";if(Object.hasOwn(a,"comboStickyRoundRobinLimit")&&!x(a.comboStickyRoundRobinLimit,1,100))return"Invalid comboStickyRoundRobinLimit: must be an integer between 1 and 100";if(Object.hasOwn(a,"providerStrategies")&&!function(a){if(!w(a))return!1;for(let[b,c]of Object.entries(a)){if(!y(b,128)||!w(c))return!1;for(let a of Object.keys(c))if(j.has(a))return!1;if(Object.hasOwn(c,"fallbackStrategy")&&!o.has(c.fallbackStrategy)||Object.hasOwn(c,"stickyRoundRobinLimit")&&!x(c.stickyRoundRobinLimit,1,100)||Object.hasOwn(c,"proxyPoolId")&&("string"!=typeof c.proxyPoolId||!c.proxyPoolId.trim()||c.proxyPoolId.length>256)||Object.hasOwn(c,"rotateStrategy")&&!p.has(c.rotateStrategy))return!1}return!0}(a.providerStrategies))return"Invalid providerStrategies";if(Object.hasOwn(a,"capacityAdapter")&&!function(a){if(!w(a))return!1;for(let[b,c]of Object.entries(a)){if(!q.has(b))return!1;if(Array.isArray(c)){if(c.length>500)return!1;for(let a of c)if(!("string"==typeof a&&a.trim()&&a.length<=256)&&!(w(a)&&"string"==typeof a.model&&a.model.trim()&&a.model.length<=256&&Object.keys(a).every(a=>"model"===a||"enabled"===a)&&(!Object.hasOwn(a,"enabled")||"boolean"==typeof a.enabled)))return!1;continue}if(!w(c))return!1;for(let a of Object.keys(c))if(!r.has(a))return!1;if(Object.hasOwn(c,"enabled")&&"boolean"!=typeof c.enabled||Object.hasOwn(c,"roundRobin")&&"boolean"!=typeof c.roundRobin)return!1;if(Object.hasOwn(c,"models")){if(!Array.isArray(c.models)||c.models.length>500)return!1;for(let a of c.models)if("string"!=typeof a||!a.trim()||a.length>256)return!1}}return!0}(a.capacityAdapter))return"Invalid capacityAdapter";for(let b of["outboundProxyEnabled","tunnelEnabled","tailscaleEnabled"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;if(Object.hasOwn(a,"outboundProxyUrl")&&!function(a){if("string"!=typeof a||a.length>2048)return!1;let b=a.trim();if(!b)return!0;if(m.test(a))return!1;try{return n.has(new URL(b).protocol)}catch{return!1}}(a.outboundProxyUrl))return"Invalid outboundProxyUrl: must be an http/https/socks proxy URL";if(Object.hasOwn(a,"outboundNoProxy")&&!function(a){if("string"!=typeof a||a.length>2048)return!1;if(!a.trim())return!0;if(l(a)||/[`$]/.test(a))return!1;for(let b of a.split(",")){let a=b.trim();if(a&&(a.length>253||/\s/.test(a)||a.includes("://")))return!1}return!0}(a.outboundNoProxy))return"Invalid outboundNoProxy: must be a comma-separated host list";for(let b of["rtkEnabled","headroomEnabled","headroomCompressUserMessages","headroomCodeAware","headroomKompress","cavemanEnabled","ponytailEnabled","pxpipeEnabled","pxpipeAutoInstall"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;if(Object.hasOwn(a,"headroomUrl")&&!z(a.headroomUrl))return"Invalid headroomUrl: must be an http(s) URL";if(Object.hasOwn(a,"headroomTimeoutMs")&&!x(a.headroomTimeoutMs,1,3e5))return"Invalid headroomTimeoutMs: must be an integer between 1 and 300000";if(Object.hasOwn(a,"cavemanLevel")&&!s.has(a.cavemanLevel))return"Invalid cavemanLevel";if(Object.hasOwn(a,"ponytailLevel")&&!t.has(a.ponytailLevel))return"Invalid ponytailLevel";if(Object.hasOwn(a,"pxpipeMinChars")&&!x(a.pxpipeMinChars,0,1e7))return"Invalid pxpipeMinChars: must be an integer between 0 and 10000000";if(Object.hasOwn(a,"pxpipeTimeoutMs")&&!x(a.pxpipeTimeoutMs,1,6e5))return"Invalid pxpipeTimeoutMs: must be an integer between 1 and 600000";if(Object.hasOwn(a,"providerThinking")&&!function(a){if(!w(a)||Object.keys(a).length>500)return!1;for(let[b,c]of Object.entries(a))if(!y(b,128)||!w(c)||Object.keys(c).some(a=>"mode"!==a||j.has(a))||!Object.hasOwn(c,"mode")||!u.has(c.mode))return!1;return!0}(a.providerThinking))return"Invalid providerThinking";for(let b of["claudeAutoPing","codexAutoPing"])if(Object.hasOwn(a,b)&&!function(a){if(!w(a))return!1;for(let b of Object.keys(a))if(!v.has(b))return!1;if(Object.hasOwn(a,"enabled")&&"boolean"!=typeof a.enabled)return!1;if(void 0===a.connections)return!0;if(!w(a.connections))return!1;let b=Object.entries(a.connections);if(b.length>1e4)return!1;for(let[a,c]of b)if(!y(a)||"boolean"!=typeof c)return!1;return!0}(a[b]))return`Invalid ${b}: must be a per-connection map`;return Object.hasOwn(a,"ccFilterNaming")&&"boolean"!=typeof a.ccFilterNaming?"Invalid ccFilterNaming: must be a boolean":Object.hasOwn(a,"quotaVisibility")&&!function(a){if(!w(a)||Object.keys(a).length>500)return!1;for(let[b,c]of Object.entries(a)){if(!y(b,128)||!w(c))return!1;for(let a of Object.keys(c))if(j.has(a))return!1;if(!Object.hasOwn(c,"hidden")||!Array.isArray(c.hidden)||c.hidden.length>1e3)return!1;for(let a of c.hidden)if("string"!=typeof a||!a.trim()||a.length>256)return!1}return!0}(a.quotaVisibility)?"Invalid quotaVisibility":Object.hasOwn(a,"mitmRouterBaseUrl")&&!z(a.mitmRouterBaseUrl)?"Invalid mitmRouterBaseUrl: must be an http(s) URL":Object.hasOwn(a,"enableObservability")&&"boolean"!=typeof a.enableObservability?"Invalid enableObservability: must be a boolean":Object.hasOwn(a,"observabilityMaxRecords")&&!x(a.observabilityMaxRecords,1,1e7)?"Invalid observabilityMaxRecords: must be an integer between 1 and 10000000":Object.hasOwn(a,"observabilityBatchSize")&&!x(a.observabilityBatchSize,1,1e4)?"Invalid observabilityBatchSize: must be an integer between 1 and 10000":Object.hasOwn(a,"observabilityFlushIntervalMs")&&!x(a.observabilityFlushIntervalMs,1,36e5)?"Invalid observabilityFlushIntervalMs: must be an integer between 1 and 3600000":Object.hasOwn(a,"observabilityMaxJsonSize")&&!x(a.observabilityMaxJsonSize,1,1048576)?"Invalid observabilityMaxJsonSize: must be an integer number of kilobytes":null}(a)||"")}async function ag(){try{let a=await (0,e.getSettings)(),b=U(a),f=(0,g.rK)("ENABLE_REQUEST_LOGS",a.requestLogsEnabled,!1),h=(0,g.rK)("ENABLE_TRANSLATOR",a.translatorEnabled,!1),i=a=>{let b=process.env[a];if(null==b||""===b)return!1;let c=parseInt(b,10);return Number.isFinite(c)&&c>0},j={...i("STREAM_FIRST_CHUNK_TIMEOUT_MS")?{firstChunkMs:!0}:{},...i("STREAM_STALL_TIMEOUT_MS")?{stallMs:!0}:{},...i("FETCH_CONNECT_TIMEOUT_MS")?{connectMs:!0}:{}},{CLAUDE_CLI_VERSION:k}=await c.e(1432).then(c.bind(c,51432)),{CODEX_CLI_VERSION:l}=await c.e(6703).then(c.bind(c,6703)),{GROK_CLI_VERSION:m}=await c.e(737).then(c.bind(c,90737)),{ZED_CLIENT_VERSION:n}=await c.e(524).then(c.bind(c,70524));return d.NextResponse.json({...b,enableRequestLogs:f.value,enableTranslator:h.value,requestLogsOverridden:f.overridden,translatorOverridden:h.overridden,startPage:(0,g.ES)(a.startPage),uiDensity:(0,g.b5)(a.uiDensity),hasPassword:!!a.password,searxngUrl:process.env.SEARXNG_URL?.trim()||"",headroomUrlFromEnv:!!process.env.HEADROOM_URL?.trim(),requestLogEnvOverride:f.overridden,streamEnvOverrides:j,CLAUDE_CLI_VERSION:k,CODEX_CLI_VERSION:l,GROK_CLI_VERSION:m,ZED_CLIENT_VERSION:n},{headers:Q})}catch(a){return console.log("Error getting settings:",a),d.NextResponse.json({error:a.message},{status:500})}}async function ah(a){try{let b=await a.json();if(!ae(b))return d.NextResponse.json({error:"Settings body must be an object"},{status:400});if(Object.hasOwn(b,"comboStrategyPatch")&&1!==Object.keys(b).length)return d.NextResponse.json({error:"comboStrategyPatch must be the only setting"},{status:400});for(let a of R)delete b[a];if(Object.hasOwn(b,"comboStrategyPatch"))return await W(b);let g=af(b);if(g)return d.NextResponse.json({error:g},{status:400});let i=await (0,e.getSettings)(),j=function(a,b=null){var c;let d;if(!G(a))return null;for(let b of Object.keys(a))if(A.has(b))return`Invalid setting "${b}"`;return Object.hasOwn(a,"retryPolicy")&&!function(a){if(!G(a))return!1;for(let[b,c]of Object.entries(a)){if(A.has(b)||!C.has(b)||!G(c))return!1;for(let a of Object.keys(c))if(A.has(a)||"tries"!==a&&"delayMs"!==a)return!1;if(Object.hasOwn(c,"tries")&&!H(c.tries,0,10)||Object.hasOwn(c,"delayMs")&&!H(c.delayMs,0,6e4))return!1}return!0}(a.retryPolicy)?"Invalid retryPolicy: statuses 502/503/504 with tries 0-10 and delayMs 0-60000":Object.hasOwn(a,"cooldowns")&&!function(a){if(!G(a))return!1;for(let[b,c]of Object.entries(a))if(A.has(b)||!D.has(b)||!H(c,1e3,864e5))return!1;return!0}(a.cooldowns)?"Invalid cooldowns: rateLimitCapMs/longMs/shortMs/transientMs between 1000 and 86400000":Object.hasOwn(a,"backoff")&&!function(a){if(!G(a))return!1;for(let b of Object.keys(a))if(A.has(b)||!E.has(b))return!1;return!(Object.hasOwn(a,"startMs")&&!H(a.startMs,100,6e4)||Object.hasOwn(a,"maxMs")&&!H(a.maxMs,1e3,36e5)||Object.hasOwn(a,"levels")&&!H(a.levels,1,30)||Object.hasOwn(a,"startMs")&&Object.hasOwn(a,"maxMs")&&a.maxMs<a.startMs)}(a.backoff)?"Invalid backoff: startMs 100-60000, maxMs 1000-3600000 (>= startMs), levels 1-30":Object.hasOwn(a,"backoff")&&(d={...G(c=b?.backoff)?c:{}},G(a.backoff)&&Object.assign(d,a.backoff),Object.hasOwn(d,"startMs")&&Object.hasOwn(d,"maxMs")&&d.maxMs<d.startMs)?"Invalid backoff: maxMs must be >= startMs (including stored values)":Object.hasOwn(a,"streamTimeouts")&&!function(a){if(!G(a))return!1;for(let[b,c]of Object.entries(a))if(A.has(b)||!F.has(b)||!H(c,1e3,18e5))return!1;return!0}(a.streamTimeouts)?"Invalid streamTimeouts: firstChunkMs/stallMs/connectMs between 1000 and 1800000":null}(b,i);if(j)return d.NextResponse.json({error:j},{status:400});let k=ad(i,b);if(k)return d.NextResponse.json({error:k},{status:400});if(B.some(a=>Object.hasOwn(b,a)))for(let a of B)Object.hasOwn(b,a)&&(b[a]=function(a,b){let c={...G(a)?a:{}};for(let[a,d]of Object.entries(b))c[a]=G(d)?{...c[a]||{},...d}:d;return c}(i[a],b[a]));let l="string"==typeof b.newPassword?b.newPassword:"",m="string"==typeof b.currentPassword?b.currentPassword:"";if(delete b.newPassword,delete b.currentPassword,l){let a=(await (0,e.getSettings)()).password;if(a){if(!m)return d.NextResponse.json({error:"Current password required"},{status:400});if(!await K.Ay.compare(m,a))return d.NextResponse.json({error:"Invalid current password"},{status:401})}else if(m&&"123456"!==m)return d.NextResponse.json({error:"Invalid current password"},{status:401});let c=await K.Ay.genSalt(10);b.password=await K.Ay.hash(l,c)}!Object.hasOwn(b,"oidcClientSecret")||b.oidcClientSecret&&String(b.oidcClientSecret).trim()||delete b.oidcClientSecret;let n=await (0,e.Xx)(b);return(0,I.E8)(b,n),(Object.hasOwn(b,"outboundProxyEnabled")||Object.hasOwn(b,"outboundProxyUrl")||Object.hasOwn(b,"outboundNoProxy"))&&(0,f.k)(n),Object.hasOwn(b,"requestLogsEnabled")&&c.e(1336).then(c.bind(c,71336)).then(({notifyRequestLogsEnabled:a})=>a(!0===n.requestLogsEnabled)).catch(a=>console.warn("[RequestLogger] settings update failed:",a.message)),(Object.hasOwn(b,"comboStrategy")||Object.hasOwn(b,"comboStickyRoundRobinLimit")||Object.hasOwn(b,"comboStrategies"))&&(0,h.UP)(),(Object.hasOwn(b,"fallbackStrategy")||Object.hasOwn(b,"stickyRoundRobinLimit")||Object.hasOwn(b,"providerStrategies"))&&Promise.all([c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(9124),c.e(8416),c.e(3093)]).then(c.bind(c,80238)).then(({resetAccountSelection:a})=>a?.()).catch(a=>console.warn("[AccountSelection] reset failed:",a.message)),(Object.hasOwn(b,"claudeAutoPing")||Object.hasOwn(b,"codexAutoPing"))&&Promise.all([c.e(7774),c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(3943),c.e(965),c.e(3225),c.e(2051),c.e(9124),c.e(2380),c.e(8416),c.e(318),c.e(8895),c.e(1245),c.e(7211),c.e(6354),c.e(9713)]).then(c.bind(c,1133)).then(({configureQuotaAutoPing:a})=>{a(n)}).catch(a=>console.warn("[AutoPing] settings update failed:",a.message)),(Object.hasOwn(b,"fallbackStrategy")||Object.hasOwn(b,"providerStrategies")||Object.hasOwn(b,"comboStrategies")||Object.hasOwn(b,"comboStrategy"))&&Promise.all([c.e(7774),c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(3943),c.e(965),c.e(3225),c.e(2051),c.e(9124),c.e(2380),c.e(8416),c.e(318),c.e(8895),c.e(1245),c.e(7211),c.e(1026)]).then(c.bind(c,78632)).then(({syncQuotaSnapshotPoller:a})=>{a()}).catch(a=>console.warn("[QuotaSnapshotPoller] settings update failed:",a.message)),V(n)}catch(a){return console.log("Error updating settings:",a),d.NextResponse.json({error:a.message},{status:500})}}}};
3
+ -----END CERTIFICATE-----`}function j(a){return!!(a?.samlEntryPoint&&a?.samlCert)}function k(a){return(a||"").replace(/\/+$/,"")}function l(a,b){let c=(b?.baseUrl||"").trim()||process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||"";if(c)return k(c);if(a){let b=a?.headers?.get?.("x-forwarded-proto")||"",c=a?.headers?.get?.("x-forwarded-host")||a?.headers?.get?.("host")||"";if(c){let d=(b||new URL(a.url).protocol||"http:").replace(/:$/,"");return`${d}://${c}`.replace(/\/+$/,"")}if(a.url)return k(new URL(a.url).origin)}return"http://localhost:20128"}function m(a,b){let c=i(a?.samlCert||"")||"-----BEGIN CERTIFICATE-----\nMIIC...DUMMY...\n-----END CERTIFICATE-----",e=`${b}/api/auth/saml/acs`;return new d.Qb({entryPoint:a?.samlEntryPoint||"https://example.com/sso",issuer:a?.samlIssuer||f.Hc.samlIssuerDefault,idpCert:c,cert:c,callbackUrl:e,acceptedClockSkewMs:6e4,wantAssertionsSigned:!0,validateInResponseTo:d.EK.always,requestIdExpirationPeriodMs:6e5,cacheProvider:g})}async function n(a,b){let c=l(a,b),d=m(b,c),e=await d.generateAuthorizeRequestAsync(!1,!1),f=e.match(/ID="([^"]+)"/),g=f?f[1]:"";return{authorizeUrl:await d._requestToUrlAsync(e,null,"authorize",{}),requestId:g}}async function o(a,b,c,d){if(!c)throw Error("Missing SAML request state (saml_state cookie); start sign-in again");if(!d?.samlCert)throw Error("IdP X.509 certificate (samlCert) is missing or not configured");let e=l(a,d),f=m(d,e),g=("object"==typeof b&&null!==b?b:{SAMLResponse:b}).SAMLResponse;if(!g)throw Error("Missing SAMLResponse parameter in assertion POST body");let i=Buffer.from(g,"base64").toString("utf8").match(/InResponseTo=["']([^"']+)["']/i),j=i?i[1]:null;if(!j||j!==c)throw Error(`InResponseTo mismatch: expected ${c}, received ${j||"none"}`);if(h.has(c))throw Error("SAML response for this request is already being processed");h.add(c);try{let a=await f.validatePostResponseAsync({SAMLResponse:g}),b=a?.profile||a;if(b?.inResponseTo!==c)throw Error("InResponseTo mismatch after validation");return b}finally{h.delete(c)}}function p(a,b){return m(b,a).generateServiceProviderMetadata()}function q(a={},b={}){if(!a)return"";let c=b.samlAttributeEmail;if(c&&a[c]){let b=a[c];return Array.isArray(b)?b[0]:String(b)}let d=["email","emailAddress","mail","nameID","nameId","upn","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"];for(let b of d)if(a[b]){let c=a[b];return Array.isArray(c)?c[0]:String(c)}if(a.attributes){for(let b of d)if(a.attributes[b]){let c=a.attributes[b];return Array.isArray(c)?c[0]:String(c)}}return""}function r(a={},b={}){if(!a)return"";let c=b.samlAttributeName;if(c&&a[c]){let b=a[c];return Array.isArray(b)?b[0]:String(b)}for(let b of["displayName","name","cn","commonName","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"])if(a[b]){let c=a[b];return Array.isArray(c)?c[0]:String(c)}if(a.givenName||a.sn||a.surname){let b=a.givenName||"",c=a.sn||a.surname||"",d=`${b} ${c}`.trim();if(d)return d}return q(a,b)}},11720:(a,b,c)=>{"use strict";c.d(b,{E8:()=>h,X8:()=>i});var d=c(70900);let e=null;async function f(a){try{let b=await a();(0,d.aj)(g(b))}catch{}}function g(a){let b={};for(let c of["retryPolicy","cooldowns","backoff","streamTimeouts"])a?.[c]!==void 0&&(b[c]=a[c]);return b}function h(a,b){!a||"object"!=typeof a||(Object.hasOwn(a,"retryPolicy")||Object.hasOwn(a,"cooldowns")||Object.hasOwn(a,"backoff")||Object.hasOwn(a,"streamTimeouts"))&&(0,d.aj)(g(b))}function i(a){return e??=f(a)}},13708:(a,b,c)=>{"use strict";function d({authMode:a,ssoType:b}={}){let c="sso"===a||"oidc"===a||"saml"===a,e=c||"both"===a,f="oidc"===a||"saml"===a?a:"saml"===b?"saml":"oidc";return{password:!c,oidc:e&&"oidc"===f,saml:e&&"saml"===f,protocol:f,ssoOnly:c}}c.d(b,{b:()=>d})},25334:(a,b,c)=>{"use strict";function d(a){return null==a?"":String(a).trim()}c.d(b,{k:()=>f});let e=["http:","https:","socks5:","socks4:","socks5h:","socks4a:"];function f({outboundProxyEnabled:a,outboundProxyUrl:b,outboundNoProxy:c}={}){if("u"<typeof process||!process.env)return;let g=d(b),h=d(c);if(!a){"1"===process.env.TOKENHOP_PROXY_MANAGED&&(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.NO_PROXY,delete process.env.TOKENHOP_PROXY_MANAGED,delete process.env.TOKENHOP_PROXY_URL,delete process.env.TOKENHOP_NO_PROXY);return}let i="1"===process.env.TOKENHOP_PROXY_MANAGED,j=!1;if(i&&(g||(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.TOKENHOP_PROXY_URL),h||(delete process.env.NO_PROXY,delete process.env.TOKENHOP_NO_PROXY)),g){let a=function(a){if(!a||/[\n\r`$]/.test(a))return null;try{let b=new URL(a);if(!e.includes(b.protocol))return null;return b.href}catch{return null}}(g);a&&(process.env.HTTP_PROXY=a,process.env.HTTPS_PROXY=a,process.env.ALL_PROXY=a,process.env.TOKENHOP_PROXY_URL=a,j=!0)}h&&(process.env.NO_PROXY=h,process.env.TOKENHOP_NO_PROXY=h,j=!0),j?process.env.TOKENHOP_PROXY_MANAGED="1":i&&delete process.env.TOKENHOP_PROXY_MANAGED}},57729:()=>{},58691:(a,b,c)=>{"use strict";c.d(b,{VF:()=>i,er:()=>h});let d=Object.freeze(["fallback","round-robin","fusion","weighted"]),e="fallback",f=new Set(["__proto__","constructor","prototype"]);function g(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function h(a,b){let c=a?.comboStrategies,f=g(c)&&Object.hasOwn(c,b)&&g(c[b])?c[b]:{},h=f.fallbackStrategy||a?.comboStrategy||e;return{strategy:d.includes(h)?h:e,stickyLimit:a?.comboStickyRoundRobinLimit,weights:g(f.weights)?f.weights:{},judgeModel:f.judgeModel,fusionTuning:f.fusionTuning}}function i(a){if(!g(a))return null;if(Object.hasOwn(a,"comboStrategy")&&!d.includes(a.comboStrategy))return"Invalid comboStrategy";if(!Object.hasOwn(a,"comboStrategies"))return null;let b=a.comboStrategies;if(!g(b))return"comboStrategies must be an object";let c=Object.entries(b);if(c.length>500)return"Too many comboStrategies entries";for(let[a,b]of c){if(f.has(a))return`Invalid combo name "${a}"`;if(!g(b)||void 0!==b.fallbackStrategy&&!d.includes(b.fallbackStrategy))return`Invalid strategy for combo "${a}"`;let c=b.weights;if(void 0!==c){if(!g(c)||Object.keys(c).length>200)return`Invalid weights for combo "${a}"`;for(let[b,d]of Object.entries(c))if(f.has(b)||"number"!=typeof d||!Number.isFinite(d)||d<0||d>1e3)return`Invalid weight for combo "${a}" model "${b}"`}}return null}},73284:(a,b,c)=>{"use strict";let d;c.d(b,{gR:()=>F,hT:()=>E,Pf:()=>D,GY:()=>C,sP:()=>G,Ir:()=>B,Mj:()=>A,iw:()=>y,EJ:()=>z,Ui:()=>M,Rj:()=>N,HO:()=>H,mx:()=>L,x8:()=>K});var e=c(77598),f=c.n(e),g=c(38805),h=c(99129),i=c(64416),j=c(80700);async function k(a,b,c){let d=a.get(b)||a.set(b,{}).get(b),{alg:e}=c;if(void 0===d[e]){let a=(0,i.xY)(c,b,!0).then(a=>{if("public"!==a.type)throw new h.Dm("JSON Web Key Set members must be public keys");return d[e]=a,a}).catch(b=>{throw d[e]===a&&delete d[e],b});d[e]=a}return d[e]}function l(a){let b;try{b=structuredClone(a)}catch{}if(!(0,g.fV)(b))throw new h.Dm("JSON Web Key Set malformed");let c=b.keys.map(a=>{let b=(0,i.ZZ)(a);return Array.isArray(b.key_ops)&&(b.key_ops=[...b.key_ops]),b}),d=new WeakMap;return Object.defineProperty(async(a,e)=>{let{alg:f,kid:g}={...a,...e?.header},i="string"==typeof f?j.p[f]:void 0;if(!i||i.secret)throw new h.T0('Unsupported "alg" value for a JSON Web Key Set');let l=b.keys.filter((a,b)=>(function(a,b,c,d){let{kty:e,key_ops:f,ext:g,kid:h,alg:i,use:j,crv:k}=a;return(void 0===g||"boolean"==typeof g)&&(void 0===f||Array.isArray(f)&&f.every((a,b)=>"string"==typeof a&&f.indexOf(a)===b)&&f.includes("verify"))&&b.kty.includes(e)&&(void 0===d||"string"==typeof d&&d===h)&&(void 0===i?"AKP"!==e:c===i)&&(void 0===j||"sig"===j)&&(!b.crv||k===b.crv)})(c[b],i,f,g)),{0:m,length:n}=l;if(!n)throw new h.BT;if(1!==n){let a=new h.$4;throw a[Symbol.asyncIterator]=async function*(){for(let a of l)try{yield await k(d,a,i)}catch{}},a}return k(d,m,i)},"jwks",{value:()=>structuredClone(b)})}(typeof navigator>"u"||!navigator.userAgent?.startsWith?.("Mozilla/5.0 "))&&(d="jose/v6.2.12");let m=Symbol();async function n(a,b,c,d=fetch){let e=await d(a,{method:"GET",signal:c,redirect:"manual",headers:b}).catch(a=>{throw"TimeoutError"===a.name?new h.xb:a});if(200!==e.status)throw new h.i4("Expected 200 OK from the JSON Web Key Set HTTP response");try{return await e.json()}catch{throw new h.i4("Failed to parse the JSON Web Key Set HTTP response as JSON")}}let o=Symbol();function p(a,b){return Number.isFinite(a)&&Date.now()<a+b}function q(a,b,c){if(Number.isNaN(a))throw TypeError(`"${c}" option must not be NaN`);return"number"==typeof a?a:b}var r=c(17509),s=c(89718),t=c(13708);let u="openid profile email",v="Sign in with OIDC";function w(a){return(a||"").trim().replace(/\/+$/,"")}function x(a){return(a||u).trim()||u}function y(a){let b=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||"";if(b)return w(b);let c=a?.headers?.get?.("x-forwarded-proto")||"",d=a?.headers?.get?.("x-forwarded-host")||a?.headers?.get?.("host")||"";if(d){let b=(c||new URL(a.url).protocol||"http:").replace(/:$/,"");return`${b}://${d}`.replace(/\/+$/,"")}return w(new URL(a.url).origin)}function z(a){return!!(w(a?.oidcIssuerUrl)&&(a?.oidcClientId||"").trim()&&(a?.oidcClientSecret||"").trim())}async function A(){let a=await (0,s.getSettings)();return(0,t.b)(a).oidc&&z(a)?{issuerUrl:w(a.oidcIssuerUrl),clientId:a.oidcClientId.trim(),clientSecret:a.oidcClientSecret.trim(),scopes:x(a.oidcScopes),loginLabel:(a.oidcLoginLabel||v).trim()||v}:null}async function B(a){let b=`${w(a)}/.well-known/openid-configuration`,c=await fetch(b,{cache:"no-store"});if(!c.ok)throw Error(`Failed to load OIDC discovery document from ${b}`);return await c.json()}function C(){let a=f().randomBytes(32).toString("base64url"),b=f().createHash("sha256").update(a).digest("base64url");return{verifier:a,challenge:b}}function D(){return f().randomBytes(16).toString("base64url")}function E(){return f().randomBytes(16).toString("base64url")}function F({authorizationEndpoint:a,clientId:b,redirectUri:c,scopes:d=u,state:e,nonce:f,codeChallenge:g}){let h=new URL(a);return h.searchParams.set("response_type","code"),h.searchParams.set("client_id",b),h.searchParams.set("redirect_uri",c),h.searchParams.set("scope",x(d)),h.searchParams.set("state",e),h.searchParams.set("nonce",f),h.searchParams.set("code_challenge",g),h.searchParams.set("code_challenge_method","S256"),h.toString()}async function G({tokenEndpoint:a,clientId:b,clientSecret:c,code:d,redirectUri:e,codeVerifier:f}){let g=new URLSearchParams({grant_type:"authorization_code",client_id:b,code:d,redirect_uri:e,code_verifier:f});c&&g.set("client_secret",c);let h=await fetch(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:g}),i=await h.json().catch(()=>({}));if(!h.ok)throw Error(i?.error_description||i?.error||`OIDC token exchange failed (${h.status})`);return i}async function H({tokenEndpoint:a,clientId:b,clientSecret:c,redirectUri:d}){if(!c)return{tested:!1,valid:null,message:"No client secret was provided, so secret validation was skipped."};let e=new URLSearchParams({grant_type:"authorization_code",client_id:b,client_secret:c,code:"__oidc_test_invalid_code__",redirect_uri:d,code_verifier:"__oidc_test_invalid_verifier__"}),f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e}),g=await f.json().catch(()=>({})),h=(g?.error||"").toLowerCase(),i=g?.error_description||g?.error||"";return f.ok?{tested:!0,valid:!0,message:"Client secret was accepted by the token endpoint.",raw:g}:"invalid_client"===h||"unauthorized_client"===h||/client.*(invalid|failed|mismatch)/i.test(i)?{tested:!0,valid:!1,message:i||"Client secret is not valid.",raw:g}:"invalid_grant"===h||"invalid_code"===h||/grant|code/i.test(i)?{tested:!0,valid:!0,message:"Client secret was accepted; the token exchange failed only because the test authorization code is invalid.",raw:g}:{tested:!0,valid:null,message:i||`Token endpoint responded with ${f.status}`,raw:g}}let I=["RS256","RS384","RS512","PS256","PS384","PS512","ES256","ES384","ES512","EdDSA"],J=["HS256","HS384","HS512"];async function K({idToken:a,issuer:b,audience:c,jwksUri:e,nonce:f,clientSecret:i,allowedAlgs:j}){let k,s;if(!f)throw Error("id_token verification requires the login nonce");let t=(s=Array.isArray(j)?j.filter(a=>"string"==typeof a&&"none"!==a.toLowerCase()):[]).length>0?s:I,{alg:u}=function(a){let b;if("string"==typeof a){let c=a.split(".");(3===c.length||5===c.length)&&([b]=c)}else if("object"==typeof a&&a)if("protected"in a)b=a.protected;else throw TypeError("Token does not contain a Protected Header");let c="Invalid Token or Protected Header formatting";if("string"!=typeof b||!b)throw TypeError(c);return(0,g.OX)(b,TypeError,c)}(a);if(!u||"none"===u.toLowerCase()||!t.includes(u))throw Error(`id_token alg "${u}" is not allowed (advertised: ${t.join(", ")})`);if(J.includes(u)){if(!i)throw Error(`id_token alg "${u}" requires a client secret`);k=new TextEncoder().encode(i)}else{if(!e)throw Error("OIDC discovery document has no jwks_uri");k=function(a){if(!(a instanceof URL))throw TypeError("url must be an instance of URL");let b=new URL(a.href).href,c=(void 0)??{},e=c.timeoutDuration;if("number"==typeof e&&(!Number.isInteger(e)||e<0))throw TypeError('"timeoutDuration" option must be a non-negative integer');let f="number"==typeof e?e:5e3,i=q(c.cooldownDuration,3e4,"cooldownDuration"),j=q(c.cacheMaxAge,6e5,"cacheMaxAge"),k=new Headers(c.headers);d&&!k.has("User-Agent")&&k.set("User-Agent",d),k.has("accept")||k.set("accept","application/json, application/jwk-set+json");let r=c[m],s=c[o],t,u,v=0,w=0,x;if(s&&"object"==typeof s){let{uat:a,jwks:b}=s;p(a,j)&&(0,g.fV)(b)&&(t=a,x=l(b))}let y=async()=>{if(u&&("u">typeof WebSocketPair||"u">typeof navigator&&"Cloudflare-Workers"===navigator.userAgent||"u">typeof EdgeRuntime&&"vercel"===EdgeRuntime)&&(u=void 0),!u){let a=++v,c=u=n(b,k,AbortSignal.timeout(f),r).then(b=>{let c=l(b);if(a<=w)return;x=c;let d=Date.now();s&&(s.uat=d,s.jwks=b),t=d,w=a}).finally(()=>{u===c&&(u=void 0)})}await u};return Object.defineProperties(async(a,b)=>{x&&p(t,j)||await y();try{return await x(a,b)}catch(c){if(c instanceof h.BT&&!p(t,i))return await y(),x(a,b);throw c}},{coolingDown:{get:()=>p(t,i),enumerable:!0},fresh:{get:()=>p(t,j),enumerable:!0},reload:{value:y,enumerable:!0},reloading:{get:()=>!!u,enumerable:!0},jwks:{value:()=>x?.jwks(),enumerable:!0}})}(new URL(e))}let{payload:v}=await (0,r.V)(a,k,{issuer:b,audience:c,algorithms:[u]});if(v.nonce!==f)throw Error("id_token nonce mismatch");return v}function L(a,b){let c=Array.isArray(a?.id_token_signing_alg_values_supported)?a.id_token_signing_alg_values_supported.filter(a=>"string"==typeof a):[],d=c.length>0&&c.every(a=>J.includes(a)),e=c.some(a=>"none"!==a.toLowerCase()&&!J.includes(a)),f=[];return d?f.push("The provider signs id_tokens only with HS* (client secret). Sign-in works, but selecting a signing key in the IdP (RS256) is recommended."):0===b&&(e||0===c.length)&&f.push("The provider's JWKS has no keys, so RS/ES-signed id_tokens cannot be verified."),c.some(a=>"none"===a.toLowerCase())&&f.push('The provider advertises alg "none"; unsigned id_tokens are always rejected.'),{signingAlgs:c,warnings:f}}function M(a={}){return a.preferred_username||a.email||a.name||a.given_name||a.sub||"OIDC user"}function N(a={}){return a.email||""}},92844:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GET:()=>ag,PATCH:()=>ah,dynamic:()=>O,revalidate:()=>P,ssoLockoutError:()=>ad,validateSettingsBody:()=>af});var d=c(23211),e=c(89718),f=c(25334),g=c(50835),h=c(25921),i=c(58691);let j=new Set(["__proto__","constructor","prototype"]),k=new Set(["tunnelProvider","SEARXNG_URL","CLAUDE_CLI_VERSION","CODEX_CLI_VERSION","GROK_CLI_VERSION","ZED_CLIENT_VERSION"]);function l(a){for(let b=0;b<a.length;b+=1){let c=a.charCodeAt(b);if(c<=31||127===c)return!0}return!1}let m=/[\n\r`$]/,n=new Set(["http:","https:","socks5:","socks4:","socks5h:","socks4a:"]),o=new Set(["fill-first","round-robin","weighted"]),p=new Set(["round-robin","random"]),q=new Set(["vision","pdf","audioInput","videoInput"]),r=new Set(["enabled","roundRobin","models"]),s=new Set(["lite","full","ultra","wenyan-lite","wenyan","wenyan-ultra"]),t=new Set(["lite","full","ultra"]),u=new Set(["auto","none","minimal","low","medium","high","xhigh","max","ultra","thinking"]),v=new Set(["enabled","connections"]);function w(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)&&Object.getPrototypeOf(a)===Object.prototype}function x(a,b,c){return Number.isInteger(a)&&a>=b&&a<=c}function y(a,b=256){return"string"==typeof a&&a.length>0&&a.length<=b&&a===a.trim()&&!j.has(a)}function z(a){if("string"!=typeof a||a.length>2048)return!1;let b=a.trim();if(!b)return!0;if(l(a))return!1;try{let a=new URL(b);return"http:"===a.protocol||"https:"===a.protocol}catch{return!1}}let A=new Set(["__proto__","constructor","prototype"]),B=["retryPolicy","cooldowns","backoff","streamTimeouts"],C=new Set(["502","503","504"]),D=new Set(["rateLimitCapMs","longMs","shortMs","transientMs"]),E=new Set(["startMs","maxMs","levels"]),F=new Set(["firstChunkMs","stallMs","connectMs"]);function G(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)&&Object.getPrototypeOf(a)===Object.prototype}function H(a,b,c){return Number.isInteger(a)&&a>=b&&a<=c}var I=c(11720),J=c(56588),K=c(34013),L=c(73284),M=c(7985),N=c(13708);let O="force-dynamic",P=0,Q={"Cache-Control":"no-store"},R=["password","mitmSudoEncrypted"],S=/^[a-zA-Z0-9_.-]+$/,T=new Set(["__proto__","constructor","prototype"]);function U(a){let b=Object.fromEntries(Object.entries(a).filter(([a])=>!J.Pq.has(a)));return b.oidcConfigured=!!(a.oidcIssuerUrl&&a.oidcClientId&&a.oidcClientSecret),b}function V(a){let b=U(a);return b.startPage=(0,g.ES)(b.startPage),b.uiDensity=(0,g.b5)(b.uiDensity),d.NextResponse.json(b,{headers:Q})}async function W(a){let b,f,{name:g,patch:j}=a.comboStrategyPatch||{};if("string"!=typeof g||!S.test(g)||T.has(g))return d.NextResponse.json({error:"Invalid combo name"},{status:400});if(!j||"object"!=typeof j||Array.isArray(j))return d.NextResponse.json({error:"Invalid combo strategy patch"},{status:400});let k=new Set(["fallbackStrategy","weights","judgeModel","fusionTuning"]);if(Object.keys(j).some(a=>!k.has(a)))return d.NextResponse.json({error:"Invalid combo strategy patch"},{status:400});let l=(0,i.VF)({comboStrategies:{[g]:j}});if(l)return d.NextResponse.json({error:l},{status:400});let m=!1;try{f=await (0,e.ln)(a=>{let c=Object.hasOwn(a,g)?a[g]:{};if(Object.hasOwn(j,"weights")&&!Object.hasOwn(j,"fallbackStrategy")&&c?.fallbackStrategy!=="weighted")return m=!0,a;let d={...c,...j};if(j.weights&&(d.weights={...c?.weights,...j.weights}),b=(0,i.VF)({comboStrategies:{[g]:d}}))return a;let e={...a};return d.fallbackStrategy?e[g]=d:delete e[g],e},g)}catch(a){if("COMBO_NOT_FOUND"===a.code)return d.NextResponse.json({error:"Combo not found"},{status:409});throw a}return m?d.NextResponse.json({error:"Combo not found"},{status:409}):b?d.NextResponse.json({error:b},{status:400}):((0,h.UP)(),Promise.all([c.e(7774),c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(3943),c.e(965),c.e(3225),c.e(2051),c.e(9124),c.e(2380),c.e(8416),c.e(318),c.e(8895),c.e(1245),c.e(7211),c.e(5260)]).then(c.bind(c,78632)).then(({syncQuotaSnapshotPoller:a})=>a()).catch(a=>console.warn("[QuotaSnapshotPoller] settings update failed:",a.message)),V(f))}let X=new Set(["fill-first","round-robin","weighted"]),Y=new Set(["password","sso","both","saml","oidc"]),Z=new Set(["oidc","saml"]),$=new Set(["__proto__","constructor","prototype"]);function _(a){return Number.isInteger(a)&&a>=1&&a<=100}function aa(a,b=256){return"string"==typeof a&&a.length<=b}function ab(a){if("string"!=typeof a||a.length>2048)return!1;if(!a.trim())return!0;try{let b=new URL(a.trim());return"http:"===b.protocol||"https:"===b.protocol}catch{return!1}}let ac=["authMode","ssoType","oidcIssuerUrl","oidcClientId","oidcClientSecret","samlEntryPoint","samlCert"];function ad(a,b){if(!ac.some(a=>Object.hasOwn(b,a)))return"";let c={...a,...b};String(b.oidcClientSecret??"").trim()||(c.oidcClientSecret=a.oidcClientSecret);let d=(0,N.b)(c);return d.ssoOnly?d.saml&&!(0,M.eI)(c)?'Cannot enable SSO-only sign-in: SAML is not fully configured (entry point and certificate are required). Configure and test it with "Password + SSO" first.':d.oidc&&!(0,L.EJ)(c)?'Cannot enable SSO-only sign-in: OIDC is not fully configured (issuer URL, client ID and client secret are required). Configure and test it with "Password + SSO" first.':"":""}function ae(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)&&Object.getPrototypeOf(a)===Object.prototype}function af(a){let b=(0,i.VF)(a);return b||(!function(a){if(Object.hasOwn(a,"fallbackStrategy")&&!X.has(a.fallbackStrategy)||Object.hasOwn(a,"stickyRoundRobinLimit")&&!_(a.stickyRoundRobinLimit))return!1;if(Object.hasOwn(a,"providerStrategies")){if(!ae(a.providerStrategies))return!1;for(let[b,c]of Object.entries(a.providerStrategies))if(b!==b.trim()||!b||$.has(b)||!ae(c)||Object.keys(c).some(a=>$.has(a))||Object.hasOwn(c,"fallbackStrategy")&&!X.has(c.fallbackStrategy)||Object.hasOwn(c,"stickyRoundRobinLimit")&&!_(c.stickyRoundRobinLimit))return!1}return!0}(a)?"Invalid account strategy settings":function(a){for(let b of["requireLogin","requireApiKey","tunnelDashboardAccess"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;for(let b of["requestLogsEnabled","translatorEnabled"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;if(Object.hasOwn(a,"startPage")&&("string"!=typeof a.startPage||(0,g.ES)(a.startPage)!==a.startPage))return"Invalid startPage: must be a dashboard route";if(Object.hasOwn(a,"uiDensity")&&("string"!=typeof a.uiDensity||(0,g.b5)(a.uiDensity)!==a.uiDensity))return"Invalid uiDensity: must be comfortable or compact";if(Object.hasOwn(a,"authMode")&&!Y.has(a.authMode))return"Invalid authMode";if(Object.hasOwn(a,"ssoType")&&!Z.has(a.ssoType))return"Invalid ssoType";for(let b of["oidcClientId","oidcScopes","oidcLoginLabel"])if(Object.hasOwn(a,b)&&!aa(a[b]))return`Invalid ${b}`;if(Object.hasOwn(a,"oidcIssuerUrl")&&!ab(a.oidcIssuerUrl))return"Invalid oidcIssuerUrl: must be an http(s) URL";if(Object.hasOwn(a,"oidcClientSecret")&&!aa(a.oidcClientSecret,2048))return"Invalid oidcClientSecret";if(Object.hasOwn(a,"samlEntryPoint")&&!ab(a.samlEntryPoint))return"Invalid samlEntryPoint: must be an http(s) URL";for(let b of["samlIssuer","samlLoginLabel","samlAttributeEmail","samlAttributeName"])if(Object.hasOwn(a,b)&&!aa(a[b]))return`Invalid ${b}`;if(Object.hasOwn(a,"samlCert")&&!aa(a.samlCert,16384))return"Invalid samlCert";for(let b of["currentPassword","newPassword"])if(Object.hasOwn(a,b)&&("string"!=typeof a[b]||a[b].length>256))return`Invalid ${b}`;return""}(a)||function(a){if(!w(a))return null;for(let b of Object.keys(a)){if(j.has(b))return`Invalid setting "${b}"`;if(k.has(b))return`Invalid ${b}: read-only`}if(Object.hasOwn(a,"fallbackStrategy")&&!o.has(a.fallbackStrategy))return"Invalid fallbackStrategy";if(Object.hasOwn(a,"stickyRoundRobinLimit")&&!x(a.stickyRoundRobinLimit,1,100))return"Invalid stickyRoundRobinLimit: must be an integer between 1 and 100";if(Object.hasOwn(a,"comboStickyRoundRobinLimit")&&!x(a.comboStickyRoundRobinLimit,1,100))return"Invalid comboStickyRoundRobinLimit: must be an integer between 1 and 100";if(Object.hasOwn(a,"providerStrategies")&&!function(a){if(!w(a))return!1;for(let[b,c]of Object.entries(a)){if(!y(b,128)||!w(c))return!1;for(let a of Object.keys(c))if(j.has(a))return!1;if(Object.hasOwn(c,"fallbackStrategy")&&!o.has(c.fallbackStrategy)||Object.hasOwn(c,"stickyRoundRobinLimit")&&!x(c.stickyRoundRobinLimit,1,100)||Object.hasOwn(c,"proxyPoolId")&&("string"!=typeof c.proxyPoolId||!c.proxyPoolId.trim()||c.proxyPoolId.length>256)||Object.hasOwn(c,"rotateStrategy")&&!p.has(c.rotateStrategy))return!1}return!0}(a.providerStrategies))return"Invalid providerStrategies";if(Object.hasOwn(a,"capacityAdapter")&&!function(a){if(!w(a))return!1;for(let[b,c]of Object.entries(a)){if(!q.has(b))return!1;if(Array.isArray(c)){if(c.length>500)return!1;for(let a of c)if(!("string"==typeof a&&a.trim()&&a.length<=256)&&!(w(a)&&"string"==typeof a.model&&a.model.trim()&&a.model.length<=256&&Object.keys(a).every(a=>"model"===a||"enabled"===a)&&(!Object.hasOwn(a,"enabled")||"boolean"==typeof a.enabled)))return!1;continue}if(!w(c))return!1;for(let a of Object.keys(c))if(!r.has(a))return!1;if(Object.hasOwn(c,"enabled")&&"boolean"!=typeof c.enabled||Object.hasOwn(c,"roundRobin")&&"boolean"!=typeof c.roundRobin)return!1;if(Object.hasOwn(c,"models")){if(!Array.isArray(c.models)||c.models.length>500)return!1;for(let a of c.models)if("string"!=typeof a||!a.trim()||a.length>256)return!1}}return!0}(a.capacityAdapter))return"Invalid capacityAdapter";for(let b of["outboundProxyEnabled","tunnelEnabled","tailscaleEnabled"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;if(Object.hasOwn(a,"outboundProxyUrl")&&!function(a){if("string"!=typeof a||a.length>2048)return!1;let b=a.trim();if(!b)return!0;if(m.test(a))return!1;try{return n.has(new URL(b).protocol)}catch{return!1}}(a.outboundProxyUrl))return"Invalid outboundProxyUrl: must be an http/https/socks proxy URL";if(Object.hasOwn(a,"outboundNoProxy")&&!function(a){if("string"!=typeof a||a.length>2048)return!1;if(!a.trim())return!0;if(l(a)||/[`$]/.test(a))return!1;for(let b of a.split(",")){let a=b.trim();if(a&&(a.length>253||/\s/.test(a)||a.includes("://")))return!1}return!0}(a.outboundNoProxy))return"Invalid outboundNoProxy: must be a comma-separated host list";for(let b of["rtkEnabled","headroomEnabled","headroomCompressUserMessages","headroomCodeAware","headroomKompress","cavemanEnabled","ponytailEnabled","pxpipeEnabled","pxpipeAutoInstall"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;if(Object.hasOwn(a,"headroomUrl")&&!z(a.headroomUrl))return"Invalid headroomUrl: must be an http(s) URL";if(Object.hasOwn(a,"headroomTimeoutMs")&&!x(a.headroomTimeoutMs,1,3e5))return"Invalid headroomTimeoutMs: must be an integer between 1 and 300000";if(Object.hasOwn(a,"cavemanLevel")&&!s.has(a.cavemanLevel))return"Invalid cavemanLevel";if(Object.hasOwn(a,"ponytailLevel")&&!t.has(a.ponytailLevel))return"Invalid ponytailLevel";if(Object.hasOwn(a,"pxpipeMinChars")&&!x(a.pxpipeMinChars,0,1e7))return"Invalid pxpipeMinChars: must be an integer between 0 and 10000000";if(Object.hasOwn(a,"pxpipeTimeoutMs")&&!x(a.pxpipeTimeoutMs,1,6e5))return"Invalid pxpipeTimeoutMs: must be an integer between 1 and 600000";if(Object.hasOwn(a,"providerThinking")&&!function(a){if(!w(a)||Object.keys(a).length>500)return!1;for(let[b,c]of Object.entries(a))if(!y(b,128)||!w(c)||Object.keys(c).some(a=>"mode"!==a||j.has(a))||!Object.hasOwn(c,"mode")||!u.has(c.mode))return!1;return!0}(a.providerThinking))return"Invalid providerThinking";for(let b of["claudeAutoPing","codexAutoPing"])if(Object.hasOwn(a,b)&&!function(a){if(!w(a))return!1;for(let b of Object.keys(a))if(!v.has(b))return!1;if(Object.hasOwn(a,"enabled")&&"boolean"!=typeof a.enabled)return!1;if(void 0===a.connections)return!0;if(!w(a.connections))return!1;let b=Object.entries(a.connections);if(b.length>1e4)return!1;for(let[a,c]of b)if(!y(a)||"boolean"!=typeof c)return!1;return!0}(a[b]))return`Invalid ${b}: must be a per-connection map`;return Object.hasOwn(a,"ccFilterNaming")&&"boolean"!=typeof a.ccFilterNaming?"Invalid ccFilterNaming: must be a boolean":Object.hasOwn(a,"quotaVisibility")&&!function(a){if(!w(a)||Object.keys(a).length>500)return!1;for(let[b,c]of Object.entries(a)){if(!y(b,128)||!w(c))return!1;for(let a of Object.keys(c))if(j.has(a))return!1;if(!Object.hasOwn(c,"hidden")||!Array.isArray(c.hidden)||c.hidden.length>1e3)return!1;for(let a of c.hidden)if("string"!=typeof a||!a.trim()||a.length>256)return!1}return!0}(a.quotaVisibility)?"Invalid quotaVisibility":Object.hasOwn(a,"mitmRouterBaseUrl")&&!z(a.mitmRouterBaseUrl)?"Invalid mitmRouterBaseUrl: must be an http(s) URL":Object.hasOwn(a,"enableObservability")&&"boolean"!=typeof a.enableObservability?"Invalid enableObservability: must be a boolean":Object.hasOwn(a,"observabilityMaxRecords")&&!x(a.observabilityMaxRecords,1,1e7)?"Invalid observabilityMaxRecords: must be an integer between 1 and 10000000":Object.hasOwn(a,"observabilityBatchSize")&&!x(a.observabilityBatchSize,1,1e4)?"Invalid observabilityBatchSize: must be an integer between 1 and 10000":Object.hasOwn(a,"observabilityFlushIntervalMs")&&!x(a.observabilityFlushIntervalMs,1,36e5)?"Invalid observabilityFlushIntervalMs: must be an integer between 1 and 3600000":Object.hasOwn(a,"observabilityMaxJsonSize")&&!x(a.observabilityMaxJsonSize,1,1048576)?"Invalid observabilityMaxJsonSize: must be an integer number of kilobytes":null}(a)||"")}async function ag(){try{let a=await (0,e.getSettings)(),b=U(a),f=(0,g.rK)("ENABLE_REQUEST_LOGS",a.requestLogsEnabled,!1),h=(0,g.rK)("ENABLE_TRANSLATOR",a.translatorEnabled,!1),i=a=>{let b=process.env[a];if(null==b||""===b)return!1;let c=parseInt(b,10);return Number.isFinite(c)&&c>0},j={...i("STREAM_FIRST_CHUNK_TIMEOUT_MS")?{firstChunkMs:!0}:{},...i("STREAM_STALL_TIMEOUT_MS")?{stallMs:!0}:{},...i("FETCH_CONNECT_TIMEOUT_MS")?{connectMs:!0}:{}},{CLAUDE_CLI_VERSION:k}=await c.e(1432).then(c.bind(c,51432)),{CODEX_CLI_VERSION:l}=await c.e(6703).then(c.bind(c,6703)),{GROK_CLI_VERSION:m}=await c.e(737).then(c.bind(c,90737)),{ZED_CLIENT_VERSION:n}=await c.e(524).then(c.bind(c,70524));return d.NextResponse.json({...b,enableRequestLogs:f.value,enableTranslator:h.value,requestLogsOverridden:f.overridden,translatorOverridden:h.overridden,startPage:(0,g.ES)(a.startPage),uiDensity:(0,g.b5)(a.uiDensity),hasPassword:!!a.password,searxngUrl:process.env.SEARXNG_URL?.trim()||"",headroomUrlFromEnv:!!process.env.HEADROOM_URL?.trim(),requestLogEnvOverride:f.overridden,streamEnvOverrides:j,CLAUDE_CLI_VERSION:k,CODEX_CLI_VERSION:l,GROK_CLI_VERSION:m,ZED_CLIENT_VERSION:n},{headers:Q})}catch(a){return console.log("Error getting settings:",a),d.NextResponse.json({error:a.message},{status:500})}}async function ah(a){try{let b=await a.json();if(!ae(b))return d.NextResponse.json({error:"Settings body must be an object"},{status:400});if(Object.hasOwn(b,"comboStrategyPatch")&&1!==Object.keys(b).length)return d.NextResponse.json({error:"comboStrategyPatch must be the only setting"},{status:400});for(let a of R)delete b[a];if(Object.hasOwn(b,"comboStrategyPatch"))return await W(b);let g=af(b);if(g)return d.NextResponse.json({error:g},{status:400});let i=await (0,e.getSettings)(),j=function(a,b=null){var c;let d;if(!G(a))return null;for(let b of Object.keys(a))if(A.has(b))return`Invalid setting "${b}"`;return Object.hasOwn(a,"retryPolicy")&&!function(a){if(!G(a))return!1;for(let[b,c]of Object.entries(a)){if(A.has(b)||!C.has(b)||!G(c))return!1;for(let a of Object.keys(c))if(A.has(a)||"tries"!==a&&"delayMs"!==a)return!1;if(Object.hasOwn(c,"tries")&&!H(c.tries,0,10)||Object.hasOwn(c,"delayMs")&&!H(c.delayMs,0,6e4))return!1}return!0}(a.retryPolicy)?"Invalid retryPolicy: statuses 502/503/504 with tries 0-10 and delayMs 0-60000":Object.hasOwn(a,"cooldowns")&&!function(a){if(!G(a))return!1;for(let[b,c]of Object.entries(a))if(A.has(b)||!D.has(b)||!H(c,1e3,864e5))return!1;return!0}(a.cooldowns)?"Invalid cooldowns: rateLimitCapMs/longMs/shortMs/transientMs between 1000 and 86400000":Object.hasOwn(a,"backoff")&&!function(a){if(!G(a))return!1;for(let b of Object.keys(a))if(A.has(b)||!E.has(b))return!1;return!(Object.hasOwn(a,"startMs")&&!H(a.startMs,100,6e4)||Object.hasOwn(a,"maxMs")&&!H(a.maxMs,1e3,36e5)||Object.hasOwn(a,"levels")&&!H(a.levels,1,30)||Object.hasOwn(a,"startMs")&&Object.hasOwn(a,"maxMs")&&a.maxMs<a.startMs)}(a.backoff)?"Invalid backoff: startMs 100-60000, maxMs 1000-3600000 (>= startMs), levels 1-30":Object.hasOwn(a,"backoff")&&(d={...G(c=b?.backoff)?c:{}},G(a.backoff)&&Object.assign(d,a.backoff),Object.hasOwn(d,"startMs")&&Object.hasOwn(d,"maxMs")&&d.maxMs<d.startMs)?"Invalid backoff: maxMs must be >= startMs (including stored values)":Object.hasOwn(a,"streamTimeouts")&&!function(a){if(!G(a))return!1;for(let[b,c]of Object.entries(a))if(A.has(b)||!F.has(b)||!H(c,1e3,18e5))return!1;return!0}(a.streamTimeouts)?"Invalid streamTimeouts: firstChunkMs/stallMs/connectMs between 1000 and 1800000":null}(b,i);if(j)return d.NextResponse.json({error:j},{status:400});let k=ad(i,b);if(k)return d.NextResponse.json({error:k},{status:400});if(B.some(a=>Object.hasOwn(b,a)))for(let a of B)Object.hasOwn(b,a)&&(b[a]=function(a,b){let c={...G(a)?a:{}};for(let[a,d]of Object.entries(b))c[a]=G(d)?{...c[a]||{},...d}:d;return c}(i[a],b[a]));let l="string"==typeof b.newPassword?b.newPassword:"",m="string"==typeof b.currentPassword?b.currentPassword:"";if(delete b.newPassword,delete b.currentPassword,l){let a=(await (0,e.getSettings)()).password;if(a){if(!m)return d.NextResponse.json({error:"Current password required"},{status:400});if(!await K.Ay.compare(m,a))return d.NextResponse.json({error:"Invalid current password"},{status:401})}else if(m&&"123456"!==m)return d.NextResponse.json({error:"Invalid current password"},{status:401});let c=await K.Ay.genSalt(10);b.password=await K.Ay.hash(l,c)}!Object.hasOwn(b,"oidcClientSecret")||b.oidcClientSecret&&String(b.oidcClientSecret).trim()||delete b.oidcClientSecret;let n=await (0,e.Xx)(b);return(0,I.E8)(b,n),(Object.hasOwn(b,"outboundProxyEnabled")||Object.hasOwn(b,"outboundProxyUrl")||Object.hasOwn(b,"outboundNoProxy"))&&(0,f.k)(n),Object.hasOwn(b,"requestLogsEnabled")&&c.e(1336).then(c.bind(c,71336)).then(({notifyRequestLogsEnabled:a})=>a(!0===n.requestLogsEnabled)).catch(a=>console.warn("[RequestLogger] settings update failed:",a.message)),(Object.hasOwn(b,"comboStrategy")||Object.hasOwn(b,"comboStickyRoundRobinLimit")||Object.hasOwn(b,"comboStrategies"))&&(0,h.UP)(),(Object.hasOwn(b,"fallbackStrategy")||Object.hasOwn(b,"stickyRoundRobinLimit")||Object.hasOwn(b,"providerStrategies"))&&Promise.all([c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(9124),c.e(8416),c.e(5827)]).then(c.bind(c,80238)).then(({resetAccountSelection:a})=>a?.()).catch(a=>console.warn("[AccountSelection] reset failed:",a.message)),(Object.hasOwn(b,"claudeAutoPing")||Object.hasOwn(b,"codexAutoPing"))&&Promise.all([c.e(7774),c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(3943),c.e(965),c.e(3225),c.e(2051),c.e(9124),c.e(2380),c.e(8416),c.e(318),c.e(8895),c.e(1245),c.e(7211),c.e(7716),c.e(9713)]).then(c.bind(c,1133)).then(({configureQuotaAutoPing:a})=>{a(n)}).catch(a=>console.warn("[AutoPing] settings update failed:",a.message)),(Object.hasOwn(b,"fallbackStrategy")||Object.hasOwn(b,"providerStrategies")||Object.hasOwn(b,"comboStrategies")||Object.hasOwn(b,"comboStrategy"))&&Promise.all([c.e(7774),c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(3943),c.e(965),c.e(3225),c.e(2051),c.e(9124),c.e(2380),c.e(8416),c.e(318),c.e(8895),c.e(1245),c.e(7211),c.e(5260)]).then(c.bind(c,78632)).then(({syncQuotaSnapshotPoller:a})=>{a()}).catch(a=>console.warn("[QuotaSnapshotPoller] settings update failed:",a.message)),V(n)}catch(a){return console.log("Error updating settings:",a),d.NextResponse.json({error:a.message},{status:500})}}}};