@techysy/10router 1.6.4-test.1 → 1.6.5

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 (566) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +40 -40
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/experimental/page.js.nft.json +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/experimental/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  56. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  58. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  59. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  60. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  61. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  62. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  63. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  65. package/app/.next-cli-build/server/app/_not-found.html +2 -2
  66. package/app/.next-cli-build/server/app/_not-found.rsc +6 -6
  67. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +6 -6
  68. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -6
  69. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  70. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  71. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  74. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  76. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  78. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  79. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
  80. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js +1 -3
  82. package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js +1 -3
  84. package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/auth/saml/start/route.js +1 -3
  86. package/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/auth/saml/test/route.js +1 -3
  88. package/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -3
  90. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  91. package/app/.next-cli-build/server/app/api/auth/verify-password/route.js +1 -1
  92. package/app/.next-cli-build/server/app/api/auth/verify-password/route.js.nft.json +1 -1
  93. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/cli-tools/claude-profiles/route.js +1 -1
  97. package/app/.next-cli-build/server/app/api/cli-tools/claude-profiles/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  105. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  117. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/external-quota/[source]/route.js +1 -1
  121. package/app/.next-cli-build/server/app/api/external-quota/[source]/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/gateway-probe/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  125. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  127. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  129. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  131. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  136. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/keys/rotate/route.js +1 -1
  138. package/app/.next-cli-build/server/app/api/keys/rotate/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  140. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  145. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  147. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  149. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  151. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  153. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  155. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  157. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/models/caps/route.js +1 -1
  159. package/app/.next-cli-build/server/app/api/models/caps/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/models/custom/bulk/route.js +1 -1
  161. package/app/.next-cli-build/server/app/api/models/custom/bulk/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  163. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  165. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  167. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/network/egress-region/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  172. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  174. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/checkin/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/claim-compensation/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/export/route.js +1 -1
  178. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/export/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  180. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  182. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  185. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  187. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  189. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  194. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/oauth/loomy/sms-login/route.js +1 -1
  198. package/app/.next-cli-build/server/app/api/oauth/loomy/sms-login/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/oauth/loomy/sms-send/route.js +1 -1
  200. package/app/.next-cli-build/server/app/api/oauth/loomy/sms-send/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/oauth/qoder/checkin/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/oauth/qoder-cn/checkin/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/oauth/transfer/export/route.js +1 -1
  204. package/app/.next-cli-build/server/app/api/oauth/transfer/export/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/oauth/transfer/import/route.js +1 -1
  206. package/app/.next-cli-build/server/app/api/oauth/transfer/import/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js +1 -1
  208. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +1 -1
  210. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/desktop-kill/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/desktop-status/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js +1 -1
  215. package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/pricing/route.js +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.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  221. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  224. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  226. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  228. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  230. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  233. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  236. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  238. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +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 +1 -1
  242. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  244. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +1 -1
  246. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  248. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +1 -1
  256. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +1 -1
  259. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/security/status/route.js +1 -1
  262. package/app/.next-cli-build/server/app/api/security/status/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/settings/database/import-usage/route.js +1 -1
  264. package/app/.next-cli-build/server/app/api/settings/database/import-usage/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  266. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  268. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  269. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/settings/route.js +2 -2
  271. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  275. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  277. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  281. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  283. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  289. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js +1 -1
  292. package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js.nft.json +1 -1
  293. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  294. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  295. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  296. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  297. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  298. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/usage/dashboard/route.js +1 -1
  300. package/app/.next-cli-build/server/app/api/usage/dashboard/route.js.nft.json +1 -1
  301. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  302. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  303. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  304. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  305. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  306. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  307. package/app/.next-cli-build/server/app/api/usage/quotas/route.js +1 -1
  308. package/app/.next-cli-build/server/app/api/usage/quotas/route.js.nft.json +1 -1
  309. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  310. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  311. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  312. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  313. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  314. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/api/usage/stream/route.js +1 -1
  316. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  318. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  320. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  322. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  323. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  324. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  325. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  326. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  327. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  328. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  329. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  330. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  331. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  332. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  333. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  334. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  335. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  336. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  337. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  338. package/app/.next-cli-build/server/app/api/v1/rerank/route.js +1 -1
  339. package/app/.next-cli-build/server/app/api/v1/rerank/route.js.nft.json +1 -1
  340. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  341. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  342. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  343. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  344. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  345. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  346. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  347. package/app/.next-cli-build/server/app/api/v1/systemone/route.js +1 -1
  348. package/app/.next-cli-build/server/app/api/v1/systemone/route.js.nft.json +1 -1
  349. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  350. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  351. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  352. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  353. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  354. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  355. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  356. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  357. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  358. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  359. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  360. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  361. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  362. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  363. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  364. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  365. package/app/.next-cli-build/server/app/api/version/shell-update/route.js.nft.json +1 -1
  366. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  367. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  368. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  369. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  370. package/app/.next-cli-build/server/app/callback.html +2 -2
  371. package/app/.next-cli-build/server/app/callback.rsc +6 -6
  372. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +6 -6
  373. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  374. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +6 -6
  375. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +2 -2
  376. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +8 -8
  377. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +8 -8
  378. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +8 -8
  379. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  380. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +2 -2
  381. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +8 -8
  382. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +8 -8
  383. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
  384. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  385. package/app/.next-cli-build/server/app/dashboard/combos.html +2 -2
  386. package/app/.next-cli-build/server/app/dashboard/combos.rsc +8 -8
  387. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +8 -8
  388. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
  389. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  390. package/app/.next-cli-build/server/app/dashboard/endpoint.html +2 -2
  391. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +8 -8
  392. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +8 -8
  393. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
  394. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  395. package/app/.next-cli-build/server/app/dashboard/experimental.html +2 -2
  396. package/app/.next-cli-build/server/app/dashboard/experimental.rsc +8 -8
  397. package/app/.next-cli-build/server/app/dashboard/experimental.segments/!KGRhc2hib2FyZCk/dashboard/experimental/__PAGE__.segment.rsc +8 -8
  398. package/app/.next-cli-build/server/app/dashboard/experimental.segments/_full.segment.rsc +8 -8
  399. package/app/.next-cli-build/server/app/dashboard/experimental.segments/_tree.segment.rsc +2 -2
  400. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +2 -2
  401. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +8 -8
  402. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +8 -8
  403. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +8 -8
  404. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  405. package/app/.next-cli-build/server/app/dashboard/mitm.html +2 -2
  406. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +8 -8
  407. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +8 -8
  408. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +8 -8
  409. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  410. package/app/.next-cli-build/server/app/dashboard/profile.html +2 -2
  411. package/app/.next-cli-build/server/app/dashboard/profile.rsc +8 -8
  412. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +8 -8
  413. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
  414. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  415. package/app/.next-cli-build/server/app/dashboard/providers/new.html +2 -2
  416. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +8 -8
  417. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +8 -8
  418. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
  419. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  420. package/app/.next-cli-build/server/app/dashboard/providers.html +2 -2
  421. package/app/.next-cli-build/server/app/dashboard/providers.rsc +8 -8
  422. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +8 -8
  423. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
  424. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  425. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +2 -2
  426. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +8 -8
  427. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +8 -8
  428. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
  429. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  430. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +2 -2
  431. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +8 -8
  432. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +8 -8
  433. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +8 -8
  434. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  435. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  436. package/app/.next-cli-build/server/app/dashboard/quota.rsc +9 -9
  437. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +9 -9
  438. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
  439. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  440. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  441. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  442. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +2 -2
  443. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +6 -6
  444. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -6
  445. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  446. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +6 -6
  447. package/app/.next-cli-build/server/app/dashboard/skills.html +2 -2
  448. package/app/.next-cli-build/server/app/dashboard/skills.rsc +8 -8
  449. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +8 -8
  450. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +8 -8
  451. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  452. package/app/.next-cli-build/server/app/dashboard/token-saver.html +2 -2
  453. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +8 -8
  454. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +8 -8
  455. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +8 -8
  456. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  457. package/app/.next-cli-build/server/app/dashboard/translator.html +2 -2
  458. package/app/.next-cli-build/server/app/dashboard/translator.rsc +8 -8
  459. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +8 -8
  460. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +8 -8
  461. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  462. package/app/.next-cli-build/server/app/dashboard/usage.html +2 -2
  463. package/app/.next-cli-build/server/app/dashboard/usage.rsc +8 -8
  464. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +8 -8
  465. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
  466. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  467. package/app/.next-cli-build/server/app/dashboard.html +2 -2
  468. package/app/.next-cli-build/server/app/dashboard.rsc +8 -8
  469. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +8 -8
  470. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +8 -8
  471. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  472. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  473. package/app/.next-cli-build/server/app/index.html +1 -1
  474. package/app/.next-cli-build/server/app/index.rsc +6 -6
  475. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +6 -6
  476. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +6 -6
  477. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  478. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  479. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  480. package/app/.next-cli-build/server/app/landing.html +2 -2
  481. package/app/.next-cli-build/server/app/landing.rsc +6 -6
  482. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
  483. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  484. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +6 -6
  485. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  486. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  487. package/app/.next-cli-build/server/app/login.html +2 -2
  488. package/app/.next-cli-build/server/app/login.rsc +7 -7
  489. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +7 -7
  490. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  491. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +7 -7
  492. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  493. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  494. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  495. package/app/.next-cli-build/server/app-paths-manifest.json +40 -40
  496. package/app/.next-cli-build/server/chunks/1310.js +9 -0
  497. package/app/.next-cli-build/server/chunks/1806.js +1 -1
  498. package/app/.next-cli-build/server/chunks/1819.js +1 -1
  499. package/app/.next-cli-build/server/chunks/2154.js +1 -0
  500. package/app/.next-cli-build/server/chunks/3662.js +1 -1
  501. package/app/.next-cli-build/server/chunks/3771.js +1 -1
  502. package/app/.next-cli-build/server/chunks/3792.js +1 -1
  503. package/app/.next-cli-build/server/chunks/3943.js +1 -1
  504. package/app/.next-cli-build/server/chunks/3962.js +1 -1
  505. package/app/.next-cli-build/server/chunks/4123.js +1 -1
  506. package/app/.next-cli-build/server/chunks/471.js +2 -0
  507. package/app/.next-cli-build/server/chunks/4859.js +6 -0
  508. package/app/.next-cli-build/server/chunks/4906.js +1 -1
  509. package/app/.next-cli-build/server/chunks/4927.js +1 -1
  510. package/app/.next-cli-build/server/chunks/5210.js +4 -4
  511. package/app/.next-cli-build/server/chunks/5527.js +1 -1
  512. package/app/.next-cli-build/server/chunks/5615.js +1 -1
  513. package/app/.next-cli-build/server/chunks/5757.js +1 -1
  514. package/app/.next-cli-build/server/chunks/5781.js +1 -1
  515. package/app/.next-cli-build/server/chunks/5787.js +9 -0
  516. package/app/.next-cli-build/server/chunks/5837.js +1 -1
  517. package/app/.next-cli-build/server/chunks/594.js +1 -0
  518. package/app/.next-cli-build/server/chunks/6212.js +1 -1
  519. package/app/.next-cli-build/server/chunks/6922.js +1 -1
  520. package/app/.next-cli-build/server/chunks/6960.js +1 -1
  521. package/app/.next-cli-build/server/chunks/7067.js +1 -1
  522. package/app/.next-cli-build/server/chunks/7274.js +1 -1
  523. package/app/.next-cli-build/server/chunks/8145.js +1 -1
  524. package/app/.next-cli-build/server/chunks/8172.js +1 -1
  525. package/app/.next-cli-build/server/chunks/8185.js +1 -0
  526. package/app/.next-cli-build/server/chunks/8318.js +1 -1
  527. package/app/.next-cli-build/server/chunks/8370.js +7 -7
  528. package/app/.next-cli-build/server/chunks/8410.js +1 -1
  529. package/app/.next-cli-build/server/chunks/8595.js +1 -1
  530. package/app/.next-cli-build/server/chunks/8658.js +1 -1
  531. package/app/.next-cli-build/server/chunks/8775.js +1 -1
  532. package/app/.next-cli-build/server/chunks/8895.js +4 -4
  533. package/app/.next-cli-build/server/chunks/8937.js +3 -0
  534. package/app/.next-cli-build/server/chunks/922.js +9 -0
  535. package/app/.next-cli-build/server/chunks/9377.js +1 -0
  536. package/app/.next-cli-build/server/chunks/9489.js +1 -1
  537. package/app/.next-cli-build/server/chunks/9781.js +1 -0
  538. package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
  539. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  540. package/app/.next-cli-build/server/middleware.js +5 -5
  541. package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
  542. package/app/.next-cli-build/server/pages/404.html +2 -2
  543. package/app/.next-cli-build/server/pages/500.html +1 -1
  544. package/app/.next-cli-build/static/chunks/1321-b8be93bbd911ff4d.js +1 -0
  545. package/app/.next-cli-build/static/chunks/{5497-100281ed6ce1f83b.js → 5497-f6d548a4a9538453.js} +1 -1
  546. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/{page-a2f5c1fa12df475b.js → page-7c4e389aed972469.js} +1 -1
  547. package/app/.next-cli-build/static/css/{63c4d9ca82aea954.css → 02a46e8ee21b7aaa.css} +1 -1
  548. package/app/package.json +71 -71
  549. package/app/public/i18n/changelog/en.md +4 -0
  550. package/app/public/i18n/changelog/zh-CN.md +4 -0
  551. package/app/public/i18n/changelog/zh-TW.md +4 -0
  552. package/app/public/i18n/literals/zh-CN.json +2 -0
  553. package/app/public/i18n/literals/zh-TW.json +2 -0
  554. package/package.json +1 -1
  555. package/app/.next-cli-build/server/chunks/1386.js +0 -9
  556. package/app/.next-cli-build/server/chunks/1622.js +0 -1
  557. package/app/.next-cli-build/server/chunks/2812.js +0 -2
  558. package/app/.next-cli-build/server/chunks/3389.js +0 -1
  559. package/app/.next-cli-build/server/chunks/4692.js +0 -6
  560. package/app/.next-cli-build/server/chunks/7209.js +0 -1
  561. package/app/.next-cli-build/server/chunks/8439.js +0 -1
  562. package/app/.next-cli-build/server/chunks/9451.js +0 -9
  563. package/app/.next-cli-build/server/chunks/976.js +0 -9
  564. package/app/.next-cli-build/static/chunks/1321-25956f9bfbc2e6da.js +0 -1
  565. /package/app/.next-cli-build/static/{ilH6FH_DABFzbJ122SgT6 → pP6WDLpkLVAa29nFOm7Ly}/_buildManifest.js +0 -0
  566. /package/app/.next-cli-build/static/{ilH6FH_DABFzbJ122SgT6 → pP6WDLpkLVAa29nFOm7Ly}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- "use strict";exports.id=3389,exports.ids=[1998,3389],exports.modules={6551:(a,b,c)=>{c.d(b,{RO:()=>m,Tl:()=>k,Yt:()=>l});var d=c(39609),e=c(24295);let f={usageUrl:(0,e.U)("codex").url,resetCreditsUrl:(0,e.U)("codex").resetCreditsUrl,resetCreditsConsumeUrl:(0,e.U)("codex").resetCreditsConsumeUrl};function g(a){if(!a)return null;let b=a instanceof Date?a:new Date("number"==typeof a&&a<1e12?1e3*a:a);return Number.isFinite(b.getTime())?b.toISOString():null}function h(a){return!a||"object"!=typeof a||Array.isArray(a)?null:a.rate_limit&&"object"==typeof a.rate_limit?a.rate_limit:a}function i(a){let b=Math.max(0,Math.min(100,(0,e.IQ)(a?.used_percent??a?.percent_used,0)));return{used:b,total:100,remaining:Math.max(0,100-b),resetAt:(0,e.eZ)(a?.reset_at??a?.resets_at??a?.resetAt??null),unlimited:!1}}function j(a,b,c){let d=h(c);if(!d)return!1;let e=d.primary_window||d.primary||c.primary_window||c.primary,f=d.secondary_window||d.secondary||c.secondary_window||c.secondary,g=!1;return e&&(a[b?`${b}_session`:"session"]=i(e),g=!0),f&&(a[b?`${b}_weekly`:"weekly"]=i(f),g=!0),g}async function k(a,b=null){try{let c=await (0,d.proxyAwareFetch)(f.usageUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},b);if(!c.ok)return{message:`Codex connected. Usage API temporarily unavailable (${c.status}).`};let g=await c.json(),i=g.rate_limit||g.rate_limits||g.rate_limits_by_limit_id?.codex||{},k=function(a){if(a.code_review_rate_limit||a.review_rate_limit)return a.code_review_rate_limit||a.review_rate_limit;let b=a.rate_limits_by_limit_id;return b&&"object"==typeof b&&!Array.isArray(b)?b.code_review||b.codex_review||b.review||null:(Array.isArray(a.additional_rate_limits)?a.additional_rate_limits:[]).find(a=>{let b=String(a?.limit_name||a?.metered_feature||a?.id||"").toLowerCase();return"code_review"===b||"codex_review"===b||"review"===b||b.includes("review")})||null}(g),l=Math.max(0,(0,e.IQ)(g.rate_limit_reset_credits?.available_count,0)),m={};return j(m,"",i),j(m,"review",k),{plan:g.plan_type||g.summary?.plan||"unknown",limitReached:h(i)?.limit_reached||!1,reviewLimitReached:h(k)?.limit_reached||!1,resetCredits:{availableCount:l},quotas:m}}catch(a){throw Error(`Failed to fetch Codex usage: ${a.message}`)}}async function l(a,b=null,c=null){var h,i;if(!a)throw Error("No Codex access token available. Please re-authorize the connection.");let j=c?.workspaceId||c?.accountId||c?.chatgptAccountId||null,k={Authorization:`Bearer ${a}`,Accept:"application/json","OpenAI-Beta":"codex-1",originator:"codex_cli_rs"};j&&(k["ChatGPT-Account-ID"]=j);let m=await (0,d.proxyAwareFetch)(f.resetCreditsUrl,{method:"GET",headers:k},b),n=null;try{n=await m.json()}catch{n=null}if(!m.ok)throw Error((h=n?.message||n?.error||n?.detail,i=`Codex reset credits API unavailable (${m.status}).`,h?"string"==typeof h?h:"string"==typeof h.message?h.message:JSON.stringify(h):i));let o=Array.isArray(n?.credits)?n.credits:[];return{availableCount:Math.max(0,(0,e.IQ)(n?.available_count??n?.availableCount,0)),credits:o.map(a=>({status:String(a?.status||"unknown"),grantedAt:g(a?.granted_at??a?.grantedAt),expiresAt:g(a?.expires_at??a?.expiresAt)}))}}async function m(a,b,c=null){let g;if(!a)throw Error("No Codex access token available. Please re-authorize the connection.");if(!b||"string"!=typeof b)throw Error("A redeem request id is required to consume a Codex reset credit.");let h=null;try{g=await (0,d.proxyAwareFetch)(f.resetCreditsConsumeUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({redeem_request_id:b})},c);let e=await g.text();h=e?JSON.parse(e):null}catch(a){throw Error(`Failed to consume Codex reset credit: ${a.message}`)}let i=h?.code||null,j=(0,e.IQ)(h?.windows_reset,0);return{ok:g.ok&&("reset"===i||j>0),noCredit:g.ok&&"no_credit"===i,status:g.status,code:i,windowsReset:j,message:h?.message||null,raw:h}}},12132:(a,b,c)=>{c.d(b,{$6:()=>G,Fp:()=>I,ND:()=>p,Nv:()=>F,XX:()=>x,getMimoAccountCookie:()=>H,readDesktopPassToken:()=>A});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(77598),k=c.n(j),l=c(39609);let m={cn:"https://mimo-server-cn.xiaomimimo.com",sgp:"https://mimo-server-sgp.xiaomimimo.com",ams:"https://mimo-server-ams.xiaomimimo.com",ru:"https://mimo-server-ru.xiaomimimo.com",in:"https://mimo-server-in.xiaomimimo.com"},n={cn:"mimopc",sgp:"mimosgp",ams:"mimoams",ru:"mimoru",in:"mimoin"};function o(a=null){return String(a?.region||"").toLowerCase()}function p(a=null){return m[o(a)]||m.cn}m.cn;let q="account.xiaomi.com",r="miNative PC/Normal Windows_NT/10.0.19045 SDKV/1.0.0 DEVT/PC DEVS/Windows APP/miaccount_desktop APPV/0.1.0",s="MiClaw/1.0",t=new Set(["EBUSY","EPERM","EACCES"]),u=new Map,v=new Map,w="Xiaomi MiMo";function x(){let a=g().homedir(),b=i().join(a,".local","share","mimocode"),c=process.env.XDG_DATA_HOME,d=c?i().join(c,"mimocode"):b;return(d===b?[d]:[d,b]).map(a=>i().join(a,"auth.json"))}async function y(){let a,b=i().join((a=g().homedir(),"win32"===process.platform?i().join(process.env.APPDATA||i().join(a,"AppData","Roaming"),w):"darwin"===process.platform?i().join(a,"Library","Application Support",w):i().join(process.env.XDG_CONFIG_HOME||i().join(a,".config"),w)),"Partitions","xiaomi-account","Network","Cookies");if(!e().existsSync(b))return null;let d=i().join(g().tmpdir(),`10router-mimo-cookies-${process.pid}-${k().randomBytes(4).toString("hex")}.db`);try{e().copyFileSync(b,d)}catch(a){if(t.has(a?.code)){let a=Error("Xiaomi MiMo Desktop is holding its cookie store (quit the app and retry)");throw a.code="DESKTOP_LOCKED",a}return null}try{e().chmodSync(d,384)}catch{}try{let{DatabaseSync:a}=await Promise.resolve().then(c.t.bind(c,80099,23)),b=null;try{let c=(b=new a(d,{readOnly:!0})).prepare("SELECT name, value FROM cookies WHERE host_key = ?").all("."+q),e=Object.fromEntries(c.map(a=>[a.name,a.value]));return e.passToken?e:null}finally{try{b?.close()}catch{}}}catch{return null}finally{await z(d)}}async function z(a){for(let b=0;b<3;b++)try{e().unlinkSync(a);return}catch(a){if("ENOENT"===a.code)return;b<2&&await new Promise(a=>setTimeout(a,20))}}async function A(){try{let a=await y();if(!a?.passToken)return null;return{passToken:a.passToken,userId:a.userId||null,cUserId:a.cUserId||null}}catch(a){if(a?.code==="DESKTOP_LOCKED")throw a;return null}}function B(a,b){for(let c of b.headers.getSetCookie?.()||[]){let b=/^([^=]+)=([^;]*)/.exec(c.trim());b&&b[2]&&(a[b[1]]=b[2])}}function C(a){return Object.entries(a).filter(([,a])=>a).map(([a,b])=>`${a}=${b}`).join("; ")}async function D(a,b,c=null){var d;let e,f={...a},g=p(c),h=function(a=null){return n[o(a)]||n.cn}(c),i=(await (0,l.proxyAwareFetch)(`${g}/api/user/xiaomi/me`,{redirect:"manual",headers:{"User-Agent":r,Cookie:C(f)},signal:AbortSignal.timeout(1e4)},b)).headers.get("location");if(!i)return null;let j=new URL(i).searchParams.get("callback");if(!j)return null;let m=await (0,l.proxyAwareFetch)(`https://${q}/pass/serviceLogin?sid=passportapi&_json=true`,{headers:{Cookie:C(f),"User-Agent":s,Accept:"application/json"},signal:AbortSignal.timeout(1e4)},b),t=JSON.parse((await m.text()).replace(/^&&&START&&&/,"")),u=t.nonce||(t.location?new URL(t.location).searchParams.get("nonce"):null);if(!u||!t.location)return null;let v=await (0,l.proxyAwareFetch)(`${t.location}&clientSign=${(e=`nonce=${u}`+((d=t.ssecurity)&&d.trim()?`&${d}`:""),encodeURIComponent(k().createHash("sha1").update(e).digest("base64")))}`,{redirect:"manual",headers:{Cookie:C(f),"User-Agent":s},signal:AbortSignal.timeout(1e4)},b);B(f,v);let w=await (0,l.proxyAwareFetch)(`https://${q}/pass/serviceLogin?sid=${encodeURIComponent(h)}&callback=${encodeURIComponent(j)}&_json=true`,{headers:{Cookie:C(f),"User-Agent":s,Accept:"application/json"},signal:AbortSignal.timeout(1e4)},b),x=JSON.parse((await w.text()).replace(/^&&&START&&&/,""));if(B(f,w),!x?.location||!/\/api\/sts/.test(x.location))return null;let y=await (0,l.proxyAwareFetch)(x.location,{redirect:"manual",headers:{"User-Agent":r,Cookie:C(f)},signal:AbortSignal.timeout(1e4)},b);if(B(f,y),!f.serviceToken)return null;let z={};for(let a of["serviceToken","mimopc_ph","mimopc_slh","userId"])f[a]&&(z[a]=f[a]);return C(z)}async function E(a,b){let c=a?.mimoPassToken?{passToken:a.mimoPassToken,userId:a.mimoUserId,cUserId:a.mimoCUserId}:null;if(!c)try{c=await y()}catch(a){if(a?.code==="DESKTOP_LOCKED")return{cookie:null,reason:"desktop-locked"};throw a}if(!c)return{cookie:null,reason:"no-pass-token"};let d=k().createHash("sha256").update(`${c.passToken}|${o(a)}`).digest("hex"),e=u.get(d);if(e&&Date.now()-e.at<18e5)return{cookie:e.cookie};let f=v.get(d);if(f){let a=await f;return a?{cookie:a}:{cookie:null,reason:"sso-failed"}}let g=(async()=>{try{return await D(c,b,a)}catch{return null}finally{v.delete(d)}})();v.set(d,g);let h=await g;return h?(u.set(d,{cookie:h,at:Date.now()}),{cookie:h}):{cookie:null,reason:"sso-failed"}}function F(){u.clear()}let G=r;async function H(a=null,b=null){try{let{cookie:c}=await E(a,b);return c}catch{return null}}async function I(a=null,b=null){let{cookie:c,reason:d}=await E(a,b);if(!c)return{error:"no-pass-token"===d||"desktop-locked"===d?"no-session":"session-failed"};try{let d=await (0,l.proxyAwareFetch)(`${p(a)}/api/user/usage`,{headers:{"User-Agent":r,Cookie:c,Accept:"application/json"},signal:AbortSignal.timeout(1e4)},b);if(!d.ok)return{error:`http-${d.status}`};let e=await d.json().catch(()=>null);if(!e||0!==e.code||!e.data)return{error:"bad-response"};return{percent:e.data.percent,resetDate:e.data.resetDate,resetAt:e.data.resetAt}}catch(a){return{error:a.message}}}},24295:(a,b,c)=>{c.d(b,{IQ:()=>h,U:()=>f,eZ:()=>g,gD:()=>i,u9:()=>j});var d=c(26070),e=c(39609);let f=a=>d.xq[a]?.usage||{};function g(a){if(!a)return null;try{if(a instanceof Date)return a.toISOString();if("number"==typeof a)return new Date(a<1e12?1e3*a:a).toISOString();if("string"==typeof a){if(/^\d+$/.test(a)){let b=Number(a);return new Date(b<1e12?1e3*b:b).toISOString()}return new Date(a).toISOString()}return null}catch(b){return console.warn(`Failed to parse reset time: ${a}`,b),null}}function h(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&a.trim()){let b=Number(a);if(Number.isFinite(b))return b}return b}function i(a){return"string"==typeof a?a.trim()||null:a&&"object"==typeof a&&"string"==typeof a.id&&a.id.trim()||null}async function j(a,b,c=1e4,d=null){let f=new AbortController,g=setTimeout(()=>f.abort(),c);try{return await (0,e.proxyAwareFetch)(a,{...b,signal:f.signal},d)}finally{clearTimeout(g)}}},39326:(a,b,c)=>{c.d(b,{B:()=>j,p:()=>i});var d=c(71998),e=c(72082);function f(a){return null==a?"":String(a).trim()}function g(a){let b=f(a);if(!b)return"";if((0,e.isEncrypted)(b))try{return f((0,e.decryptSecret)(b))}catch(a){console.warn(`[ConnectionProxy] Could not decrypt proxy URL: ${a?.message||a}`)}return b}let h=new Map;function i(a,b,c){if(!a||0===a.length)return null;if(1===a.length)return a[0];if("round-robin"===b){let b=h.get(c)||{index:-1};return b.index=(b.index+1)%a.length,h.set(c,b),a[b.index]}return"random"===b?a[Math.floor(Math.random()*a.length)]:a[0]}async function j(a={}){try{let b=f(a?.proxyPoolId),c="__none__"===b?"":b,e=function(a={}){let b=a?.connectionProxyEnabled===!0,c=g(a?.connectionProxyUrl),d=f(a?.connectionNoProxy);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:d,strictProxy:a?.strictProxy===!0}}(a),h=!1;if(c){let a=await (0,d.hr)(c);h=a?.strictProxy===!0;let b=g(a?.proxyUrl),e=f(a?.noProxy);if(a&&!0===a.isActive&&b){if("vercel"===a.type||"cloudflare"===a.type||"deno"===a.type)return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:e,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:e,strictProxy:!0===a.strictProxy}}}if(e.connectionProxyEnabled&&e.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...e,strictProxy:h||e.strictProxy};return{source:"none",proxyPoolId:c||null,proxyPool:null,...e,strictProxy:h||e.strictProxy}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}},44725:(a,b,c)=>{c.d(b,{K$:()=>m,zP:()=>l});var d=c(77598),e=c(39609);let f="I*7Cf%WZ#S&%1RlZJ&C2",g={"minimax-code":{agent:"https://agent.minimaxi.com",platform:"https://www.minimaxi.com",lang:"zh"},"minimax-code-global":{agent:"https://agent.minimax.io",platform:"https://platform.minimax.io",lang:"en"}},h=a=>(0,d.createHash)("md5").update(a).digest("hex"),i=a=>a&&"object"==typeof a&&!Array.isArray(a)?a:void 0,j=a=>"number"==typeof a&&Number.isFinite(a)?a:void 0,k=(a,b)=>"string"==typeof a?.[b]&&a[b].trim()?a[b].trim():void 0;function l(a,b,{access:c,userID:d,body:e,now:g=Date.now(),tzOffsetSec:i=-60*new Date().getTimezoneOffset()}={}){let j=new URL(b,a.agent);j.search=new URLSearchParams({device_platform:"mcode",biz_id:"3",app_id:"3001",version_code:"22201",unix:String(g),timezone_offset:String(i),sys_language:a.lang,lang:a.lang,device_id:"0",os_name:process.platform,browser_name:"mcode",user_id:String(d??"").trim()||"0",client:"mcode"}).toString();let k=j.pathname+j.search,m=Math.floor(g/1e3),n=void 0===e?void 0:JSON.stringify(e),o={Accept:"application/json","Content-Type":"application/json","User-Agent":"MiniMaxCode",Authorization:`Bearer ${c}`,yy:void 0===n?h(`${encodeURIComponent(k)}_{}${h(String(g))}ooui`):h(`${encodeURIComponent(k)}_${n}${h(String(g))}ooui`),"x-timestamp":String(m),"x-signature":void 0===n?h(`${m}${f}`):h(`${m}${f}${n}`)};return{url:j.toString(),init:{method:void 0===n?"GET":"POST",headers:o,...void 0===n?{}:{body:n}}}}async function m(a,b,c=null,d=null){let f=g[b];if(!f||!a)return{message:`Usage API not implemented for ${b}`};let h={},n=null;try{let b=d?.opGroupId,g=await (0,e.proxyAwareFetch)(`${f.platform}/v1/api/openplatform/coding_plan/remains`,{headers:{Accept:"application/json",Authorization:`Bearer ${a}`,...b?{"X-Group-Id":b}:{}},signal:AbortSignal.timeout(15e3)},c);if(401===g.status||403===g.status)return{message:"MiniMax Code session expired or unauthorized. Please re-authenticate."};if(g.ok){let a=await g.json().catch(()=>null);for(let b of function(a){let b=i(a?.base_resp);if(b&&"number"==typeof b.status_code&&0!==b.status_code)throw Error(k(b,"status_msg")??`MiniMax said ${b.status_code}`);if(!b&&!Array.isArray(a?.model_remains))throw Error("no plan in the reply");let c=a=>a<1e12?1e3*a:a,d=a=>0===j(a),e=[];for(let b of Array.isArray(a.model_remains)?a.model_remains:[]){let a=String(b?.model_name??"").trim();if(!a||3===j(b.current_interval_status)&&3===j(b.current_weekly_status)&&d(b.current_interval_total_count)&&d(b.current_weekly_total_count))continue;let f="general"===a.toLowerCase();for(let d of[{left:j(b.current_interval_remaining_percent),status:j(b.current_interval_status)??0,start:j(b.start_time)??0,end:j(b.end_time)??0,week:!1},{left:j(b.current_weekly_remaining_percent),status:j(b.current_weekly_status)??0,start:j(b.weekly_start_time)??0,end:j(b.weekly_end_time)??0,week:!0}]){if(3===d.status||void 0===d.left&&2!==d.status)continue;let b=2===d.status?0:Math.max(0,Math.min(100,d.left)),g=0;d.start>0&&d.end>d.start?g=c(d.end)-c(d.start):d.week&&(g=6048e5);let h=d.week?"7 days":g>864e5&&g%864e5==0?`${g/864e5} days`:g>=36e5&&g%36e5==0?`${g/36e5} hours`:g>0?`${Math.floor(g/6e4)} minutes`:"Allowance",i=f?h:`${a[0].toUpperCase()+a.slice(1)} \xb7 ${h}`;e.push({name:i,used:100-b,total:100,remaining:b,remainingPercentage:b,resetAt:d.end>0?new Date(c(d.end)).toISOString():null,recurring:!0})}}return e}(a))h[b.name]=b}}catch(a){n=a}try{let b=d?.realUserID,{url:g,init:j}=l(f,"/matrix/api/v1/commerce/get_membership_info",{access:a,userID:b,body:{}}),m=await (0,e.proxyAwareFetch)(g,j,c);if(m.ok){let a=await m.json().catch(()=>null),b=i(a?.data),c=i(a?.op_credit_summary)??i(b?.op_credit_summary),d=k(c,"total_remaining_amount")??k(a,"opcredit_balance")??k(b,"opcredit_balance");if(void 0!==d){let a=Number(d);h.Credits={name:"Credits",used:0,total:Number.isFinite(a)?a:0,remaining:Number.isFinite(a)?a:0,isCreditBalance:!0,currency:"credits"}}}}catch{}return 0===Object.keys(h).length?n?{message:`MiniMax Code usage fetch failed: ${n.message}`}:{message:"No active MiniMax Code subscription found."}:{quotas:h}}},67978:(a,b,c)=>{c.d(b,{Ut:()=>k.Ut,RO:()=>l.RO,Yt:()=>l.Yt,my:()=>aB});var d=c(39609),e=c(26070),f=c(24295);let g={apiVersion:e.sr.github?.apiVersion,userAgent:e.sr.github?.userAgent};async function h(a,b,c=null){try{if(!a)throw Error("No GitHub access token available. Please re-authorize the connection.");let b=await (0,d.proxyAwareFetch)((0,f.U)("github").url,{headers:{Authorization:`token ${a}`,Accept:"application/json","X-GitHub-Api-Version":g.apiVersion,"User-Agent":g.userAgent,"Editor-Version":"vscode/1.100.0","Editor-Plugin-Version":"copilot-chat/0.26.7"}},c);if(!b.ok){let a=await b.text();throw Error(`GitHub API error: ${a}`)}let e=await b.json();if(e.quota_snapshots){let a=e.quota_snapshots,b=(0,f.eZ)(e.quota_reset_date);return{plan:e.copilot_plan,resetDate:e.quota_reset_date,quotas:{chat:{...i(a.chat),resetAt:b},completions:{...i(a.completions),resetAt:b},premium_interactions:{...i(a.premium_interactions),resetAt:b}}}}if(e.monthly_quotas||e.limited_user_quotas){let a=e.monthly_quotas||{},b=e.limited_user_quotas||{},c=(0,f.eZ)(e.limited_user_reset_date);return{plan:e.copilot_plan||e.access_type_sku,resetDate:e.limited_user_reset_date,quotas:{chat:{used:b.chat||0,total:a.chat||0,unlimited:!1,resetAt:c},completions:{used:b.completions||0,total:a.completions||0,unlimited:!1,resetAt:c}}}}return{message:"GitHub Copilot connected. Unable to parse quota data."}}catch(a){throw Error(`Failed to fetch GitHub usage: ${a.message}`)}}function i(a){return a?{used:a.entitlement-a.remaining,total:a.entitlement,remaining:a.remaining,unlimited:a.unlimited||!1}:{used:0,total:0,unlimited:!0}}var j=c(87283),k=c(69788),l=c(6551),m=c(6382);async function n(a,b,c=null){let e=b?.authMethod||"builder-id",g="api_key"===e,h=g?{tokentype:"API_KEY"}:{},i="external_idp"===e?{TokenType:"EXTERNAL_IDP"}:{},j=g?b?.profileArn||"":b?.profileArn||(0,m.We)(e),k=new URLSearchParams({isEmailRequired:"true",origin:"AI_EDITOR",resourceType:"AGENTIC_REQUEST"}),l=!1,o=[];for(let b of[{name:"codewhisperer-get",run:async()=>(0,d.proxyAwareFetch)(`${(0,f.U)("kiro").cwHost}${(0,f.U)("kiro").limitsPath}?${k.toString()}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","x-amz-user-agent":"aws-sdk-js/1.0.0 KiroIDE","user-agent":"aws-sdk-js/1.0.0 KiroIDE",...h,...i}},c)},{name:"codewhisperer-post",run:async()=>(0,d.proxyAwareFetch)((0,f.U)("kiro").cwHost,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.GetUsageLimits",Accept:"application/json",...h,...i},body:JSON.stringify({origin:"AI_EDITOR",...j?{profileArn:j}:{},resourceType:"AGENTIC_REQUEST"})},c)},{name:"q-get",run:async()=>{let b=new URLSearchParams({origin:"AI_EDITOR",...j?{profileArn:j}:{},resourceType:"AGENTIC_REQUEST"});return(0,d.proxyAwareFetch)(`${(0,f.U)("kiro").qHost}${(0,f.U)("kiro").limitsPath}?${b}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json",...h,...i}},c)}}])try{let a=await b.run();if(!a.ok){let c=await a.text().catch(()=>"");(401===a.status||403===a.status)&&(l=!0),o.push(`${b.name}:${a.status}${c?`:${c}`:""}`);continue}let c=await a.json();return function(a){let b=a.usageBreakdownList||[],c={},d=(0,f.eZ)(a.nextDateReset||a.resetDate);return b.forEach(a=>{let b=a.resourceType?.toLowerCase()||"unknown",e=a.currentUsageWithPrecision||0,g=a.usageLimitWithPrecision||0;if(c[b]={used:e,total:g,remaining:g-e,resetAt:d,unlimited:!1},a.freeTrialInfo){let e=a.freeTrialInfo.currentUsageWithPrecision||0,g=a.freeTrialInfo.usageLimitWithPrecision||0;c[`${b}_freetrial`]={used:e,total:g,remaining:g-e,resetAt:(0,f.eZ)(a.freeTrialInfo.freeTrialExpiry||d),unlimited:!1}}}),{plan:a.subscriptionInfo?.subscriptionTitle||"Kiro",quotas:c}}(c)}catch(a){o.push(`${b.name}:${a.message}`)}return l&&"idc"===e?{message:"Kiro quota API is unavailable for the current AWS IAM Identity Center session. Chat may still work. If this persists after renewing your session, reconnect Kiro.",quotas:{}}:l&&("google"===e||"github"===e)?{message:"Kiro quota API authentication expired. Chat may still work.",quotas:{}}:l?{message:"Kiro quota API rejected the current token. Chat may still work.",quotas:{}}:{message:o.length>0?`Unable to fetch Kiro usage right now. (${o[o.length-1]})`:"Unable to fetch Kiro usage right now.",quotas:{}}}let o={minimax:(0,f.U)("minimax").urls,"minimax-cn":(0,f.U)("minimax-cn").urls};function p(a,b,c){return a&&"object"==typeof a?a[b]??a[c]??null:null}function q(a,b,c){if(!a||"object"!=typeof a)return null;let d=a[b]??a[c];if(null==d)return null;let e=Number(d);return Number.isFinite(e)?Math.max(0,Math.min(100,e)):null}function r(a){return Math.max(0,Number(p(a,"current_interval_total_count","currentIntervalTotalCount"))||0)}function s(a){return Math.max(0,Number(p(a,"current_weekly_total_count","currentWeeklyTotalCount"))||0)}function t(a){return!!(r(a)>0||s(a)>0)||null!==q(a,"current_interval_remaining_percent","currentIntervalRemainingPercent")||null!==q(a,"current_weekly_remaining_percent","currentWeeklyRemainingPercent")}function u(a,b,c,d,e,g,h,i,j,k){let l=d(c),m=q(c,h,i);if(l<=0&&null===m)return;let n=Math.max(0,Number(p(c,e,g))||0),o=l,r=n;l<=0&&(o=100,r=k?Math.round(m/100*o):Math.round(o*(1-m/100))),a[b]=function(a,b,c,d,e=null){var f,g,h;let i=Math.max(0,a),j=d?Math.max(i-b,0):Math.min(Math.max(0,b),i),k=Math.max(i-j,0),l=(f=e,g=k,h=i,null!=f&&Number.isFinite(f)?Math.max(0,Math.min(100,f)):h>0?Math.max(0,Math.min(100,g/h*100)):0);return{used:j,total:i,remaining:k,remainingPercentage:l,resetAt:c,unlimited:!1}}(o,r,function(a,b,c,d,e,g){let h=Number(p(a,c,d))||0;return h>0?new Date(b+h).toISOString():(0,f.eZ)(p(a,e,g))}(c,...j),k,m)}async function v(a,b,c=null){if(!a)return{message:"MiniMax API key not available."};let e=o[b]||[],f="";for(let b=0;b<e.length;b+=1){let g=e[b],h=b<e.length-1;try{let b=await (0,d.proxyAwareFetch)(g,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"}},c),e=await b.text(),i={};if(e)try{i=JSON.parse(e)}catch{i={}}let j=(i?.base_resp??i?.baseResp)||{},k=Number(j.status_code??j.statusCode)||0,l=String(j.status_msg??j.statusMsg??"").trim(),m=`${l} ${e}`.trim(),n=/token plan|coding plan|invalid api key|invalid key|unauthorized|inactive/i;if(401===b.status||403===b.status||1004===k||n.test(m))return{message:"MiniMax API key invalid or inactive. Use an active Token/Coding Plan key."};if(!b.ok){if(f=`MiniMax usage endpoint error (${b.status})`,(404===b.status||405===b.status||b.status>=500)&&h)continue;return{message:`MiniMax connected. ${f}`}}if(0!==k)return{message:`MiniMax connected. ${l||"Upstream quota API error"}`};let o=i?.model_remains??i?.modelRemains,q=(Array.isArray(o)?o:[]).filter(t);if(0===q.length)return{message:"MiniMax connected. No quota data was returned."};let v=Date.now(),w=g.includes("/coding_plan/remains"),x={};for(let a of q){let b=function(a){let b=String(p(a,"model_name","modelName")||"").trim();return b?"MiniMax-M*"===b||"general"===b?"M-series":b.replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,a=>a.toUpperCase()).replace(/\bTo\b/g,"to").replace(/\bTts\b/g,"TTS").replace(/\bHd\b/g,"HD"):"MiniMax"}(a);u(x,`${b} (5h)`,a,r,"current_interval_usage_count","currentIntervalUsageCount","current_interval_remaining_percent","currentIntervalRemainingPercent",[v,"remains_time","remainsTime","end_time","endTime"],w),u(x,`${b} (7d)`,a,s,"current_weekly_usage_count","currentWeeklyUsageCount","current_weekly_remaining_percent","currentWeeklyRemainingPercent",[v,"weekly_remains_time","weeklyRemainsTime","weekly_end_time","weeklyEndTime"],w)}if(0===Object.keys(x).length)return{message:"MiniMax connected. Unable to extract quota usage."};return{quotas:x}}catch(a){if(f=a.message,!h)break}}return{message:f?`MiniMax connected. Unable to fetch usage: ${f}`:"MiniMax connected. Unable to fetch usage."}}function w(a,b){let c=Number(a??b);return Number.isFinite(c)?c:0}async function x(a,b,c,g,h=null){let i=b||c;if(!i)return{message:`CodeBuddy (${a}) credential not available.`};try{let b=await (0,d.proxyAwareFetch)((0,f.U)(a).url,{method:"POST",headers:{...e.xq[a]?.headers||{},Authorization:`Bearer ${i}`,"Content-Type":"application/json",Accept:"application/json"},body:"{}"},h);if(401===b.status||403===b.status)return{message:"CodeBuddy CN credential invalid or expired."};if(!b.ok)return{message:`CodeBuddy CN quota API error (${b.status}).`};let c=await b.json();if(c?.code!==0)return{message:`CodeBuddy CN quota error: ${c?.msg||"unknown"}`};let g=c?.data?.Response?.Data||{},j=Array.isArray(g.Accounts)?g.Accounts:[];if(0===j.length)return{message:"CodeBuddy CN connected. No credit package found."};let k=a=>{let b=(0,f.eZ)(a.CycleEndTime);return b?new Date(b).getTime():1/0},l=a=>{let b=k(a),c=Number(a.DeductionEndTime);return Number.isFinite(b)&&Number.isFinite(c)&&c-b>1728e5},m=(a,b)=>k(a)-k(b),n=j.filter(l).sort(m),o=j.filter(a=>!l(a)).sort(m),p={},q=0,r=0;n.forEach(a=>{q+=w(a.CycleCapacityUsedPrecise,a.CycleCapacityUsed),r+=w(a.CycleCapacitySizePrecise,a.CycleCapacitySize)}),o.forEach(a=>{q+=w(a.CapacityUsedPrecise,a.CapacityUsed),r+=w(a.CapacitySizePrecise,a.CapacitySize)}),p["Total Points"]={used:Math.round(100*q)/100,total:Math.round(100*r)/100,resetAt:null,unlimited:!1,recurring:!1};let s={};n.forEach(a=>{let b=function(a){let b=(0,f.eZ)(a.CycleStartTime),c=(0,f.eZ)(a.CycleEndTime);if(b&&c){let a=(new Date(c).getTime()-new Date(b).getTime())/864e5;if(a<=1.5)return"Daily";if(a<=10)return"Weekly"}return"Monthly"}(a);s[b]=(s[b]||0)+1,p[s[b]>1?`${b} ${s[b]}`:b]={used:w(a.CycleCapacityUsedPrecise,a.CycleCapacityUsed),total:w(a.CycleCapacitySizePrecise,a.CycleCapacitySize),resetAt:(0,f.eZ)(a.CycleEndTime),unlimited:!1,recurring:!0,giftPack:!0}}),o.forEach((a,b)=>{p[`Bonus Pack ${b+1}`]={used:w(a.CapacityUsedPrecise,a.CapacityUsed),total:w(a.CapacitySizePrecise,a.CapacitySize),resetAt:(0,f.eZ)(a.CycleEndTime),unlimited:!1,recurring:!1}});let t=Date.now(),u=j.some(a=>{let b=Number(a.CycleStartTime);if(!b)return!1;let c=new Date(b<1e12?1e3*b:b),d=new Date(t);return c.getFullYear()===d.getFullYear()&&c.getMonth()===d.getMonth()&&c.getDate()===d.getDate()}),v=n[0]||j[0]||{};return{plan:v.PackageName||v.SubProductName||"CodeBuddy",quotas:p,checkinToday:u}}catch(b){return{message:`CodeBuddy (${a}) error: ${b.message}`}}}async function y(a,b,c,d=null){return x("codebuddy-cn",a,b,c,d)}async function z(a,b,c,d=null){return x("codebuddy-intl",a,b,c,d)}var A=c(90737);function B(a,b=0){if(!Buffer.isBuffer(a)||b<0||a.length-b<5)return null;let c=a[b];if(0!==c&&1!==c&&128!==c&&129!==c)return null;let d=b+5,e=a.readUInt32BE(b+1);return e>a.length-d?null:{flag:c,payloadStart:d,payloadLength:e}}function C(a,b){let c=0n,d=0n,e=b;for(;;){if(e>=a.length)return null;let b=a[e];if(c|=BigInt(127&b)<<d,e+=1,(128&b)==0)break;if((d+=7n)>70n)return null}return{value:Number(c),next:e}}function D(a,b,c,d){return b+c>a.length?null:{field:{wireType:d,bytes:a.subarray(b,b+c)},next:b+c}}function E(a){let b=new Map,c=0;for(;c<a.length;){let d=function(a,b){let c=C(a,b);if(!c)return null;let d=c.value>>>3,e=7&c.value;if(0===d)return null;if(0===e){let b=C(a,c.next);return b?{fieldNumber:d,field:{wireType:0,value:b.value},next:b.next}:null}if(2===e){let b=function(a,b){let c=C(a,b);if(!c)return null;let{value:d,next:e}=c;return d<0||e+d>a.length?null:{field:{wireType:2,bytes:a.subarray(e,e+d)},next:e+d}}(a,c.next);return b?{fieldNumber:d,field:b.field,next:b.next}:null}if(1===e){let b=D(a,c.next,8,1);return b?{fieldNumber:d,field:b.field,next:b.next}:null}if(5===e){let b=D(a,c.next,4,5);return b?{fieldNumber:d,field:b.field,next:b.next}:null}return null}(a,c);if(!d)return null;b.set(d.fieldNumber,d.field),c=d.next}return b}let F=(0,f.U)("grok-cli"),G=F.url||"https://cli-chat-proxy.grok.com/v1/billing?format=credits",H=F.userUrl||"https://cli-chat-proxy.grok.com/v1/user?include=subscription",I=Buffer.from([0,0,0,0,0]);function J(a,b=0){return null==a?b:"object"==typeof a&&!Array.isArray(a)&&"val"in a?(0,f.IQ)(a.val,b):(0,f.IQ)(a,b)}function K(a,b){let c=a?.subscriptionTier??a?.subscription_tier??a?.subscription?.tier??b?.subscriptionTier??b?.subscription_tier;return"string"==typeof c?c.trim():""}function L({used:a,total:b,resetAt:c,unlimited:d=!1}){let e=Math.max(0,(0,f.IQ)(b,0)),g=Math.max(0,(0,f.IQ)(a,0));if(d||0===e)return{used:g,total:0,remainingPercentage:100*!!d,resetAt:c||null,unlimited:!0};let h=Math.max(0,e-g);return{used:g,total:e,remainingPercentage:h/e*100,resetAt:c||null,unlimited:!1}}async function M(a,b=null){if(!a)return null;try{let c=await (0,d.proxyAwareFetch)("https://grok.com/grok_api_v2.GrokBuildBilling/GetGrokCreditsConfig",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/grpc-web+proto","X-Grpc-Web":"1",Accept:"application/grpc-web+proto"},body:I},b);if(!c?.ok)return null;let e=await c.arrayBuffer().catch(()=>null);if(!e)return null;return function(a){if(!a||!Buffer.isBuffer(a)||0===a.length)return null;try{var b,c;let d=null!==B(a,0)?function(a){let b=0;for(;b<a.length;){let c=B(a,b);if(!c)break;let d=c.payloadStart+c.payloadLength;if((128&c.flag)==0)return a.subarray(c.payloadStart,d);b=d}return null}(a):a;if(!d)return null;let e=E(d);if(!e)return null;let f=(b=e.get(1))&&2===b.wireType?E(b.bytes):null;if(!f)return null;let g=(c=f.get(1))?5===c.wireType?c.bytes.readFloatLE(0):1===c.wireType?c.bytes.readDoubleLE(0):null:0;if(null===g||!Number.isFinite(g)||g<0)return null;return{percentUsed:Math.min(100,100*g),resetAt:function(a){if(!a||2!==a.wireType)return null;let b=E(a.bytes);if(!b)return null;let c=b.get(1),d=b.get(2),e=c?.wireType===0?c.value:0,f=new Date(1e3*e+Math.round((d?.wireType===0?d.value:0)/1e6));return Number.isNaN(f.getTime())?null:f.toISOString()}(f.get(5))}}catch{return null}}(Buffer.from(e))}catch{return null}}async function N(a,b=null,c=null){if(!a)return{message:"Grok CLI access token not available."};let e=function(a,b={}){let c=b||{},d={Authorization:`Bearer ${a}`,Accept:"application/json","User-Agent":A.fZ,"x-xai-token-auth":"xai-grok-cli","x-grok-client-identifier":A.rK,"x-grok-client-version":A.uG,"x-grok-client-mode":"headless"},e=c.email,f=c.userId||c.principalId;return e&&(d["x-email"]=e),f&&(d["x-userid"]=f),d}(a,b);try{let[b,h]=await Promise.all([(0,d.proxyAwareFetch)(G,{method:"GET",headers:e},c),(0,d.proxyAwareFetch)(H,{method:"GET",headers:e},c).catch(()=>null)]);if(401===b.status||403===b.status)return{message:"Grok CLI authentication expired. Please re-authorize."};if(!b.ok){let a=await b.text().catch(()=>""),c=a?`: ${a.slice(0,200)}`:"";return{message:`Grok CLI billing API error (${b.status})${c}`}}let i=await b.json().catch(()=>null);if(!i||"object"!=typeof i)return{message:"Grok CLI billing response was not JSON."};let j=null;h?.ok&&(j=await h.json().catch(()=>null));let k=function(a,b=null){let c,d=a&&"object"==typeof a?a:{},e=d.config&&"object"==typeof d.config&&!Array.isArray(d.config)?d.config:d,g=(0,f.eZ)(e.billingPeriodEnd)||(0,f.eZ)(e.billing_period_end)||(0,f.eZ)(e.currentPeriod?.end)||(0,f.eZ)(e.resetAt||e.resetsAt||e.periodEnd)||(0,f.eZ)(d.billingPeriodEnd)||(0,f.eZ)(d.billing_period_end)||(0,f.eZ)(d.resetAt||d.resetsAt||d.periodEnd)||null,h={},i=K(b,e),j=!!i&&!/^(free|none|null)$/i.test(i),k=J(e.monthlyLimit??e.monthly_limit??d.monthlyLimit??d.monthly_limit,NaN),l=J(e.includedUsed??e.included_used??d.includedUsed??d.included_used,NaN),m=J(e.totalUsed??e.total_used??d.totalUsed??d.total_used,NaN);Number.isFinite(k)&&k>0&&(h["Monthly included"]=L({used:Number.isFinite(l)?l:Number.isFinite(m)?m:0,total:k,resetAt:g}));let n=J(e.onDemandCap??d.onDemandCap,NaN),o=J(e.onDemandUsed??d.onDemandUsed,NaN);if(Number.isFinite(n)&&n>0){let a=Number.isFinite(o)?Math.max(0,o):0;h["On-demand"]=L({used:a,total:n,resetAt:g})}else!j&&Number.isFinite(n)&&0===n&&Number.isFinite(o)&&(h["On-demand"]={used:1,total:1,remainingPercentage:0,resetAt:g,unlimited:!1});let p=J(e.prepaidBalance??d.prepaidBalance,NaN);Number.isFinite(p)&&p>0&&(h.Prepaid={used:0,total:p,remainingPercentage:100,resetAt:null,unlimited:!1});let q=J(e.creditUsagePercent??e.credit_usage_percent??d.creditUsagePercent,NaN);for(let a of(Number.isFinite(q)&&q>=0&&(h["Weekly SuperGrok"]=L({used:Math.max(0,Math.min(100,q)),total:100,resetAt:g})),[d.credits,d.creditBalance,d.usage,e.credits,e.includedCredits,e.subscriptionCredits].filter(a=>a&&"object"==typeof a&&!Array.isArray(a)))){let b=J(a.total??a.limit??a.cap??a.allocation??a.amount,NaN),c=J(a.used??a.spent??a.consumed,NaN),d=J(a.remaining??a.balance??a.left,NaN);if(Number.isFinite(b)&&b>0){let e=Number.isFinite(c)?c:Number.isFinite(d)?Math.max(0,b-d):0;h.Credits||(h.Credits=L({used:e,total:b,resetAt:(0,f.eZ)(a.resetAt||a.resetsAt||a.end)||g}))}else Number.isFinite(d)&&d>=0&&!h.Credits&&(h.Credits={used:0,total:d>0?d:1,remainingPercentage:100*(d>0),resetAt:g,unlimited:!1})}let r=Object.keys(h).length>0&&Object.values(h).every(a=>!0!==a.unlimited&&(a.remainingPercentage??100)<=0);return{plan:(c=K(b,e))?c.replace(/[_-]+/g," ").replace(/\b\w/g,a=>a.toUpperCase()):b?.hasGrokCodeAccess===!0?"Grok Code":(e?.isUnifiedBillingUser,"Grok Build"),quotas:h,periodEnd:g,exhausted:r,subscriptionAccess:j,rawConfig:e}}(i,j);if(k.plan=function(a){try{return({0:"Free",1:"SuperGrok",2:"X Basic",3:"X Premium",4:"X Premium Plus",5:"SuperGrok Heavy",6:"SuperGrok Lite"})[JSON.parse(Buffer.from(a.split(".")[1],"base64url")).tier]||""}catch{return""}}(a)||k.plan,!k.quotas||0===Object.keys(k.quotas).length){var g;let b=(g=await M(a,c))&&Number.isFinite(g.percentUsed)?{"Weekly SuperGrok":L({used:Math.round(Math.max(0,Math.min(100,g.percentUsed))),total:100,resetAt:g.resetAt||null})}:null;if(b)return{plan:k.plan,quotas:b};return{plan:k.plan,message:k.subscriptionAccess?"Subscription access is active; Grok does not expose a numeric included quota.":"Grok Build connected, but no credit allotment was returned. Free promo may be exhausted.",quotas:{}}}return{plan:k.plan,quotas:k.quotas}}catch(a){return{message:`Grok CLI usage error: ${a.message}`}}}var O=c(75924);let P={LEVEL_BASIC:"Moderato",LEVEL_INTERMEDIATE:"Allegretto",LEVEL_ADVANCED:"Allegro",LEVEL_STANDARD:"Vivace"};function Q({used:a,total:b,remaining:c,resetAt:d}){let e,g=Math.max(0,(0,f.IQ)(b,0)),h=Math.max(0,(0,f.IQ)(a,0));return e=g>0&&null!=c&&Number.isFinite(Number(c))?Math.max(0,Number(c))/g*100:g>0?Math.max(0,g-h)/g*100:0,{used:h,total:g,remainingPercentage:e,resetAt:d||null,unlimited:!1}}async function R(a=null,b=null,c=null,e=null){let g="string"==typeof b&&b.length>0,h=!g&&"string"==typeof a&&a.length>0;if(!g&&!h)return{message:"Kimi access token or API key not available."};let i=g?{"x-api-key":b}:{Authorization:`Bearer ${a}`,...(0,O.buildKimiHeaders)(e?.deviceId)};try{let a,b=await (0,d.proxyAwareFetch)("https://api.kimi.com/coding/v1/usages",{method:"GET",headers:{...i,"Content-Type":"application/json",Accept:"application/json"}},c),e=await b.text().catch(()=>"");if(!b.ok)return{plan:"Kimi Coding",message:function(a,b){let c=null;try{c=JSON.parse(b||"")}catch{}let d=Array.isArray(c?.details)?c.details[0]:null,e=d?.debug||c?.debug||null,f=e?.reason||c?.reason||"",g=e?.localizedMessage?.message||d?.localizedMessage?.message||c?.message||"";if(401===a)return"Kimi authentication expired. Please re-authorize.";if(403===a&&("REASON_FEATURE_NO_PERMISSION"===f||/permission_denied|do not have permission|subscribe/i.test(`${c?.code||""} ${g} ${b||""}`)))return g||"Kimi connected, but this account has no permission to view usage. Subscribe to Kimi Code to access quota.";let h=(g||b||"").slice(0,100);return h?`Kimi Coding connected. API Error ${a}: ${h}`:`Kimi Coding connected. API Error ${a}`}(b.status,e)};try{a=JSON.parse(e||"{}")}catch{return{plan:"Kimi Coding",message:"Kimi Coding connected. Invalid JSON response from API."}}let g={},h=a?.usage&&"object"==typeof a.usage?a.usage:{},j=(0,f.IQ)(h.limit??h.Limit,0),k=(0,f.IQ)(h.used??h.Used,0),l=h.remaining??h.Remaining,m=null!=l&&""!==l?(0,f.IQ)(l,NaN):NaN,n=h.resetTime||h.ResetTime||h.reset_at||h.resetAt;for(let b of(j>0&&(g.Weekly=Q({used:k,total:j,remaining:Number.isFinite(m)?m:null,resetAt:(0,f.eZ)(n)})),Array.isArray(a?.limits)?a.limits:[])){if(!b||"object"!=typeof b)continue;let a=b.detail&&"object"==typeof b.detail?b.detail:{},c=(0,f.IQ)(a.limit??a.Limit,0),d=(0,f.IQ)(a.remaining??a.Remaining,NaN),e=a.resetTime||a.reset_at||a.resetAt;if(c>0){let a=Number.isFinite(d)?d:Math.max(0,c);g.Ratelimit=Q({used:Math.max(0,c-a),total:c,remaining:a,resetAt:(0,f.eZ)(e)})}}let o=a?.user?.membership?.level,p=function(a){if(!a)return"";let b=String(a);return P[b]?P[b]:b.replace(/^LEVEL_/,"").toLowerCase()}(o)||"Kimi Coding";if(Object.keys(g).length>0)return{plan:p,quotas:g};return{plan:p,message:"Kimi Coding connected. Usage tracked per request."}}catch(a){return{message:`Kimi Coding connected. Unable to fetch usage: ${a.message}`}}}async function S(a=null,b=null){if(!a||"string"!=typeof a||!a.trim())return{message:"DeepSeek API key not available. Add a key to view usage."};try{let c=await (0,d.proxyAwareFetch)("https://api.deepseek.com/user/balance",{method:"GET",headers:{Authorization:`Bearer ${a.trim()}`,"Content-Type":"application/json",Accept:"application/json"}},b);if(401===c.status||403===c.status)return{plan:"DeepSeek",message:"DeepSeek authentication failed. Check the API key."};if(!c.ok){let a=await c.text().catch(()=>"");return{plan:"DeepSeek",message:`DeepSeek balance API error (${c.status})${a?`: ${a.slice(0,120)}`:""}`}}let e=await c.json().catch(()=>null);if(!e||"object"!=typeof e)return{message:"DeepSeek balance response was not JSON."};let g=function(a){let b=Array.isArray(a?.balance_infos)?a.balance_infos:[],c=[];for(let a of b){if(!a||"object"!=typeof a)continue;let b="string"==typeof a.currency?a.currency.toUpperCase():"";if(!b)continue;let d=(0,f.IQ)(a.total_balance??a.totalBalance,0);c.push({currency:b,totalBalance:d,grantedBalance:(0,f.IQ)(a.granted_balance??a.grantedBalance,0),toppedUpBalance:(0,f.IQ)(a.topped_up_balance??a.toppedUpBalance,0)})}return c}(e);if(0===g.length)return{plan:"DeepSeek",message:"DeepSeek connected. No balance data returned."};let h=!0===e.is_available||!0===e.isAvailable,i={};for(let a of g){let b=Math.max(0,a.totalBalance);i[`Balance (${a.currency})`]={used:0,total:b,remainingPercentage:100*(b>0),resetAt:null,unlimited:b>0}}return{plan:h?"DeepSeek":"DeepSeek (Insufficient Balance)",quotas:i}}catch(a){return{message:`DeepSeek error: ${a.message}`}}}async function T(a=null,b=null){let c=(a||"").trim();if(!c)return{message:"OpenCode Go API key not available. Add a key to view usage."};try{let a=await (0,d.proxyAwareFetch)("https://opencode.ai/zen/go/v1/usage",{method:"GET",headers:{Authorization:`Bearer ${c}`,Accept:"application/json"}},b);if(401===a.status||403===a.status)return{plan:"OpenCode Go",message:"OpenCode Go authentication failed. Check the API key."};if(!a.ok){let b=await a.text().catch(()=>"");return{plan:"OpenCode Go",message:`OpenCode Go usage API error (${a.status})${b?`: ${b.slice(0,120)}`:""}`}}let e=await a.json().catch(()=>null);if(!e||"object"!=typeof e)return{message:"OpenCode Go usage response was not JSON."};let g=e.usage&&"object"==typeof e.usage?e.usage:{},h={};for(let[a,b]of[["rolling","Rolling"],["weekly","Weekly"],["monthly","Monthly"]])if(g[a]&&"object"==typeof g[a]){let c=function(a,b){if(!b||"object"!=typeof b)return null;let c=Math.min(100,Math.max(0,(0,f.IQ)(b.percent,0))),d=Math.round(100-c),e=(0,f.eZ)(b.resetsAt);return void 0!==b.percent||e?{used:c,total:100,remainingPercentage:d,resetAt:e||null,recurring:!1,name:a}:null}(b,g[a]);c&&(h[b]=c)}if(0===Object.keys(h).length)return{plan:"OpenCode Go",message:"OpenCode Go connected. No quota data returned."};let i=String(g.status||e.status||"").toLowerCase();return{plan:"ok"===i?"OpenCode Go":`OpenCode Go (${g.status||e.status||""})`,quotas:h}}catch(a){return{message:`OpenCode Go error: ${a.message}`}}}let U={rolling:"Rolling",weekly:"Weekly",monthly:"Monthly"};async function V(a=null,b=null){if(!a||"string"!=typeof a||!a.trim())return{message:"OpenCode Zen API key not available. Add a key to view usage."};try{let c=await (0,d.proxyAwareFetch)("https://opencode.ai/zen/v1/usage",{method:"GET",headers:{Authorization:`Bearer ${a.trim()}`,Accept:"application/json"}},b);if(401===c.status)return{plan:"OpenCode Zen",message:"OpenCode Zen authentication failed. Check the API key."};if(403===c.status){let a=await c.json().catch(()=>null),b=a?.error?.type==="EntitlementError";return{plan:"OpenCode Zen",message:b?"OpenCode Zen billing required for this API key.":"OpenCode Zen access forbidden for this API key."}}if(!c.ok)return{plan:"OpenCode Zen",message:`OpenCode Zen usage API error (${c.status}).`};let e=await c.json().catch(()=>null);if(!e?.usage||"object"!=typeof e.usage)return{plan:"OpenCode Zen",message:"OpenCode Zen usage response did not contain quota data."};let g={};for(let[a,b]of Object.entries(U)){let c=e.usage[a];if(!c||"object"!=typeof c)continue;let d=function(a){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&a.trim()){let b=Number(a);if(Number.isFinite(b))return b}return null}(c.percent);if(null===d)continue;let h=Math.max(0,Math.min(100,(0,f.IQ)(d,0)));g[b]={used:h,total:100,remainingPercentage:100-h,resetAt:(0,f.eZ)(c.resetsAt),recurring:!1,name:b}}if(0===Object.keys(g).length)return{plan:"OpenCode Zen",message:"OpenCode Zen usage response did not contain valid quota data."};return{plan:"OpenCode Zen",quotas:g}}catch(a){return{message:`OpenCode Zen error: ${a.message}`}}}var W=c(12132);async function X(a=null,b=null,c=null,{allowMachineSession:e=!0}={}){if(!e)return{plan:"Xiaomi MiMo",message:"Billed at standard API / plan rates — no separate quota to display."};let f=await (0,W.Fp)(b,c);if("number"==typeof f.percent&&Number.isFinite(f.percent))return{plan:"Xiaomi MiMo Desktop",quotas:{Weekly:Z(f.percent,f.resetAt,f.resetDate)}};let g=a||b?.apiKey,h="string"==typeof g?g.trim():"";if(h.startsWith("mimo-desktop-session"))return{plan:"Xiaomi MiMo Desktop",message:"MiMo Desktop is not signed in on this machine — sign in to it to read the weekly quota."};if(!h)return{message:"Xiaomi MiMo Desktop not connected. Add credentials to view usage."};try{let a=await (0,d.proxyAwareFetch)("https://aistudio.xiaomimimo.com/open-apis/v1/user/usage",{method:"GET",headers:{Authorization:`Bearer ${h}`,"X-Mimo-Source":"mimocode-cli",Accept:"application/json"},signal:AbortSignal.timeout(1e4)},c);if(401===a.status)return{plan:"Xiaomi MiMo Desktop",message:"Weekly quota requires Xiaomi account session. API key alone is insufficient."};if(!a.ok)return{plan:"Xiaomi MiMo Desktop",message:`Usage API error (${a.status})`};let b=await a.json().catch(()=>null);if(!b||0!==b.code||!b.data)return{plan:"Xiaomi MiMo Desktop",message:"Usage endpoint returned unexpected response."};let{percent:e,resetDate:f,resetAt:g}=b.data;if("number"!=typeof e||!Number.isFinite(e))return{plan:"Xiaomi MiMo Desktop",message:"Usage data missing percent field."};return{plan:"Xiaomi MiMo Desktop",quotas:{Weekly:Z(e,g,f)}}}catch(a){return{message:`Xiaomi MiMo Desktop usage error: ${a.message}`}}}async function Y(a=null,b=null,c=null){if(b?.mimoPassToken){let a=await (0,W.Fp)(b,c);if("number"==typeof a.percent&&Number.isFinite(a.percent))return{plan:"MiMo Token Plan",quotas:{Weekly:Z(a.percent,a.resetAt,a.resetDate)}}}return a&&"string"==typeof a&&a.trim()?{plan:"MiMo Token Plan",message:"Token Plan does not expose a quota API for standalone keys — check your plan usage in the MiMo console."}:{message:"API key not available. Add a key to view usage."}}function Z(a,b,c){let d=Math.max(0,Math.min(100,Math.round(a))),e=null;if("number"==typeof b&&b>0)e=new Date(1e3*b).toISOString();else if("string"==typeof c&&c){let a=new Date(`${c}T00:00:00Z`);Number.isNaN(a.getTime())||(e=a.toISOString())}return{used:100-d,total:100,remainingPercentage:d,resetAt:e,unlimited:!1,recurring:!0}}let $={baseUrl:"https://api.stepfun.ai",currency:"USD",brand:"StepFun"},_={baseUrl:"https://api.stepfun.com",currency:"CNY",brand:"StepFun CN"};async function aa(a=null,b=null,c={}){let{baseUrl:e="https://api.stepfun.com",currency:g="CNY",brand:h="StepFun"}=c;if(!a||"string"!=typeof a||!a.trim())return{message:`${h} API key not available. Add a key to view usage.`};let i=`${e.replace(/\/$/,"")}/v1/accounts`;try{let c=await (0,d.proxyAwareFetch)(i,{method:"GET",headers:{Authorization:`Bearer ${a.trim()}`,"Content-Type":"application/json",Accept:"application/json"}},b);if(401===c.status||403===c.status)return{plan:h,message:`${h} authentication failed. Check the API key.`};if(!c.ok){let a=await c.text().catch(()=>"");return{plan:h,message:`${h} account API error (${c.status})${a?`: ${a.slice(0,120)}`:""}`}}let e=await c.json().catch(()=>null);if(!e||"object"!=typeof e)return{message:`${h} account response was not JSON.`};let j=(0,f.IQ)(e.balance,0),k=(0,f.IQ)(e.total_cash_balance,0),l=(0,f.IQ)(e.total_voucher_balance,0),m=j>0,n={},o=a=>({used:0,total:Math.max(0,a),remainingPercentage:100*(a>0),resetAt:null,displayRemaining:!0,unlimited:!1});return n[`Balance (${g})`]=o(j),l>0&&k>0?(n[`Cash (${g})`]=o(k),n[`Voucher (${g})`]=o(l)):l>0&&(n[`Voucher (${g})`]=o(l)),{plan:m?h:`${h} (Insufficient Balance)`,quotas:n}}catch(a){return{message:`${h} error: ${a.message}`}}}var ab=c(53225),ac=c(69704);let ad=(0,f.U)("vercel-ai-gateway").url;async function ae(a){try{return{message:"iFlow connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch iFlow usage."}}}let af={session:"Session (5h)",weekly:"Weekly (7d)",monthly:"Monthly"};async function ag(a,b,c=null){if(!a)return{message:"Ollama Cloud API key not available."};try{let b,e=await (0,d.proxyAwareFetch)("https://ollama.com/api/usage",{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},c);if(401===e.status||403===e.status)return{message:"Ollama Cloud API key invalid or expired."};if(!e.ok)return{message:`Ollama Cloud usage API error (${e.status}).`};try{b=await e.json()}catch{return{message:"Ollama Cloud usage response was not JSON."}}let f=await (0,d.proxyAwareFetch)("https://ollama.com/api/me",{method:"POST",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Length":"0"}},c).then(a=>a.ok?a.json():null).catch(()=>null),g="string"==typeof f?.Plan?f.Plan:"",h=g?g.charAt(0).toUpperCase()+g.slice(1).toLowerCase():"Ollama Cloud",i=b?.limits&&"object"==typeof b.limits?b.limits:{},j="free"===g.toLowerCase()&&f?.CreatedAt?function(a,b=new Date){let c=new Date(a);if(Number.isNaN(c.getTime()))return null;let d=(b.getUTCFullYear()-c.getUTCFullYear())*12+(b.getUTCMonth()-c.getUTCMonth());for(let a=Math.max(0,d);a<=d+1;a++){let d=function(a,b){let c=a.getUTCMonth()+b,d=a.getUTCFullYear()+Math.floor(c/12),e=(c%12+12)%12,f=new Date(Date.UTC(d,e+1,0)).getUTCDate();return new Date(Date.UTC(d,e,Math.min(a.getUTCDate(),f),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds()))}(c,a);if(d>b)return d.toISOString()}return null}(f.CreatedAt):null,k={};for(let[a,b]of Object.entries(af)){let c=i[a]?.usage;if(null==c)continue;let d=Number(c);Number.isNaN(d)||(k[b]=function(a,b=null){let c=Math.max(0,Math.min(1,Number(a)||0)),d=Math.round(100*c);return{used:d,total:100,remainingPercentage:100-d,resetAt:b,unlimited:!1}}(d,"monthly"===a?j:null))}if(0===Object.keys(k).length)return{plan:h,message:"Ollama Cloud connected. No usage limits reported.",quotas:{}};return{plan:h,quotas:k}}catch(a){return{message:`Ollama Cloud error: ${a.message}`}}}async function ah(a,b=null){if(!a)return{message:"Vercel AI Gateway API key not available."};try{let c=await (0,d.proxyAwareFetch)(ad,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},b);if(401===c.status||403===c.status)return{message:"Vercel AI Gateway API key invalid or expired."};if(!c.ok){let a=await c.text().catch(()=>""),b=a?`: ${a.slice(0,200)}`:"";return{message:`Vercel AI Gateway credits API error (${c.status})${b}`}}let e=await c.json(),f=Number(e?.balance)||0,g=Number(e?.total_used)||0;if(f<=0&&g<=0)return{plan:"Pay-as-you-go",message:"Vercel AI Gateway connected. No credit allocation found (BYOK or unfunded account).",quotas:{}};return{plan:"Pay-as-you-go",quotas:{"Used (USD)":{used:g,total:0,remaining:0,remainingPercentage:100,unlimited:!0},"Remaining (USD)":{used:f,total:5,remaining:f,remainingPercentage:f/5*100,unlimited:!1}}}}catch(a){return{message:`Vercel AI Gateway error: ${a.message}`}}}async function ai(a,b="qoder",c=null){if(!a||"string"!=typeof a)return null;try{let e="qoder-cn"===b?ac.VD:ac.Dg,f=await (0,d.proxyAwareFetch)(`${e}/api/v2/me/usages/big_model_credits`,{method:"GET",headers:{Cookie:a,Accept:"application/json",Referer:`${e}/account/usage`,"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}},c);if(!f.ok)return null;let g=await f.json().catch(()=>null);if(!g||!g.user_id)return null;let h=a=>{let b=g?.[a]?.quota_detail;return Array.isArray(b)?b.map(a=>({total:Number(a?.limit_value)||0,used:Number(a?.used_value)||0,remaining:Number(a?.remaining_value)||0,expiresAt:Number(a?.expires_at)>0?new Date(Number(a.expires_at)).toISOString():null,source:a?.source||null})).filter(a=>a.total>0).sort((a,b)=>(a.expiresAt||"9999").localeCompare(b.expiresAt||"9999")):[]},i=h("resource_package_quota"),j=h("plan_quota"),k=h("dedicated_resource_package_quota");if(!i.length&&!j.length&&!k.length)return null;return{packs:i,planRows:j,orgRows:k,resetAt:i[0]?.expiresAt||null,sourceUserId:g.user_id}}catch{return null}}async function aj(a,b=null,c="qoder",e=null){if(!a)return{message:"Qoder usage unavailable: no access token"};try{let g=(0,f.U)(c).url||(0,f.U)("qoder").url,h=await (0,d.proxyAwareFetch)(g,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},b);if(!h.ok)return{message:`Qoder connected. Usage fetch returned ${h.status}.`};let i=await h.json().catch(()=>null);if(!i)return{message:"Qoder connected. Usage response was not JSON."};let j=i.userQuota||{},k=i.addOnQuota||{},l=i.orgResourcePackage||{},m=Number.isFinite(Number(i.expiresAt))&&Number(i.expiresAt)>0?Number(i.expiresAt):null,n=m&&(m>=2534e11||new Date(m).getFullYear()>2099),o=m&&!n?new Date(m).toISOString():null,p=null,q=[],r=null,s=null,t=a=>{if(!Array.isArray(a)||0===a.length)return null;let b=b=>a.reduce((a,c)=>a+(Number(c[b])||0),0);return{total:b("total"),used:b("used"),remaining:b("remaining"),resetAt:a.find(a=>a.expiresAt)?.expiresAt||null}},u=e?.creditDaddyWebSession,v=!1;if(u?.cookie){let a=await ai(u.cookie,c,b),d=e?.userId||null;!a||d&&a.sourceUserId&&d!==a.sourceUserId||(v=!0,q=[...a.planRows.map(a=>({...a,name:"Plan Credits"})),...a.packs].sort((a,b)=>String(a.expiresAt||"9999").localeCompare(String(b.expiresAt||"9999"))),p=q[0]?.expiresAt||null,r=t(a.planRows),s=t(a.orgRows))}if(!(q.length>0))try{let e="qoder-cn"===c?ac.jJ:ac.L7,f=`${e}/sash/api/v1/me/campaigns?clientType=10`,g=await (0,d.proxyAwareFetch)(f,{method:"GET",headers:{Authorization:`Bearer ${a}`,"Cosy-ClientType":"10","Cosy-Version":"0.3.3","User-Agent":"Qoder",Accept:"application/json"}},b);if(g.ok){let a=await g.json().catch(()=>null),b=function({campaigns:a=[],used:b=0,total:c=0,now:d=Date.now()}={}){let e=a.filter(a=>a?.claimStatus==="CLAIMED"&&a?.benefit?.kind==="CREDITS"),f=[];for(let a of e){let b=a.benefit?.validity,c=null;b?.mode==="FIXED_END"&&b.fixedEnd?c=new Date(b.fixedEnd).getTime():b?.mode==="RELATIVE_DAYS"&&b.days&&a.startAt&&(c=1e3*a.startAt+864e5*b.days);let e=Number(a.benefit?.amount)||0;!Number.isFinite(c)||c<=d||e<=0||f.push({total:e,expiresAt:new Date(c).toISOString()})}f.sort((a,b)=>new Date(a.expiresAt)-new Date(b.expiresAt));let g=Math.max(0,Number(b)||0);for(let a of f){let b=Math.min(g,a.total);a.used=b,a.remaining=a.total-b,g-=b}let h=f.reduce((a,b)=>a+b.total,0),i=(Number(c)||0)-h;if(f.length>0&&i>0){let a=Math.min(g,i);f.push({total:i,expiresAt:null,used:a,remaining:i-a,unitemized:!0})}return{packs:f,resetAt:f.length>0&&f[0].expiresAt||null}}({campaigns:a?.campaigns||[],used:Number(k.used)||0,total:Number(k.total)||0});q=b.packs,p=b.resetAt}}catch{}let w=r||{total:Number(j.total)||0,used:Number(j.used)||0,remaining:Number(j.remaining)||0},x=s||{total:Number(l.total)||0,used:Number(l.used)||0,remaining:Number(l.remaining)||0},y=a=>q.reduce((b,c)=>b+(Number(c[a])||0),0),z=q.length>0?{total:y("total"),used:y("used"),remaining:y("remaining")}:{total:Number(k.total)||0,used:Number(k.used)||0,remaining:Number(k.remaining)||0};return{quotas:{user:{total:w.total,used:w.used,remaining:w.remaining,unit:j.unit||"credits",resetAt:w.resetAt||o,unlimited:!1},addOn:{total:z.total,used:z.used,remaining:z.remaining,unit:k.unit||"credits",resetAt:p,unlimited:!1,packs:q},organization:{total:x.total,used:x.used,remaining:x.remaining,unit:l.unit||"credits",resetAt:x.resetAt||o,unlimited:!1}},totalUsagePercentage:Number(i.totalUsagePercentage)||0,isQuotaExceeded:!!i.isQuotaExceeded,expiresAt:m,...u?.cookie&&!v?{webSessionExpired:!0}:{}}}catch(a){return{message:`Qoder connected. Unable to fetch usage: ${a.message}`}}}function ak(a="alitp-intl"){let b="alitp-cn"===a;return{plan:b?"Alibaba Token Plan (CN)":"Alibaba Token Plan (Intl)",quotas:{},message:`Alibaba Token Plan ${b?"国内版(cn-beijing)":"国际版(ap-southeast-1)"} 的额度只能在百炼控制台查看:${b?"https://bailian.console.aliyun.com/cn-beijing/subscription/overview":"https://modelstudio.console.alibabacloud.com/"} → 「免费额度」,按模型列出剩余/总量与到期时间。该产品没有公开的额度 API(实测 20+ 条路径全部 404,推理响应也不带额度字段),所以这里无法自动读取。`+(b?"":" 注意:国际版与国内版是两套 key,互不通用,用错区域会回 401 InvalidApiKey。")}}let al={international:(0,f.U)("glm").url,china:(0,f.U)("glm-cn").url};async function am(a,b,c=null){if(!a)return{message:"GLM API key not available."};let e=al["glm-cn"===b?"china":"international"];try{let b=await (0,d.proxyAwareFetch)(e,{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},c);if(!b.ok){if(401===b.status)return{message:"GLM API key invalid or expired."};return{message:`GLM quota API error (${b.status}).`}}let f=await b.json(),{plan:g,quotas:h}=function(a){let b=a?.data&&"object"==typeof a.data?a.data:{},c=Array.isArray(b.limits)?b.limits:[],d={};for(let a of c){if(!a||"TOKENS_LIMIT"!==a.type&&"CREDIT_LIMIT"!==a.type)continue;let b=Number(a.percentage)||0,c=Number(a.nextResetTime)||0,e=Math.max(0,100-b);d[3===a.unit?`Session (${a.number}h)`:6===a.unit?"Weekly (7d)":"TOKENS_LIMIT"===a.type?"Tokens":`Limit (${a.number})`]={used:b,total:100,remaining:e,remainingPercentage:e,resetAt:c>0?new Date(c).toISOString():null,unlimited:!1}}let e="string"==typeof b.level?b.level:"";return{plan:e?e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():"Unknown",quotas:d}}(f);return{plan:g,quotas:h}}catch(a){return{message:`GLM error: ${a.message}`}}}var an=c(10263);let ao={"individual-go":"Go","individual-goat":"GOAT","individual-pro":"Pro","individual-pro-v1":"Pro (Legacy)","individual-provider":"BYOK","individual-max":"Max 10x","individual-ultra":"Max 20x","teams-pro":"Team Pro"},ap={"individual-go":10,"individual-goat":70,"individual-pro":30,"individual-pro-v1":80,"individual-max":150,"individual-ultra":300,"teams-pro":40};function aq(a){return Math.round(1e4*(0,f.IQ)(a,0))/1e4}async function ar(a,b=null){if(!a||"string"!=typeof a)return{message:"Command Code API key not configured."};let c=(0,f.U)("commandcode"),e=c?.creditsUrl||"https://api.commandcode.ai/alpha/billing/credits",g=c?.subscriptionsUrl||"https://api.commandcode.ai/alpha/billing/subscriptions",h=(0,an.$j)({apiKey:a.trim(),accept:"application/json"});try{let a=(0,d.proxyAwareFetch)(e,{method:"GET",headers:h},b),c=Promise.resolve().then(()=>(0,d.proxyAwareFetch)(g,{method:"GET",headers:h},b)).catch(()=>null),[i,j]=await Promise.all([a,c]);if(401===i.status||403===i.status)return{message:"Command Code API key invalid or expired."};if(!i.ok)return{message:`Command Code credits API error (${i.status}).`};let k=await i.json(),l=null;if(j&&j.ok)try{l=await j.json()}catch{l=null}let m=l?.data?.planId||null,n=ao[m]||(m?m.replace(/^individual-/,""):"Command Code"),o=l?.data?.currentPeriodEnd||null,p=k?.windowLimits||{},q=k?.credits||{},r={};if(p.fiveHour){let a=(0,f.IQ)(p.fiveHour.cap,0),b=aq(p.fiveHour.used),c=Math.max(0,aq(a-b)),d=a>0?Math.max(0,Math.min(100,Math.round(c/a*100))):100;r["session (5h)"]={used:b,total:a,remaining:c,remainingPercentage:d,resetAt:(0,f.eZ)(p.fiveHour.resetAt),unlimited:!1,recurring:!0}}if(p.weekly){let a=(0,f.IQ)(p.weekly.cap,0),b=aq(p.weekly.used),c=Math.max(0,aq(a-b)),d=a>0?Math.max(0,Math.min(100,Math.round(c/a*100))):100;r["weekly (7d)"]={used:b,total:a,remaining:c,remainingPercentage:d,resetAt:(0,f.eZ)(p.weekly.resetAt),unlimited:!1,recurring:!0}}if(void 0!==q.monthlyCredits&&null!==q.monthlyCredits){let a=aq(q.monthlyCredits),b=(0,f.IQ)(q.monthlyCreditsGranted)||ap[m]||Math.ceil(a)||10,c=Math.max(0,aq(b-a)),d=b>0?Math.max(0,Math.min(100,Math.round(a/b*100))):100;r["Monthly Credits"]={used:c,total:b,remaining:a,remainingPercentage:d,resetAt:(0,f.eZ)(o),unlimited:!1,recurring:!0}}if(q.purchasedCredits&&q.purchasedCredits>0){let a=aq(q.purchasedCredits);r["Purchased Credits"]={used:0,total:a,remaining:a,remainingPercentage:100,resetAt:null,unlimited:!1,recurring:!1}}return{plan:n,quotas:r}}catch(a){return{message:`Command Code usage fetch failed: ${a.message}`}}}var as=c(44725),at=c(81756);let au=(0,f.U)("cursor");function av(a){return Number(((0,f.IQ)(a,0)/100).toFixed(2))}function aw(a){return Math.max(0,100-Math.max(0,Math.min(100,(0,f.IQ)(a,0))))}async function ax(a,b,c,e){return(0,d.proxyAwareFetch)(a,{method:"POST",headers:{...(0,at.JA)(b,c||null,!0),"content-type":"application/json",accept:"application/json"},body:"{}"},e)}async function ay(a){try{return await a.json()}catch{return null}}async function az(a,b={},c=null){if(!a||"string"!=typeof a||!a.trim())return{message:"Cursor access token not available. Reconnect Cursor to view quota."};let e=a.trim(),g=b?.machineId||null,h=au.url,i=au.planInfoUrl,j=au.authUsageUrl;if(!h)return{message:"Cursor usage endpoint is not configured."};try{let a=await ax(h,e,g,c);if(401===a.status||403===a.status)return{plan:"Cursor",message:"Cursor authentication failed. Reconnect the Cursor provider."};let b={},k=null;if(a.ok&&(k=await ay(a),!function(a,b){let c=b?.planUsage;if(!c||"object"!=typeof c)return;let d=(0,f.IQ)(c.limit,0),e=(0,f.IQ)(c.includedSpend??c.totalSpend,0),g=(0,f.IQ)(c.remaining,Math.max(0,d-e)),h=(0,f.eZ)(b.billingCycleEnd);if(d>0){let b=av(d),f=av(e),i=av(g);a["Plan (USD)"]={used:f,total:b,remainingPercentage:null!=c.totalPercentUsed?aw(c.totalPercentUsed):b>0?i/b*100:0,resetAt:h}}else if(null!=c.totalPercentUsed){let b=(0,f.IQ)(c.totalPercentUsed,0);a["Included usage"]={used:b,total:100,remainingPercentage:aw(b),resetAt:h}}if(null!=c.autoPercentUsed){let b=(0,f.IQ)(c.autoPercentUsed,0);a["Auto models (%)"]={used:b,total:100,remainingPercentage:aw(b),resetAt:h}}if(null!=c.apiPercentUsed){let b=(0,f.IQ)(c.apiPercentUsed,0);a["Named models (%)"]={used:b,total:100,remainingPercentage:aw(b),resetAt:h}}Object.keys(a).length}(b,k),!function(a,b){let c=b?.spendLimitUsage;if(!c||"object"!=typeof c)return;let d=(0,f.IQ)(c.individualLimit,0),e=(0,f.IQ)(c.pooledLimit,0),g=(0,f.eZ)(b.billingCycleEnd);if(d>0){let b=av(c.individualUsed),e=av(d),h=av(c.individualRemaining??Math.max(0,d-(0,f.IQ)(c.individualUsed,0)));a["On-demand (USD)"]={used:b,total:e,remainingPercentage:e>0?h/e*100:0,resetAt:g};return}if(e>0){let b=av(c.pooledUsed),d=av(e),h=av(c.pooledRemaining??Math.max(0,e-(0,f.IQ)(c.pooledUsed,0)));a["Team on-demand (USD)"]={used:b,total:d,remainingPercentage:d>0?h/d*100:0,resetAt:g}}}(b,k)),0===Object.keys(b).length&&j){let g=await (0,d.proxyAwareFetch)(j,{method:"GET",headers:{Authorization:`Bearer ${e.includes("::")?e.split("::")[1]:e}`,Accept:"application/json"}},c);if(g.ok)!function(a,b){if(!b||"object"!=typeof b)return;let c=(0,f.eZ)(b.startOfMonth);for(let[d,e]of Object.entries(b)){if(!e||"object"!=typeof e||Array.isArray(e))continue;let b=(0,f.IQ)(e.maxRequestUsage,0);if(b<=0)continue;let g=(0,f.IQ)(e.numRequests,0);a[`${d} requests`]={used:g,total:b,remainingPercentage:b>0?Math.max(0,(b-g)/b*100):0,resetAt:c}}}(b,await ay(g));else if(!a.ok){let b=await a.text().catch(()=>"");return{plan:"Cursor",message:`Cursor usage API error (${a.status})${b?`: ${b.slice(0,120)}`:""}`}}}if(0===Object.keys(b).length)return{plan:"Cursor",message:k?.displayMessage||"Cursor connected. No quota data returned for this plan."};let l="Cursor";if(i){let a=await ax(i,e,g,c).catch(()=>null);if(a?.ok){let b=await ay(a),c=b?.planInfo?.planName;"string"==typeof c&&c.trim()&&(l=`Cursor ${c.trim()}`)}}return{plan:l,quotas:b}}catch(a){return{message:`Cursor error: ${a.message}`}}}c(78661);let aA={github:a=>h(a.accessToken,a.providerSpecificData,a.proxyOptions),"gemini-cli":a=>(0,j.N)(a.accessToken,a.providerDataWithProjectId,a.proxyOptions),antigravity:a=>(0,j.c)(a.accessToken,a.providerSpecificData,a.proxyOptions,{force:a.force}),claude:a=>(0,k.gl)(a.accessToken,a.proxyOptions,{force:a.force}),codex:a=>(0,l.Tl)(a.accessToken,a.proxyOptions),kiro:a=>n(a.accessToken,a.providerSpecificData,a.proxyOptions),qoder:async a=>{let b=await (0,ab._M)(a,a.proxyOptions).catch(()=>null);return aj(b?.accessToken||a.accessToken,a.proxyOptions,"qoder",a.providerSpecificData)},"qoder-cn":async a=>{let b=await (0,ab._M)(a,a.proxyOptions).catch(()=>null);return aj(b?.accessToken||a.accessToken,a.proxyOptions,"qoder-cn",a.providerSpecificData)},iflow:a=>ae(a.accessToken),ollama:a=>ag(a.apiKey,a.providerSpecificData,a.proxyOptions),glm:a=>am(a.apiKey||a.accessToken,a.provider,a.proxyOptions),"glm-cn":a=>am(a.apiKey||a.accessToken,a.provider,a.proxyOptions),minimax:a=>v(a.apiKey,a.provider,a.proxyOptions),"minimax-cn":a=>v(a.apiKey,a.provider,a.proxyOptions),"vercel-ai-gateway":a=>ah(a.apiKey,a.proxyOptions),"codebuddy-cn":a=>y(a.accessToken,a.apiKey,a.providerSpecificData,a.proxyOptions),"codebuddy-intl":a=>z(a.accessToken,a.apiKey,a.providerSpecificData,a.proxyOptions),"grok-cli":a=>N(a.accessToken,a.providerSpecificData,a.proxyOptions),kimi:a=>R(a.accessToken,a.apiKey,a.proxyOptions,a.providerSpecificData),deepseek:a=>S(a.apiKey,a.proxyOptions),"opencode-go":a=>T(a.apiKey,a.proxyOptions),"opencode-zen":a=>V(a.apiKey,a.proxyOptions),"xiaomi-mimo":a=>X(a.accessToken,a.providerSpecificData,a.proxyOptions,{allowMachineSession:!1}),"mimo-desktop":a=>X(a.accessToken,a.providerSpecificData,a.proxyOptions),"xiaomi-tokenplan":a=>Y(a.apiKey,a.providerSpecificData,a.proxyOptions),stepfun:a=>aa(a.apiKey,a.proxyOptions,$),"stepfun-cn":a=>aa(a.apiKey,a.proxyOptions,_),commandcode:a=>ar(a.apiKey,a.proxyOptions),"minimax-code":a=>(0,as.K$)(a.accessToken,"minimax-code",a.proxyOptions,a.providerSpecificData),"minimax-code-global":a=>(0,as.K$)(a.accessToken,"minimax-code-global",a.proxyOptions,a.providerSpecificData),"alitp-intl":a=>ak("alitp-intl"),"alitp-cn":a=>ak("alitp-cn"),cursor:a=>az(a.accessToken,a.providerSpecificData,a.proxyOptions)};async function aB(a,b=null,c={}){let{provider:d,accessToken:e,apiKey:f,providerSpecificData:g,projectId:h}=a,i={...g||{},...h?{projectId:h}:{}},j=aA[d];return j?await j({provider:d,accessToken:e,apiKey:f,providerSpecificData:g,providerDataWithProjectId:i,proxyOptions:b,force:!0===c.force}):{message:`Usage API not implemented for ${d}`}}},69788:(a,b,c)=>{c.d(b,{Ut:()=>l,gl:()=>j});var d=c(39609),e=c(74129),f=c(24295);let g={oauthUsageUrl:(0,f.U)("claude").oauthUrl,usageUrl:(0,f.U)("claude").orgUrl,settingsUrl:(0,f.U)("claude").settingsUrl,profileUrl:(0,f.U)("claude").profileUrl,resetUrl:(0,f.U)("claude").resetUrl,apiVersion:e.b8,userAgent:`claude-cli/${e.t4} (external, cli)`},h=new Map,i=new Map;async function j(a,b=null,c={}){let d=c?.force===!0;if(!d&&a){let b=i.get(a);if(b?.promise)return b.promise;if(b&&b.expiresAt>Date.now())return b.result}let e=!d&&a&&i.get(a)?.result||null,f=(async()=>{let c=await k(a,b);return a&&c?.quotas?(i.set(a,{result:c,expiresAt:Date.now()+3e5}),c):e||c})();return a&&i.set(a,{promise:f}),f}async function k(a,b=null){try{let c=h.get(a);if(c&&Date.now()<c)return await m(a,b);let e=await (0,d.proxyAwareFetch)(`${g.oauthUsageUrl}?cedar_ember=1`,{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-beta":"oauth-2025-04-20","anthropic-version":g.apiVersion,"User-Agent":g.userAgent}},b);if(e.ok){let a=await e.json(),b={},c=a=>a&&"object"==typeof a&&"number"==typeof a.utilization,d=a=>{let b=a.utilization,c=Math.max(0,100-b);return{used:b,total:100,remaining:c,remainingPercentage:c,resetAt:(0,f.eZ)(a.resets_at),unlimited:!1}};c(a.five_hour)&&(b["session (5h)"]=d(a.five_hour)),c(a.seven_day)&&(b["weekly (7d)"]=d(a.seven_day));let g={fable_5_1:"fable",fable_5:"fable"};for(let[e,f]of Object.entries(a))if(e.startsWith("seven_day_")&&"seven_day"!==e&&c(f)){let a=e.replace("seven_day_",""),c=g[a]||a;b[`weekly ${c} (7d)`]=d(f)}else("fable"===e||"fable_5"===e||"fable_5_1"===e)&&c(f)&&(b["weekly fable (7d)"]=d(f));return!b["weekly fable (7d)"]&&c(a.seven_day)&&(b["weekly fable (7d)"]={used:0,total:100,remaining:100,remainingPercentage:100,resetAt:(0,f.eZ)(a.seven_day.resets_at),unlimited:!1}),{plan:"Claude Code",extraUsage:a.extra_usage??null,resetCredits:function(a){if(!a?.eligible||!Array.isArray(a.grants))return null;let b=a.grants.filter(a=>a?.id&&!a.paused&&Number(a.resets_left)>0),c=b.find(b=>b.id===a.next_grant_id)||b[0]||null;return{availableCount:b.reduce((a,b)=>a+Number(b.resets_left),0),nextGrantId:c?.id||null,expiresAt:c?.ends_at||null,clears:c?.clears||[],cooldownUntil:a.cooldown_until||null,weeklyResetsAt:a.weekly_resets_at||null,grants:a.grants.filter(a=>a?.id).map(a=>({id:a.id,label:a.label||"",resetsLeft:Number(a.resets_left)||0,resetsTotal:Number(a.resets_total)||0,startsAt:a.starts_at||null,endsAt:a.ends_at||null,clears:Array.isArray(a.clears)?a.clears:[],paused:!0===a.paused,usableNow:!0===a.usable_now,useRequiresLimit:!1!==a.use_requires_limit}))}}(a.cedar_ember),quotas:b}}return 429===e.status&&h.set(a,Date.now()+18e4),console.warn(`[Claude Usage] OAuth endpoint returned ${e.status}, falling back to legacy`),await m(a,b)}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}async function l(a,b,c=null){if(!a)throw Error("No Claude access token available. Please re-authorize the connection.");if(!/^[a-z0-9_-]{1,40}$/.test(b||""))throw Error("Invalid reset grant id.");let e={Authorization:`Bearer ${a}`,"anthropic-beta":"oauth-2025-04-20","anthropic-version":g.apiVersion,"User-Agent":g.userAgent,"Content-Type":"application/json"},f=await (0,d.proxyAwareFetch)(g.profileUrl,{method:"GET",headers:e},c),h=await f.json().catch(()=>null),j=h?.organization?.uuid;if(!f.ok||!j)throw Error(`Cannot resolve Claude organization (${f.status}).`);let k=await (0,d.proxyAwareFetch)(g.resetUrl.replace("{org_id}",j),{method:"POST",headers:e,body:JSON.stringify({program:"cedar_ember",grant_id:b,request_id:crypto.randomUUID()})},c),m=await k.json().catch(()=>null);return i.delete(a),{ok:k.ok&&m?.result==="reset",status:k.status,result:m?.result||null,reason:m?.reason||null,resetsLeft:m?.resets_left??null,message:m?.error?.message||null}}async function m(a,b=null){try{let c=await (0,d.proxyAwareFetch)(g.settingsUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":g.apiVersion}},b);if(c.ok){let e=await c.json();if(e.organization_id){let c=await (0,d.proxyAwareFetch)(g.usageUrl.replace("{org_id}",e.organization_id),{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":g.apiVersion}},b);if(c.ok){let a=await c.json();return{plan:e.plan||"Unknown",organization:e.organization_name,quotas:a}}}return{plan:e.plan||"Unknown",organization:e.organization_name,message:"Claude connected. Usage details require admin access."}}return{message:"Claude connected. Usage API requires admin permissions."}}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}},71998:(a,b,c)=>{c.d(b,{Fh:()=>d.Fh,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.getProviderConnections,h1:()=>d.h1,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.updateProviderConnection,uv:()=>d.uv});var d=c(89718)},78661:(a,b,c)=>{function d(a){return"number"==typeof a&&Number.isFinite(a)?a<5?"red":a<20?"yellow":"green":"green"}c.d(b,{YO:()=>g});let e={green:0,yellow:1,red:2};function f(a){let b=String(a||"").toLowerCase();return b.includes("claude")||b.includes("gpt")?"claude_gpt":b.includes("gemini")?"gemini":null}function g(a,b={}){if(!a||"object"!=typeof a||!a.quotas)return null;let c=b?.family||null,h=Date.now(),i=1/0,j=null,k=null,l=1/0,m={period:1/0,remaining:null},n={period:-1/0,remaining:null},o={period:1/0,remaining:null},p={period:-1/0,remaining:null},q=0,r=0,s=(a,b)=>{let d,e;if(!b||"object"!=typeof b)return;if(c){let d=f(a)||f(b.name)||f(b.displayName);if(d&&d!==c)return}let g=b.resetAt??b.expiresAt,s=g?new Date(g).getTime():NaN,t=Number.isFinite(s),u=t&&s>h&&2099>=new Date(s).getFullYear();if((!0!==b.recurring||!0===b.giftPack)&&(d=Number(b.used??0),(e=Number(b.total??0))>0&&d>=e||void 0!==b.remaining&&0>=Number(b.remaining)||void 0!==b.remainingPercentage&&0>=Number(b.remainingPercentage)||0)||t&&!u)return;let v=function(a){if(!0===a.isCreditBalance)return null;if("number"==typeof a.remainingPercentage&&Number.isFinite(a.remainingPercentage))return a.remainingPercentage;let b=Number(a.used??0),c=Number(a.total??0);return c>0?100*Math.max(0,(c-b)/c):"number"==typeof a.remaining&&Number.isFinite(a.remaining)?a.remaining:null}(b),w=function(a){if(!a||!0===a.isCreditBalance)return!0;let b=a.resetAt??a.expiresAt;if(null==b||""===b)return!0;let c=new Date(b).getTime();return!Number.isFinite(c)||new Date(c).getFullYear()>2099}(b);if(!w&&u&&s<i&&(i=s,j=a,k=g instanceof Date?g.toISOString():String(g)),w||!u||null===v)return;q++;let x=!0===b.recurring&&"number"==typeof b.periodMs&&b.periodMs>0?b.periodMs:(b.recurring,Math.max(1,s-h));b?.recurring===!0?(r++,x<m.period&&(m.period=x,m.remaining=v),x>n.period&&(n.period=x,n.remaining=v)):(x<o.period&&(o.period=x,o.remaining=v),x>p.period&&(p.period=x,p.remaining=v)),v<l&&(l=v)};for(let[b,c]of Object.entries(a.quotas)){if(!c||"object"!=typeof c)continue;let a=b.toLowerCase();if(!(a.includes("total")||a.includes("aggregate")||a.includes("summary"))){if(Array.isArray(c.packs)&&c.packs.length>0){for(let a of c.packs)s(a?.name?`${b} \xb7 ${a.name}`:b,a);continue}s(b,c)}}if(i<1/0||Number.isFinite(l)||q>0){let a=r>0,b=a?m:o,f=a?n:p,g=b.remaining,h=f.remaining,s=null===g?null:d(g),t=null===h?null:d(h);return{expiry:k,name:j,timestamp:i<1/0?i:null,...Number.isFinite(l)?{remainingPercentage:l}:{},shortRemainingPct:g,longRemainingPct:h,shortZone:s,longZone:t,zone:null===s&&null===t?null:(e[s]??0)>=(e[t]??0)?s||"green":t||"green",windowCount:q,recurringWindowCount:r,windowSource:a?"recurring":"packs",family:c}}return null}},81756:(a,b,c)=>{c.d(b,{JA:()=>h});var d=c(55511),e=c.n(d),f=c(85081);function g(a,b=""){return e().createHash("sha256").update(a+b).digest("hex")}function h(a,b=null,c=!0){let d=a.includes("::")?a.split("::")[1]:a,i=b||g(d,"machineId"),j=(0,f.Ay)(d,f.Ay.DNS),k=g(d),l=function(a){let b=Math.floor(Date.now()/1e6),c=new Uint8Array([b>>40&255,b>>32&255,b>>24&255,b>>16&255,b>>8&255,255&b]),d=165;for(let a=0;a<c.length;a++)c[a]=(c[a]^d)+a%256&255,d=c[a];let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",f="";for(let a=0;a<c.length;a+=3){let b=c[a],d=a+1<c.length?c[a+1]:0,g=a+2<c.length?c[a+2]:0;f+=e[b>>2],f+=e[(3&b)<<4|d>>4],a+1<c.length&&(f+=e[(15&d)<<2|g>>6]),a+2<c.length&&(f+=e[63&g])}return`${f}${a}`}(i),m="linux";"u">typeof process&&("win32"===process.platform?m="windows":"darwin"===process.platform&&(m="macos"));let n="x64";return"u">typeof process&&"arm64"===process.arch&&(n="aarch64"),{authorization:`Bearer ${d}`,"connect-accept-encoding":"gzip","connect-protocol-version":"1","content-type":"application/connect+proto","user-agent":"connect-es/1.6.1","x-amzn-trace-id":`Root=${e().randomUUID()}`,"x-client-key":k,"x-cursor-checksum":l,"x-cursor-client-version":"3.12.17","x-cursor-client-commit":"0fb762053c34788bb7760d5673f8a6d4c8589d50","x-cursor-client-type":"ide","x-cursor-client-os":m,"x-cursor-client-arch":n,"x-cursor-client-device-type":"desktop","x-cursor-config-version":e().randomUUID(),"x-cursor-timezone":Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC","x-ghost-mode":c?"true":"false","x-request-id":e().randomUUID(),"x-session-id":j}}},87283:(a,b,c)=>{c.d(b,{c:()=>p,N:()=>n});var d=c(75924),e=c(74129),f=c(24295);let g=new Map,h=new Map;function i(a){let b=a||{};if(Array.isArray(b.groups))return b.groups;let c=b.quotaSummary?.groups;return Array.isArray(c)?c:[]}async function j(a,b,c,d,e=null,k={}){let l=(Array.isArray(c)?c:[c]).filter(Boolean);if(!a||!b||0===l.length)return null;let m=`${a.substring(0,16)}:${b||"default"}`,n=async c=>{let i=`${m}:${c}`,j=g.get(i);if(!k.forceRefresh&&j&&Date.now()-j.fetchedAt<6e4)return j.data;let l=h.get(i);if(void 0!==l)return l;let n=(async()=>{try{let h=await (0,f.u9)(c,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","User-Agent":d,"X-Client-Name":"antigravity","X-Client-Version":d?.match(/antigravity\/ide\/([\d.]+)/)?.[1]||"2.11.0"},body:JSON.stringify({project:b})},1e4,e);if(!h.ok)return null;let j=await h.json();return g.set(i,{data:j,fetchedAt:Date.now()}),j}catch{return null}})().finally(()=>{h.delete(i)});return h.set(i,n),n};for(let a of l){let b=await n(a);if(b&&i(b).length>0)return b}return null}function k(a){let b=String(a?.window||"").toLowerCase().trim(),c=`${String(a?.bucketId||"")} ${String(a?.displayName||"")}`.toLowerCase(),d=a=>{let b=String(a||"").toLowerCase();return/5h|five[\s_-]?hour|hourly/.test(b)?"5h":/weekly|week/.test(b)?"weekly":null};return d(b)||d(c)}async function l(a,b,c,d,e=null,g={}){let h;return h={},i(await j(a,b,c,d,e,g)).forEach((a,b)=>{var c;if(!a||"object"!=typeof a)return;let d=Array.isArray(a.buckets)?a.buckets:[],e=(c=a.displayName,String(c||"").trim()||`Quota Group ${b+1}`),g=String(e||"").toLowerCase().replace(/\bmodels?\b/g,"").replace(/\band\b/g," ").replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||`group_${b+1}`,i=a=>{let b=k(a);return"5h"===b?0:"weekly"===b?1:2},j=new Set;for(let[a,b]of[...d].filter(a=>a&&"object"==typeof a).sort((a,b)=>i(a)-i(b)).entries()){let a=k(b);if(!a||j.has(a))continue;j.add(a);let c=function(a,b,c){let d=function(a){let b=Number(a?.remainingFraction);if(Number.isFinite(b))return b;let c=a?.remaining&&"object"==typeof a.remaining?Number(a.remaining.remainingFraction):NaN;return Number.isFinite(c)?c:NaN}(a);if(!Number.isFinite(d)||d<0||a?.disabled===!0)return null;let e=Math.max(0,Math.min(1,d)),g=(0,f.eZ)(a?.resetTime),h=!g&&e>=1,i=Math.round(100*e);return{used:h?0:Math.max(0,100-i),total:100*!h,resetAt:g,remainingPercentage:h?100:100*e,unlimited:h,recurring:!0,percentScale:!0,displayName:`${b} \xb7 ${"5h"===c?"5h Window":"Weekly Window"}`}}(b,e,a);c&&(h[`${g}_${a}`]=c)}}),h}let m={...(0,f.U)("antigravity"),...e.XP,userAgent:e.Of};async function n(a,b,c=null){if(!a)return{plan:"Free",message:"Gemini CLI access token not available."};try{let d=(0,f.gD)(b?.projectId),e="Free";if(!d){let b=await o(a,c);d=(0,f.gD)(b?.cloudaicompanionProject),e=b?.currentTier?.name||e}if(!d)return{plan:e,message:"Gemini CLI project ID not available. Reconnect Gemini CLI, or configure a Google Cloud project with Gemini Code Assist access before checking quota."};let g=await (0,f.u9)((0,f.U)("gemini-cli").quotaUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({project:d})},1e4,c);if(!g.ok)return{plan:e,message:`Gemini CLI quota error (${g.status}).`};let h=await g.json(),i={};if(Array.isArray(h.buckets))for(let a of h.buckets){if(!a.modelId||null==a.remainingFraction)continue;let b=Number(a.remainingFraction)||0,c=Math.round(1e3*b),d=Math.max(0,1e3-c);i[a.modelId]={used:d,total:1e3,resetAt:(0,f.eZ)(a.resetTime),remainingPercentage:100*b,unlimited:!1}}return{plan:e,quotas:i}}catch(a){return{message:`Gemini CLI error: ${a.message}`}}}async function o(a,b=null){try{let c=await (0,f.u9)((0,f.U)("gemini-cli").loadCodeAssistUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:d.Cn})},1e4,b);if(!c.ok)return null;return await c.json()}catch{return null}}async function p(a,b,c=null,d={}){try{let g=await q(a,c),h=(0,f.gD)(b?.projectId);h||(h=(0,f.gD)(g?.cloudaicompanionProject));let i=g?.currentTier?.name||"Antigravity";if(a&&h)try{let b=await l(a,h,(0,f.U)("antigravity").quotaSummaryApiUrls,m.userAgent,c,{forceRefresh:!0===d.force||!0===d.forceRefresh});if(b&&Object.keys(b).length>0)return{plan:i,quotas:b,subscriptionInfo:g}}catch(a){console.warn("[Antigravity Usage] Quota summary unavailable, falling back to models:",a?.message)}let j=await (0,f.u9)(m.quotaApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"User-Agent":m.userAgent,"Content-Type":"application/json","X-Client-Name":"antigravity","X-Client-Version":e.Tr},body:JSON.stringify({...h?{project:h}:{}})},1e4,c);if(403===j.status)return{message:"Antigravity quota API access forbidden. Chat may still work.",quotas:{}};if(401===j.status)return{message:"Antigravity quota API authentication expired. Chat may still work.",quotas:{}};if(!j.ok)throw Error(`Antigravity API error: ${j.status}`);let k=await j.json(),n={};if(k.models){let a=["gemini-3.8-flash-high","gemini-3.8-flash-medium","gemini-3.8-flash-low","gemini-3.7-flash-high","gemini-3.7-flash-medium","gemini-3.7-flash-low","gemini-3.6-flash-high","gemini-3.6-flash-medium","gemini-3.6-flash-low","gemini-3.1-pro-high","gemini-pro-agent","gemini-3.1-pro-low","claude-sonnet-5-5-high","claude-sonnet-5-5-medium","claude-sonnet-5-5-low","claude-sonnet-5-5","claude-opus-5-5-high","claude-opus-5-5-medium","claude-opus-5-5-low","claude-opus-5-5","claude-sonnet-4-6","claude-opus-4-6-thinking","gpt-oss-120b-medium","gemini-3.1-flash-image","gemini-3-pro-image","gemini-2.5-flash-image","imagen-3.0-generate-002"];for(let[b,c]of Object.entries(k.models)){if(!c.quotaInfo||c.isInternal||!a.includes(b))continue;let d=c.quotaInfo.remainingFraction||0,e=100*d,g=Math.round(1e3*d),h=1e3-g;n[b]={used:h,total:1e3,resetAt:(0,f.eZ)(c.quotaInfo.resetTime),remainingPercentage:e,unlimited:!1,displayName:c.displayName||b}}}return{plan:i,quotas:n,subscriptionInfo:g}}catch(a){return console.error("[Antigravity Usage] Error:",a.message,a.cause),{message:`Antigravity error: ${a.message}`}}}async function q(a,b=null){try{let c=await (0,f.u9)(m.loadProjectApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"User-Agent":m.userAgent,"Content-Type":"application/json"},body:JSON.stringify({metadata:d.Cn,mode:1})},1e4,b);if(!c.ok)return null;return await c.json()}catch(a){return console.error("[Antigravity Subscription] Error:",a.message),null}}}};
@@ -1,6 +0,0 @@
1
- "use strict";exports.id=4692,exports.ids=[1998,4692],exports.modules={38859:(a,b,c)=>{c.d(b,{aK:()=>i,bZ:()=>h});var d=c(71998),e=c(39609),f=c(69704);function g(a){try{let b=String(a).split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),c=b+"=".repeat((4-b.length%4)%4);return JSON.parse(Buffer.from(c,"base64").toString("utf8"))}catch{return null}}function h(a,b,c=Date.now()){let d=[];for(let e of b||[]){let b=e.accessToken||e.apiKey||null;if(!b)continue;let f=g(b)||{},h=null;"number"==typeof f.exp&&1e3*f.exp>c?h=new Date(1e3*f.exp).toISOString():e.expiresAt&&(h=e.expiresAt);let i=e.providerSpecificData&&"object"==typeof e.providerSpecificData?e.providerSpecificData:null;d.push({provider:a,authType:e.authType||null,name:e.name||f.nickname||f.preferred_username||null,email:e.email||f.email||null,uid:f.sub||null,accessToken:b,refreshToken:e.refreshToken||null,expiresAt:h,expiresIn:"number"==typeof e.expiresIn?e.expiresIn:null,...i?{providerSpecificData:i}:{}})}return d}async function i(a,b){let c=await (0,d.getProviderConnections)({provider:a}),e=[],f=0,h=0,i=0;for(let j=0;j<b.length;j++){let k=b[j];try{if(!k||"object"!=typeof k||Array.isArray(k))throw Error("Item is not an object");let b=k.accessToken||k.access_token;if(!b||"string"!=typeof b)throw Error("Missing accessToken");let i=g(b),l=k.name||k.nickname||i?.nickname||i?.preferred_username||null,m=k.refreshToken||k.refresh_token||null,n=k.providerSpecificData;"xiaomi-mimo"===a&&n&&"object"==typeof n&&(n={...n},delete n.mimoPassToken,delete n.mimoUserId,delete n.mimoCUserId,"desktop-session"===n.authMethod&&delete n.authMethod);let o=null;i&&"number"==typeof i.exp&&i.exp>0?o=new Date(1e3*i.exp).toISOString():"number"==typeof k.expiresAt?o=new Date(k.expiresAt).toISOString():"string"!=typeof k.expiresAt||Number.isNaN(Date.parse(k.expiresAt))?"number"==typeof k.expiresIn&&k.expiresIn>0&&k.expiresIn<1e8&&(o=new Date(Date.now()+1e3*k.expiresIn).toISOString()):o=k.expiresAt;let p=i?.sub||null,q=null;p&&(q=c.find(a=>g(a.accessToken)?.sub===p)||null),q||(q=c.find(a=>a.accessToken===b)||null),q||(q=c.find(a=>a.apiKey&&a.apiKey===b)||null),!q&&m&&(q=c.find(a=>a.refreshToken&&a.refreshToken===m)||null),!q&&k.email&&(q=c.find(a=>a.email&&a.email===k.email)||null),!q&&l&&(q=c.find(a=>a.name===l)||null);let r="apikey"===String(k.authType||"").toLowerCase(),s={provider:a,authType:k.authType||"oauth",accessToken:b,...r?{apiKey:b}:{},refreshToken:m,name:l||void 0,email:k.email||void 0,expiresAt:o||void 0,testStatus:"active",...n&&"object"==typeof n?{providerSpecificData:n}:{}};if(q){let a={...s,...s.providerSpecificData||q.providerSpecificData?{providerSpecificData:{...q.providerSpecificData||{},...s.providerSpecificData||{}}}:{}};await (0,d.updateProviderConnection)(q.id,a),h++,e.push({index:j,ok:!0,updated:!0,id:q.id})}else{let a=await (0,d.createProviderConnection)(s);c.push(a),f++,e.push({index:j,ok:!0,created:!0,id:a.id})}}catch(a){e.push({index:j,ok:!1,error:a.message||"Unknown error"}),i++}}let k=await j(a,e);return{imported:f,updated:h,skipped:0,failed:i,results:e,webSessions:k}}async function j(a,b){if("qoder"!==a&&"qoder-cn"!==a)return null;let c=[];for(let e of b){if(!e?.ok||!e.id)continue;let b=await (0,d.Mc)(e.id).catch(()=>null),f=b?.providerSpecificData?.creditDaddyWebSession;f&&"string"==typeof f.cookie&&f.cookie&&c.push({id:e.id,name:b.name||b.email||e.id,provider:b.provider||a,cookie:f.cookie,owner:b.providerSpecificData?.userId||null})}if(0===c.length)return null;let g=async a=>{try{let b="qoder-cn"===a.provider?f.VD:f.Dg,c=await (0,e.proxyAwareFetch)(`${b}/api/v2/me/usages/big_model_credits`,{method:"GET",headers:{Cookie:a.cookie,Accept:"application/json",Referer:`${b}/account/usage`,"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"},signal:AbortSignal.timeout(1e4)},null);if(!c.ok)return{...a,ok:!1,reason:`HTTP ${c.status}`};let d=await c.json().catch(()=>null);if(!d?.user_id)return{...a,ok:!1,reason:"bad response"};if(a.owner&&String(d.user_id)!==String(a.owner))return{...a,ok:!1,reason:"session belongs to a different Qoder user"};return{...a,ok:!0}}catch(b){return{...a,ok:!1,reason:b?.message||"probe failed"}}},h=[],i=0,j=Array.from({length:Math.min(6,c.length)},async()=>{for(;i<c.length;){let a=c[i++];h.push(await g(a))}});await Promise.all(j);let k=h.filter(a=>!a.ok);return{checked:h.length,ok:h.length-k.length,failed:k.length,failures:k.map(a=>({id:a.id,name:a.name,reason:a.reason}))}}},39609:(a,b,c)=>{c.d(b,{proxyAwareFetch:()=>r});var d=c(27910),e=c(41004);let f=globalThis.fetch,g=new Map;function h(a,b){let c=e.v1.directFallbackTimeoutMs;if(b?.signal)return f(a,b);let d=new AbortController,g=setTimeout(()=>d.abort(Error(`fetch connect timeout (${c}ms)`)),c);return f(a,{...b,signal:d.signal}).finally(()=>clearTimeout(g))}let i=new Map,j=["cloudcode-pa.googleapis.com","daily-cloudcode-pa.googleapis.com","api.individual.githubcopilot.com","q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com","api2.cursor.sh"],k=["8.8.8.8","8.8.4.4"];function l(a){return null==a?"":String(a).trim()}async function m(a){let b=i.get(a);if(b&&Date.now()<b.expiry)return b.ip;try{let b=await Promise.resolve().then(c.t.bind(c,14985,23)),{promisify:d}=await Promise.resolve().then(c.t.bind(c,28354,23)),f=new b.Resolver;f.setServers(k);let g=d(f.resolve4.bind(f)),h=await g(a);return i.set(a,{ip:h[0],expiry:Date.now()+e.v1.dnsCacheTtlMs}),h[0]}catch(b){return console.warn(`[ProxyFetch] DNS resolve failed for ${a}:`,b.message),null}}function n(a,b){let c,d=l(b);if(!d)return!1;try{c=new URL(a).hostname.toLowerCase()}catch{return!1}return d.split(",").map(a=>a.trim().toLowerCase()).filter(Boolean).some(a=>"*"===a||(a.startsWith(".")?c.endsWith(a)||c===a.slice(1):c===a||c.endsWith(`.${a}`)))}function o(a){let b=l(a);return b?/^[a-z][a-z0-9+.-]*:\/\//i.test(b)?b:`http://${b}`:null}async function p(a){let b=o(a);if(!b)return null;if(!g.has(b)){g.size>=e.v1.proxyDispatchersMaxSize&&g.delete(g.keys().next().value);let{ProxyAgent:a}=await c.e(7774).then(c.t.bind(c,47774,19));g.set(b,new a({uri:b}))}return g.get(b)}async function q(a,b,f){let g=await Promise.resolve().then(c.t.bind(c,55591,23)),h=await Promise.resolve().then(c.t.bind(c,91645,23)),i=g.default??g,j=h.default??h;return new Promise((c,g)=>{let h=new j.Socket,k=!1,l=(a,b)=>{k||(k=!0,clearTimeout(m),o(),a(b))},m=setTimeout(()=>{h.destroy(),l(g,Error(`[ProxyFetch] MITM bypass connect timeout after ${e.v1.directFallbackTimeoutMs}ms`))},e.v1.directFallbackTimeoutMs),n=()=>{h.destroy(),l(g,Error("[ProxyFetch] MITM bypass request aborted"))},o=()=>{f.signal&&f.signal.removeEventListener("abort",n)};if(f.signal){if(f.signal.aborted)return void n();f.signal.addEventListener("abort",n,{once:!0})}h.connect(443,b,()=>{let b={socket:h,servername:a.hostname,path:a.pathname+a.search,method:f.method||"POST",headers:{...f.headers,Host:a.hostname}},e=i.request(b,a=>{let b={ok:a.statusCode>=200&&a.statusCode<300,status:a.statusCode,statusText:a.statusMessage,headers:new Map(Object.entries(a.headers)),body:d.Readable.toWeb(a),text:async()=>{let b=[];for await(let c of a)b.push(c);return Buffer.concat(b).toString()},json:async()=>JSON.parse(await b.text())};l(c,b)});e.on("error",a=>l(g,a)),f.body&&e.write("string"==typeof f.body?f.body:JSON.stringify(f.body)),e.end()}),h.on("error",a=>l(g,a))})}async function r(a,b={},c=null){let d="string"==typeof a?a:a.toString(),e=l(c?.vercelRelayUrl);if(e){let a=new URL(d),c={...b.headers,"x-relay-target":`${a.protocol}//${a.host}`,"x-relay-path":`${a.pathname}${a.search}`};return f(e,{...b,headers:c})}let g=function(a,b){if(b?.enabled!==!0&&b?.connectionProxyEnabled!==!0)return null;let c=l(b?.url??b?.connectionProxyUrl);if(!c)return null;let d=l(b?.noProxy??b?.connectionNoProxy);return d&&n(a,d)?null:o(c)}(d,c),i=g?null:o(function(a){let b,c;try{b=new URL(a).hostname.toLowerCase()}catch{return null}if(function(a){if(!a||"string"!=typeof a)return!1;let b=a.trim().toLowerCase().replace(/^\[|\]$/g,"");if("localhost"===b||b.endsWith(".localhost")||"0.0.0.0"===b||"::"===b||"::1"===b)return!0;let c=b.split(".");if(4===c.length&&c.every(a=>/^\d+$/.test(a)&&Number(a)>=0&&255>=Number(a))){let[a,b]=c.map(Number);return 127===a||10===a||192===a&&168===b||172===a&&!!(b>=16)&&!!(b<=31)||169===a&&254===b||100===a&&!!(b>=64)&&!!(b<=127)}return!!(b.includes(":")&&(b.startsWith("fc")||b.startsWith("fd")||b.startsWith("fe80")))}(b)||n(a,process.env.NO_PROXY||process.env.no_proxy))return null;try{c=new URL(a).protocol}catch{return null}return"https:"===c?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy}(d)),k=g||i;if(function(a){try{let b=new URL(a).hostname;return j.some(a=>b.includes(a))}catch{return!1}}(d)){if(k)try{let c=await p(k);return await f(a,{...b,dispatcher:c})}catch(a){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${a.message}`);if(c?.onProxyFallback)try{c.onProxyFallback(a)}catch{}console.warn(`[ProxyFetch] Proxy failed, falling back to direct bypass: ${a.message}`)}try{let a=new URL(d),c=await m(a.hostname);if(c)return await q(a,c,b)}catch(a){console.warn(`[ProxyFetch] MITM bypass failed: ${a.message}`)}if(k)return h(d,b)}if(k)try{let c=await p(k);return await f(a,{...b,dispatcher:c})}catch(a){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${a.message}`);if(c?.onProxyFallback)try{c.onProxyFallback(a)}catch{}return console.warn(`[ProxyFetch] Proxy failed, falling back to direct: ${a.message}`),h(d,b)}let s=c?.proxyPoolId||c?.enabled===!0||c?.connectionProxyEnabled===!0||!!l(c?.url??c?.connectionProxyUrl);if(c?.strictProxy===!0&&s)throw Error("[ProxyFetch] Proxy required but none resolved (strictProxy=true)");return f(a,b)}async function s(a,b={}){return r(a,b,null)}globalThis.fetch!==s&&(globalThis.fetch=s)},69704:(a,b,c)=>{c.d(b,{Dg:()=>k,F8:()=>u,KC:()=>w,L7:()=>d,OQ:()=>j,R$:()=>l,RB:()=>D,Ty:()=>z,UJ:()=>q,VD:()=>r,_G:()=>i,bR:()=>t,bg:()=>h,cT:()=>y,cn:()=>p,h3:()=>o,ii:()=>n,j9:()=>f,jJ:()=>m,li:()=>s,pM:()=>C,pr:()=>E,qk:()=>A,rf:()=>g,t6:()=>x,xG:()=>B});let d="https://openapi.qoder.sh",e="https://api3.qoder.sh",f="https://api2.qoder.sh",g="https://qoder.com/device/selectAccounts",h=`${d}/api/v1/deviceToken/poll`,i=`${d}/api/v1/userinfo`,j=`${d}/api/v1/jobToken/exchange`,k="https://qoder.com",l="https://gateway.qoder.com.cn",m="https://openapi.qoder.com.cn",n="https://qoder.cn/device/selectAccounts",o=`${m}/api/v1/deviceToken/poll`,p=`${m}/api/v1/userinfo`,q=`${m}/api/v1/jobToken/exchange`,r="https://qoder.cn",s=l,t=`${l}/algo/api/v2/model/list`,u="/api/v2/service/pro/sse/agent_chat_generation",v=`${e}/algo${u}?FetchKeys=llm_model_result&AgentId=agent_common`,w=`${v}&Encode=1`,x=`${e}/algo/api/v2/model/list`,y="1.0.0",z="5",A="disagree",B="v2",C="x86_64_windows",D="5",E=`-----BEGIN PUBLIC KEY-----
2
- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDA8iMH5c02LilrsERw9t6Pv5Nc
3
- 4k6Pz1EaDicBMpdpxKduSZu5OANqUq8er4GM95omAGIOPOh+Nx0spthYA2BqGz+l
4
- 6HRkPJ7S236FZz73In/KVuLnwI8JJ2CbuJap8kvheCCZpmAWpb/cPx/3Vr/J6I17
5
- XcW+ML9FoCI6AOvOzwIDAQAB
6
- -----END PUBLIC KEY-----`},71998:(a,b,c)=>{c.d(b,{Fh:()=>d.Fh,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.getProviderConnections,h1:()=>d.h1,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.updateProviderConnection,uv:()=>d.uv});var d=c(89718)},74194:(a,b,c)=>{c.d(b,{dz:()=>j,ij:()=>k});var d=c(77598),e=c.n(d);let f="10router-oauth-secure-v1",g={alg:"scrypt",N:16384,r:8,p:1,keyLen:32},h=a=>Buffer.from(String(a),"base64");function i(a,b){return e().scryptSync(String(a),b,g.keyLen,{N:g.N,r:g.r,p:g.p,maxmem:0x4000000})}function j(a,b){if(!b||"string"!=typeof b||b.length<4)throw Error("PASSPHRASE_TOO_SHORT");let c=e().randomBytes(16),d=e().randomBytes(12),h=i(b,c),j=e().createCipheriv("aes-256-gcm",h,d),k=Buffer.from(JSON.stringify(a),"utf8"),l=Buffer.concat([j.update(k),j.final()]).toString("base64");return{format:f,kdf:{...g,salt:c.toString("base64")},cipher:"aes-256-gcm",iv:d.toString("base64"),tag:j.getAuthTag().toString("base64"),payload:l}}function k(a,b){let c;if(!a||"object"!=typeof a)throw Error("CORRUPT");if(a.format!==f)throw Error("UNSUPPORTED_FORMAT");if(!a.kdf?.salt||!a.iv||!a.tag||!a.payload)throw Error("CORRUPT");try{c=i(b,h(a.kdf.salt))}catch{throw Error("CORRUPT")}try{let b=e().createDecipheriv("aes-256-gcm",c,h(a.iv));b.setAuthTag(h(a.tag));let d=Buffer.concat([b.update(h(a.payload)),b.final()]);return JSON.parse(d.toString("utf8"))}catch{throw Error("WRONG_PASSWORD")}}}};
@@ -1 +0,0 @@
1
- exports.id=7209,exports.ids=[3662,7209],exports.modules={3662:(a,b,c)=>{"use strict";c.d(b,{$e:()=>i,AZ:()=>m,Dt:()=>k,EQ:()=>f,LY:()=>d,O:()=>e,X8:()=>j,fh:()=>h,qS:()=>o,t2:()=>l,wf:()=>g,yD:()=>n});let d={400:{type:"invalid_request_error",code:"bad_request"},401:{type:"authentication_error",code:"invalid_api_key"},402:{type:"billing_error",code:"payment_required"},403:{type:"permission_error",code:"insufficient_quota"},404:{type:"invalid_request_error",code:"model_not_found"},406:{type:"invalid_request_error",code:"model_not_supported"},429:{type:"rate_limit_error",code:"rate_limit_exceeded"},500:{type:"server_error",code:"internal_server_error"},502:{type:"server_error",code:"bad_gateway"},503:{type:"server_error",code:"service_unavailable"},504:{type:"server_error",code:"gateway_timeout"}},e={400:"Bad request",401:"Invalid API key provided",402:"Payment required",403:"You exceeded your current quota",404:"Not found (wrong endpoint path, or the model does not exist)",406:"Model not supported",429:"Rate limit exceeded",500:"Internal server error",502:"Bad gateway - upstream provider error",503:"Service temporarily unavailable",504:"Gateway timeout"},f={base:2e3,max:3e5,maxLevel:15},g=3e4,h=18e5,i=864e5,j={short:6e4,long:6e5},k=3e5,l=[{provider:"codex",text:"model is not supported when using codex with a chatgpt account",cooldownMs:18e5},{text:"no credentials",cooldownMs:12e4},{text:"request not allowed",cooldownMs:5e3},{text:"unapproved channel",channelScope:!0,cooldownMs:j.short},{text:"illegal api invocation",channelScope:!0,cooldownMs:j.short},{provider:"codebuddy-intl",text:"conversation id missing",channelScope:!0,cooldownMs:j.short},{provider:"codebuddy-intl",text:"request illegal",channelScope:!0,cooldownMs:j.short},{text:"improperly formed request",cooldownMs:12e4},{text:"mimo desktop account",cooldownMs:0},{text:"11133",cooldownMs:0},{text:"rejected by the model provider",cooldownMs:0},{text:"请求体积已达极端量级",cooldownMs:0},{text:"extreme-size backstop",cooldownMs:0},{text:"real-name verification",cooldownMs:0},{text:"realname verification",cooldownMs:0},{text:"bind your alibaba cloud account",cooldownMs:0},{text:"rate limit",backoff:!0},{text:"too many requests",backoff:!0},{text:"quota exceeded",backoff:!0},{text:"capacity",backoff:!0},{text:"overloaded",backoff:!0},{status:401,cooldownMs:12e4},{status:402,cooldownMs:12e4},{status:403,cooldownMs:12e4},{status:404,cooldownMs:12e4},{status:429,backoff:!0}],m=/real-name verification|realname|\bface verification\b|实名认证|bind your alibaba cloud account/i,n={"stepfun-plan-cn":"StepFun CN 的 Step Plan 免费套餐要求账号先完成实名(人脸)核验,未完成时上游一律拒绝,与本机额度、与 10Router 都无关。出路:1. 打开 https://account.stepfun.com/security?action=realname 完成人脸核验后重试(推荐);2. 或改用按量计费的 stepfun-cn 渠道(扣现金/代金券,无实名要求)。该账号不会被锁定,但在实名完成前每次调用都会得到这条提示。",modelscope:"ModelScope 魔搭要求账号先绑定阿里云账号(实名认证)才能使用免费推理 API。出路:打开 https://modelscope.cn/my/account 完成第三方账号「阿里云」绑定后重试。"},o="上游要求该账号先完成实名认证(real-name verification),未完成前所有调用都会被拒绝;请按上游提示的地址完成核验后重试。"},33379:(a,b,c)=>{"use strict";c.d(b,{kK:()=>o,w$:()=>q});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(73136);let i=(()=>{try{return g().dirname((0,h.fileURLToPath)("file:///F:/Files/GitHub%20Files/10router/src/i18n/serverTranslate.js"))}catch{return null}})(),j=[g().join(process.cwd(),"public","i18n","literals"),...i?[g().join(i,"..","..","public","i18n","literals")]:[]],k={"zh-cn":"zh-CN","zh-hans":"zh-CN","zh-tw":"zh-TW","zh-hant":"zh-TW","pt-br":"pt-BR","pt-pt":"pt-PT"},l=new Map([["en",null]]);function m(a){if(l.has(a))return l.get(a);let b=null;for(let c of j)try{b=JSON.parse(e().readFileSync(g().join(c,`${a}.json`),"utf8"));break}catch{}return l.set(a,b),b}function n(a){let b=a.toLowerCase();if(k[b])return k[b];let c=b.split("-")[0];return"zh"===c?"zh-CN":"pt"===c?"pt-BR":"en"===b?"en":/^[a-z]{2,3}$/.test(c)?c:"en"}function o(a){if(!a?.headers)return"en";try{let b=a.headers.get("cookie")||"",c=/(?:^|;\s*)locale=([^;]+)/.exec(b);if(c){let a=n(decodeURIComponent(c[1]).trim());if("en"===a||m(a))return a}}catch{}var b=a.headers.get("accept-language");if(!b||"string"!=typeof b)return"en";for(let a of b.split(",").map(a=>a.split(";")[0].trim()).filter(a=>a&&"*"!==a)){let b=n(a);if("en"===b)break;if(m(b))return b}return"en"}let p=[{re:/Our service is being upgraded[\s\S]*?not affected\./i,"zh-CN":"上游正在升级维护,通常几分钟内恢复,稍后自动重试即可;套餐与余额不受影响。","zh-TW":"上游正在升級維護,通常幾分鐘內恢復,稍後自動重試即可;方案與餘額不受影響。"},{re:/Service temporarily unavailable/gi,"zh-CN":"服务暂时不可用(上游维护或过载,稍后重试)","zh-TW":"服務暫時不可用(上游維護或過載,稍後重試)"},{re:/Bad gateway - upstream provider error/gi,"zh-CN":"网关错误——上游供应商故障","zh-TW":"閘道錯誤——上游供應商故障"},{re:/Gateway timeout/gi,"zh-CN":"网关超时","zh-TW":"閘道逾時"}];function q(a,b){if(!b||"string"!=typeof b)return b;let c=m(a),d=c&&c[b.trim()];if(d)return d;if("en"===a)return b;for(let c of p){let d=c[a];if(d&&c.re.test(b))return c.re.lastIndex=0,b.replace(c.re,d)}return b}},78335:()=>{},89718:(a,b,c)=>{"use strict";c.d(b,{Bf:()=>d.Bf,CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Um:()=>d.Um,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getApiKeyByKey:()=>d.mY,getProviderConnections:()=>d.P,getSettings:()=>d.mt,h1:()=>d.h1,hj:()=>d.hj,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,localStartOfDayIso:()=>d.Yq,lr:()=>d.lr,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,sV:()=>d.sV,sumApiKeyTokensSince:()=>d.ZQ,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,updateSettings:()=>d.Xx,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(27274)},96487:()=>{}};
@@ -1 +0,0 @@
1
- exports.id=8439,exports.ids=[3662,8439],exports.modules={3662:(a,b,c)=>{"use strict";c.d(b,{$e:()=>i,AZ:()=>m,Dt:()=>k,EQ:()=>f,LY:()=>d,O:()=>e,X8:()=>j,fh:()=>h,qS:()=>o,t2:()=>l,wf:()=>g,yD:()=>n});let d={400:{type:"invalid_request_error",code:"bad_request"},401:{type:"authentication_error",code:"invalid_api_key"},402:{type:"billing_error",code:"payment_required"},403:{type:"permission_error",code:"insufficient_quota"},404:{type:"invalid_request_error",code:"model_not_found"},406:{type:"invalid_request_error",code:"model_not_supported"},429:{type:"rate_limit_error",code:"rate_limit_exceeded"},500:{type:"server_error",code:"internal_server_error"},502:{type:"server_error",code:"bad_gateway"},503:{type:"server_error",code:"service_unavailable"},504:{type:"server_error",code:"gateway_timeout"}},e={400:"Bad request",401:"Invalid API key provided",402:"Payment required",403:"You exceeded your current quota",404:"Not found (wrong endpoint path, or the model does not exist)",406:"Model not supported",429:"Rate limit exceeded",500:"Internal server error",502:"Bad gateway - upstream provider error",503:"Service temporarily unavailable",504:"Gateway timeout"},f={base:2e3,max:3e5,maxLevel:15},g=3e4,h=18e5,i=864e5,j={short:6e4,long:6e5},k=3e5,l=[{provider:"codex",text:"model is not supported when using codex with a chatgpt account",cooldownMs:18e5},{text:"no credentials",cooldownMs:12e4},{text:"request not allowed",cooldownMs:5e3},{text:"unapproved channel",channelScope:!0,cooldownMs:j.short},{text:"illegal api invocation",channelScope:!0,cooldownMs:j.short},{provider:"codebuddy-intl",text:"conversation id missing",channelScope:!0,cooldownMs:j.short},{provider:"codebuddy-intl",text:"request illegal",channelScope:!0,cooldownMs:j.short},{text:"improperly formed request",cooldownMs:12e4},{text:"mimo desktop account",cooldownMs:0},{text:"11133",cooldownMs:0},{text:"rejected by the model provider",cooldownMs:0},{text:"请求体积已达极端量级",cooldownMs:0},{text:"extreme-size backstop",cooldownMs:0},{text:"real-name verification",cooldownMs:0},{text:"realname verification",cooldownMs:0},{text:"bind your alibaba cloud account",cooldownMs:0},{text:"rate limit",backoff:!0},{text:"too many requests",backoff:!0},{text:"quota exceeded",backoff:!0},{text:"capacity",backoff:!0},{text:"overloaded",backoff:!0},{status:401,cooldownMs:12e4},{status:402,cooldownMs:12e4},{status:403,cooldownMs:12e4},{status:404,cooldownMs:12e4},{status:429,backoff:!0}],m=/real-name verification|realname|\bface verification\b|实名认证|bind your alibaba cloud account/i,n={"stepfun-plan-cn":"StepFun CN 的 Step Plan 免费套餐要求账号先完成实名(人脸)核验,未完成时上游一律拒绝,与本机额度、与 10Router 都无关。出路:1. 打开 https://account.stepfun.com/security?action=realname 完成人脸核验后重试(推荐);2. 或改用按量计费的 stepfun-cn 渠道(扣现金/代金券,无实名要求)。该账号不会被锁定,但在实名完成前每次调用都会得到这条提示。",modelscope:"ModelScope 魔搭要求账号先绑定阿里云账号(实名认证)才能使用免费推理 API。出路:打开 https://modelscope.cn/my/account 完成第三方账号「阿里云」绑定后重试。"},o="上游要求该账号先完成实名认证(real-name verification),未完成前所有调用都会被拒绝;请按上游提示的地址完成核验后重试。"},33792:(a,b,c)=>{"use strict";c.d(b,{Dc:()=>w,I_:()=>r,XH:()=>q,YK:()=>u,dY:()=>x,mx:()=>z,nz:()=>A,tm:()=>y});var d=c(8292),e=c(17509),f=c(34013),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(77598),l=c.n(k),m=c(49120),n=c(89718),o=c(77134);function p(){let a=process.env.INITIAL_PASSWORD;return"string"==typeof a?a.trim():""}function q(a){return!!p()||r(a)}function r(a){return!!(a?.password||String(a?.oidcIssuerUrl||"").trim()&&String(a?.oidcClientId||"").trim()&&String(a?.oidcClientSecret||"").trim())||!!(a?.samlEntryPoint&&a?.samlCert)}let s=new Set(["change-me-to-a-long-random-secret","10router-default-secret-change-me","change-me-to-a-random-string","change-me"]),t=new TextEncoder().encode(function(){let a=process.env.JWT_SECRET;if(a){if(!s.has(a))return a;console.warn("[auth] JWT_SECRET is a known placeholder value — ignoring it. Leave JWT_SECRET unset (a random secret is generated to "+j().join(m.nJ,"jwt-secret")+") or set a long random value.")}let b=j().join(m.nJ,"jwt-secret");try{return h().readFileSync(b,"utf8").trim()}catch{}h().mkdirSync(m.nJ,{recursive:!0});let c=l().randomBytes(32).toString("hex");return h().writeFileSync(b,c,{mode:384}),(0,o.E)(b),c}());function u(a){let b="true"===process.env.AUTH_COOKIE_SECURE,c=String(a?.headers?.get?.("x-forwarded-proto")||"").split(",")[0].trim().toLowerCase();return b||"https"===c}async function v(a={}){let b=Math.floor(Date.now()/1e3);return new d.P({authenticated:!0,origIat:b,...a}).setProtectedHeader({alg:"HS256"}).setIssuedAt().setExpirationTime("7200s").sign(t)}async function w(a){if(!a)return!1;try{return await (0,e.V)(a,t),!0}catch{return!1}}async function x(a){if(!a)return null;try{let{payload:b}=await (0,e.V)(a,t);return b}catch{return null}}async function y(a,b,c={}){let d=await v(c);a.set("auth_token",d,{httpOnly:!0,secure:u(b),sameSite:"lax",path:"/",maxAge:7200})}async function z(a,b,c){try{let d,e,f="number"==typeof c?.iat?1e3*c.iat:0;if(!f)return!1;let g=(d="number"==typeof c?.origIat?c.origIat:null,e="number"==typeof c?.iat?c.iat:null,d??e);if(g&&Math.floor(Date.now()/1e3)-g>=2592e3||Date.now()-f<36e5)return!1;return await y(a,b,{...g?{origIat:g}:{},...c?.oidcName?{oidcName:c.oidcName}:{},...c?.oidcEmail?{oidcEmail:c.oidcEmail}:{},...c?.samlName?{samlName:c.samlName}:{},...c?.samlEmail?{samlEmail:c.samlEmail}:{},...c?.oidc?{oidc:!0}:{},...c?.saml?{saml:!0}:{}}),!0}catch{return!1}}async function A(a){if("string"!=typeof a||!a)return!1;let b=await (0,n.getSettings)(),c=b?.password;if(c)return f.Ay.compare(a,c);let d=p();return!!d&&a===d}},78335:()=>{},89718:(a,b,c)=>{"use strict";c.d(b,{Bf:()=>d.Bf,CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Um:()=>d.Um,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getApiKeyByKey:()=>d.mY,getProviderConnections:()=>d.P,getSettings:()=>d.mt,h1:()=>d.h1,hj:()=>d.hj,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,localStartOfDayIso:()=>d.Yq,lr:()=>d.lr,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,sV:()=>d.sV,sumApiKeyTokensSince:()=>d.ZQ,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,updateSettings:()=>d.Xx,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(27274)},96487:()=>{}};
@@ -1,9 +0,0 @@
1
- "use strict";exports.id=9451,exports.ids=[9451],exports.modules={39451:(a,b,c)=>{c.d(b,{runMigrationOnce:()=>G});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(7841),i=c(76040);let j="stepfun",k="stepfun-cn";var l=c(34393),m=c(69128);let n=["mimoPassToken","mimoUserId","mimoCUserId"],o=new Set(["Xiaomi MiMo Desktop","Xiaomi MiMo Desktop Session"]),p="mimo-desktop-session";function q(a){if(!(0,l.ph)(a))return{ok:!0,value:a};try{return{ok:!0,value:(0,l.wu)(a)}}catch{return{ok:!1,value:a}}}function r(a){try{return JSON.parse(a.data||"{}")}catch{return null}}function s(a,b=null){let c=a?.providerSpecificData||{},d=q("string"==typeof a?.accessToken?a.accessToken:null),e="string"==typeof c.uid||"number"==typeof c.uid?String(c.uid):null,f="string"==typeof c.mimoUserId||"number"==typeof c.mimoUserId?String(c.mimoUserId):null,g=c.mimoPassToken;return{token:d.ok?d.value:null,uid:e,mu:f,email:"string"==typeof b&&b?b:null,hasSession:null!=g&&""!==g&&q(g).ok}}let t=[{version:1,name:"initial",up(a){for(let[b,c]of Object.entries(i.CG))for(let d of(a.exec((0,i.zE)(b,c)),c.indexes||[]))a.exec(d)}},{version:2,name:"stepfun-cn-rename",up(a){let b;for(let b of(a.run("UPDATE providerConnections SET provider = ? WHERE provider = ?",[k,j]),a.run("UPDATE kv SET key = ? WHERE scope = 'disabledModels' AND key = ?",[k,j]),["modelCaps","customModels"]))a.run("UPDATE kv SET key = ? || substr(key, ?) WHERE scope = ? AND key LIKE ?",[k,j.length+1,b,`${j}|%`]);let c=a.get("SELECT data FROM settings WHERE id = 1");if(!c?.data)return;try{b=JSON.parse(c.data)}catch{return}if(!b||"object"!=typeof b)return;let d=!1;if(Array.isArray(b.providerCardOrder)){let a=b.providerCardOrder.map(a=>a===j?k:a);a.some((a,c)=>a!==b.providerCardOrder[c])&&(b.providerCardOrder=a,d=!0)}for(let a of["topologyVisibility","providerStrategies"]){let c=b[a];c&&"object"==typeof c&&Object.prototype.hasOwnProperty.call(c,j)&&(k in c||(c[k]=c[j]),delete c[j],d=!0)}d&&a.run("UPDATE settings SET data = ? WHERE id = 1",[JSON.stringify(b)])}},{version:3,name:"encrypt-credentials",up(a){let b;try{b=a.all("SELECT id, data FROM providerConnections")}catch(a){console.warn("[migration] encrypt-credentials: could not read connections:",a?.message||a);return}let c=0,d=0;for(let e of b){let b;try{b=JSON.parse(e.data||"{}")}catch{continue}if((0,l.HG)(b))try{a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify((0,l.Wl)(b)),e.id]),c+=1}catch(a){1===(d+=1)&&console.warn("[migration] encrypt-credentials: could not encrypt a connection — credentials stay in plain text until they are rewritten:",a?.message||a)}}c&&console.log(`[migration] encrypt-credentials: encrypted ${c} connection row(s)`),d&&console.warn(`[migration] encrypt-credentials: ${d} row(s) left in plain text`)}},{version:4,name:"usage-apikey-digest",up(a){try{a.all("PRAGMA table_info(usageHistory)").map(a=>a.name).includes("apiKeyHash")||(a.exec("ALTER TABLE usageHistory ADD COLUMN apiKeyHash TEXT"),console.log("[migration] usage-apikey-digest: added usageHistory.apiKeyHash")),a.exec("CREATE INDEX IF NOT EXISTS idx_uh_apikey_hash ON usageHistory(apiKeyHash)")}catch(a){console.warn("[migration] usage-apikey-digest: could not ensure apiKeyHash column:",a?.message||a)}let b=0;try{for(let c of a.all("SELECT id, apiKey FROM usageHistory WHERE apiKey IS NOT NULL AND apiKey != ''"))(0,m.f0)(c.apiKey)||(a.run("UPDATE usageHistory SET apiKey = ?, apiKeyHash = ? WHERE id = ?",[(0,m.oO)(c.apiKey),(0,m.kk)(c.apiKey),c.id]),b+=1)}catch(a){console.warn("[migration] usage-apikey-digest: history rows skipped:",a?.message||a)}let c=0;try{for(let b of a.all("SELECT dateKey, data FROM usageDaily")){let d;try{d=JSON.parse(b.data||"{}")}catch{continue}let e=d?.byApiKey;if(!e||"object"!=typeof e)continue;let f={},g=!1;for(let[a,b]of Object.entries(e)){if(!b||"object"!=typeof b){f[a]=b;continue}let c="string"==typeof b.apiKey?b.apiKey:null;if(!c&&b.apiKeyHash||!c){f[a]=b;continue}let{apiKey:d,...e}=b,h=(0,m.kk)(c),i=a.split("|"),j=i.length>1?"|"+i.slice(1).join("|"):"";f[`${h||"local-no-key"}${j}`]={...e,apiKeyHash:h,apiKeyMasked:(0,m.oO)(c)},g=!0}g&&(a.run("UPDATE usageDaily SET data = ? WHERE dateKey = ?",[JSON.stringify({...d,byApiKey:f}),b.dateKey]),c+=1)}}catch(a){console.warn("[migration] usage-apikey-digest: daily aggregates skipped:",a?.message||a)}(b||c)&&console.log(`[migration] usage-apikey-digest: rewrote ${b} history row(s), ${c} day aggregate(s)`)}},{version:5,name:"strip-mimo-main-card-session",up(a){let b,c;try{b=a.all("SELECT id, email, data FROM providerConnections WHERE provider = 'xiaomi-mimo'"),c=a.all("SELECT id, email, data FROM providerConnections WHERE provider = 'mimo-desktop'")}catch(a){console.warn("[migration] strip-mimo-main-card-session: could not read connections:",a?.message||a);return}let d=c.map(a=>{let b=r(a);return b?s(b,a.email):null}).filter(Boolean),e=0,f=0,g=0,h=0;for(let c of b){let b=r(c);if(!b||"object"!=typeof b)continue;let i=b.providerSpecificData&&"object"==typeof b.providerSpecificData?b.providerSpecificData:{};if(!(n.some(a=>void 0!==i[a]&&null!==i[a]&&""!==i[a])||o.has(i.provider)||"desktop-session"===i.authMethod||"string"==typeof b.accessToken&&b.accessToken.startsWith(p)))continue;let j=q("string"==typeof b.accessToken?b.accessToken:null);if(!j.ok||i.mimoPassToken&&!q(i.mimoPassToken).ok){h+=1;continue}if(!("string"!=typeof j.value||""===j.value||j.value.startsWith(p))){let d=function(a){let b={...a};for(let a of n)delete b[a];return o.has(b.provider)&&delete b.provider,b}(i);"desktop-session"===d.authMethod&&(d.authMethod="api_key"),a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify((0,l.Wl)({...b,providerSpecificData:d})),c.id]),e+=1;continue}let k=s(b,c.email);if(d.find(a=>(!!a.token&&!!k.token&&a.token===k.token||!!a.uid&&!!k.uid&&a.uid===k.uid||!!a.mu&&!!k.mu&&a.mu===k.mu||!!a.uid&&!!k.mu&&a.uid===k.mu||!!a.mu&&!!k.uid&&a.mu===k.uid||!!a.email&&!!k.email&&a.email===k.email||!1)&&a.hasSession)){a.run("DELETE FROM providerConnections WHERE id = ?",[c.id]),g+=1;continue}a.run("UPDATE providerConnections SET provider = 'mimo-desktop', data = ? WHERE id = ?",[JSON.stringify((0,l.Wl)(b)),c.id]),f+=1}(e||f||g||h)&&console.log(`[migration] strip-mimo-main-card-session: stripped ${e} cloud row(s), moved ${f} session-only row(s) to mimo-desktop, removed ${g} duplicate row(s)`+(h?`, ${h} row(s) left untouched (undecryptable credentials)`:""))}},{version:6,name:"mimo-desktop-session-active",up(a){let b;try{b=a.all("SELECT id, data FROM providerConnections WHERE provider = 'mimo-desktop'")}catch(a){console.warn("[migration] mimo-desktop-session-active: could not read connections:",a?.message||a);return}for(let c of b)try{let b=JSON.parse(c.data);if("untested"!==b.testStatus)continue;b.testStatus="active",a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify(b),c.id])}catch{}}}].sort((a,b)=>a.version-b.version);var u=c(91117);let v=null;function w(){if(v)return v;try{let a=g().join(process.cwd(),"package.json");v=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{v="0.0.0"}return v}let x=["requestDetails"];function y(a){(0,h.Jh)();let b=w(),c=`${a}-${b}-${function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}()}`,d=g().join(h.KQ,c);return e().mkdirSync(d,{recursive:!0}),d}function z(){if(e().existsSync(h.KQ))for(let a of e().readdirSync(h.KQ,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>({name:a.name,full:g().join(h.KQ,a.name),mtime:e().statSync(g().join(h.KQ,a.name)).mtimeMs})).sort((a,b)=>b.mtime-a.mtime).slice(3))try{e().rmSync(a.full,{recursive:!0,force:!0})}catch{}}var A=c(33323);let B=g().join(h.HG,".migrated-from-json"),C=new WeakSet;class D extends Error{constructor(a,b){super(a),this.name="MigrationAborted",this.droppedRows=b}}function E(a,b,c,d,e){let f=[];for(let a of c)try{d(a)}catch(b){f.push({...e(a),reason:b.message})}let g=a.get(`SELECT COUNT(*) as c FROM ${b}`)?.c??0;if(g!==c.length)throw console.warn(`[DB][migrate] ${b} row-count mismatch: expected ${c.length}, got ${g}. Dropped:`,f),new D(`${b} row-count mismatch: expected ${c.length}, got ${g}`,f)}function F(a){if(!e().existsSync(a))return null;try{return JSON.parse(e().readFileSync(a,"utf-8"))}catch{return null}}async function G(a){if(C.has(a))return;C.add(a);let b=function(a){try{let b=a.get("SELECT COUNT(*) as c FROM _meta");return!b||0===b.c}catch{return!0}}(a);z(),a.exec((0,i.zE)("_meta",i.CG._meta));let c=parseInt((0,u.dy)(a,"backupSchemaVersion","0"),10)||0;if(!b&&c<i.f$)try{let b=y(`schema-${c}-to-${i.f$}`);!function(a,b,c="data.sqlite"){let d=g().join(b,c);try{e().rmSync(d,{force:!0})}catch{}let f=d.replace(/'/g,"''");a.exec(`ATTACH DATABASE '${f}' AS bak`);try{let b=new Set(x),c=a.all("SELECT name, sql FROM main.sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'").filter(a=>!b.has(a.name));a.transaction(()=>{for(let b of c){let c=b.sql.replace(/CREATE TABLE\s+/i,"CREATE TABLE bak.");a.exec(c),a.exec(`INSERT INTO bak.${b.name} SELECT * FROM main.${b.name}`)}})}finally{try{a.exec("DETACH DATABASE bak")}catch{}}}(a,b),z(),console.log(`[DB][migrate] pre-schema backup ${c} → ${i.f$}: ${b}`)}catch(a){console.warn(`[DB][migrate] pre-schema backup failed (continuing): ${a.message}`)}!function(a){a.exec((0,i.zE)("_meta",i.CG._meta));let b=parseInt((0,u.dy)(a,"schemaVersion","0"),10)||0;if(b>=(t.length?t[t.length-1].version:0))return;let c=t.filter(a=>a.version>b);for(let b of c)a.transaction(()=>{b.up(a),(0,u.np)(a,"schemaVersion",b.version)}),b.version,console.log(`[DB][migrate] applied #${b.version} ${b.name}`);c.length}(a);for(let[b,c]of Object.entries(i.CG)){a.exec((0,i.zE)(b,c));let d=new Set(a.all(`PRAGMA table_info(${b})`).map(a=>a.name));for(let[e,f]of Object.entries(c.columns))if(!d.has(e)){let c=f.replace(/PRIMARY KEY( AUTOINCREMENT)?/i,"").replace(/UNIQUE/i,"").trim();try{a.exec(`ALTER TABLE ${b} ADD COLUMN ${e} ${c}`),console.log(`[DB][sync] +column ${b}.${e}`)}catch(a){console.warn(`[DB][sync] add column ${b}.${e} failed: ${a.message}`)}}for(let b of c.indexes||[])try{a.exec(b)}catch{}}(0,u.np)(a,"backupSchemaVersion",i.f$);let d=e().existsSync(B),f=F(h.Or.main),j=F(h.Or.usage),k=F(h.Or.disabled),m=F(h.Or.details);if(b&&(f||j||k||m)&&!d){let b=Date.now(),c=y("migrate-from-json");for(let a of Object.values(h.Or))!function(a,b,c=null){if(!e().existsSync(a))return;let d=c||g().basename(a),f=g().join(b,d);e().copyFileSync(a,f)}(a,c);try{a.transaction(()=>{if(f&&"object"==typeof f){for(let[b,c]of(f.settings&&a.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,A.s)(f.settings)]),E(a,"providerConnections",f.providerConnections||[],b=>{let{id:c,provider:d,authType:e,name:f,email:g,priority:h,isActive:i,createdAt:j,updatedAt:k,...m}=b;a.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[c,d,e||"oauth",f||null,g||null,h||null,+(!1!==i),(0,A.s)((0,l.Wl)(m)),j||new Date().toISOString(),k||new Date().toISOString()])},a=>({id:a.id??null,provider:a.provider??null,name:a.name??null})),E(a,"providerNodes",f.providerNodes||[],b=>{let{id:c,type:d,name:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,d||null,e||null,(0,A.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null,type:a.type??null,name:a.name??null})),E(a,"proxyPools",f.proxyPools||[],b=>{let{id:c,isActive:d,testStatus:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,+(!1!==d),e||"unknown",(0,A.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null})),E(a,"apiKeys",f.apiKeys||[],b=>{a.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.key,b.name||null,b.machineId||null,+(!1!==b.isActive),b.createdAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),E(a,"combos",f.combos||[],b=>{a.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.name,b.kind||null,(0,A.s)(b.models||[]),b.createdAt||new Date().toISOString(),b.updatedAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),Object.entries(f.modelAliases||{})))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[b,(0,A.s)(c)]);for(let b of f.customModels||[]){let c=`${b.providerAlias}|${b.id}|${b.type||"llm"}`;a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[c,(0,A.s)(b)])}for(let[b,c]of Object.entries(f.mitmAlias||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[b,(0,A.s)(c||{})]);for(let[b,c]of Object.entries(f.pricing||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[b,(0,A.s)(c||{})])}if(j&&"object"==typeof j){for(let b of j.history||[]){let c=b.tokens||{};a.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.apiKey||null,b.endpoint||null,c.prompt_tokens||c.input_tokens||0,c.completion_tokens||c.output_tokens||0,b.cost||0,b.status||"ok",(0,A.s)(c),(0,A.s)({})])}for(let[b,c]of Object.entries(j.dailySummary||{}))a.run("INSERT OR REPLACE INTO usageDaily(dateKey, data) VALUES(?, ?)",[b,(0,A.s)(c)]);"number"==typeof j.totalRequestsLifetime&&(0,u.np)(a,"totalRequestsLifetime",j.totalRequestsLifetime)}if(k&&"object"==typeof k.disabled)for(let[b,c]of Object.entries(k.disabled))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('disabledModels', ?, ?)",[b,(0,A.s)(c||[])]);if(m&&Array.isArray(m.records))for(let b of m.records)a.run("INSERT OR REPLACE INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?)",[b.id,b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.status||null,(0,A.s)(b)]);(0,u.np)(a,"appVersion",w()),(0,u.np)(a,"backupSchemaVersion",i.f$),(0,u.np)(a,"migratedAt",new Date().toISOString())})}catch(a){if(a instanceof D)return void console.error(`[DB][migrate] aborted: ${a.message} | legacy JSON kept | backup: ${c}`);throw a}try{e().writeFileSync(B,new Date().toISOString())}catch{}z(),console.log(`[DB][migrate] JSON → SQLite in ${Date.now()-b}ms | legacy JSON kept at DATA_DIR | backup: ${c}`);return}let n=w();(0,u.dy)(a,"appVersion",null)!==n&&(0,u.np)(a,"appVersion",n)}},76040:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=3,e=`
2
- PRAGMA journal_mode = WAL;
3
- PRAGMA synchronous = NORMAL;
4
- PRAGMA temp_store = MEMORY;
5
- PRAGMA mmap_size = 30000000;
6
- PRAGMA cache_size = -64000;
7
- PRAGMA foreign_keys = ON;
8
- PRAGMA busy_timeout = 5000;
9
- `,f={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",dailyTokenLimit:"INTEGER",allowedModels:"TEXT",allowedCombos:"TEXT",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyHash:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)","CREATE INDEX IF NOT EXISTS idx_uh_apikey_hash ON usageHistory(apiKeyHash)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function g(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}}};
@@ -1,9 +0,0 @@
1
- "use strict";exports.id=976,exports.ids=[976],exports.modules={2521:(a,b,c)=>{c.d(b,{f0:()=>h,kk:()=>g,oO:()=>f});var d=c(77598),e=c.n(d);function f(a){if(!a||"string"!=typeof a)return null;let b=a.trim();return b.length<=12?b.charAt(0)+"***":b.slice(0,8)+"***"+b.slice(-4)}function g(a){return a&&"string"==typeof a?e().createHash("sha256").update(a.trim()).digest("hex"):null}function h(a){return"string"==typeof a&&a.includes("***")}},20976:(a,b,c)=>{c.d(b,{runMigrationOnce:()=>G});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(95658),i=c(63775);let j="stepfun",k="stepfun-cn";var l=c(72082),m=c(2521);let n=["mimoPassToken","mimoUserId","mimoCUserId"],o=new Set(["Xiaomi MiMo Desktop","Xiaomi MiMo Desktop Session"]),p="mimo-desktop-session";function q(a){if(!(0,l.isEncrypted)(a))return{ok:!0,value:a};try{return{ok:!0,value:(0,l.decryptSecret)(a)}}catch{return{ok:!1,value:a}}}function r(a){try{return JSON.parse(a.data||"{}")}catch{return null}}function s(a,b=null){let c=a?.providerSpecificData||{},d=q("string"==typeof a?.accessToken?a.accessToken:null),e="string"==typeof c.uid||"number"==typeof c.uid?String(c.uid):null,f="string"==typeof c.mimoUserId||"number"==typeof c.mimoUserId?String(c.mimoUserId):null,g=c.mimoPassToken;return{token:d.ok?d.value:null,uid:e,mu:f,email:"string"==typeof b&&b?b:null,hasSession:null!=g&&""!==g&&q(g).ok}}let t=[{version:1,name:"initial",up(a){for(let[b,c]of Object.entries(i.CG))for(let d of(a.exec((0,i.zE)(b,c)),c.indexes||[]))a.exec(d)}},{version:2,name:"stepfun-cn-rename",up(a){let b;for(let b of(a.run("UPDATE providerConnections SET provider = ? WHERE provider = ?",[k,j]),a.run("UPDATE kv SET key = ? WHERE scope = 'disabledModels' AND key = ?",[k,j]),["modelCaps","customModels"]))a.run("UPDATE kv SET key = ? || substr(key, ?) WHERE scope = ? AND key LIKE ?",[k,j.length+1,b,`${j}|%`]);let c=a.get("SELECT data FROM settings WHERE id = 1");if(!c?.data)return;try{b=JSON.parse(c.data)}catch{return}if(!b||"object"!=typeof b)return;let d=!1;if(Array.isArray(b.providerCardOrder)){let a=b.providerCardOrder.map(a=>a===j?k:a);a.some((a,c)=>a!==b.providerCardOrder[c])&&(b.providerCardOrder=a,d=!0)}for(let a of["topologyVisibility","providerStrategies"]){let c=b[a];c&&"object"==typeof c&&Object.prototype.hasOwnProperty.call(c,j)&&(k in c||(c[k]=c[j]),delete c[j],d=!0)}d&&a.run("UPDATE settings SET data = ? WHERE id = 1",[JSON.stringify(b)])}},{version:3,name:"encrypt-credentials",up(a){let b;try{b=a.all("SELECT id, data FROM providerConnections")}catch(a){console.warn("[migration] encrypt-credentials: could not read connections:",a?.message||a);return}let c=0,d=0;for(let e of b){let b;try{b=JSON.parse(e.data||"{}")}catch{continue}if((0,l.connectionDataHasPlaintextSecrets)(b))try{a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify((0,l.encryptConnectionData)(b)),e.id]),c+=1}catch(a){1===(d+=1)&&console.warn("[migration] encrypt-credentials: could not encrypt a connection — credentials stay in plain text until they are rewritten:",a?.message||a)}}c&&console.log(`[migration] encrypt-credentials: encrypted ${c} connection row(s)`),d&&console.warn(`[migration] encrypt-credentials: ${d} row(s) left in plain text`)}},{version:4,name:"usage-apikey-digest",up(a){try{a.all("PRAGMA table_info(usageHistory)").map(a=>a.name).includes("apiKeyHash")||(a.exec("ALTER TABLE usageHistory ADD COLUMN apiKeyHash TEXT"),console.log("[migration] usage-apikey-digest: added usageHistory.apiKeyHash")),a.exec("CREATE INDEX IF NOT EXISTS idx_uh_apikey_hash ON usageHistory(apiKeyHash)")}catch(a){console.warn("[migration] usage-apikey-digest: could not ensure apiKeyHash column:",a?.message||a)}let b=0;try{for(let c of a.all("SELECT id, apiKey FROM usageHistory WHERE apiKey IS NOT NULL AND apiKey != ''"))(0,m.f0)(c.apiKey)||(a.run("UPDATE usageHistory SET apiKey = ?, apiKeyHash = ? WHERE id = ?",[(0,m.oO)(c.apiKey),(0,m.kk)(c.apiKey),c.id]),b+=1)}catch(a){console.warn("[migration] usage-apikey-digest: history rows skipped:",a?.message||a)}let c=0;try{for(let b of a.all("SELECT dateKey, data FROM usageDaily")){let d;try{d=JSON.parse(b.data||"{}")}catch{continue}let e=d?.byApiKey;if(!e||"object"!=typeof e)continue;let f={},g=!1;for(let[a,b]of Object.entries(e)){if(!b||"object"!=typeof b){f[a]=b;continue}let c="string"==typeof b.apiKey?b.apiKey:null;if(!c&&b.apiKeyHash||!c){f[a]=b;continue}let{apiKey:d,...e}=b,h=(0,m.kk)(c),i=a.split("|"),j=i.length>1?"|"+i.slice(1).join("|"):"";f[`${h||"local-no-key"}${j}`]={...e,apiKeyHash:h,apiKeyMasked:(0,m.oO)(c)},g=!0}g&&(a.run("UPDATE usageDaily SET data = ? WHERE dateKey = ?",[JSON.stringify({...d,byApiKey:f}),b.dateKey]),c+=1)}}catch(a){console.warn("[migration] usage-apikey-digest: daily aggregates skipped:",a?.message||a)}(b||c)&&console.log(`[migration] usage-apikey-digest: rewrote ${b} history row(s), ${c} day aggregate(s)`)}},{version:5,name:"strip-mimo-main-card-session",up(a){let b,c;try{b=a.all("SELECT id, email, data FROM providerConnections WHERE provider = 'xiaomi-mimo'"),c=a.all("SELECT id, email, data FROM providerConnections WHERE provider = 'mimo-desktop'")}catch(a){console.warn("[migration] strip-mimo-main-card-session: could not read connections:",a?.message||a);return}let d=c.map(a=>{let b=r(a);return b?s(b,a.email):null}).filter(Boolean),e=0,f=0,g=0,h=0;for(let c of b){let b=r(c);if(!b||"object"!=typeof b)continue;let i=b.providerSpecificData&&"object"==typeof b.providerSpecificData?b.providerSpecificData:{};if(!(n.some(a=>void 0!==i[a]&&null!==i[a]&&""!==i[a])||o.has(i.provider)||"desktop-session"===i.authMethod||"string"==typeof b.accessToken&&b.accessToken.startsWith(p)))continue;let j=q("string"==typeof b.accessToken?b.accessToken:null);if(!j.ok||i.mimoPassToken&&!q(i.mimoPassToken).ok){h+=1;continue}if(!("string"!=typeof j.value||""===j.value||j.value.startsWith(p))){let d=function(a){let b={...a};for(let a of n)delete b[a];return o.has(b.provider)&&delete b.provider,b}(i);"desktop-session"===d.authMethod&&(d.authMethod="api_key"),a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify((0,l.encryptConnectionData)({...b,providerSpecificData:d})),c.id]),e+=1;continue}let k=s(b,c.email);if(d.find(a=>(!!a.token&&!!k.token&&a.token===k.token||!!a.uid&&!!k.uid&&a.uid===k.uid||!!a.mu&&!!k.mu&&a.mu===k.mu||!!a.uid&&!!k.mu&&a.uid===k.mu||!!a.mu&&!!k.uid&&a.mu===k.uid||!!a.email&&!!k.email&&a.email===k.email||!1)&&a.hasSession)){a.run("DELETE FROM providerConnections WHERE id = ?",[c.id]),g+=1;continue}a.run("UPDATE providerConnections SET provider = 'mimo-desktop', data = ? WHERE id = ?",[JSON.stringify((0,l.encryptConnectionData)(b)),c.id]),f+=1}(e||f||g||h)&&console.log(`[migration] strip-mimo-main-card-session: stripped ${e} cloud row(s), moved ${f} session-only row(s) to mimo-desktop, removed ${g} duplicate row(s)`+(h?`, ${h} row(s) left untouched (undecryptable credentials)`:""))}},{version:6,name:"mimo-desktop-session-active",up(a){let b;try{b=a.all("SELECT id, data FROM providerConnections WHERE provider = 'mimo-desktop'")}catch(a){console.warn("[migration] mimo-desktop-session-active: could not read connections:",a?.message||a);return}for(let c of b)try{let b=JSON.parse(c.data);if("untested"!==b.testStatus)continue;b.testStatus="active",a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify(b),c.id])}catch{}}}].sort((a,b)=>a.version-b.version);var u=c(62674);let v=null;function w(){if(v)return v;try{let a=g().join(process.cwd(),"package.json");v=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{v="0.0.0"}return v}let x=["requestDetails"];function y(a){(0,h.Jh)();let b=w(),c=`${a}-${b}-${function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}()}`,d=g().join(h.KQ,c);return e().mkdirSync(d,{recursive:!0}),d}function z(){if(e().existsSync(h.KQ))for(let a of e().readdirSync(h.KQ,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>({name:a.name,full:g().join(h.KQ,a.name),mtime:e().statSync(g().join(h.KQ,a.name)).mtimeMs})).sort((a,b)=>b.mtime-a.mtime).slice(3))try{e().rmSync(a.full,{recursive:!0,force:!0})}catch{}}var A=c(644);let B=g().join(h.HG,".migrated-from-json"),C=new WeakSet;class D extends Error{constructor(a,b){super(a),this.name="MigrationAborted",this.droppedRows=b}}function E(a,b,c,d,e){let f=[];for(let a of c)try{d(a)}catch(b){f.push({...e(a),reason:b.message})}let g=a.get(`SELECT COUNT(*) as c FROM ${b}`)?.c??0;if(g!==c.length)throw console.warn(`[DB][migrate] ${b} row-count mismatch: expected ${c.length}, got ${g}. Dropped:`,f),new D(`${b} row-count mismatch: expected ${c.length}, got ${g}`,f)}function F(a){if(!e().existsSync(a))return null;try{return JSON.parse(e().readFileSync(a,"utf-8"))}catch{return null}}async function G(a){if(C.has(a))return;C.add(a);let b=function(a){try{let b=a.get("SELECT COUNT(*) as c FROM _meta");return!b||0===b.c}catch{return!0}}(a);z(),a.exec((0,i.zE)("_meta",i.CG._meta));let c=parseInt((0,u.dy)(a,"backupSchemaVersion","0"),10)||0;if(!b&&c<i.f$)try{let b=y(`schema-${c}-to-${i.f$}`);!function(a,b,c="data.sqlite"){let d=g().join(b,c);try{e().rmSync(d,{force:!0})}catch{}let f=d.replace(/'/g,"''");a.exec(`ATTACH DATABASE '${f}' AS bak`);try{let b=new Set(x),c=a.all("SELECT name, sql FROM main.sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'").filter(a=>!b.has(a.name));a.transaction(()=>{for(let b of c){let c=b.sql.replace(/CREATE TABLE\s+/i,"CREATE TABLE bak.");a.exec(c),a.exec(`INSERT INTO bak.${b.name} SELECT * FROM main.${b.name}`)}})}finally{try{a.exec("DETACH DATABASE bak")}catch{}}}(a,b),z(),console.log(`[DB][migrate] pre-schema backup ${c} → ${i.f$}: ${b}`)}catch(a){console.warn(`[DB][migrate] pre-schema backup failed (continuing): ${a.message}`)}!function(a){a.exec((0,i.zE)("_meta",i.CG._meta));let b=parseInt((0,u.dy)(a,"schemaVersion","0"),10)||0;if(b>=(t.length?t[t.length-1].version:0))return;let c=t.filter(a=>a.version>b);for(let b of c)a.transaction(()=>{b.up(a),(0,u.np)(a,"schemaVersion",b.version)}),b.version,console.log(`[DB][migrate] applied #${b.version} ${b.name}`);c.length}(a);for(let[b,c]of Object.entries(i.CG)){a.exec((0,i.zE)(b,c));let d=new Set(a.all(`PRAGMA table_info(${b})`).map(a=>a.name));for(let[e,f]of Object.entries(c.columns))if(!d.has(e)){let c=f.replace(/PRIMARY KEY( AUTOINCREMENT)?/i,"").replace(/UNIQUE/i,"").trim();try{a.exec(`ALTER TABLE ${b} ADD COLUMN ${e} ${c}`),console.log(`[DB][sync] +column ${b}.${e}`)}catch(a){console.warn(`[DB][sync] add column ${b}.${e} failed: ${a.message}`)}}for(let b of c.indexes||[])try{a.exec(b)}catch{}}(0,u.np)(a,"backupSchemaVersion",i.f$);let d=e().existsSync(B),f=F(h.Or.main),j=F(h.Or.usage),k=F(h.Or.disabled),m=F(h.Or.details);if(b&&(f||j||k||m)&&!d){let b=Date.now(),c=y("migrate-from-json");for(let a of Object.values(h.Or))!function(a,b,c=null){if(!e().existsSync(a))return;let d=c||g().basename(a),f=g().join(b,d);e().copyFileSync(a,f)}(a,c);try{a.transaction(()=>{if(f&&"object"==typeof f){for(let[b,c]of(f.settings&&a.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,A.s)(f.settings)]),E(a,"providerConnections",f.providerConnections||[],b=>{let{id:c,provider:d,authType:e,name:f,email:g,priority:h,isActive:i,createdAt:j,updatedAt:k,...m}=b;a.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[c,d,e||"oauth",f||null,g||null,h||null,+(!1!==i),(0,A.s)((0,l.encryptConnectionData)(m)),j||new Date().toISOString(),k||new Date().toISOString()])},a=>({id:a.id??null,provider:a.provider??null,name:a.name??null})),E(a,"providerNodes",f.providerNodes||[],b=>{let{id:c,type:d,name:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,d||null,e||null,(0,A.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null,type:a.type??null,name:a.name??null})),E(a,"proxyPools",f.proxyPools||[],b=>{let{id:c,isActive:d,testStatus:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,+(!1!==d),e||"unknown",(0,A.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null})),E(a,"apiKeys",f.apiKeys||[],b=>{a.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.key,b.name||null,b.machineId||null,+(!1!==b.isActive),b.createdAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),E(a,"combos",f.combos||[],b=>{a.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.name,b.kind||null,(0,A.s)(b.models||[]),b.createdAt||new Date().toISOString(),b.updatedAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),Object.entries(f.modelAliases||{})))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[b,(0,A.s)(c)]);for(let b of f.customModels||[]){let c=`${b.providerAlias}|${b.id}|${b.type||"llm"}`;a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[c,(0,A.s)(b)])}for(let[b,c]of Object.entries(f.mitmAlias||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[b,(0,A.s)(c||{})]);for(let[b,c]of Object.entries(f.pricing||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[b,(0,A.s)(c||{})])}if(j&&"object"==typeof j){for(let b of j.history||[]){let c=b.tokens||{};a.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.apiKey||null,b.endpoint||null,c.prompt_tokens||c.input_tokens||0,c.completion_tokens||c.output_tokens||0,b.cost||0,b.status||"ok",(0,A.s)(c),(0,A.s)({})])}for(let[b,c]of Object.entries(j.dailySummary||{}))a.run("INSERT OR REPLACE INTO usageDaily(dateKey, data) VALUES(?, ?)",[b,(0,A.s)(c)]);"number"==typeof j.totalRequestsLifetime&&(0,u.np)(a,"totalRequestsLifetime",j.totalRequestsLifetime)}if(k&&"object"==typeof k.disabled)for(let[b,c]of Object.entries(k.disabled))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('disabledModels', ?, ?)",[b,(0,A.s)(c||[])]);if(m&&Array.isArray(m.records))for(let b of m.records)a.run("INSERT OR REPLACE INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?)",[b.id,b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.status||null,(0,A.s)(b)]);(0,u.np)(a,"appVersion",w()),(0,u.np)(a,"backupSchemaVersion",i.f$),(0,u.np)(a,"migratedAt",new Date().toISOString())})}catch(a){if(a instanceof D)return void console.error(`[DB][migrate] aborted: ${a.message} | legacy JSON kept | backup: ${c}`);throw a}try{e().writeFileSync(B,new Date().toISOString())}catch{}z(),console.log(`[DB][migrate] JSON → SQLite in ${Date.now()-b}ms | legacy JSON kept at DATA_DIR | backup: ${c}`);return}let n=w();(0,u.dy)(a,"appVersion",null)!==n&&(0,u.np)(a,"appVersion",n)}},62674:(a,b,c)=>{c.d(b,{IQ:()=>e,RI:()=>h,dy:()=>i,iZ:()=>f,np:()=>j,vq:()=>g});var d=c(36366);async function e(a,b=null){let c=(await (0,d.cK)()).get("SELECT value FROM _meta WHERE key = ?",[a]);return c?c.value:b}async function f(a,b){(await (0,d.cK)()).run("INSERT INTO _meta(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[a,String(b)])}async function g(a){(await (0,d.cK)()).run("DELETE FROM _meta WHERE key = ?",[a])}async function h(a){return(await (0,d.cK)()).all("SELECT key, value FROM _meta WHERE key LIKE ?",[`${a}%`])}function i(a,b,c=null){let d=a.get("SELECT value FROM _meta WHERE key = ?",[b]);return d?d.value:c}function j(a,b,c){a.run("INSERT INTO _meta(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[b,String(c)])}},63775:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=3,e=`
2
- PRAGMA journal_mode = WAL;
3
- PRAGMA synchronous = NORMAL;
4
- PRAGMA temp_store = MEMORY;
5
- PRAGMA mmap_size = 30000000;
6
- PRAGMA cache_size = -64000;
7
- PRAGMA foreign_keys = ON;
8
- PRAGMA busy_timeout = 5000;
9
- `,f={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",dailyTokenLimit:"INTEGER",allowedModels:"TEXT",allowedCombos:"TEXT",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyHash:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)","CREATE INDEX IF NOT EXISTS idx_uh_apikey_hash ON usageHistory(apiKeyHash)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function g(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},72082:(a,b,c)=>{c.r(b),c.d(b,{CONNECTION_SECRET_FIELDS:()=>n,CredentialCryptoError:()=>q,UNREADABLE_CREDENTIALS_KEY:()=>z,connectionDataHasPlaintextSecrets:()=>D,decryptConnectionData:()=>B,decryptSecret:()=>v,encryptConnectionData:()=>y,encryptSecret:()=>u,getCredentialKey:()=>s,hasUnreadableCredentials:()=>A,isEncrypted:()=>r,resetCredentialKeyCache:()=>t,restoreUnreadableCredentials:()=>C});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(49120),k=c(77134);let l="enc:v1:",m="aes-256-gcm",n=["accessToken","refreshToken","idToken","apiKey"],o=/(token|secret|password|cookie|credential|api[-_]?key|proxyurl)/i,p=null;class q extends Error{constructor(a){super(a),this.name="CredentialCryptoError"}}function r(a){return"string"==typeof a&&a.startsWith(l)}function s(){if(p)return p;let a=process.env.CREDENTIAL_SECRET;if("string"==typeof a&&a.trim())return p=e().createHash("sha256").update(a.trim()).digest();let b=i().join(j.nJ,"credential-key");try{let a=g().readFileSync(b,"utf8").trim();if(a)return p=e().createHash("sha256").update(a).digest()}catch{}g().mkdirSync(j.nJ,{recursive:!0});let c=e().randomBytes(32).toString("hex");return g().writeFileSync(b,c,{mode:384}),(0,k.E)(b),p=e().createHash("sha256").update(c).digest()}function t(){p=null}function u(a){if("string"!=typeof a||""===a||r(a))return a;let b=e().randomBytes(12),c=e().createCipheriv(m,s(),b),d=Buffer.concat([c.update(a,"utf8"),c.final()]);return`${l}${b.toString("base64url")}:${c.getAuthTag().toString("base64url")}:${d.toString("base64url")}`}function v(a){if("string"!=typeof a||!r(a))return a;let b=a.slice(l.length).split(":");if(3!==b.length)throw new q("stored credential is malformed");let[c,d,f]=b;try{let a=e().createDecipheriv(m,s(),Buffer.from(c,"base64url"));return a.setAuthTag(Buffer.from(d,"base64url")),Buffer.concat([a.update(Buffer.from(f,"base64url")),a.final()]).toString("utf8")}catch{throw new q("stored credential cannot be decrypted with the current key")}}function w(a){return a&&"object"==typeof a?Object.keys(a).filter(b=>o.test(b)&&"string"==typeof a[b]):[]}function x(a){return w(a).filter(b=>""!==a[b])}function y(a){if(!a||"object"!=typeof a)return a;let b={...a};for(let a of n)"string"==typeof b[a]&&(b[a]=u(b[a]));let c=w(b.providerSpecificData);if(c.length){let a={...b.providerSpecificData};for(let b of c)a[b]=u(a[b]);b.providerSpecificData=a}return b}let z="__unreadableCredentials";function A(a){return!!(a&&"object"==typeof a&&a[z])}function B(a){if(!a||"object"!=typeof a)return{data:a,error:null,unreadable:null};let b={...a},c=null,d=null,e=(a,b,c)=>{d||(d={}),d[a]||(d[a]={}),d[a][b]=c};for(let a of n)if(r(b[a]))try{b[a]=v(b[a])}catch(d){e("fields",a,b[a]),delete b[a],c=d.message}let f=x(b.providerSpecificData).filter(a=>r(b.providerSpecificData[a]));if(f.length){let a={...b.providerSpecificData};for(let b of f)try{a[b]=v(a[b])}catch(d){e("providerSpecificData",b,a[b]),delete a[b],c=d.message}b.providerSpecificData=a}return{data:b,error:c,unreadable:d}}function C(a){if(!a||"object"!=typeof a||!a[z])return a;let{[z]:b,...c}=a,d=a=>null==a||""===a;for(let[a,e]of Object.entries(b.fields||{}))d(c[a])&&(c[a]=e);let e=b.providerSpecificData||{};if(Object.keys(e).length){let a={...c.providerSpecificData||{}};for(let[b,c]of Object.entries(e))d(a[b])&&(a[b]=c);c.providerSpecificData=a}let f=b.synthesized;return f&&(c.testStatus===f.testStatus&&delete c.testStatus,c.lastError===f.lastError&&delete c.lastError),c}function D(a){if(!a||"object"!=typeof a)return!1;for(let b of n)if("string"==typeof a[b]&&""!==a[b]&&!r(a[b]))return!0;return x(a.providerSpecificData).some(b=>!r(a.providerSpecificData[b]))}},77134:(a,b,c)=>{c.d(b,{E:()=>i});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(31421);function i(a){if(a){if("win32"===process.platform){try{let b=[process.env.USERDOMAIN,process.env.USERNAME].filter(Boolean).join("\\")||g().userInfo().username;(0,h.execFileSync)("icacls",[a,"/inheritance:r","/grant:r",`${b}:(F)`],{stdio:"ignore",windowsHide:!0})}catch(b){console.warn(`⚠️ Could not restrict ACLs on ${a}: ${b.message}`)}return}try{e().chmodSync(a,384)}catch(b){console.warn(`⚠️ Could not restrict permissions on ${a}: ${b.message}`)}}}}};