@techysy/10router 1.3.6 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (656) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +5 -5
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/prerender-manifest.json +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/experimental/page.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/experimental/page.js.nft.json +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/experimental/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +4 -4
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  77. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  79. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  80. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  81. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  82. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  83. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  84. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  85. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  87. package/app/.next-cli-build/server/app/_not-found.html +2 -2
  88. package/app/.next-cli-build/server/app/_not-found.rsc +6 -6
  89. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +6 -6
  90. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -6
  91. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  92. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  93. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  96. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  98. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  100. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
  102. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js +1 -1
  104. package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js +2 -2
  106. package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/auth/saml/start/route.js +2 -2
  108. package/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/auth/saml/test/route.js +2 -2
  110. package/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/auth/verify-password/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/auth/verify-password/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +1 -1
  116. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  118. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/claude-profiles/route.js +2 -2
  122. package/app/.next-cli-build/server/app/api/cli-tools/claude-profiles/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  130. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  143. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  145. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/gateway-probe/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  149. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  151. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  153. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  155. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  160. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/keys/rotate/route.js +1 -1
  162. package/app/.next-cli-build/server/app/api/keys/rotate/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  164. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  175. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  177. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  179. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  181. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/models/caps/route.js +1 -1
  183. package/app/.next-cli-build/server/app/api/models/caps/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/models/custom/bulk/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  186. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  188. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  190. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  192. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/network/egress-region/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  195. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/checkin/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/checkin/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/export/route.js +1 -1
  201. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/export/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  203. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  208. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  210. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  212. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  214. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  217. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  219. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  221. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  223. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/oauth/qoder/checkin/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/oauth/qoder-cn/checkin/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/oauth/transfer/export/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/oauth/transfer/export/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/oauth/transfer/import/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/oauth/transfer/import/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +1 -1
  233. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/desktop-kill/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/desktop-status/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js +1 -1
  238. package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  240. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  242. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  244. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  246. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  248. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  252. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  254. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  256. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  259. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  262. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  264. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  266. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  272. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  274. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  276. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
  282. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  285. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/security/status/route.js +1 -1
  288. package/app/.next-cli-build/server/app/api/security/status/route.js.nft.json +1 -1
  289. package/app/.next-cli-build/server/app/api/settings/database/import-usage/route.js +1 -1
  290. package/app/.next-cli-build/server/app/api/settings/database/import-usage/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  292. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  293. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  295. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/settings/route.js +2 -2
  297. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  301. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  303. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  305. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  306. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  307. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  309. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  310. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  311. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  312. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  313. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  314. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  315. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  316. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  317. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  318. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  319. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  320. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  321. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  322. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +1 -1
  323. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  324. package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js +1 -1
  325. package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js.nft.json +1 -1
  326. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  327. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  328. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  329. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  330. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  331. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  332. package/app/.next-cli-build/server/app/api/usage/dashboard/route.js +1 -1
  333. package/app/.next-cli-build/server/app/api/usage/dashboard/route.js.nft.json +1 -1
  334. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  335. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  336. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  337. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  338. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  339. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  340. package/app/.next-cli-build/server/app/api/usage/quotas/route.js +1 -1
  341. package/app/.next-cli-build/server/app/api/usage/quotas/route.js.nft.json +1 -1
  342. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  343. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  344. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  345. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  346. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  347. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  348. package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  349. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  350. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  351. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  352. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  353. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  354. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  355. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  356. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  357. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  358. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  359. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  360. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  361. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  362. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  363. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  364. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  365. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  366. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  367. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  368. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  369. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  370. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  371. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  372. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  373. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  374. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  375. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  376. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  377. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  378. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  379. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  380. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  381. package/app/.next-cli-build/server/app/api/v1/systemone/route.js +1 -1
  382. package/app/.next-cli-build/server/app/api/v1/systemone/route.js.nft.json +1 -1
  383. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  384. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  385. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  386. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  387. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  388. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  389. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  390. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  391. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  392. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  393. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  394. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  395. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  396. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  397. package/app/.next-cli-build/server/app/api/version/route.js +2 -2
  398. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  399. package/app/.next-cli-build/server/app/api/version/shell-update/route.js.nft.json +1 -1
  400. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  401. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  402. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  403. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  404. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  405. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  406. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  407. package/app/.next-cli-build/server/app/callback.html +2 -2
  408. package/app/.next-cli-build/server/app/callback.rsc +6 -6
  409. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +6 -6
  410. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  411. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +6 -6
  412. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +2 -2
  413. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +8 -8
  414. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +8 -8
  415. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +8 -8
  416. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  417. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +2 -2
  418. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +8 -8
  419. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +8 -8
  420. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
  421. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  422. package/app/.next-cli-build/server/app/dashboard/combos.html +2 -2
  423. package/app/.next-cli-build/server/app/dashboard/combos.rsc +8 -8
  424. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +8 -8
  425. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
  426. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  427. package/app/.next-cli-build/server/app/dashboard/endpoint.html +2 -2
  428. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +8 -8
  429. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +8 -8
  430. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
  431. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  432. package/app/.next-cli-build/server/app/dashboard/experimental.html +2 -2
  433. package/app/.next-cli-build/server/app/dashboard/experimental.rsc +8 -8
  434. package/app/.next-cli-build/server/app/dashboard/experimental.segments/!KGRhc2hib2FyZCk/dashboard/experimental/__PAGE__.segment.rsc +8 -8
  435. package/app/.next-cli-build/server/app/dashboard/experimental.segments/_full.segment.rsc +8 -8
  436. package/app/.next-cli-build/server/app/dashboard/experimental.segments/_tree.segment.rsc +2 -2
  437. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +2 -2
  438. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +8 -8
  439. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +8 -8
  440. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +8 -8
  441. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  442. package/app/.next-cli-build/server/app/dashboard/mitm.html +2 -2
  443. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +8 -8
  444. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +8 -8
  445. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +8 -8
  446. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  447. package/app/.next-cli-build/server/app/dashboard/profile.html +2 -2
  448. package/app/.next-cli-build/server/app/dashboard/profile.rsc +8 -8
  449. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +8 -8
  450. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
  451. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  452. package/app/.next-cli-build/server/app/dashboard/providers/new.html +2 -2
  453. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +8 -8
  454. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +8 -8
  455. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
  456. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  457. package/app/.next-cli-build/server/app/dashboard/providers.html +2 -2
  458. package/app/.next-cli-build/server/app/dashboard/providers.rsc +8 -8
  459. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +8 -8
  460. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
  461. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  462. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +2 -2
  463. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +8 -8
  464. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +8 -8
  465. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
  466. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  467. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +2 -2
  468. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +8 -8
  469. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +8 -8
  470. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +8 -8
  471. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  472. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  473. package/app/.next-cli-build/server/app/dashboard/quota.rsc +9 -9
  474. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +9 -9
  475. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
  476. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  477. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  478. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  479. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  480. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +2 -2
  481. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +6 -6
  482. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -6
  483. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  484. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +6 -6
  485. package/app/.next-cli-build/server/app/dashboard/skills.html +2 -2
  486. package/app/.next-cli-build/server/app/dashboard/skills.rsc +8 -8
  487. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +8 -8
  488. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +8 -8
  489. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  490. package/app/.next-cli-build/server/app/dashboard/token-saver.html +2 -2
  491. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +8 -8
  492. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +8 -8
  493. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +8 -8
  494. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  495. package/app/.next-cli-build/server/app/dashboard/translator.html +2 -2
  496. package/app/.next-cli-build/server/app/dashboard/translator.rsc +8 -8
  497. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +8 -8
  498. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +8 -8
  499. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  500. package/app/.next-cli-build/server/app/dashboard/usage.html +2 -2
  501. package/app/.next-cli-build/server/app/dashboard/usage.rsc +8 -8
  502. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +8 -8
  503. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
  504. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  505. package/app/.next-cli-build/server/app/dashboard.html +2 -2
  506. package/app/.next-cli-build/server/app/dashboard.rsc +8 -8
  507. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +8 -8
  508. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +8 -8
  509. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  510. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  511. package/app/.next-cli-build/server/app/index.html +1 -1
  512. package/app/.next-cli-build/server/app/index.rsc +6 -6
  513. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +6 -6
  514. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +6 -6
  515. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  516. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  517. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  518. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  519. package/app/.next-cli-build/server/app/landing.html +2 -2
  520. package/app/.next-cli-build/server/app/landing.rsc +6 -6
  521. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
  522. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  523. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +6 -6
  524. package/app/.next-cli-build/server/app/login/page.js +1 -1
  525. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  526. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  527. package/app/.next-cli-build/server/app/login.html +2 -2
  528. package/app/.next-cli-build/server/app/login.rsc +7 -7
  529. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +7 -7
  530. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  531. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +7 -7
  532. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  533. package/app/.next-cli-build/server/app/page.js +1 -1
  534. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  535. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  536. package/app/.next-cli-build/server/app-paths-manifest.json +5 -5
  537. package/app/.next-cli-build/server/chunks/1329.js +1 -1
  538. package/app/.next-cli-build/server/chunks/1345.js +1 -0
  539. package/app/.next-cli-build/server/chunks/1386.js +2 -2
  540. package/app/.next-cli-build/server/chunks/1806.js +1 -0
  541. package/app/.next-cli-build/server/chunks/2112.js +1 -1
  542. package/app/.next-cli-build/server/chunks/2557.js +9 -0
  543. package/app/.next-cli-build/server/chunks/2752.js +1 -0
  544. package/app/.next-cli-build/server/chunks/2926.js +1 -1
  545. package/app/.next-cli-build/server/chunks/2978.js +1 -0
  546. package/app/.next-cli-build/server/chunks/3256.js +1 -1
  547. package/app/.next-cli-build/server/chunks/3593.js +2 -2
  548. package/app/.next-cli-build/server/chunks/3659.js +1 -0
  549. package/app/.next-cli-build/server/chunks/3662.js +1 -0
  550. package/app/.next-cli-build/server/chunks/3792.js +1 -1
  551. package/app/.next-cli-build/server/chunks/3943.js +1 -1
  552. package/app/.next-cli-build/server/chunks/3962.js +1 -0
  553. package/app/.next-cli-build/server/chunks/4008.js +1 -1
  554. package/app/.next-cli-build/server/chunks/4123.js +1 -1
  555. package/app/.next-cli-build/server/chunks/4293.js +1 -1
  556. package/app/.next-cli-build/server/chunks/4692.js +6 -0
  557. package/app/.next-cli-build/server/chunks/4739.js +2 -2
  558. package/app/.next-cli-build/server/chunks/4780.js +2 -2
  559. package/app/.next-cli-build/server/chunks/4803.js +2 -2
  560. package/app/.next-cli-build/server/chunks/4927.js +3 -3
  561. package/app/.next-cli-build/server/chunks/507.js +2 -2
  562. package/app/.next-cli-build/server/chunks/5182.js +1 -1
  563. package/app/.next-cli-build/server/chunks/5210.js +3 -3
  564. package/app/.next-cli-build/server/chunks/5258.js +2 -2
  565. package/app/.next-cli-build/server/chunks/5433.js +1 -1
  566. package/app/.next-cli-build/server/chunks/5527.js +1 -0
  567. package/app/.next-cli-build/server/chunks/5615.js +1 -1
  568. package/app/.next-cli-build/server/chunks/5781.js +1 -1
  569. package/app/.next-cli-build/server/chunks/595.js +1 -1
  570. package/app/.next-cli-build/server/chunks/6252.js +2 -2
  571. package/app/.next-cli-build/server/chunks/6306.js +1 -1
  572. package/app/.next-cli-build/server/chunks/6326.js +1 -1
  573. package/app/.next-cli-build/server/chunks/6457.js +1 -1
  574. package/app/.next-cli-build/server/chunks/6756.js +1 -1
  575. package/app/.next-cli-build/server/chunks/682.js +1 -1
  576. package/app/.next-cli-build/server/chunks/6947.js +1 -1
  577. package/app/.next-cli-build/server/chunks/6960.js +1 -1
  578. package/app/.next-cli-build/server/chunks/698.js +2 -2
  579. package/app/.next-cli-build/server/chunks/7067.js +1 -1
  580. package/app/.next-cli-build/server/chunks/7122.js +1 -1
  581. package/app/.next-cli-build/server/chunks/7247.js +1 -1
  582. package/app/.next-cli-build/server/chunks/7274.js +6 -3
  583. package/app/.next-cli-build/server/chunks/7322.js +2 -2
  584. package/app/.next-cli-build/server/chunks/75.js +1 -0
  585. package/app/.next-cli-build/server/chunks/7568.js +1 -1
  586. package/app/.next-cli-build/server/chunks/7828.js +1 -1
  587. package/app/.next-cli-build/server/chunks/7965.js +2 -2
  588. package/app/.next-cli-build/server/chunks/8062.js +2 -2
  589. package/app/.next-cli-build/server/chunks/8145.js +1 -0
  590. package/app/.next-cli-build/server/chunks/8172.js +2 -2
  591. package/app/.next-cli-build/server/chunks/{7239.js → 8318.js} +2 -2
  592. package/app/.next-cli-build/server/chunks/8439.js +1 -0
  593. package/app/.next-cli-build/server/chunks/8469.js +2 -2
  594. package/app/.next-cli-build/server/chunks/8520.js +2 -2
  595. package/app/.next-cli-build/server/chunks/8595.js +1 -1
  596. package/app/.next-cli-build/server/chunks/8672.js +1 -1
  597. package/app/.next-cli-build/server/chunks/8675.js +1 -0
  598. package/app/.next-cli-build/server/chunks/8689.js +1 -1
  599. package/app/.next-cli-build/server/chunks/8838.js +1 -1
  600. package/app/.next-cli-build/server/chunks/8895.js +9 -9
  601. package/app/.next-cli-build/server/chunks/9055.js +1 -1
  602. package/app/.next-cli-build/server/chunks/939.js +1 -1
  603. package/app/.next-cli-build/server/chunks/9417.js +6 -0
  604. package/app/.next-cli-build/server/chunks/9451.js +2 -2
  605. package/app/.next-cli-build/server/chunks/9489.js +1 -1
  606. package/app/.next-cli-build/server/chunks/9609.js +1 -1
  607. package/app/.next-cli-build/server/chunks/9628.js +1 -1
  608. package/app/.next-cli-build/server/chunks/9713.js +1 -0
  609. package/app/.next-cli-build/server/chunks/976.js +2 -2
  610. package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
  611. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  612. package/app/.next-cli-build/server/middleware.js +4 -4
  613. package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
  614. package/app/.next-cli-build/server/pages/404.html +2 -2
  615. package/app/.next-cli-build/server/pages/500.html +1 -1
  616. package/app/.next-cli-build/static/chunks/1243-64d16638d3aac467.js +3 -0
  617. package/app/.next-cli-build/static/chunks/1321-1ad989ddb9bd4822.js +1 -0
  618. package/app/.next-cli-build/static/chunks/5497-a519f837339f7d19.js +7 -0
  619. package/app/.next-cli-build/static/chunks/6109-7d8788b228fed22f.js +1 -0
  620. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/experimental/page-2df49dc3be3c6b7d.js +1 -0
  621. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-2a679f53191d77f7.js → page-de760afb83419302.js} +9 -9
  622. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-7a5d36237ec6b40e.js +14 -0
  623. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-e0183e527ccc2c9b.js +1 -0
  624. package/app/.next-cli-build/static/css/66cb1d1c16ed3a27.css +1 -0
  625. package/app/package.json +71 -71
  626. package/app/public/i18n/changelog/en.md +21 -3
  627. package/app/public/i18n/changelog/zh-CN.md +21 -3
  628. package/app/public/i18n/changelog/zh-TW.md +21 -3
  629. package/app/public/i18n/literals/zh-CN.json +22 -0
  630. package/app/public/i18n/literals/zh-TW.json +21 -0
  631. package/app/src/lib/db/adapters/sqljsAdapter.js +42 -9
  632. package/app/src/sse/services/backgroundTokenRefresh.js +7 -0
  633. package/app/src/sse/services/codebuddyCheckin.js +6 -0
  634. package/package.json +61 -61
  635. package/app/.next-cli-build/server/chunks/1159.js +0 -7
  636. package/app/.next-cli-build/server/chunks/1710.js +0 -6
  637. package/app/.next-cli-build/server/chunks/3245.js +0 -1
  638. package/app/.next-cli-build/server/chunks/3885.js +0 -1
  639. package/app/.next-cli-build/server/chunks/4177.js +0 -1
  640. package/app/.next-cli-build/server/chunks/4282.js +0 -1
  641. package/app/.next-cli-build/server/chunks/436.js +0 -1
  642. package/app/.next-cli-build/server/chunks/4746.js +0 -1
  643. package/app/.next-cli-build/server/chunks/480.js +0 -6
  644. package/app/.next-cli-build/server/chunks/5485.js +0 -1
  645. package/app/.next-cli-build/server/chunks/653.js +0 -1
  646. package/app/.next-cli-build/server/chunks/6982.js +0 -1
  647. package/app/.next-cli-build/static/chunks/1243-25be5a7b0193949d.js +0 -3
  648. package/app/.next-cli-build/static/chunks/1321-7d951e8069135f2f.js +0 -1
  649. package/app/.next-cli-build/static/chunks/5497-dce0ac54d3e8f165.js +0 -7
  650. package/app/.next-cli-build/static/chunks/6109-c3fa41c974584a96.js +0 -1
  651. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/experimental/page-5ec2e868aa2ff281.js +0 -1
  652. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-21ddfd8a9e7d781f.js +0 -14
  653. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-ec96de061407f126.js +0 -1
  654. package/app/.next-cli-build/static/css/b80ae6e58b63fd53.css +0 -1
  655. /package/app/.next-cli-build/static/{eqWYkzNeaSBj4mkYsjYbh → MH4bXJmhiPfMG7orS09FV}/_buildManifest.js +0 -0
  656. /package/app/.next-cli-build/static/{eqWYkzNeaSBj4mkYsjYbh → MH4bXJmhiPfMG7orS09FV}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- exports.id=3885,exports.ids=[3885,5433,5485],exports.modules={1133:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{configureQuotaAutoPing:()=>z,runQuotaAutoPingTick:()=>w,startQuotaAutoPing:()=>x,stopQuotaAutoPing:()=>y});var e=c(48895),f=c(89718),g=c(69788),h=c(6551),i=c(55330),j=c(74129),k=c(39609),l=c(39326),m=c(18271),n=c(30869),o=a([e,i,m]);[e,i,m]=o.then?(await o)():o;let A=n.oc,B={claude:{getUsage:g.gl,sendPing:s},codex:{getUsage:h.Tl,sendPing:u}},C=global.__quotaAutoPing??={interval:null,running:!1,resetCache:{},failureCache:{}};function p(a){let b=new Date(a).getTime();return Number.isFinite(b)?new Date(6e4*Math.floor(b/6e4)).toISOString():a}function q(a,b=null){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 r(a){if(!a||!0===a.unlimited)return!1;let b=q(a.remaining);if(null!==b)return b<=0;let c=q(a.used),d=q(a.total);return null!==d&&d>0&&null!==c&&c>=d}async function s(a,b,c,d){return(await d.proxyAwareFetch("https://api.anthropic.com/v1/messages?beta=true",{method:"POST",headers:{...j.$B,Authorization:`Bearer ${a.accessToken}`,"content-type":"application/json"},body:JSON.stringify({model:b.pingModel,max_tokens:b.pingMaxTokens,messages:[{role:"user",content:b.pingText}]})},c)).ok}async function t(a){if("function"==typeof a?.text)return void await a.text();let b=a?.body?.getReader?.();if(b)try{for(;;){let{done:a}=await b.read();if(a)return}}finally{b.releaseLock?.()}}async function u(a,b,c,d){var e;let f=d.getExecutor("codex"),{response:g}=await f.execute({model:b.pingModel,stream:!0,credentials:{accessToken:a.accessToken,connectionId:a.id,providerSpecificData:a.providerSpecificData},proxyOptions:c,log:console,body:{model:b.pingModel,input:(e=b.pingText,[{type:"message",role:"user",content:[{type:"input_text",text:e}]}]),instructions:b.pingInstructions,reasoning:b.pingReasoningEffort?{effort:b.pingReasoningEffort,summary:"auto"}:void 0,store:!1,stream:!0}});if(!g.ok){try{await g.body?.cancel?.()}catch{}return!1}return await t(g),!0}async function v(a,b,c,d,e,f=C){var g,h,i;let j=(g=a.id,`${b}:${g}`),k=f.resetCache[j];if(!c.pingWhenResetAtSlides&&k&&Date.now()<new Date(k).getTime()-A.refreshAheadMs||function(a,b,c=Date.now()){let d=a.failureCache[b];return d&&c-d<A.failureCooldownMs}(f,j))return;let l=(h=await e.resolveConnectionProxyConfig(a.providerSpecificData),{connectionProxyEnabled:!0===h.connectionProxyEnabled,connectionProxyUrl:h.connectionProxyUrl||"",connectionNoProxy:h.connectionNoProxy||"",vercelRelayUrl:h.vercelRelayUrl||"",strictProxy:!1}),m=a;try{m=(await e.refreshAndUpdateCredentials(m,!1,l)).connection}catch(c){f.failureCache[j]=Date.now(),console.warn(`[AutoPing] ${b}:${a.id}: refresh failed: ${c.message}`);return}let n=await d.getUsage(m.accessToken,l),o=n?.quotas||{},q=o?.[c.quotaKey],s=q?.resetAt;if(!s||(f.resetCache[j]=s,c.skipWhenBlockingQuotaExhausted&&(i=c.quotaKey,Object.entries(o||{}).some(([a,b])=>a!==i&&!String(a).toLowerCase().includes("session")&&r(b)))||r(q)))return;let t=Date.now(),u=p(s),w=m.lastPingedResetKey||p(m.lastPingedResetAt);if(!(!function(a,b,c,d){if(a.pingWhenResetAtSlides){let d,e;return!!b&&(d=new Date(b).getTime(),e=new Date(c).getTime(),(Number.isFinite(d)&&Number.isFinite(e)?e-d:0)>=(a.resetAtDriftMs||0))}let e=new Date(c).getTime();return Number.isFinite(e)&&d>=e-A.pingLeadMs}(c,k,s,t)||function(a,b,c=Date.now()){if(!b)return!1;let d=new Date(a.lastPingAt).getTime();return Number.isFinite(d)&&c-d<b}(m,c.minPingIntervalMs,t))&&w!==u){if(!await d.sendPing(m,c,l,e)){f.failureCache[j]=Date.now(),console.warn(`[AutoPing] ${b}:${m.id}: ping failed (reset ${s})`);return}delete f.failureCache[j],await e.updateProviderConnection(m.id,{lastPingedResetAt:s,lastPingedResetKey:u,lastPingAt:new Date().toISOString(),updatedAt:new Date().toISOString()}),console.log(`[AutoPing] ${b}:${m.id}: ping sent (reset ${s})`)}}async function w(a={getSettings:f.getSettings,getProviderConnections:f.getProviderConnections,updateProviderConnection:f.updateProviderConnection,resolveConnectionProxyConfig:l.B,refreshAndUpdateCredentials:m.refreshAndUpdateCredentials,proxyAwareFetch:k.proxyAwareFetch,getExecutor:i.SB},b=C){if(!b.running){b.running=!0;try{let d=await a.getSettings();for(let[e,f]of Object.entries(A.providers)){let g=B[e];if(!g)continue;let h=d?.[f.settingsKey]?.connections||{};if(0!==Object.keys(h).length)for(let d of(await a.getProviderConnections({provider:e,isActive:!0})).filter(a=>"oauth"===a.authType&&!0===h[a.id]))try{await v(d,e,f,g,a,b)}catch(a){var c;b.failureCache[c=d.id,`${e}:${c}`]=Date.now(),console.warn(`[AutoPing] ${e}:${d.id}: ${a.message}`)}}}catch(a){console.warn("[AutoPing] tick error:",a.message)}finally{b.running=!1}}}function x(){!C.interval&&(console.log("[AutoPing] scheduler started"),w().catch(()=>{}),C.interval=setInterval(()=>{w().catch(()=>{})},A.tickIntervalMs),C.interval.unref&&C.interval.unref())}function y(){C.interval&&(clearInterval(C.interval),C.interval=null,console.log("[AutoPing] scheduler stopped"))}function z(a){Object.values(A.providers).some(b=>Object.values(a?.[b.settingsKey]?.connections||{}).some(Boolean))?x():y()}d()}catch(a){d(a)}})},18271:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>o,computeConnectionUsage:()=>p,refreshAndUpdateCredentials:()=>n});var e=c(48895),f=c(89718),g=c(27323),h=c(78661),i=c(8521),j=c(55330),k=c(39326),l=c(40615),m=a([e,j]);[e,j]=m.then?(await m)():m;let q=["expired","authentication","unauthorized","401","re-authorize"];async function n(a,b=!1,c=null){let d=a.id?await (0,f.Mc)(a.id):null;d&&(a=d);let e=(0,j.SB)(a.provider),g={accessToken:a.accessToken,refreshToken:a.refreshToken,idToken:a.idToken,expiresAt:a.expiresAt||a.tokenExpiresAt,lastRefreshAt:a.lastRefreshAt,connectionId:a.id,providerSpecificData:a.providerSpecificData,copilotToken:a.providerSpecificData?.copilotToken,copilotTokenExpiresAt:a.providerSpecificData?.copilotTokenExpiresAt};if(!(b||e.needsRefresh(g)))return{connection:a,refreshed:!1};let h=await e.refreshCredentials(g,console,c);if(h&&(0,i.jT)(h))throw Error("Refresh token invalid or reused. Please re-authorize the connection.");if(!h){if(a.accessToken)return{connection:a,refreshed:!1};throw Error("Failed to refresh credentials. Please re-authorize the connection.")}let k={updatedAt:new Date().toISOString()};h.accessToken&&(k.accessToken=h.accessToken),h.refreshToken&&(k.refreshToken=h.refreshToken),h.idToken&&(k.idToken=h.idToken),h.lastRefreshAt&&(k.lastRefreshAt=h.lastRefreshAt),h.expiresIn?(k.expiresAt=new Date(Date.now()+1e3*h.expiresIn).toISOString(),k.expiresIn=h.expiresIn):h.expiresAt&&(k.expiresAt=h.expiresAt);let l={...h.providerSpecificData||{},...h.copilotToken?{copilotToken:h.copilotToken}:{},...h.copilotTokenExpiresAt?{copilotTokenExpiresAt:h.copilotTokenExpiresAt}:{}};return Object.keys(l).length>0&&(k.providerSpecificData={...a.providerSpecificData||{},...l}),await (0,f.updateProviderConnection)(a.id,k),{connection:{...a,...k,providerSpecificData:k.providerSpecificData||a.providerSpecificData},refreshed:!0}}async function o(a,{params:b}){let c,{connectionId:d}=await b,e="1"===new URL(a.url).searchParams.get("force");try{c=await (0,f.Mc)(d)}catch(a){return console.warn(`[Usage] unknown: ${a.message}`),Response.json({error:a.message},{status:500})}if(!c)return Response.json({error:"Connection not found"},{status:404});let{status:g,body:h}=await p(c,{force:e});return Response.json(h,200===g?void 0:{status:g})}async function p(a,{force:b=!1}={}){try{let c="oauth"===a.authType,d=("apikey"===a.authType||"api_key"===a.authType)&&l.jO.includes(a.provider);if(!c&&!d)return{status:200,body:{message:"Usage not available for this connection"}};let e=await (0,k.B)(a.providerSpecificData),i={connectionProxyEnabled:!0===e.connectionProxyEnabled,connectionProxyUrl:e.connectionProxyUrl||"",connectionNoProxy:e.connectionNoProxy||"",vercelRelayUrl:e.vercelRelayUrl||"",strictProxy:!1};if(c)try{a=(await n(a,!1,i)).connection}catch(a){return console.error("[Usage API] Credential refresh failed:",a),{status:401,body:{error:`Credential refresh failed: ${a.message}`}}}let j=await (0,g.my)(a,i,{force:b});if(c&&function(a){if(!a?.message)return!1;let b=a.message.toLowerCase();return q.some(a=>b.includes(a))}(j)&&a.refreshToken)try{a=(await n(a,!0,i)).connection,j=await (0,g.my)(a,i,{force:b})}catch(b){console.warn(`[Usage] ${a.provider}: force refresh failed: ${b.message}`)}try{let b=(0,h.Y)(j);b?await (0,f.updateProviderConnection)(a.id,{earliestPackageExpiry:b.expiry,earliestPackageName:b.name,quotaCheckedAt:new Date().toISOString()}):j&&j.quotas&&await (0,f.updateProviderConnection)(a.id,{earliestPackageExpiry:null,earliestPackageName:null,quotaCheckedAt:new Date().toISOString()})}catch(b){console.warn(`[Usage API] Failed to update package expiry for ${a.id}:`,b.message)}return{status:200,body:j}}catch(c){let b=a?.provider??"unknown";return console.warn(`[Usage] ${b}: ${c.message}`),{status:500,body:{error:c.message}}}}d()}catch(a){d(a)}})},19713:function(a,b,c){a.exports=function(a,b){var d=[function(a,b,c){a.exports=c(34)},function(a,b,c){var d=c(29)("wks"),e=c(33),f=c(2).Symbol,g="function"==typeof f;(a.exports=function(a){return d[a]||(d[a]=g&&f[a]||(g?f:e)("Symbol."+a))}).store=d},function(a,b){var c=a.exports="u">typeof window&&window.Math==Math?window:"u">typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=c)},function(a,b,c){var d=c(9);a.exports=function(a){if(!d(a))throw TypeError(a+" is not an object!");return a}},function(a,b,c){a.exports=!c(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(a,b,c){var d=c(12),e=c(17);a.exports=c(4)?function(a,b,c){return d.f(a,b,e(1,c))}:function(a,b,c){return a[b]=c,a}},function(a,b){var c=a.exports={version:"2.4.0"};"number"==typeof __e&&(__e=c)},function(a,b,c){var d=c(14);a.exports=function(a,b,c){if(d(a),void 0===b)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)}}return function(){return a.apply(b,arguments)}}},function(a,b){var c={}.hasOwnProperty;a.exports=function(a,b){return c.call(a,b)}},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(a,b){a.exports={}},function(a,b){var c={}.toString;a.exports=function(a){return c.call(a).slice(8,-1)}},function(a,b,c){var d=c(3),e=c(26),f=c(32),g=Object.defineProperty;b.f=c(4)?Object.defineProperty:function(a,b,c){if(d(a),b=f(b,!0),d(c),e)try{return g(a,b,c)}catch(a){}if("get"in c||"set"in c)throw TypeError("Accessors not supported!");return"value"in c&&(a[b]=c.value),a}},function(a,b,c){var d=c(42),e=c(15);a.exports=function(a){return d(e(a))}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(a,b){a.exports=function(a){if(void 0==a)throw TypeError("Can't call method on "+a);return a}},function(a,b,c){var d=c(9),e=c(2).document,f=d(e)&&d(e.createElement);a.exports=function(a){return f?e.createElement(a):{}}},function(a,b){a.exports=function(a,b){return{enumerable:!(1&a),configurable:!(2&a),writable:!(4&a),value:b}}},function(a,b,c){var d=c(12).f,e=c(8),f=c(1)("toStringTag");a.exports=function(a,b,c){a&&!e(a=c?a:a.prototype,f)&&d(a,f,{configurable:!0,value:b})}},function(a,b,c){var d=c(29)("keys"),e=c(33);a.exports=function(a){return d[a]||(d[a]=e(a))}},function(a,b){var c=Math.ceil,d=Math.floor;a.exports=function(a){return isNaN(a*=1)?0:(a>0?d:c)(a)}},function(a,b,c){var d=c(11),e=c(1)("toStringTag"),f="Arguments"==d(function(){return arguments}()),g=function(a,b){try{return a[b]}catch(a){}};a.exports=function(a){var b,c,h;return void 0===a?"Undefined":null===a?"Null":"string"==typeof(c=g(b=Object(a),e))?c:f?d(b):"Object"==(h=d(b))&&"function"==typeof b.callee?"Arguments":h}},function(a,b){a.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(a,b,c){var d=c(2),e=c(6),f=c(7),g=c(5),h="prototype",i=function(a,b,c){var j,k,l,m=a&i.F,n=a&i.G,o=a&i.S,p=a&i.P,q=a&i.B,r=a&i.W,s=n?e:e[b]||(e[b]={}),t=s[h],u=n?d:o?d[b]:(d[b]||{})[h];for(j in n&&(c=b),c)(k=!m&&u&&void 0!==u[j])&&j in s||(l=k?u[j]:c[j],s[j]=n&&"function"!=typeof u[j]?c[j]:q&&k?f(l,d):r&&u[j]==l?function(a){var b=function(b,c,d){if(this instanceof a){switch(arguments.length){case 0:return new a;case 1:return new a(b);case 2:return new a(b,c)}return new a(b,c,d)}return a.apply(this,arguments)};return b[h]=a[h],b}(l):p&&"function"==typeof l?f(Function.call,l):l,p&&((s.virtual||(s.virtual={}))[j]=l,a&i.R&&t&&!t[j]&&g(t,j,l)))};i.F=1,i.G=2,i.S=4,i.P=8,i.B=16,i.W=32,i.U=64,i.R=128,a.exports=i},function(a,b){a.exports=function(a){try{return!!a()}catch(a){return!0}}},function(a,b,c){a.exports=c(2).document&&document.documentElement},function(a,b,c){a.exports=!c(4)&&!c(24)(function(){return 7!=Object.defineProperty(c(16)("div"),"a",{get:function(){return 7}}).a})},function(a,b,c){"use strict";var d=c(28),e=c(23),f=c(57),g=c(5),h=c(8),i=c(10),j=c(45),k=c(18),l=c(52),m=c(1)("iterator"),n=!([].keys&&"next"in[].keys()),o="keys",p="values",q=function(){return this};a.exports=function(a,b,c,r,s,t,u){j(c,b,r);var v,w,x,y=function(a){if(!n&&a in C)return C[a];switch(a){case o:case p:return function(){return new c(this,a)}}return function(){return new c(this,a)}},z=b+" Iterator",A=s==p,B=!1,C=a.prototype,D=C[m]||C["@@iterator"]||s&&C[s],E=D||y(s),F=s?A?y("entries"):E:void 0,G="Array"==b&&C.entries||D;if(G&&(x=l(G.call(new a)))!==Object.prototype&&(k(x,z,!0),d||h(x,m)||g(x,m,q)),A&&D&&D.name!==p&&(B=!0,E=function(){return D.call(this)}),(!d||u)&&(n||B||!C[m])&&g(C,m,E),i[b]=E,i[z]=q,s)if(v={values:A?E:y(p),keys:t?E:y(o),entries:F},u)for(w in v)w in C||f(C,w,v[w]);else e(e.P+e.F*(n||B),b,v);return v}},function(a,b){a.exports=!0},function(a,b,c){var d=c(2),e="__core-js_shared__",f=d[e]||(d[e]={});a.exports=function(a){return f[a]||(f[a]={})}},function(a,b,c){var d,e,f,g=c(7),h=c(41),i=c(25),j=c(16),k=c(2),l=k.process,m=k.setImmediate,n=k.clearImmediate,o=k.MessageChannel,p=0,q={},r="onreadystatechange",s=function(){var a=+this;if(q.hasOwnProperty(a)){var b=q[a];delete q[a],b()}},t=function(a){s.call(a.data)};m&&n||(m=function(a){for(var b=[],c=1;arguments.length>c;)b.push(arguments[c++]);return q[++p]=function(){h("function"==typeof a?a:Function(a),b)},d(p),p},n=function(a){delete q[a]},"process"==c(11)(l)?d=function(a){l.nextTick(g(s,a,1))}:o?(f=(e=new o).port2,e.port1.onmessage=t,d=g(f.postMessage,f,1)):k.addEventListener&&"function"==typeof postMessage&&!k.importScripts?(d=function(a){k.postMessage(a+"","*")},k.addEventListener("message",t,!1)):d=r in j("script")?function(a){i.appendChild(j("script"))[r]=function(){i.removeChild(this),s.call(a)}}:function(a){setTimeout(g(s,a,1),0)}),a.exports={set:m,clear:n}},function(a,b,c){var d=c(20),e=Math.min;a.exports=function(a){return a>0?e(d(a),0x1fffffffffffff):0}},function(a,b,c){var d=c(9);a.exports=function(a,b){var c,e;if(!d(a))return a;if(b&&"function"==typeof(c=a.toString)&&!d(e=c.call(a))||"function"==typeof(c=a.valueOf)&&!d(e=c.call(a))||!b&&"function"==typeof(c=a.toString)&&!d(e=c.call(a)))return e;throw TypeError("Can't convert object to primitive value")}},function(a,b){var c=0,d=Math.random();a.exports=function(a){return"Symbol(".concat(void 0===a?"":a,")_",(++c+d).toString(36))}},function(a,b,c){"use strict";function d(a){return(0,i.createHash)("sha256").update(a).digest("hex")}function e(a){switch(j){case"darwin":return a.split("IOPlatformUUID")[1].split("\n")[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return a.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":case"freebsd":return a.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw Error("Unsupported platform: "+process.platform)}}Object.defineProperty(b,"__esModule",{value:!0});var f,g=(f=c(35))&&f.__esModule?f:{default:f};b.machineIdSync=function(a){var b=e((0,h.execSync)(k[j]).toString());return a?b:d(b)},b.machineId=function(a){return new g.default(function(b,c){return(0,h.exec)(k[j],{},function(f,g,h){if(f)return c(Error("Error while obtaining machine id: "+f.stack));var i=e(g.toString());return b(a?i:d(i))})})};var h=c(70),i=c(71),j=process.platform,k={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:{native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"}["win32"!==process.platform?"":"ia32"===process.arch&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(a,b,c){a.exports={default:c(36),__esModule:!0}},function(a,b,c){c(66),c(68),c(69),c(67),a.exports=c(6).Promise},function(a,b){a.exports=function(){}},function(a,b){a.exports=function(a,b,c,d){if(!(a instanceof b)||void 0!==d&&d in a)throw TypeError(c+": incorrect invocation!");return a}},function(a,b,c){var d=c(13),e=c(31),f=c(62);a.exports=function(a){return function(b,c,g){var h,i=d(b),j=e(i.length),k=f(g,j);if(a&&c!=c){for(;j>k;)if((h=i[k++])!=h)return!0}else for(;j>k;k++)if((a||k in i)&&i[k]===c)return a||k||0;return!a&&-1}}},function(a,b,c){var d=c(7),e=c(44),f=c(43),g=c(3),h=c(31),i=c(64),j={},k={},b=a.exports=function(a,b,c,l,m){var n,o,p,q,r=m?function(){return a}:i(a),s=d(c,l,b?2:1),t=0;if("function"!=typeof r)throw TypeError(a+" is not iterable!");if(f(r)){for(n=h(a.length);n>t;t++)if((q=b?s(g(o=a[t])[0],o[1]):s(a[t]))===j||q===k)return q}else for(p=r.call(a);!(o=p.next()).done;)if((q=e(p,s,o.value,b))===j||q===k)return q};b.BREAK=j,b.RETURN=k},function(a,b){a.exports=function(a,b,c){var d=void 0===c;switch(b.length){case 0:return d?a():a.call(c);case 1:return d?a(b[0]):a.call(c,b[0]);case 2:return d?a(b[0],b[1]):a.call(c,b[0],b[1]);case 3:return d?a(b[0],b[1],b[2]):a.call(c,b[0],b[1],b[2]);case 4:return d?a(b[0],b[1],b[2],b[3]):a.call(c,b[0],b[1],b[2],b[3])}return a.apply(c,b)}},function(a,b,c){var d=c(11);a.exports=Object("z").propertyIsEnumerable(0)?Object:function(a){return"String"==d(a)?a.split(""):Object(a)}},function(a,b,c){var d=c(10),e=c(1)("iterator"),f=Array.prototype;a.exports=function(a){return void 0!==a&&(d.Array===a||f[e]===a)}},function(a,b,c){var d=c(3);a.exports=function(a,b,c,e){try{return e?b(d(c)[0],c[1]):b(c)}catch(b){var f=a.return;throw void 0!==f&&d(f.call(a)),b}}},function(a,b,c){"use strict";var d=c(49),e=c(17),f=c(18),g={};c(5)(g,c(1)("iterator"),function(){return this}),a.exports=function(a,b,c){a.prototype=d(g,{next:e(1,c)}),f(a,b+" Iterator")}},function(a,b,c){var d=c(1)("iterator"),e=!1;try{var f=[7][d]();f.return=function(){e=!0},Array.from(f,function(){throw 2})}catch(a){}a.exports=function(a,b){if(!b&&!e)return!1;var c=!1;try{var f=[7],g=f[d]();g.next=function(){return{done:c=!0}},f[d]=function(){return g},a(f)}catch(a){}return c}},function(a,b){a.exports=function(a,b){return{value:b,done:!!a}}},function(a,b,c){var d=c(2),e=c(30).set,f=d.MutationObserver||d.WebKitMutationObserver,g=d.process,h=d.Promise,i="process"==c(11)(g);a.exports=function(){var a,b,c,j=function(){var d,e;for(i&&(d=g.domain)&&d.exit();a;){e=a.fn,a=a.next;try{e()}catch(d){throw a?c():b=void 0,d}}b=void 0,d&&d.enter()};if(i)c=function(){g.nextTick(j)};else if(f){var k=!0,l=document.createTextNode("");new f(j).observe(l,{characterData:!0}),c=function(){l.data=k=!k}}else if(h&&h.resolve){var m=h.resolve();c=function(){m.then(j)}}else c=function(){e.call(d,j)};return function(d){var e={fn:d,next:void 0};b&&(b.next=e),a||(a=e,c()),b=e}}},function(a,b,c){var d=c(3),e=c(50),f=c(22),g=c(19)("IE_PROTO"),h=function(){},i="prototype",j=function(){var a,b=c(16)("iframe"),d=f.length;for(b.style.display="none",c(25).appendChild(b),b.src="javascript:",(a=b.contentWindow.document).open(),a.write("<script>document.F=Object<\/script>"),a.close(),j=a.F;d--;)delete j[i][f[d]];return j()};a.exports=Object.create||function(a,b){var c;return null!==a?(h[i]=d(a),c=new h,h[i]=null,c[g]=a):c=j(),void 0===b?c:e(c,b)}},function(a,b,c){var d=c(12),e=c(3),f=c(54);a.exports=c(4)?Object.defineProperties:function(a,b){e(a);for(var c,g=f(b),h=g.length,i=0;h>i;)d.f(a,c=g[i++],b[c]);return a}},function(a,b,c){var d=c(55),e=c(17),f=c(13),g=c(32),h=c(8),i=c(26),j=Object.getOwnPropertyDescriptor;b.f=c(4)?j:function(a,b){if(a=f(a),b=g(b,!0),i)try{return j(a,b)}catch(a){}if(h(a,b))return e(!d.f.call(a,b),a[b])}},function(a,b,c){var d=c(8),e=c(63),f=c(19)("IE_PROTO"),g=Object.prototype;a.exports=Object.getPrototypeOf||function(a){return d(a=e(a),f)?a[f]:"function"==typeof a.constructor&&a instanceof a.constructor?a.constructor.prototype:a instanceof Object?g:null}},function(a,b,c){var d=c(8),e=c(13),f=c(39)(!1),g=c(19)("IE_PROTO");a.exports=function(a,b){var c,h=e(a),i=0,j=[];for(c in h)c!=g&&d(h,c)&&j.push(c);for(;b.length>i;)d(h,c=b[i++])&&(~f(j,c)||j.push(c));return j}},function(a,b,c){var d=c(53),e=c(22);a.exports=Object.keys||function(a){return d(a,e)}},function(a,b){b.f=({}).propertyIsEnumerable},function(a,b,c){var d=c(5);a.exports=function(a,b,c){for(var e in b)c&&a[e]?a[e]=b[e]:d(a,e,b[e]);return a}},function(a,b,c){a.exports=c(5)},function(a,b,c){var d=c(9),e=c(3),f=function(a,b){if(e(a),!d(b)&&null!==b)throw TypeError(b+": can't set as prototype!")};a.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(a,b,d){try{(d=c(7)(Function.call,c(51).f(Object.prototype,"__proto__").set,2))(a,[]),b=!(a instanceof Array)}catch(a){b=!0}return function(a,c){return f(a,c),b?a.__proto__=c:d(a,c),a}}({},!1):void 0),check:f}},function(a,b,c){"use strict";var d=c(2),e=c(6),f=c(12),g=c(4),h=c(1)("species");a.exports=function(a){var b="function"==typeof e[a]?e[a]:d[a];g&&b&&!b[h]&&f.f(b,h,{configurable:!0,get:function(){return this}})}},function(a,b,c){var d=c(3),e=c(14),f=c(1)("species");a.exports=function(a,b){var c,g=d(a).constructor;return void 0===g||void 0==(c=d(g)[f])?b:e(c)}},function(a,b,c){var d=c(20),e=c(15);a.exports=function(a){return function(b,c){var f,g,h=String(e(b)),i=d(c),j=h.length;return i<0||i>=j?a?"":void 0:(f=h.charCodeAt(i))<55296||f>56319||i+1===j||(g=h.charCodeAt(i+1))<56320||g>57343?a?h.charAt(i):f:a?h.slice(i,i+2):(f-55296<<10)+(g-56320)+65536}}},function(a,b,c){var d=c(20),e=Math.max,f=Math.min;a.exports=function(a,b){return(a=d(a))<0?e(a+b,0):f(a,b)}},function(a,b,c){var d=c(15);a.exports=function(a){return Object(d(a))}},function(a,b,c){var d=c(21),e=c(1)("iterator"),f=c(10);a.exports=c(6).getIteratorMethod=function(a){if(void 0!=a)return a[e]||a["@@iterator"]||f[d(a)]}},function(a,b,c){"use strict";var d=c(37),e=c(47),f=c(10),g=c(13);a.exports=c(27)(Array,"Array",function(a,b){this._t=g(a),this._i=0,this._k=b},function(){var a=this._t,b=this._k,c=this._i++;return!a||c>=a.length?(this._t=void 0,e(1)):"keys"==b?e(0,c):"values"==b?e(0,a[c]):e(0,[c,a[c]])},"values"),f.Arguments=f.Array,d("keys"),d("values"),d("entries")},function(a,b){},function(a,b,c){"use strict";var d,e,f,g=c(28),h=c(2),i=c(7),j=c(21),k=c(23),l=c(9),m=(c(3),c(14)),n=c(38),o=c(40),p=(c(58).set,c(60)),q=c(30).set,r=c(48)(),s="Promise",t=h.TypeError,u=h.process,v=h[s],u=h.process,w="process"==j(u),x=function(){},y=!!function(){try{var a=v.resolve(1),b=(a.constructor={})[c(1)("species")]=function(a){a(x,x)};return(w||"function"==typeof PromiseRejectionEvent)&&a.then(x)instanceof b}catch(a){}}(),z=function(a,b){return a===b||a===v&&b===f},A=function(a){var b;return!(!l(a)||"function"!=typeof(b=a.then))&&b},B=function(a){return z(v,a)?new C(a):new e(a)},C=e=function(a){var b,c;this.promise=new a(function(a,d){if(void 0!==b||void 0!==c)throw t("Bad Promise constructor");b=a,c=d}),this.resolve=m(b),this.reject=m(c)},D=function(a){try{a()}catch(a){return{error:a}}},E=function(a,b){if(!a._n){a._n=!0;var c=a._c;r(function(){for(var d=a._v,e=1==a._s,f=0;c.length>f;)!function(b){var c,f,g=e?b.ok:b.fail,h=b.resolve,i=b.reject,j=b.domain;try{g?(e||(2==a._h&&H(a),a._h=1),!0===g?c=d:(j&&j.enter(),c=g(d),j&&j.exit()),c===b.promise?i(t("Promise-chain cycle")):(f=A(c))?f.call(c,h,i):h(c)):i(d)}catch(a){i(a)}}(c[f++]);a._c=[],a._n=!1,b&&!a._h&&F(a)})}},F=function(a){q.call(h,function(){var b,c,d,e=a._v;if(G(a)&&(b=D(function(){w?u.emit("unhandledRejection",e,a):(c=h.onunhandledrejection)?c({promise:a,reason:e}):(d=h.console)&&d.error&&d.error("Unhandled promise rejection",e)}),a._h=w||G(a)?2:1),a._a=void 0,b)throw b.error})},G=function(a){if(1==a._h)return!1;for(var b,c=a._a||a._c,d=0;c.length>d;)if((b=c[d++]).fail||!G(b.promise))return!1;return!0},H=function(a){q.call(h,function(){var b;w?u.emit("rejectionHandled",a):(b=h.onrejectionhandled)&&b({promise:a,reason:a._v})})},I=function(a){var b=this;b._d||(b._d=!0,(b=b._w||b)._v=a,b._s=2,b._a||(b._a=b._c.slice()),E(b,!0))},J=function(a){var b,c=this;if(!c._d){c._d=!0,c=c._w||c;try{if(c===a)throw t("Promise can't be resolved itself");(b=A(a))?r(function(){var d={_w:c,_d:!1};try{b.call(a,i(J,d,1),i(I,d,1))}catch(a){I.call(d,a)}}):(c._v=a,c._s=1,E(c,!1))}catch(a){I.call({_w:c,_d:!1},a)}}};y||(v=function(a){n(this,v,s,"_h"),m(a),d.call(this);try{a(i(J,this,1),i(I,this,1))}catch(a){I.call(this,a)}},(d=function(a){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=c(56)(v.prototype,{then:function(a,b){var c=B(p(this,v));return c.ok="function"!=typeof a||a,c.fail="function"==typeof b&&b,c.domain=w?u.domain:void 0,this._c.push(c),this._a&&this._a.push(c),this._s&&E(this,!1),c.promise},catch:function(a){return this.then(void 0,a)}}),C=function(){var a=new d;this.promise=a,this.resolve=i(J,a,1),this.reject=i(I,a,1)}),k(k.G+k.W+!y*k.F,{Promise:v}),c(18)(v,s),c(59)(s),f=c(6)[s],k(k.S+!y*k.F,s,{reject:function(a){var b=B(this);return(0,b.reject)(a),b.promise}}),k(k.S+k.F*(g||!y),s,{resolve:function(a){if(a instanceof v&&z(a.constructor,this))return a;var b=B(this);return(0,b.resolve)(a),b.promise}}),k(k.S+!(y&&c(46)(function(a){v.all(a).catch(x)}))*k.F,s,{all:function(a){var b=this,c=B(b),d=c.resolve,e=c.reject,f=D(function(){var c=[],f=0,g=1;o(a,!1,function(a){var h=f++,i=!1;c.push(void 0),g++,b.resolve(a).then(function(a){i||(i=!0,c[h]=a,--g||d(c))},e)}),--g||d(c)});return f&&e(f.error),c.promise},race:function(a){var b=this,c=B(b),d=c.reject,e=D(function(){o(a,!1,function(a){b.resolve(a).then(c.resolve,d)})});return e&&d(e.error),c.promise}})},function(a,b,c){"use strict";var d=c(61)(!0);c(27)(String,"String",function(a){this._t=String(a),this._i=0},function(){var a,b=this._t,c=this._i;return c>=b.length?{value:void 0,done:!0}:(a=d(b,c),this._i+=a.length,{value:a,done:!1})})},function(a,b,c){c(65);for(var d=c(2),e=c(5),f=c(10),g=c(1)("toStringTag"),h=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],i=0;i<5;i++){var j=h[i],k=d[j],l=k&&k.prototype;l&&!l[g]&&e(l,g,j),f[j]=f.Array}},function(a,b){a.exports=c(79646)},function(a,b){a.exports=c(55511)}];function e(a){if(f[a])return f[a].exports;var b=f[a]={exports:{},id:a,loaded:!1};return d[a].call(b.exports,b,b.exports,e),b.loaded=!0,b.exports}var f={};return e.m=d,e.c=f,e.p="",e(0)}(c(79646),c(55511))},85081:(a,b,c)=>{"use strict";c.d(b,{Ay:()=>j});var d=c(77598);let e=function(a){return Array.isArray(a)?a=Buffer.from(a):"string"==typeof a&&(a=Buffer.from(a,"utf8")),(0,d.createHash)("sha1").update(a).digest()},f=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i,g=function(a){let b;if(!("string"==typeof a&&f.test(a)))throw TypeError("Invalid UUID");return Uint8Array.of((b=parseInt(a.slice(0,8),16))>>>24,b>>>16&255,b>>>8&255,255&b,(b=parseInt(a.slice(9,13),16))>>>8,255&b,(b=parseInt(a.slice(14,18),16))>>>8,255&b,(b=parseInt(a.slice(19,23),16))>>>8,255&b,(b=parseInt(a.slice(24,36),16))/0x10000000000&255,b/0x100000000&255,b>>>24&255,b>>>16&255,b>>>8&255,255&b)};var h=c(50122);function i(a,b,c,d){var f=b,i=d;let j="string"==typeof a?function(a){let b=new Uint8Array((a=unescape(encodeURIComponent(a))).length);for(let c=0;c<a.length;++c)b[c]=a.charCodeAt(c);return b}(a):a,k="string"==typeof f?g(f):f;if("string"==typeof f&&(f=g(f)),f?.length!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+j.length);if(l.set(k),l.set(j,k.length),(l=e(l))[6]=15&l[6]|80,l[8]=63&l[8]|128,c){if((i=i||0)<0||i+16>c.length)throw RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);for(let a=0;a<16;++a)c[i+a]=l[a];return c}return(0,h.k)(l)}i.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",i.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8";let j=i}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=4177,exports.ids=[4177],exports.modules={220:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(92990);let e={config:d.LT,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),state:c,access_type:"offline",prompt:"consent"});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,client_secret:a.clientSecret,code:b,redirect_uri:c})});if(!d.ok){let a=await d.text();throw Error(`Token exchange failed: ${a}`)}return await d.json()},postExchange:async a=>{let b=await fetch(`${d.LT.userInfoUrl}?alt=json`,{headers:{Authorization:`Bearer ${a.access_token}`}}),c=b.ok?await b.json():{},e="";try{let b=await fetch("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${a.access_token}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:(0,d.cD)(),mode:1})});if(b.ok){let a=await b.json();e=a.cloudaicompanionProject?.id||a.cloudaicompanionProject||""}}catch(a){console.log("Failed to fetch project ID:",a)}return{userInfo:c,projectId:e}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,email:b?.userInfo?.email,projectId:b?.projectId})}},3198:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(55511),e=c.n(d);let f={config:c(92990).aV,flowType:"device_code",requestDeviceCode:async a=>{let{buildKimiHeaders:b}=await Promise.resolve().then(c.bind(c,75924)),d=e().randomUUID(),f={"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",...b(d)},g=await fetch(a.deviceCodeUrl,{method:"POST",headers:f,body:new URLSearchParams({client_id:a.clientId})});if(!g.ok){let a=await g.text();throw Error(`Device code request failed: ${a}`)}let h=await g.json(),i=a.authorizeDeviceUrl||"https://www.kimi.com/code/authorize_device";return{device_code:h.device_code,user_code:h.user_code,verification_uri:h.verification_uri||i,verification_uri_complete:h.verification_uri_complete||`${i}?user_code=${h.user_code}`,expires_in:h.expires_in,interval:h.interval||5,_kimiDeviceId:d}},pollToken:async(a,b,d,e)=>{let f,{buildKimiHeaders:g}=await Promise.resolve().then(c.bind(c,75924)),h=e?._kimiDeviceId,i={"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",...g(h)},j=await fetch(a.tokenUrl,{method:"POST",headers:i,body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",client_id:a.clientId,device_code:b})});try{f=await j.json()}catch{f={error:"invalid_response",error_description:"non-json token response"}}return"authorization_pending"===f.error||"slow_down"===f.error?{ok:!0,data:f}:(f.access_token&&h&&(f._kimiDeviceId=h),{ok:j.ok||!!f.access_token||!!f.error,data:f})},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,providerSpecificData:{authMethod:"device_code",...a._kimiDeviceId?{deviceId:a._kimiDeviceId}:{}}})}},5867:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(92990),e=c(30022);let f={config:{...d.hF,loginUrl:e.ii,deviceTokenUrl:e.h3,userInfoUrl:e.cn},flowType:"device_code",requestDeviceCode:async()=>{let{QoderService:a}=await c.e(1531).then(c.bind(c,91531)),b=new a({deviceTokenUrl:e.h3,loginUrl:e.ii,userInfoUrl:e.cn}).initiateDeviceFlow();return{device_code:b.nonce,user_code:b.nonce.slice(0,8).toUpperCase(),verification_uri:e.ii,verification_uri_complete:b.verificationUriComplete,expires_in:300,interval:2,codeVerifier:b.codeVerifier,_qoderNonce:b.nonce,_qoderMachineId:b.machineId}},pollToken:async(a,b,d,f)=>{let g,{QoderService:h}=await c.e(1531).then(c.bind(c,91531)),i=new h({deviceTokenUrl:e.h3,loginUrl:e.ii,userInfoUrl:e.cn}),j=b||f?._qoderNonce,k=d||f?._qoderVerifier;if(!j||!k)return{ok:!1,data:{error:"invalid_request",error_description:"Missing nonce/verifier"}};try{g=await i.pollDeviceToken({nonce:j,codeVerifier:k})}catch(a){return{ok:!1,data:{error:"poll_failed",error_description:a.message}}}if("pending"===g.status)return{ok:!1,data:{error:"authorization_pending"}};let l=await i.fetchUserInfo(g.accessToken),m=Math.max(86400,Math.floor((g.expireTime-Date.now())/1e3));return{ok:!0,data:{access_token:g.accessToken,refresh_token:g.refresh_token||"",expires_in:m,_qoderUserId:g.userId,_qoderMachineId:f?._qoderMachineId||"",_qoderName:l.name,_qoderEmail:l.email,_qoderOrganizationId:l.organizationId}}},mapTokens:a=>{let b=(a._qoderEmail||"").trim(),c=(a._qoderName||"").trim()||null,d=a._qoderUserId||"",e=b||c||(d?`qoder-cn-user-${d}`:null);return{accessToken:a.access_token,refreshToken:a.refresh_token||null,expiresIn:a.expires_in,email:e,displayName:c||b||(d?`qoder-cn-user-${d}`:null),providerSpecificData:{authMethod:"device",userId:d,machineId:a._qoderMachineId||"",organizationId:a._qoderOrganizationId||""}}}}},13342:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(92990),e=c(23358);async function f(a,b,c){let e=`${a.replace(/\/$/,"")}${b}`,f=await fetch(e,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","User-Agent":d.eD.userAgent},body:JSON.stringify(c)}),g=await f.text();if(!f.ok)throw Error(`Windsurf ${b} HTTP ${f.status}: ${g.slice(0,200)}`);try{return JSON.parse(g)}catch{throw Error(`Windsurf ${b} invalid JSON`)}}async function g(a){let b=await f(d.eD.registerApiBaseUrl,d.eD.registerPath,{firebase_id_token:a}),c=(0,e.j)(b,[["apiKey"],["api_key"]]);if(!c)throw Error("Windsurf RegisterUser missing apiKey");return{apiKey:c,apiServerUrl:(0,e.j)(b,[["apiServerUrl"],["api_server_url"]])||d.eD.defaultApiServerUrl,name:(0,e.j)(b,[["name"]])}}async function h(a,b){try{let c=await f(a,d.eD.oneTimeAuthPath,{firebaseIdToken:b}),g=(0,e.j)(c,[["authToken"],["auth_token"]]);if(!g)return{email:null,name:null};let h=await f(a,d.eD.currentUserPath,{authToken:g,includeSubscription:!0}),i=h.user||h;return{email:(0,e.j)(i,[["email"]]),name:(0,e.j)(i,[["name"]])}}catch{return{email:null,name:null}}}let i={config:d.eD,flowType:"authorization_code",callbackPath:d.eD.callbackPath,buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({response_type:"token",client_id:a.clientId,redirect_uri:b,state:c,prompt:"login",redirect_parameters_type:"query",workflow:"onboarding"});return`${a.authBaseUrl}${a.signInPath}?${d.toString()}`},exchangeToken:async(a,b,c,d,e)=>{let f=String(b||"").trim();if(!(f.includes("?")||f.includes("access_token="))){let b=f.replace(/^Bearer\s+/i,"");if(b.startsWith("sk-ws-"))return{accessToken:b,refreshToken:null,expiresIn:null,apiServerUrl:a.defaultApiServerUrl,firebaseIdToken:null,_authMethod:"imported"};let c=await g(b);return{accessToken:c.apiKey,refreshToken:null,expiresIn:null,apiServerUrl:c.apiServerUrl,firebaseIdToken:b,_authMethod:"imported"}}let{firebaseIdToken:h}=function(a,b){let c=String(a||"").trim(),d=c;c.includes("?")&&(d=c.slice(c.indexOf("?")+1)),c.startsWith("#")&&(d=c.slice(1));let e=Object.fromEntries(new URLSearchParams(d)),f=a=>{for(let b of a){let a=e[b];if(a&&String(a).trim())return String(a).trim()}return null},g=f(["error"]);if(g){let a=f(["error_description"]);throw Error(a?`Windsurf auth failed: ${g} (${a})`:`Windsurf auth failed: ${g}`)}let h=f(["access_token","token"]);if(!h)throw Error("Windsurf callback missing access_token");let i=f(["state"]);if(b&&i&&i!==b)throw Error("Windsurf callback state mismatch");return{firebaseIdToken:h}}(f,e),i=await g(h);return{accessToken:i.apiKey,refreshToken:null,expiresIn:null,apiServerUrl:i.apiServerUrl,firebaseIdToken:h,_authMethod:"oauth"}},postExchange:async a=>a.firebaseIdToken?{userInfo:await h(a.apiServerUrl,a.firebaseIdToken)}:{userInfo:{email:null,name:null}},mapTokens:(a,b)=>({accessToken:a.accessToken,refreshToken:null,expiresIn:null,email:b?.userInfo?.email||void 0,displayName:b?.userInfo?.name||void 0,providerSpecificData:{authMethod:a._authMethod||"oauth",apiServerUrl:a.apiServerUrl,firebaseIdToken:a.firebaseIdToken}})}},17691:(a,b,c)=>{c.d(b,{A:()=>d});let d={config:c(92990).Td,flowType:"browser_token",buildAuthUrl:(a,b,c)=>{let d=(a.webAppUrl||"https://app.kimchi.dev").replace(/\/+$/,""),e=new URLSearchParams({callback:b,state:c});return`${d}/cli-auth?${e.toString()}`},exchangeToken:async(a,b)=>{let c=String(b||"").trim();if(!c)throw Error("Missing Kimchi token");let d=a.validationUrl||"https://api.cast.ai/v1/llm/openai/supported-providers",e=await fetch(d,{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${c}`}});if(!e.ok)throw Error(`Kimchi token validation failed: ${e.status}`);let f={};if(a.userInfoUrl)try{let b=await fetch(a.userInfoUrl,{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${c}`}});b.ok&&(f=await b.json())}catch{f={}}return{access_token:c,token_type:"Bearer",_kimchiUser:f}},mapTokens:a=>{let b=a._kimchiUser||{},c=b.id?String(b.id):"",d=b.username||"",e=b.email||(c?`kimchi-user-${c}`:null);return{accessToken:a.access_token,refreshToken:null,email:e,displayName:b.name||d||null,providerSpecificData:{authMethod:"browser_token",userId:c,username:d}}}}},18245:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(92990),e=c(49804);let f={config:d.RY,flowType:"authorization_code",callbackPath:"/",prepareConfig:async(a,b)=>{let c=Number(b?.nativeAppPort)||d.RY.defaultNativeAppPort,f=(0,e.le)(a,{nativeAppPort:c});return{...a,...f}},buildAuthUrl:(a,b,c)=>a.authUrl,exchangeToken:async(a,b,c,d,f)=>{let{userId:g,encryptedAccessToken:h}=(0,e.Q_)(b);return{accessToken:(0,e.Wc)(h,d),userId:g,systemId:a.systemId}},postExchange:async a=>{let b={accessToken:a.accessToken,providerSpecificData:{userId:a.userId,systemId:a.systemId}},c=null;try{c=await (0,e.qJ)(b,{config:d.RY})}catch{}let f=(0,e.k9)(b,c);return{userInfo:c,organizationId:f,email:c?.email||null,name:c?.name||c?.display_name||null}},mapTokens:(a,b)=>({accessToken:a.accessToken,refreshToken:null,expiresIn:null,email:b?.email||void 0,displayName:b?.name||void 0,providerSpecificData:{authMethod:"oauth",userId:a.userId,systemId:a.systemId,organizationId:b?.organizationId||""}})}},18941:(a,b,c)=>{c.d(b,{A:()=>d});let d={config:c(92990).lB,flowType:"authorization_code",buildAuthUrl:(a,b)=>{let c=new URLSearchParams({client_type:"extension",callback_url:b,redirect_uri:b});return`${a.authorizeUrl}?${c.toString()}`},exchangeToken:async(a,b,c)=>{try{let a=b,c=4-a.length%4;4!==c&&(a+="=".repeat(c));let d=Buffer.from(a,"base64").toString("utf-8"),e=d.lastIndexOf("}");if(-1===e)throw Error("No JSON found in decoded code");let f=JSON.parse(d.substring(0,e+1));return{access_token:f.accessToken,refresh_token:f.refreshToken,email:f.email,firstName:f.firstName,lastName:f.lastName,expires_at:f.expiresAt}}catch(f){let d=await fetch(a.tokenExchangeUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:b,client_type:"extension",redirect_uri:c})});if(!d.ok){let a=await d.text();throw Error(`Cline token exchange failed: ${a}`)}let e=await d.json();return{access_token:e.data?.accessToken||e.accessToken,refresh_token:e.data?.refreshToken||e.refreshToken,email:e.data?.userInfo?.email||"",expires_at:e.data?.expiresAt||e.expiresAt}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_at?Math.floor((new Date(a.expires_at).getTime()-Date.now())/1e3):3600,email:a.email,providerSpecificData:{firstName:a.firstName,lastName:a.lastName}})}},20386:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(92990);let e="1.0.0",f={config:d.sA,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","x-api-version":e},body:new URLSearchParams({client_id:a.clientId})});if(!b.ok){let a=await b.text();throw Error(`Muse Code device code request failed: ${a}`)}return await b.json()},pollToken:async(a,b)=>{let c,d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","x-api-version":e},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:b,client_id:a.clientId})});try{c=await d.json()}catch{c={error:"invalid_response",error_description:await d.text()}}let f=c?.error==="authorization_pending"||c?.error==="slow_down";return{ok:d.ok||f,data:c}},postExchange:async a=>{let b,c;for(let c=0;(429===(b=await fetch("https://api.meta.ai/muse-code/key",{method:"POST",headers:{Accept:"application/json",Authorization:`Bearer ${a.access_token}`,"Content-Type":"application/json","x-api-version":e},body:JSON.stringify({onboard:!0}),redirect:"error"})).status||b.status>=500)&&!(c>=2);c++)await new Promise(a=>setTimeout(a,5e3*(c+1)));let d=await b.text();if(!b.ok){let a=`${b.status} ${d.slice(0,200)}`;try{let b=JSON.parse(d);(b?.title||b?.detail)&&(a=[b.title,b.detail].filter(Boolean).join(": "),b.action_url&&(a+=` — ${b.action_url}`))}catch{}throw Error(`Muse Code key mint failed: ${a}`)}try{c=JSON.parse(d)}catch{throw Error("Muse Code key mint returned invalid JSON")}if(!1===c.is_subs_active)throw Error("Muse Code subscription is inactive — activate it on muse.ai first");let f=c.action_url||c.require_payment_action_url;if(!c.api_key&&(c.require_payment||f))throw Error(`Muse Code subscription required${f?`: ${f}`:""}`);if(!c.api_key)throw Error("Muse Code key response is missing api_key");return{key:c}},mapTokens:(a,b)=>{let c=b?.key||{};return{accessToken:c.api_key,refreshToken:null,expiresIn:null,email:c.user_email?.trim().toLowerCase()||void 0,providerSpecificData:{authMethod:"device_code",oauthAccessToken:a.access_token,subscriptionTier:c.subs_tier_name||null}}}}},23358:(a,b,c)=>{c.d(b,{j:()=>d});function d(a,b){for(let c of b){let b=a;for(let a of c){if(null==b||"object"!=typeof b){b=void 0;break}b=b[a]}if("string"==typeof b&&b.trim())return b.trim();if("number"==typeof b)return String(b)}return null}},24329:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(92990),e=c(53129);let f={config:d.DI,flowType:"authorization_code_pkce",fixedPort:d.DI.fixedPort,callbackPath:d.DI.callbackPath,buildAuthUrl:(a,b,c,d)=>{let e=Object.entries({response_type:"code",client_id:a.clientId,redirect_uri:b,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod,...a.extraParams,state:c}).map(([a,b])=>`${a}=${encodeURIComponent(b)}`).join("&");return`${a.authorizeUrl}?${e}`},exchangeToken:async(a,b,c,d)=>{let e=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,code:b,redirect_uri:c,code_verifier:d})});if(!e.ok){let a=await e.text();throw Error(`Token exchange failed: ${a}`)}return await e.json()},mapTokens:a=>{let b=(0,e.YR)(a.id_token),c={accessToken:a.access_token,refreshToken:a.refresh_token,idToken:a.id_token,expiresIn:a.expires_in,lastRefreshAt:new Date().toISOString()},d=b.email||(0,e.J_)(a.access_token);return d&&(c.email=d),(b.chatgptAccountId||b.chatgptPlanType)&&(c.providerSpecificData={chatgptAccountId:b.chatgptAccountId,chatgptPlanType:b.chatgptPlanType}),c}}},24336:(a,b,c)=>{c.d(b,{A:()=>l});var d=c(55511),e=c.n(d),f=c(92990),g=c(23358);async function h(a){let b=JSON.stringify({loginTraceID:a,login_trace_id:a}),c="no successful response";for(let a of f.SK.loginGuidanceUrls)try{let d=await fetch(a,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","User-Agent":f.SK.userAgent},body:b});if(!d.ok){c=`${a} HTTP ${d.status}`;continue}let e=await d.json(),h=(0,g.j)(e,[["Result","LoginHost"],["Result","loginHost"],["Result","LoginURL"],["result","loginHost"],["data","Result","LoginHost"],["data","loginHost"],["LoginHost"],["loginHost"]]);if(h)return h;c=`${a} missing LoginHost`}catch(b){c=`${a} ${b.message}`}throw Error(`Trae GetLoginGuidance failed: ${c}`)}function i(){return[...f.SK.apiOrigins]}async function j(a,b){let c=JSON.stringify({ClientID:f.SK.clientId,RefreshToken:a,ClientSecret:f.SK.clientSecret,UserID:""}),d="no successful response";for(let e of i()){let h=`${e.replace(/\/$/,"")}${f.SK.exchangeTokenPath}`;try{let e,i={Accept:"application/json","Content-Type":"application/json","User-Agent":f.SK.userAgent};b&&(i["x-cloudide-token"]=b);let j=await fetch(h,{method:"POST",headers:i,body:c}),k=await j.text();if(!j.ok){d=`${h} HTTP ${j.status}`;continue}try{e=JSON.parse(k)}catch{d=`${h} invalid JSON`;continue}let l=(0,g.j)(e,[["Result","AccessToken"],["Result","accessToken"],["result","access_token"],["accessToken"]]);if(!l){let a=(0,g.j)(e,[["message"],["msg"],["error"],["Result","Message"]])||"missing AccessToken";d=`${h} ${a}`;continue}return{accessToken:l,refreshToken:(0,g.j)(e,[["Result","RefreshToken"],["result","refresh_token"],["refreshToken"]])||a,expiresIn:null,expiresAt:(0,g.j)(e,[["Result","ExpiresAt"],["Result","expiresAt"],["result","expires_at"],["expiresAt"]])}}catch(a){d=`${h} ${a.message}`}}throw Error(`Trae ExchangeToken failed: ${d}`)}async function k(a){for(let b of i()){let c=`${b.replace(/\/$/,"")}${f.SK.getUserInfoPath}`;try{let b=await fetch(c,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","User-Agent":f.SK.userAgent,"x-cloudide-token":a},body:JSON.stringify({})});if(!b.ok)continue;let d=await b.json();return{email:(0,g.j)(d,[["Result","NonPlainTextEmail"],["Result","Email"],["Result","email"],["email"],["data","email"]]),name:(0,g.j)(d,[["Result","ScreenName"],["Result","Nickname"],["Result","Name"],["result","nickname"],["nickname"],["name"]]),aiRegion:(0,g.j)(d,[["Result","AIRegion"],["Result","aiRegion"],["aiRegion"]]),region:(0,g.j)(d,[["Result","Region"],["Result","region"],["region"]]),tenant:(0,g.j)(d,[["Result","TenantID"],["Result","tenantId"],["tenantId"]]),userId:(0,g.j)(d,[["Result","UserID"],["Result","userId"],["userId"]])}}catch{}}return{email:null,name:null}}let l={config:f.SK,flowType:"authorization_code",callbackPath:f.SK.callbackPath,prepareConfig:async a=>{let b=e().randomUUID(),c=await h(b);return{...a,loginTraceID:b,loginHost:c}},buildAuthUrl:(a,b,c)=>{var d;let g,h,i={plugin_version:f.SK.defaultPluginVersion,machine_id:e().randomUUID(),device_id:f.SK.defaultDeviceId,x_device_brand:"unknown",x_device_type:"unknown",x_os_version:"unknown",x_env:"",x_app_version:f.SK.defaultAppVersion,x_app_type:f.SK.defaultAppType},j=a.loginTraceID||c;return d=a.loginHost,(g=new URL(d.startsWith("http")?d:`https://${d.replace(/^\/+/,"")}`)).pathname=f.SK.authorizationPath,(h=new URLSearchParams).set("login_version","1"),h.set("auth_from","trae"),h.set("login_channel","native_ide"),h.set("plugin_version",i.plugin_version),h.set("auth_type","local"),h.set("client_id",f.SK.clientId),h.set("redirect","0"),h.set("login_trace_id",j),h.set("auth_callback_url",b),h.set("machine_id",i.machine_id),h.set("device_id",i.device_id),h.set("x_device_id",i.device_id),h.set("x_machine_id",i.machine_id),h.set("x_device_brand",i.x_device_brand),h.set("x_device_type",i.x_device_type),h.set("x_os_version",i.x_os_version),h.set("x_env",i.x_env),h.set("x_app_version",i.x_app_version),h.set("x_app_type",i.x_app_type),g.search=h.toString(),g.toString()},exchangeToken:async(a,b)=>{let c=String(b||"").trim();if(!(/[?=&]/.test(c)&&(c.includes("refreshToken")||c.includes("refresh_token"))))return{accessToken:c.replace(/^(Cloud-IDE-JWT|Bearer)\s+/i,""),refreshToken:null,expiresIn:24*f.SK.tokenLifetimeDays*3600,_authMethod:"imported"};let{refreshToken:d,cloudideToken:e}=function(a){let b=String(a||"").trim(),c=b;b.includes("?")&&(c=b.slice(b.indexOf("?")+1)),b.startsWith("#")&&(c=b.slice(1));let d=Object.fromEntries(new URLSearchParams(c)),e=a=>{for(let b of a){let a=d[b];if(a&&String(a).trim())return String(a).trim()}return null},f=e(["error","error_code","errorCode"]);if(f){let a=e(["error_description","error_desc","message"]);throw Error(a?`Trae auth failed: ${f} (${a})`:`Trae auth failed: ${f}`)}let g=e(["refreshToken","refresh_token","RefreshToken"]);if(!g)throw Error("Trae callback missing refreshToken");let h=e(["loginHost","login_host","LoginHost","host","consoleHost"]);if(!h)throw Error("Trae callback missing loginHost");return{refreshToken:g,loginHost:h,cloudideToken:e(["x-cloudide-token","xCloudideToken","accessToken","access_token","token"])}}(c);return{...await j(d,e),_authMethod:"oauth"}},postExchange:async a=>({userInfo:await k(a.accessToken)}),mapTokens:(a,b)=>{let c,d=a.expiresIn||(a.expiresAt?Math.max(60,Number(a.expiresAt)-Math.floor(Date.now()/1e3)):24*f.SK.tokenLifetimeDays*3600),e=b?.userInfo||{},g=e.aiRegion||"US-East";return{accessToken:a.accessToken,refreshToken:a.refreshToken,expiresIn:d,email:e.email||void 0,displayName:e.name||void 0,providerSpecificData:{authMethod:a._authMethod||"oauth",aiRegion:g,region:e.region||g,tenant:e.tenant||"marscode",userId:e.userId||"",scope:"sg"===(c=(g||"").toLowerCase())||c.includes("singapore")?"marscode-sg":"cn"===c||c.includes("cn")||c.includes("china")?"marscode-cn":"marscode-us",webId:"",bizUserId:"",userUniqueId:"",appLanguage:"en",appVersion:f.SK.defaultAppVersion,userRegion:"SG"===g?"SG":"US",userIdentity:"Free"}}}}},30022:(a,b,c)=>{c.d(b,{_G:()=>d._G,bg:()=>d.bg,cn:()=>d.cn,h3:()=>d.h3,ii:()=>d.ii,rf:()=>d.rf});var d=c(69704)},34940:(a,b,c)=>{c.d(b,{A:()=>g});var d=c(90737),e=c(92990),f=c(53129);let g={config:e.qp,flowType:"device_code",requestDeviceCode:async a=>{let b=new URLSearchParams({client_id:a.clientId,scope:a.scope});a.referrer&&b.set("referrer",a.referrer);let c=await fetch(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","User-Agent":d.hY},body:b});if(!c.ok){let a=await c.text();throw Error(`Grok CLI device code request failed: ${a}`)}return await c.json()},pollToken:async(a,b)=>{let c,e=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","User-Agent":d.hY},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:b,client_id:a.clientId})});try{c=await e.json()}catch{c={error:"invalid_response",error_description:await e.text()}}let f=c?.error==="authorization_pending"||c?.error==="slow_down";return{ok:e.ok||f,data:c}},postExchange:async a=>{try{let b=await fetch("https://cli-chat-proxy.grok.com/v1/user",{headers:{Authorization:`Bearer ${a.access_token}`,Accept:"application/json","User-Agent":d.hY,"x-xai-token-auth":"xai-grok-cli","x-grok-client-version":d.uG}});if(b.ok)return{user:await b.json()}}catch{}return{user:null}},mapTokens:(a,b)=>{let c=(0,f.pG)(a.id_token)||(0,f.J_)(a.access_token)||b?.user?.email||null,d=b?.user?.userId||b?.user?.principalId||null,e=[b?.user?.firstName,b?.user?.lastName].filter(Boolean).join(" ").trim()||null,g=a.expires_in?new Date(Date.now()+1e3*a.expires_in).toISOString():null;return{accessToken:a.access_token,refreshToken:a.refresh_token||null,expiresIn:a.expires_in,expiresAt:g,scope:a.scope,email:c||void 0,displayName:e||void 0,providerSpecificData:{authMethod:"device_code",idToken:a.id_token||null,email:c||null,userId:d,hasGrokCodeAccess:b?.user?.hasGrokCodeAccess??null,subscriptionTier:b?.user?.subscriptionTier??null}}}}},35152:(a,b,c)=>{c.d(b,{A:()=>d});let d={config:c(92990).w1,flowType:"authorization_code",buildAuthUrl:(a,b)=>{let c=new URLSearchParams({client_type:"extension",callback_url:b,redirect_uri:b});return`${a.authorizeUrl}?${c.toString()}`},exchangeToken:async(a,b,c)=>{try{let a=b,c=4-a.length%4;4!==c&&(a+="=".repeat(c));let d=Buffer.from(a,"base64").toString("utf-8"),e=d.lastIndexOf("}");if(-1===e)throw Error("No JSON found in decoded code");let f=JSON.parse(d.substring(0,e+1));return{access_token:f.accessToken,refresh_token:f.refreshToken,email:f.email,firstName:f.firstName,lastName:f.lastName,expires_at:f.expiresAt}}catch(f){let d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:b,client_type:"extension",redirect_uri:c})});if(!d.ok){let a=await d.text();throw Error(`ClinePass token exchange failed: ${a}`)}let e=await d.json();return{access_token:e.data?.accessToken||e.accessToken,refresh_token:e.data?.refreshToken||e.refreshToken,email:e.data?.userInfo?.email||"",expires_at:e.data?.expiresAt||e.expiresAt}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_at?Math.floor((new Date(a.expires_at).getTime()-Date.now())/1e3):3600,email:a.email,providerSpecificData:{firstName:a.firstName,lastName:a.lastName}})}},41902:(a,b,c)=>{c.d(b,{A:()=>d});let d={config:c(92990).OV,flowType:"authorization_code_pkce",buildAuthUrl:(a,b,c,d)=>{let e=new URLSearchParams({code:"true",client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),code_challenge:d,code_challenge_method:a.codeChallengeMethod,state:c});return`${a.authorizeUrl}?${e.toString()}`},exchangeToken:async(a,b,c,d,e)=>{let f=b,g="";if(f.includes("#")){let a=f.split("#");f=a[0],g=a[1]||""}let h=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({code:f,state:g||e,grant_type:"authorization_code",client_id:a.clientId,redirect_uri:c,code_verifier:d})});if(!h.ok){let a=await h.text();throw Error(`Token exchange failed: ${a}`)}return await h.json()},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope})}},49475:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(92990);let e={config:d.Nu,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,scope:a.scopes})});if(!b.ok){let a=await b.text();throw Error(`Device code request failed: ${a}`)}return await b.json()},pollToken:async(a,b)=>{let c,d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,device_code:b,grant_type:"urn:ietf:params:oauth:grant-type:device_code"})});try{c=await d.json()}catch(a){c={error:"invalid_response",error_description:await d.text()}}return{ok:d.ok,data:c}},postExchange:async a=>{let b=await fetch(d.Nu.copilotTokenUrl,{headers:{Authorization:`Bearer ${a.access_token}`,Accept:"application/json","X-GitHub-Api-Version":d.Nu.apiVersion,"User-Agent":d.Nu.userAgent}}),c=b.ok?await b.json():{},e=await fetch(d.Nu.userInfoUrl,{headers:{Authorization:`Bearer ${a.access_token}`,Accept:"application/json","X-GitHub-Api-Version":d.Nu.apiVersion,"User-Agent":d.Nu.userAgent}});return{copilotToken:c,userInfo:e.ok?await e.json():{}}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,name:b?.userInfo?.login||b?.userInfo?.name,displayName:b?.userInfo?.name||b?.userInfo?.login,email:b?.userInfo?.email||null,providerSpecificData:{copilotToken:b?.copilotToken?.token,copilotTokenExpiresAt:b?.copilotToken?.expires_at,githubUserId:b?.userInfo?.id,githubLogin:b?.userInfo?.login,githubName:b?.userInfo?.name,githubEmail:b?.userInfo?.email}})}},53129:(a,b,c)=>{function d(a,b){let c,d=String(a||"").trim();if(!d)throw Error(`xai discovery ${b} is empty`);try{c=new URL(d)}catch(a){throw Error(`xai discovery ${b} is invalid: ${a.message}`)}if("https:"!==c.protocol)throw Error(`xai discovery ${b} must use https: ${d}`);let e=c.hostname.toLowerCase().trim();if("x.ai"!==e&&!e.endsWith(".x.ai"))throw Error(`xai discovery ${b} host ${e} is not on x.ai`);return d}function e(a){if(!a||"string"!=typeof a)return;let b=a.split(".");if(3===b.length)try{let a=b[1].replace(/-/g,"+").replace(/_/g,"/"),c=(4-a.length%4)%4,d=Buffer.from(a+"=".repeat(c),"base64").toString("utf8"),e=JSON.parse(d);return e.email||e.preferred_username||e.sub||void 0}catch{return}}function f(a){try{if(!a||"string"!=typeof a)return null;let b=a.split(".");if(3!==b.length)return null;let c=b[1].replace(/-/g,"+").replace(/_/g,"/"),d=(4-c.length%4)%4,e=c+"=".repeat(d);return JSON.parse(Buffer.from(e,"base64").toString("utf8"))}catch{return null}}function g(a){let b=f(a);if(b)return b.email||b.preferred_username||b.sub||void 0}async function h(a){if(!a)return null;try{let b=await fetch("https://codewhisperer.us-east-1.amazonaws.com/ListAvailableProfiles",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json",Authorization:`Bearer ${a}`},body:JSON.stringify({maxResults:10})});if(!b.ok)return null;let c=await b.json();return c.profiles?.find(a=>a.arn?.trim())?.arn?.trim()||null}catch{return null}}function i(a){let b=f(a);if(!b)return{};let c=b["https://api.openai.com/auth"]||{};return{email:b.email,chatgptAccountId:c.chatgpt_account_id||b.account_id,chatgptPlanType:c.chatgpt_plan_type||b.plan_type}}c.d(b,{J_:()=>g,YR:()=>i,gR:()=>h,js:()=>d,pG:()=>e})},56187:(a,b,c)=>{c.d(b,{A:()=>d});let d={config:c(92990).f7,flowType:"authorization_code_pkce",buildAuthUrl:(a,b,c,d,e={})=>{let f=e.baseUrl||a.defaultBaseUrl,g=new URLSearchParams({client_id:e.clientId||"",redirect_uri:b,response_type:"code",state:c,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod});return`${f}${a.authorizeUrlPath}?${g.toString()}`},exchangeToken:async(a,b,c,d,e,f={})=>{let g=f.baseUrl||a.defaultBaseUrl,h=f.clientId||"",i=f.clientSecret||"",j=new URLSearchParams({client_id:h,grant_type:"authorization_code",code:b,redirect_uri:c,code_verifier:d});i&&j.set("client_secret",i);let k=await fetch(`${g}${a.tokenUrlPath}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:j.toString()});if(!k.ok)throw Error(`GitLab token exchange failed: ${await k.text()}`);let l=await k.json(),m=await fetch(`${g}${a.userInfoUrlPath}`,{headers:{Authorization:`Bearer ${l.access_token}`}}),n=m.ok?await m.json():{};return{...l,_user:n,_baseUrl:g,_clientId:h}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,providerSpecificData:{username:a._user?.username||"",email:a._user?.email||a._user?.public_email||"",name:a._user?.name||"",baseUrl:a._baseUrl,clientId:a._clientId,authKind:"oauth"}})}},66678:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Gj:()=>J,PY:()=>M,Re:()=>K,Su:()=>L,YR:()=>g.YR,gR:()=>g.gR,kP:()=>I,sO:()=>H});var e=c(48895),f=c(13808),g=c(53129),h=c(41902),i=c(24329),j=c(72520),k=c(34940),l=c(220),m=c(79188),n=c(86725),o=c(67377),p=c(5867),q=c(49475),r=c(93551),s=c(68446),t=c(3198),u=c(67096),v=c(18941),w=c(35152),x=c(56187),y=c(99799),z=c(86857),A=c(17691),B=c(24336),C=c(13342),D=c(18245),E=c(81884),F=c(20386),G=a([e]);e=(G.then?(await G)():G)[0];let N={claude:h.A,codex:i.A,xai:j.A,"grok-cli":k.A,"gemini-cli":l.A,antigravity:m.A,iflow:n.A,qoder:o.A,"qoder-cn":p.A,github:q.A,kiro:r.A,cursor:s.A,kimi:t.A,kilocode:u.A,cline:v.A,clinepass:w.A,gitlab:x.A,"codebuddy-cn":y.A,"codebuddy-intl":z.A,kimchi:A.A,trae:B.A,windsurf:C.A,zed:D.A,glm:E.A,muse:F.A};function H(a){let b=N["kimi-coding"===a?"kimi":a];if(!b)throw Error(`Unknown provider: ${a}`);return b}async function I(a,b,c){let d=H(a),e=d.prepareConfig?await d.prepareConfig(d.config,c||{}):d.config,{codeVerifier:g,codeChallenge:h,state:i}=(0,f.lz)(d.pkceVerifierBytes),j=e.loginTraceID||i,k=e.privateKeyVerifier||g;return{authUrl:"device_code"===d.flowType?null:"authorization_code_pkce"===d.flowType?d.buildAuthUrl(e,b,j,h,c||{}):d.buildAuthUrl(e,b,j,void 0,c||{}),state:j,codeVerifier:k,codeChallenge:h,redirectUri:b,flowType:d.flowType,fixedPort:d.fixedPort,callbackPath:d.callbackPath||"/callback"}}async function J(a,b,c,d,e,f){let g=H(a),h=g.prepareConfig?await g.prepareConfig(g.config,f||{}):g.config,i=await g.exchangeToken(h,b,c,d,e,f||{}),j=null;return g.postExchange&&(j=await g.postExchange(i)),g.mapTokens(i,j)}async function K(a,b,c){let d=H(a);if("device_code"!==d.flowType)throw Error(`Provider ${a} does not support device code flow`);return await d.requestDeviceCode(d.config,b,c||{})}async function L(a,b,c,d){let e=H(a);if("device_code"!==e.flowType)throw Error(`Provider ${a} does not support device code flow`);let f=await e.pollToken(e.config,b,c,d);if(f.ok)if(f.data.access_token){let b=null;if(e.postExchange)try{b=await e.postExchange(f.data)}catch(b){return console.warn(`[oauth] ${a} postExchange failed:`,b?.message||b),{success:!1,error:"exchange_failed",errorDescription:b.message,fatal:!0}}let c=e.mapTokens(f.data,b);if("kiro"===a&&!c.providerSpecificData?.profileArn){let a=await (0,g.gR)(c.accessToken);a&&(c.providerSpecificData.profileArn=a)}return{success:!0,tokens:c}}else if("authorization_pending"===f.data.error||"slow_down"===f.data.error)return{success:!1,error:f.data.error,errorDescription:f.data.error_description||f.data.message,pending:"authorization_pending"===f.data.error};else return{success:!1,error:f.data.error||"no_access_token",errorDescription:f.data.error_description||f.data.message||"No access token received"};return{success:!1,error:f.data.error,errorDescription:f.data.error_description}}let O=!1;async function M(){if(!O){O=!0;try{let{getProviderConnections:a,updateProviderConnection:b}=await Promise.resolve().then(c.bind(c,89718));for(let c of(await a()).filter(a=>{if("codex"!==a.provider||"oauth"!==a.authType||!a.idToken)return!1;let b=!!a.email,c=!!a.providerSpecificData?.chatgptAccountId;return!b||!c})){let a=(0,g.YR)(c.idToken);if(!a.email&&!a.chatgptAccountId)continue;let d={};!c.email&&a.email&&(d.email=a.email),(a.chatgptAccountId||a.chatgptPlanType)&&(d.providerSpecificData={...c.providerSpecificData||{},chatgptAccountId:a.chatgptAccountId,chatgptPlanType:a.chatgptPlanType}),Object.keys(d).length&&await b(c.id,d)}}catch(a){O=!1,console.log("backfillCodexEmails failed:",a?.message||a)}}}d()}catch(a){d(a)}})},67096:(a,b,c)=>{c.d(b,{A:()=>d});let d={config:c(92990).MZ,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(a.initiateUrl,{method:"POST",headers:{"Content-Type":"application/json"}});if(!b.ok){if(429===b.status)throw Error("Too many pending authorization requests. Please try again later.");let a=await b.text();throw Error(`Device auth initiation failed: ${a}`)}let c=await b.json();return{device_code:c.code,user_code:c.code,verification_uri:c.verificationUrl,verification_uri_complete:c.verificationUrl,expires_in:c.expiresIn||300,interval:3}},pollToken:async(a,b)=>{let c=await fetch(`${a.pollUrlBase}/${b}`);if(202===c.status)return{ok:!1,data:{error:"authorization_pending"}};if(403===c.status)return{ok:!1,data:{error:"access_denied",error_description:"Authorization denied by user"}};if(410===c.status)return{ok:!1,data:{error:"expired_token",error_description:"Authorization code expired"}};if(!c.ok)return{ok:!1,data:{error:"poll_failed",error_description:`Poll failed: ${c.status}`}};let d=await c.json();if("approved"===d.status&&d.token){let b=null;try{let c=await fetch(`${a.apiBaseUrl}/api/profile`,{headers:{Authorization:`Bearer ${d.token}`}});if(c.ok){let a=await c.json();b=a.organizations?.[0]?.id||null}}catch{}return{ok:!0,data:{access_token:d.token,_userEmail:d.userEmail,_orgId:b}}}return{ok:!1,data:{error:"authorization_pending"}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:null,expiresIn:null,email:a._userEmail,...a._orgId?{providerSpecificData:{orgId:a._orgId}}:{}})}},67377:(a,b,c)=>{c.d(b,{A:()=>d});let d={config:c(92990).hF,flowType:"device_code",requestDeviceCode:async a=>{let{QoderService:b}=await c.e(1531).then(c.bind(c,91531)),d=new b().initiateDeviceFlow();return{device_code:d.nonce,user_code:d.nonce.slice(0,8).toUpperCase(),verification_uri:a.loginUrl,verification_uri_complete:d.verificationUriComplete,expires_in:300,interval:2,codeVerifier:d.codeVerifier,_qoderNonce:d.nonce,_qoderMachineId:d.machineId}},pollToken:async(a,b,d,e)=>{let f,{QoderService:g}=await c.e(1531).then(c.bind(c,91531)),h=new g,i=b||e?._qoderNonce,j=d||e?._qoderVerifier;if(!i||!j)return{ok:!1,data:{error:"invalid_request",error_description:"Missing nonce/verifier"}};try{f=await h.pollDeviceToken({nonce:i,codeVerifier:j})}catch(a){return{ok:!1,data:{error:"poll_failed",error_description:a.message}}}if("pending"===f.status)return{ok:!1,data:{error:"authorization_pending"}};let k=await h.fetchUserInfo(f.accessToken),l=Math.max(86400,Math.floor((f.expireTime-Date.now())/1e3));return{ok:!0,data:{access_token:f.accessToken,refresh_token:f.refreshToken,expires_in:l,_qoderUserId:f.userId,_qoderMachineId:e?._qoderMachineId||"",_qoderName:k.name,_qoderEmail:k.email,_qoderOrganizationId:k.organizationId}}},mapTokens:a=>{let b=(a._qoderEmail||"").trim(),c=(a._qoderName||"").trim()||null,d=a._qoderUserId||"",e=b||(d?`qoder-user-${d}`:null);return{accessToken:a.access_token,refreshToken:a.refresh_token||null,expiresIn:a.expires_in,email:e,displayName:c,providerSpecificData:{authMethod:"device",userId:d,machineId:a._qoderMachineId||"",organizationId:a._qoderOrganizationId||""}}}}},68446:(a,b,c)=>{c.d(b,{A:()=>d});let d={config:c(92990).WN,flowType:"import_token",mapTokens:a=>({accessToken:a.accessToken,refreshToken:null,expiresIn:a.expiresIn||86400,providerSpecificData:{machineId:a.machineId,authMethod:"imported"}})}},72520:(a,b,c)=>{c.d(b,{A:()=>j});var d=c(55511),e=c.n(d),f=c(73159),g=c(53129);let h=null;async function i(){if(h)return h;try{let a=await fetch(f.oT.discoveryUrl,{headers:{Accept:"application/json"}});if(a.ok){let b=await a.json();return h={authorizeUrl:(0,g.js)(b.authorization_endpoint,"authorization_endpoint"),tokenUrl:(0,g.js)(b.token_endpoint,"token_endpoint")}}}catch{}return h={authorizeUrl:f.oT.authorizeUrl,tokenUrl:f.oT.tokenUrl}}let j={config:f.oT,flowType:"authorization_code_pkce",fixedPort:f.oT.loopbackPort,callbackPath:f.oT.callbackPath,pkceVerifierBytes:f.Ue,prepareConfig:async a=>{let b=await i();return{...a,authorizeUrl:b.authorizeUrl,tokenUrl:b.tokenUrl}},buildAuthUrl:(a,b,c,d)=>{let f=e().randomBytes(16).toString("hex"),g=Object.entries({response_type:"code",client_id:a.clientId,redirect_uri:b,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod,state:c,nonce:f,plan:"generic",referrer:"cli-proxy-api"}).map(([a,b])=>`${a}=${encodeURIComponent(b)}`).join("&");return`${a.authorizeUrl}?${g}`},exchangeToken:async(a,b,c,d)=>{let e=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,code:b,redirect_uri:c,code_verifier:d})});if(!e.ok){let a=await e.text();throw Error(`xAI token exchange failed: ${a}`)}return await e.json()},mapTokens:a=>{let b={accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope},c=(0,g.pG)(a.id_token);return c&&(b.email=c),a.id_token&&(b.providerSpecificData={idToken:a.id_token}),b}}},74177:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{PY:()=>e.PY,Re:()=>e.Re,Su:()=>e.Su,exchangeTokens:()=>e.Gj,extractCodexAccountInfo:()=>e.YR,fetchKiroProfileArn:()=>e.gR,kP:()=>e.kP,sO:()=>e.sO});var e=c(66678),f=a([e]);e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},79188:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(92990);let e={config:d.YT,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),state:c,access_type:"offline",prompt:"consent"});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,client_secret:a.clientSecret,code:b,redirect_uri:c})});if(!d.ok){let a=await d.text();throw Error(`Token exchange failed: ${a}`)}return await d.json()},postExchange:async a=>{let b={Authorization:`Bearer ${a.access_token}`,"Content-Type":"application/json","User-Agent":d.YT.loadCodeAssistUserAgent,"x-request-source":"local"},c=(0,d.cD)(),e=await fetch(`${d.YT.userInfoUrl}?alt=json`,{headers:{Authorization:`Bearer ${a.access_token}`,"x-request-source":"local"}}),f=e.ok?await e.json():{},g="",h="legacy-tier";try{let a=await fetch(d.YT.loadCodeAssistEndpoint,{method:"POST",headers:b,body:JSON.stringify({metadata:c})});if(a.ok){let b=await a.json();if(g=b.cloudaicompanionProject?.id||b.cloudaicompanionProject||"",Array.isArray(b.allowedTiers)){for(let a of b.allowedTiers)if(a.isDefault&&a.id){h=a.id.trim();break}}}}catch(a){console.log("Failed to load code assist:",a)}return g&&(async()=>{for(let a=0;a<10;a++){try{let a=await fetch(d.YT.onboardUserEndpoint,{method:"POST",headers:b,body:JSON.stringify({tierId:h,metadata:c})});if(a.ok){let b=await a.json();if(!0===b.done)break}}catch(a){break}await new Promise(a=>setTimeout(a,5e3))}})().catch(()=>{}),{userInfo:f,projectId:g}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,email:b?.userInfo?.email,projectId:b?.projectId})}},81884:(a,b,c)=>{c.d(b,{A:()=>k});var d=c(55511),e=c.n(d);async function f(a,b){let c=await g(a,b),d={Authorization:`Bearer ${c}`,"Content-Type":"application/json"},e=function(a){let b=(Array.isArray(a?.organizations)?a.organizations:[]).map(a=>({organization:a,projects:(a?.projects||[]).filter(a=>"2"!==String(a?.projectType??"").trim())})).filter(({organization:a,projects:b})=>!!(a?.organizationId&&b.length));if(!b.length)return null;let c=b.find(({organization:a})=>i(a.organizationName))||b[0],d=c.projects.find(a=>i(a?.projectName))||c.projects[0];return c.organization?.organizationId&&d?.projectId?{organizationId:c.organization.organizationId,projectId:d.projectId}:null}(await h(`${a.apiBaseUrl}/api/biz/customer/getCustomerInfo`,{headers:d},"customer info"));if(!e)throw Error("Unable to resolve Z.ai organization and project for the coding plan");let f=`${a.apiBaseUrl}/api/biz/v1/organization/${e.organizationId}/projects/${e.projectId}/api_keys`,j=await h(f,{headers:d},"api keys")||[],k=Array.isArray(j)?j.find(b=>b?.name===a.planApiKeyName):null;k||(k=await h(f,{method:"POST",headers:d,body:JSON.stringify({name:a.planApiKeyName})},"api key create"));let l=k?.apiKey?.trim();if(!l)throw Error("Z.ai api_keys response is missing apiKey");let m=await h(`${f}/copy/${encodeURIComponent(l)}`,{headers:d},"api key copy"),n=m?.secretKey?.trim();if(!n)throw Error("Z.ai api key copy response is missing secretKey");return{planApiKey:`${l}.${n}`,businessToken:c}}async function g(a,b){let c=await h(a.businessLoginUrl,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:b})},"Z.ai business login"),d=c?.access_token?.trim()||c?.accessToken?.trim();if(!d)throw Error("Z.ai business login response is missing access_token");return d}async function h(a,b,c){let d,e=await fetch(a,b),f=await e.text();if(!e.ok)throw Error(`Z.ai ${c} request failed (HTTP ${e.status}): ${f.slice(0,200)}`);try{d=JSON.parse(f)}catch{throw Error(`Z.ai ${c} response is not valid JSON`)}if(!j(d?.code)||d?.success===!1)throw Error(d?.msg||`Z.ai ${c} returned business error ${d?.code}`);return d?.data??d??null}function i(a){let b=String(a||"").trim().toLowerCase();return b.includes("默认机构")||b.includes("默认项目")||"default"===b}function j(a){return null==a||0===a||200===a||"0"===a||"200"===a}let k={config:c(92990)._0,flowType:"device_code",requestDeviceCode:async a=>{let b=e().randomBytes(32).toString("hex"),c=await fetch(a.cliInitUrl,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b}`},body:JSON.stringify({provider:a.providerId||"zai"})});if(!c.ok){let a=await c.text();throw Error(`Zai OAuth init failed: ${a}`)}let d=await c.json();if(!j(d.code)||!d.data)throw Error(d.msg||"Zai OAuth init returned no data");let f=d.data;if(!f.flow_id||!f.authorize_url)throw Error("Zai OAuth init response missing flow_id/authorize_url");return{device_code:f.flow_id,verification_uri:f.authorize_url,expires_in:function(a){let b=Number(a);if(!Number.isFinite(b)||b<=0)return null;let c=Math.floor(((b>1e12?b:1e3*b)-Date.now())/1e3);return c>0?c:null}(f.expires_at)??300,interval:f.poll_interval_sec||3,_zcodePollToken:b}},pollToken:async(a,b,c,d)=>{let e=d?._zcodePollToken;if(!e)return{ok:!0,data:{error:"access_denied",error_description:"Missing Zai poll token — restart the login flow"}};let g=await fetch(`${a.cliPollUrl}/${encodeURIComponent(b)}`,{headers:{Authorization:`Bearer ${e}`}});if(!g.ok)return{ok:!0,data:{error:"access_denied",error_description:`Zai poll failed (HTTP ${g.status})`}};let h=await g.json();if(!j(h.code))return{ok:!0,data:{error:"access_denied",error_description:h.msg||"Zai poll failed"}};let i=h.data||{};if("pending"===i.status)return{ok:!0,data:{error:"authorization_pending"}};if("failed"===i.status)return{ok:!0,data:{error:"access_denied",error_description:"Zai authorization failed or was cancelled"}};if("ready"!==i.status)return{ok:!0,data:{error:"authorization_pending",error_description:`Unknown status: ${i.status}`}};let k=i[a.providerId]||i[i.providerId]||{},l=k.access_token||k.accessToken||i.accessToken||i.access_token;if(!l)return{ok:!0,data:{error:"access_denied",error_description:"Zai poll response missing access token"}};let{planApiKey:m,businessToken:n}=await f(a,l);return{ok:!0,data:{access_token:m,_zcodeJwtToken:i.token||"",_zaiBusinessToken:n,_zaiRefreshToken:k.refresh_token||k.refreshToken||i.refresh_token||i.refreshToken||"",_zcodeUser:i.user||{}}}},mapTokens:a=>{let b=a._zcodeUser||{},c=b.name||b.email||null;return{accessToken:a.access_token,refreshToken:null,email:b.email||null,...c?{displayName:c}:{},providerSpecificData:{authMethod:"cli_poll",username:b.name||void 0,userId:b.user_id||void 0,zcodeJwtToken:a._zcodeJwtToken||void 0,zaiBusinessToken:a._zaiBusinessToken||void 0,...a._zaiRefreshToken?{zaiRefreshToken:a._zaiRefreshToken}:{}}}}}},86725:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(92990);let e={config:d.ZL,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({loginMethod:a.extraParams.loginMethod,type:a.extraParams.type,redirect:b,state:c,client_id:a.clientId});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=Buffer.from(`${a.clientId}:${a.clientSecret}`).toString("base64"),e=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",Authorization:`Basic ${d}`},body:new URLSearchParams({grant_type:"authorization_code",code:b,redirect_uri:c,client_id:a.clientId,client_secret:a.clientSecret})});if(!e.ok){let a=await e.text();throw Error(`Token exchange failed: ${a}`)}return await e.json()},postExchange:async a=>{let b=await fetch(`${d.ZL.userInfoUrl}?accessToken=${encodeURIComponent(a.access_token)}`,{headers:{Accept:"application/json"}});if(!b.ok){let a=await b.text();throw Error(`Failed to fetch user info: ${a}`)}let c=await b.json();if(!c.success)throw Error(`User info request failed: ${c.message||"Unknown error"}`);let e=c.data||{};if(!e.apiKey||""===e.apiKey.trim())throw Error("Empty API key returned from iFlow");if(!(e.email?.trim()||e.phone?.trim()))throw Error("Missing account email/phone in user info");return{userInfo:e}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,apiKey:b?.userInfo?.apiKey,email:b?.userInfo?.email||b?.userInfo?.phone,displayName:b?.userInfo?.nickname||b?.userInfo?.name})}},86857:(a,b,c)=>{c.d(b,{A:()=>d});let d={config:c(92990).DV,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(`${a.stateUrl}?platform=${a.platform}`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"www.codebuddy.ai","X-No-Authorization":"true","X-No-User-Id":"true","X-Product":"SaaS"},body:"{}"});if(!b.ok)throw Error(`CodeBuddy Intl state request failed: ${await b.text()}`);let c=await b.json();if(0!==c.code||!c.data?.state||!c.data?.authUrl)throw Error(`CodeBuddy Intl state error: ${c.msg||"missing state/authUrl"}`);return{device_code:c.data.state,verification_uri:c.data.authUrl,user_code:"",interval:a.pollInterval/1e3,_isCodeBuddy:!0}},pollToken:async(a,b)=>{let c=await fetch(`${a.tokenUrl}?state=${encodeURIComponent(b)}`,{method:"GET",headers:{Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"www.codebuddy.ai","X-No-Authorization":"true","X-No-User-Id":"true","X-No-Enterprise-Id":"true","X-No-Department-Info":"true","X-Product":"SaaS"}});if(!c.ok)return{ok:!1,data:{error:"request_failed"}};let d=await c.json();return 0===d.code&&d.data?.accessToken?{ok:!0,data:{access_token:d.data.accessToken,refresh_token:d.data.refreshToken||"",token_type:d.data.tokenType||"Bearer",expires_in:d.data.expiresIn}}:11217===d.code?{ok:!0,data:{error:"authorization_pending"}}:{ok:!1,data:{error:d.msg||"unknown_error"}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in||86400,providerSpecificData:{}})}},93551:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(92990),e=c(53129);let f={config:d.Tx,flowType:"device_code",requestDeviceCode:async(a,b,c={})=>{let e=("string"==typeof c.region?c.region.trim():"")||"us-east-1";(0,d.S6)(e);let f=("string"==typeof c.startUrl?c.startUrl.trim():"")||a.startUrl,g="idc"===c.authMethod?"idc":"builder-id",h=`https://oidc.${e}.amazonaws.com/client/register`,i=`https://oidc.${e}.amazonaws.com/device_authorization`,j=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientName:a.clientName,clientType:a.clientType,scopes:a.scopes,grantTypes:a.grantTypes,issuerUrl:a.issuerUrl})});if(!j.ok){let a=await j.text();throw Error(`Client registration failed: ${a}`)}let k=await j.json(),l=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:k.clientId,clientSecret:k.clientSecret,startUrl:f})});if(!l.ok){let a=await l.text();throw Error(`Device authorization failed: ${a}`)}let m=await l.json();return{device_code:m.deviceCode,user_code:m.userCode,verification_uri:m.verificationUri,verification_uri_complete:m.verificationUriComplete,expires_in:m.expiresIn,interval:m.interval||5,_clientId:k.clientId,_clientSecret:k.clientSecret,_region:e,_authMethod:g,_startUrl:f}},pollToken:async(a,b,c,e)=>{let f,g=e?._region||"us-east-1";(0,d.S6)(g);let h=`https://oidc.${g}.amazonaws.com/token`,i=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:e?._clientId,clientSecret:e?._clientSecret,deviceCode:b,grantType:"urn:ietf:params:oauth:grant-type:device_code"})});try{f=await i.json()}catch(a){f={error:"invalid_response",error_description:await i.text()}}return f.accessToken?{ok:!0,data:{access_token:f.accessToken,refresh_token:f.refreshToken,expires_in:f.expiresIn,profile_arn:f?.profileArn||null,_clientId:e?._clientId,_clientSecret:e?._clientSecret,_region:e?._region,_authMethod:e?._authMethod,_startUrl:e?._startUrl}}:{ok:!1,data:{error:f.error||"authorization_pending",error_description:f.error_description||f.message}}},mapTokens:a=>{let b=(0,e.J_)(a.access_token);return{accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,email:b,providerSpecificData:{profileArn:a?.profile_arn||null,clientId:a._clientId,clientSecret:a._clientSecret,region:a._region||"us-east-1",authMethod:a._authMethod||"builder-id",startUrl:a._startUrl||d.Tx.startUrl}}}}},99799:(a,b,c)=>{c.d(b,{A:()=>d});let d={config:c(92990).Nl,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(`${a.stateUrl}?platform=${a.platform}`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"copilot.tencent.com","X-No-Authorization":"true","X-No-User-Id":"true","X-Product":"SaaS"},body:"{}"});if(!b.ok)throw Error(`CodeBuddy state request failed: ${await b.text()}`);let c=await b.json();if(0!==c.code||!c.data?.state||!c.data?.authUrl)throw Error(`CodeBuddy state error: ${c.msg||"missing state/authUrl"}`);return{device_code:c.data.state,verification_uri:c.data.authUrl,user_code:"",interval:a.pollInterval/1e3,_isCodeBuddy:!0}},pollToken:async(a,b)=>{let c=await fetch(`${a.tokenUrl}?state=${encodeURIComponent(b)}`,{method:"GET",headers:{Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"copilot.tencent.com","X-No-Authorization":"true","X-No-User-Id":"true","X-No-Enterprise-Id":"true","X-No-Department-Info":"true","X-Product":"SaaS"}});if(!c.ok)return{ok:!1,data:{error:"request_failed"}};let d=await c.json();return 0===d.code&&d.data?.accessToken?{ok:!0,data:{access_token:d.data.accessToken,refresh_token:d.data.refreshToken||"",token_type:d.data.tokenType||"Bearer",expires_in:d.data.expiresIn}}:11217===d.code?{ok:!0,data:{error:"authorization_pending"}}:{ok:!1,data:{error:d.msg||"unknown_error"}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in||86400,providerSpecificData:{}})}}};
@@ -1 +0,0 @@
1
- exports.id=4282,exports.ids=[4282],exports.modules={7803:(a,b,c)=>{"use strict";c.r(b),c.d(b,{debug:()=>o,error:()=>r,errorLine:()=>l,fmtThink:()=>m,info:()=>p,line:()=>k,maskKey:()=>v,nextTag:()=>i,request:()=>s,response:()=>t,stream:()=>u,tagForSession:()=>j,warn:()=>q});let d={DEBUG:0,INFO:1,WARN:2,ERROR:3},e=d[process.env.LOG_LEVEL?.toUpperCase?.()]??d.INFO;function f(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}let g=["\uD83D\uDFE2","\uD83D\uDD35","\uD83D\uDFE3","\uD83D\uDFE1","\uD83D\uDFE0","\uD83D\uDD34","⚪","\uD83D\uDFE4"],h=0;function i(){let a=g[h%g.length];return h++,a}function j(a){if(!a)return i();let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)|0;return g[Math.abs(b)%g.length]}function k(a,b,c){e>d.INFO||console.log(`[${f()}] ${a} ${b} ${c}`)}function l(a,b,c){console.log(`[${f()}] ${a} ${b} ${c}`)}function m(a){return a&&a.mode?"none"===a.mode?"off":"auto"===a.mode?"auto":"budget"===a.mode?a.budget>=1e3?`${Math.round(a.budget/1e3)}k`:`${a.budget}`:"level"===a.mode?a.level:null:null}function n(a){if(!a)return"";if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}function o(a,b,c){if(e<=d.DEBUG){let d=c?` ${n(c)}`:"";console.log(`[${f()}] 🔍 [${a}] ${b}${d}`)}}function p(a,b,c){if(e<=d.INFO){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ℹ️ [${a}] ${b}${d}`)}}function q(a,b,c){if(e<=d.WARN){let d=c?` ${n(c)}`:"";console.warn(`[${f()}] ⚠️ [${a}] ${b}${d}`)}}function r(a,b,c){if(e<=d.ERROR){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ❌ [${a}] ${b}${d}`)}}function s(a,b,c){let d=c?` ${n(c)}`:"";console.log(`\x1b[36m[${f()}] 📥 ${a} ${b}${d}\x1b[0m`)}function t(a,b,c){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ${a<400?"\uD83D\uDCE4":"\uD83D\uDCA5"} ${a} (${b}ms)${d}`)}function u(a,b){let c=b?` ${n(b)}`:"";console.log(`[${f()}] 🌊 [STREAM] ${a}${c}`)}function v(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}},78335:()=>{},80238:(a,b,c)=>{"use strict";c.d(b,{C$:()=>n,Pt:()=>q,Tr:()=>r,c1:()=>o,kI:()=>s,vk:()=>p});var d=c(89718),e=c(39326),f=c(12557),g=c(3662),h=c(40615),i=c(27323),j=c(78661),k=c(7803);let l=Promise.resolve(),m=new Set;async function n(a){try{for(let b of(await (0,d.getProviderConnections)({provider:a})))b?.id&&await (0,d.updateProviderConnection)(b.id,{quotaCheckedAt:null})}catch{}}async function o(a,b=null,c=null,g={}){let n,p=b instanceof Set?b:b?new Set([b]):new Set,q=g?.preferredConnectionId||null,r=g?.requestedModel||c,s=l;l=new Promise(a=>{n=a});try{let b;await s;let g=(0,h.rs)(a),l="zcode-free"===g||"minimax-free"===g||"trae-free"===g,n=!!l&&(await (0,d.getProviderConnections)({provider:g,isActive:!0})).length>0;if(h.IS[g]?.noAuth&&!n){let a=await (0,d.getSettings)(),b=(a.zcodeGatewayHost||"").trim(),c={};if(l)try{let d=(a.zcodeGatewayPath||"").trim()||"/gateway/zcode/v1/messages";"minimax-free"===g?d=(a.minimaxGatewayPath||"").trim()||"/gateway/minimax/v1/messages":"trae-free"===g&&(d=(a.traeGatewayPath||"").trim()||"/gateway/trae/v1/messages");let e=new URL(`http://127.0.0.1:47860${d.startsWith("/")?"":"/"}${d}`);e.hostname=b||"127.0.0.1";let f=Number((a.zcodeGatewayPort||"").trim());Number.isInteger(f)&&f>0&&f<65536&&(e.port=String(f)),c.baseUrl=e.toString()}catch{}let f=(a.providerStrategies||{})[g]||{},h=f.rotateStrategy||"none",i=f.proxyPoolId||null;if("none"!==h){let a=(await (0,d.ui)({isActive:!0})).filter(a=>a.proxyUrl).map(a=>a.id);i=(0,e.p)(a,h,g)}let j=await (0,e.B)({proxyPoolId:i||""});return{id:"noauth",connectionName:"Public",isActive:!0,accessToken:"public",providerSpecificData:{...c,connectionProxyEnabled:j.connectionProxyEnabled,connectionProxyUrl:j.connectionProxyUrl,connectionNoProxy:j.connectionNoProxy,connectionProxyPoolId:j.proxyPoolId||null,vercelRelayUrl:j.vercelRelayUrl||"",strictProxy:!0===j.strictProxy}}}let o=await (0,d.getProviderConnections)({provider:g,isActive:!0});if(k.debug("AUTH",`${a} | total connections: ${o.length}, excludeIds: ${p.size>0?[...p].join(","):"none"}, model: ${c||"any"}`),0===o.length)return k.warn("AUTH",`No credentials for ${a}`),null;let t=o.filter(a=>{if(p.has(a.id)||(0,f.Bl)(a,c))return!1;let b=a.providerSpecificData?.enabledModels;return!("codex"===g&&Array.isArray(b))||!b.length||!r||!!b.includes(r)});if(k.debug("AUTH",`${a} | available: ${t.length}/${o.length}`),o.forEach(a=>{let b=p.has(a.id),d=(0,f.Bl)(a,c);if(b||d){let e=(0,f.kJ)(a);k.debug("AUTH",` → ${a.id?.slice(0,8)} | ${b?"excluded":""} ${d?`modelLocked(${c}) until ${e}`:""}`)}}),0===t.length){let b=o.filter(a=>(0,f.Bl)(a,c)),d=b.map(a=>(0,f.kJ)(a)).filter(Boolean).sort()[0]||null;if(d){let e=b[0];return k.warn("AUTH",`${a} | all ${o.length} accounts locked for ${c||"all"} (${(0,f.Qo)(d)}) | lastError=${e?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:d,retryAfterHuman:(0,f.Qo)(d),lastError:e?.lastError||null,lastErrorCode:e?.errorCode||null}}return k.warn("AUTH",`${a} | all ${o.length} accounts unavailable`),null}let u=await (0,d.getSettings)(),v=(u.providerStrategies||{})[g]||{},w=v.fallbackStrategy||u.fallbackStrategy||"fill-first",x=!0===v.earliestExpiryFirst,y=(0,f.d5)(u.channelBlocks?.[g]);y>0?k.debug("AUTH",`${g} | channel blocked (${Math.ceil(y/1e3)}s left) — skipping quota refresh`):x&&t.length>1&&function(a){let b=Date.now();for(let c of a)!(!c.id||m.has(c.id))&&(b-(c.quotaCheckedAt?new Date(c.quotaCheckedAt).getTime():0)<9e5||(m.add(c.id),(async()=>{try{let a=await (0,e.B)(c.providerSpecificData||{}),b={connectionProxyEnabled:!0===a.connectionProxyEnabled,connectionProxyUrl:a.connectionProxyUrl||"",connectionNoProxy:a.connectionNoProxy||"",vercelRelayUrl:a.vercelRelayUrl||""},f=await (0,i.my)(c,b),g=(0,j.Y)(f);await (0,d.updateProviderConnection)(c.id,{earliestPackageExpiry:g?.expiry||null,earliestPackageName:g?.name||null,quotaCheckedAt:new Date().toISOString()})}catch{}finally{m.delete(c.id)}})()))}(t);let z=t;if(x&&t.length>1){let a=Date.now();z=[...t].sort((b,c)=>{let d=b.earliestPackageExpiry&&new Date(b.earliestPackageExpiry).getTime()>a?new Date(b.earliestPackageExpiry).getTime():1/0,e=c.earliestPackageExpiry&&new Date(c.earliestPackageExpiry).getTime()>a?new Date(c.earliestPackageExpiry).getTime():1/0;return d!==e?d-e:(b.priority||999)-(c.priority||999)})}if(q&&(b=z.find(a=>a.id===q))&&k.info("AUTH",`${a} | pinned to ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"})`),b);else if("round-robin"===w){let a=v.stickyRoundRobinLimit||u.stickyRoundRobinLimit||3,c=[...z].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt)-new Date(a.lastUsedAt):-1:1:(a.priority||999)-(b.priority||999))[0],e=c?.consecutiveUseCount||0;c&&c.lastUsedAt&&e<a?(b=c,await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(b.consecutiveUseCount||0)+1})):(b=[...z].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt)-new Date(b.lastUsedAt):1:-1:(a.priority||999)-(b.priority||999))[0],await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else b=z[0];x&&b?.earliestPackageExpiry&&k.info("AUTH",`${a} | earliest-expiry selected ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"}) | expires in ${(0,f.Qo)(b.earliestPackageExpiry)} (${b.earliestPackageName||"package"})`);let A=await (0,e.B)(b.providerSpecificData||{});return{authType:b.authType,apiKey:b.apiKey,accessToken:b.accessToken,refreshToken:b.refreshToken,idToken:b.idToken,expiresAt:b.expiresAt,expiresIn:b.expiresIn,lastRefreshAt:b.lastRefreshAt,projectId:b.projectId,connectionName:b.displayName||b.name||b.email||b.id,copilotToken:b.providerSpecificData?.copilotToken,providerSpecificData:{...b.providerSpecificData||{},connectionProxyEnabled:A.connectionProxyEnabled,connectionProxyUrl:A.connectionProxyUrl,connectionNoProxy:A.connectionNoProxy,connectionProxyPoolId:A.proxyPoolId||null,vercelRelayUrl:A.vercelRelayUrl||"",strictProxy:!0===A.strictProxy},connectionId:b.id,testStatus:b.testStatus,lastError:b.lastError,_connection:b}}finally{n&&n()}}async function p(a,b,c,e=null,i=null,j=null){if(!a||"noauth"===a)return{shouldFallback:!1,cooldownMs:0,channelScope:!1};let l=(await (0,d.getProviderConnections)({provider:e})).find(b=>b.id===a),m=l?.backoffLevel||0,n=function(a,b,c){if("github"!==(0,h.rs)(c)||402!==Number(a)||!String(b||"").toLowerCase().includes("you've reached your additional usage limit for your plan"))return null;let d=new Date;return Date.UTC(d.getUTCFullYear(),d.getUTCMonth()+1,1)}(b,c,e),o,q,r,s=!1;if(n?(o=!0,q=n-Date.now(),r=0):j&&j>Date.now()?(o=!0,q=Math.min(j-Date.now(),g.fh),r=0):{shouldFallback:o,cooldownMs:q,newBackoffLevel:r,channelScope:s}=(0,f.hk)(b,c,m,(0,h.rs)(e)),!o)return{shouldFallback:!1,cooldownMs:0,channelScope:!1};if(s){let f="string"==typeof c?c.slice(0,500):"Provider error";return await (0,d.updateProviderConnection)(a,{lastError:f,errorCode:b,lastErrorAt:new Date().toISOString()}),e&&b&&f&&console.error(`❌ ${e} [${b}]: ${f}`),{shouldFallback:!0,cooldownMs:q,channelScope:!0}}let t="string"==typeof c?c.slice(0,500):"Provider error",u=(0,f.S5)(n?null:i,q),v=Object.keys(u)[0]===f.wz;await (0,d.updateProviderConnection)(a,{...u,...v?{testStatus:"unavailable"}:{},lastError:t,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:r??m});let w=Object.keys(u)[0],x=l?.displayName||l?.name||l?.email||a.slice(0,8);return k.warn("AUTH",`${x} locked ${w} for ${Math.round(q/1e3)}s [${b}]`),e&&b&&t&&console.error(`❌ ${e} [${b}]: ${t}`),{shouldFallback:!0,cooldownMs:q,channelScope:!1}}async function q(a,b,c=null){if(!a||"noauth"===a)return;let e=b._connection||b,f=Date.now(),g=Object.keys(e).filter(a=>a.startsWith("modelLock_"));if(!e.testStatus&&!e.lastError&&0===g.length)return;let h=g.filter(a=>{if(c&&a===`modelLock_${c}`||c&&"modelLock___all"===a)return!0;let b=e[a];return b&&new Date(b).getTime()<=f});if(0===h.length&&"unavailable"!==e.testStatus&&!e.lastError)return;let i=g.filter(a=>{if(h.includes(a))return!1;let b=e[a];return b&&new Date(b).getTime()>f}),j=Object.fromEntries(h.map(a=>[a,null]));0===i.length&&Object.assign(j,{testStatus:"active",lastError:null,errorCode:null,lastErrorAt:null,backoffLevel:0}),await (0,d.updateProviderConnection)(a,j)}function r(a){let b=a.headers.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a.headers.get("x-api-key");return c||null}async function s(a){return!!a&&await (0,d.ek)(a)}},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,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,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,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
- "use strict";exports.id=436,exports.ids=[436],exports.modules={39609:(a,b,c)=>{c.d(b,{proxyAwareFetch:()=>q});var d=c(27910),e=c(41004);let f=globalThis.fetch,g=new Map,h=new Map,i=["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"],j=["8.8.8.8","8.8.4.4"];function k(a){return null==a?"":String(a).trim()}async function l(a){let b=h.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(j);let g=d(f.resolve4.bind(f)),i=await g(a);return h.set(a,{ip:i[0],expiry:Date.now()+e.v1.dnsCacheTtlMs}),i[0]}catch(b){return console.warn(`[ProxyFetch] DNS resolve failed for ${a}:`,b.message),null}}function m(a,b){let c,d=k(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 n(a){let b=k(a);return b?/^[a-z][a-z0-9+.-]*:\/\//i.test(b)?b:`http://${b}`:null}async function o(a){let b=n(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 p(a,b,e){let f=await Promise.resolve().then(c.t.bind(c,55591,23)),g=await Promise.resolve().then(c.t.bind(c,91645,23)),h=f.default??f,i=g.default??g;return new Promise((c,f)=>{let g=new i.Socket;g.connect(443,b,()=>{let b={socket:g,servername:a.hostname,path:a.pathname+a.search,method:e.method||"POST",headers:{...e.headers,Host:a.hostname}},i=h.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())};c(b)});i.on("error",f),e.body&&i.write("string"==typeof e.body?e.body:JSON.stringify(e.body)),i.end()}),g.on("error",f)})}async function q(a,b={},c=null){let d="string"==typeof a?a:a.toString(),e=k(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=k(b?.url??b?.connectionProxyUrl);if(!c)return null;let d=k(b?.noProxy??b?.connectionNoProxy);return d&&m(a,d)?null:n(c)}(d,c),h=g?null:n(function(a){let b;if(m(a,process.env.NO_PROXY||process.env.no_proxy))return null;try{b=new URL(a).protocol}catch{return null}return"https:"===b?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)),j=g||h;if(function(a){try{let b=new URL(a).hostname;return i.some(a=>b.includes(a))}catch{return!1}}(d)){if(j)try{let c=await o(j);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 l(a.hostname);if(c)return await p(a,c,b)}catch(a){console.warn(`[ProxyFetch] MITM bypass failed: ${a.message}`)}if(j)return f(a,b)}if(j)try{let c=await o(j);return await f(a,{...b,dispatcher:c})}catch(d){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${d.message}`);if(c?.onProxyFallback)try{c.onProxyFallback(d)}catch{}return console.warn(`[ProxyFetch] Proxy failed, falling back to direct: ${d.message}`),f(a,b)}let r=c?.proxyPoolId||c?.enabled===!0||c?.connectionProxyEnabled===!0||!!k(c?.url??c?.connectionProxyUrl);if(c?.strictProxy===!0&&r)throw Error("[ProxyFetch] Proxy required but none resolved (strictProxy=true)");return f(a,b)}async function r(a,b={}){return q(a,b,null)}globalThis.fetch!==r&&(globalThis.fetch=r)},75924:(a,b,c)=>{let d;c.d(b,{Ch:()=>j,Cn:()=>o,Co:()=>y,IO:()=>B,Ic:()=>v,J5:()=>s,K:()=>t,NA:()=>A,QH:()=>p,Wu:()=>z,buildKimiHeaders:()=>C,go:()=>i,iO:()=>q,j5:()=>w,nZ:()=>u,sX:()=>k,uR:()=>r,x0:()=>m,zv:()=>x});var e=c(21820),f=c(35024),g=c(74129);let h=f.xq["gemini-cli"]?.cliVersion,i=f.xq["gemini-cli"]?.apiClient,j=f.xq.codex?.cliVersion;function k(a="unknown"){let b;return`GeminiCLI/${h}/${a||"unknown"} (${(0,e.platform)()}; ${"ia32"===(b=(0,e.arch)())?"x86":b}; terminal)`}let l=f.xq.github?.copilot||{},m={VSCODE_VERSION:l.vscodeVersion,COPILOT_CHAT_VERSION:l.chatVersion,USER_AGENT:l.userAgent,API_VERSION:l.apiVersion};function n(){let a=(0,e.platform)(),b=(0,e.arch)();return"darwin"===a?"arm64"===b?2:1:"linux"===a?"arm64"===b?4:3:5*("win32"===a)}let o={ideType:9,platform:n(),pluginType:2},p="_ide",q=[{from:"You are a Claude agent, built on Anthropic's Claude Agent SDK.",to:""},{from:/You are Hermes(?: Agent)?(?:,\s*(?:an intelligent AI assistant|an AI assistant|an AI agent))?(?:,?\s*(?:built|created)\s+by\s+Nous Research)?\./gi,to:"You are an AI assistant."},{from:/opencode/gi,to:a=>"OpenCode"===a?"Antigravity":"OPENCODE"===a?"ANTIGRAVITY":"antigravity"},{from:/hermes-agent\.nousresearch\.com/gi,to:"antigravity.google.com"},{from:/hermes agent/gi,to:a=>a.startsWith("H")?"Antigravity":"antigravity"},{from:/nous research/gi,to:a=>a.startsWith("N")?"Google DeepMind":"google deepmind"},{from:/hermes-agent/gi,to:"antigravity"}],r="_ide",s=new Set(["browser_subagent","command_status","find_by_name","generate_image","grep_search","list_dir","list_resources","multi_replace_file_content","notify_user","read_resource","read_terminal","read_url_content","replace_file_content","run_command","search_web","send_command_input","task_boundary","view_content_chunk","view_file","write_to_file"]),t={"User-Agent":g.Of},u={"gemini-cli":{loadCodeAssist:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",onboardUser:"https://cloudcode-pa.googleapis.com/v1internal:onboardUser"},antigravity:{loadCodeAssist:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",onboardUser:"https://cloudcode-pa.googleapis.com/v1internal:onboardUser"}},v={"Content-Type":"application/json","User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"google-cloud-sdk vscode_cloudshelleditor/0.1","Client-Metadata":JSON.stringify({ideType:9,platform:n(),pluginType:2})},w={"Content-Type":"application/json","User-Agent":g.Of},x={ideType:9,platform:n(),pluginType:2},y="You are Claude Code, Anthropic's official CLI for Claude.",z=Object.fromEntries(Object.entries(f.sr).filter(([,a])=>a.refreshLeadMs).map(([a,b])=>[a,b.refreshLeadMs])),A={google:{token:"https://oauth2.googleapis.com/token",auth:"https://accounts.google.com/o/oauth2/auth"},openai:{token:f.sr.codex?.tokenUrl,auth:f.sr.codex?.authorizeUrl},anthropic:{token:f.sr.claude?.tokenUrl,auth:"https://api.anthropic.com/v1/oauth/authorize"},iflow:{token:f.sr.iflow?.tokenUrl,auth:f.sr.iflow?.authorizeUrl},github:{token:f.sr.github?.tokenUrl,auth:f.sr.github?.authorizeUrl,deviceCode:f.sr.github?.deviceCodeUrl}};function B(){if(d)return d;try{d=c(39006).rE||"0.0.0"}catch{d=process.env.npm_package_version||"0.0.0"}return d}function C(a){let b=(0,e.platform)(),c=(0,e.arch)(),d=`${b} ${c}`;"darwin"===b?d=`macOS ${c}`:"win32"===b?d=`Windows ${c}`:"linux"===b&&(d=`Linux ${c}`);let f="unknown";try{f=(0,e.hostname)()||"unknown"}catch{f="unknown"}let g="string"==typeof a&&a.trim()?a.trim():`kimi-${Date.now()}`;return{"X-Msh-Platform":"9router","X-Msh-Version":B(),"X-Msh-Device-Name":f,"X-Msh-Device-Model":d,"X-Msh-Device-Id":g}}}};
@@ -1 +0,0 @@
1
- exports.id=4746,exports.ids=[4746],exports.modules={2186:(a,b,c)=>{"use strict";c.d(b,{e3:()=>f,e5:()=>e,nF:()=>d});let d="x-10r-cli-token";function e(a){return a.headers.get(d)||a.headers.get("x-9r-cli-token")||null}function f(a){return a.headers.get("x-10r-password")||a.headers.get("x-9r-password")||null}},21350:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>R,GET:()=>P,POST:()=>Q});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(55511),m=c.n(l),n=c(28286),o=c(30869),p=c(54603),q=c(2186),r=c(24424);let s=o.h0.appPort,t=`http://localhost:${s}/api/mcp/`,u=null,v=async()=>(u||(u=await (0,p.Xj)("9r-cli-auth")),u),w=async a=>{let b=await v();for(let c of a)"string"==typeof c?.url&&c.url.startsWith(t)&&(c.headers={...c.headers||{},[q.nF]:b});return a},x="gateway",y={coworkEgressAllowedHosts:["*"],disabledBuiltinTools:[],isLocalDevMcpEnabled:!0,isDesktopExtensionEnabled:!0,isDesktopExtensionDirectoryEnabled:!0,isDesktopExtensionSignatureRequired:!1,isClaudeCodeForDesktopEnabled:!0,disableEssentialTelemetry:!0,disableNonessentialTelemetry:!0,disableNonessentialServices:!0},z=()=>{if("darwin"===k().platform()){let a=i().join(k().homedir(),"Library","Application Support");return[i().join(a,"Claude-3p"),i().join(a,"Claude")]}if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return[i().join(a,"Claude-3p"),i().join(b,"Claude-3p"),i().join(a,"Claude"),i().join(b,"Claude")]}return[i().join(k().homedir(),".config","Claude-3p"),i().join(k().homedir(),".config","Claude")]},A=async()=>{let a=z();for(let b of a)try{return await g().access(i().join(b,"configLibrary")),b}catch{}return a[0]},B=()=>z()[0],C=async()=>i().join(await A(),"configLibrary"),D=()=>i().join(B(),"configLibrary"),E=async()=>i().join(await C(),"_meta.json"),F=()=>{if("darwin"===k().platform())return i().join(k().homedir(),"Library","Application Support","Claude");if("win32"===k().platform()){let a=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return i().join(a,"Claude")}return i().join(k().homedir(),".config","Claude")},G=()=>i().join(F(),"claude_desktop_config.json"),H=async()=>{try{let a=(await g().readFile(G(),"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(a)||{}}catch(a){return{}}},I=async a=>{await g().mkdir(F(),{recursive:!0}),await g().writeFile(G(),JSON.stringify(a,null,2))},J=async()=>{let a=await H();return"3p"!==a.deploymentMode&&(a.deploymentMode="3p",await I(a),!0)},K=async()=>{let a=await H();if(!a.mcpServers||"object"!=typeof a.mcpServers)return;let b=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name));for(let c of Object.keys(a.mcpServers))b.has(c)&&delete a.mcpServers[c];0===Object.keys(a.mcpServers).length&&delete a.mcpServers,await I(a)},L=async()=>{for(let a of[...z(),...(()=>{if("darwin"===k().platform())return["/Applications/Claude.app",i().join(k().homedir(),"Applications","Claude.app")];if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.ProgramFiles||"C:\\Program Files";return[i().join(a,"AnthropicClaude"),i().join(b,"Claude"),i().join(b,"AnthropicClaude")]}return[]})()])try{return await g().access(a),!0}catch{}return!1},M=async a=>{try{let b=(await g().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}},N=async()=>{let a=i().join(D(),"_meta.json"),b=await M(a);if(!b||!b.appliedId){let c=await M(await E());if(c?.appliedId)b=c;else{let a=m().randomUUID();b={appliedId:a,entries:[{id:a,name:"Default"}]}}await g().mkdir(D(),{recursive:!0}),await g().writeFile(a,JSON.stringify(b,null,2))}return b};async function O(a){let b=i().join(B(),"config.json"),c={};try{c=JSON.parse(await g().readFile(b,"utf-8"))||{}}catch(a){if("ENOENT"!==a.code)return{error:a.code}}let d={};for(let b of a)b?.name&&(d[b.name]=!0);return c.operonSkipMcpApprovals=d,await g().mkdir(B(),{recursive:!0}),await g().writeFile(b,JSON.stringify(c,null,2)),{written:Object.keys(d).length}}async function P(){try{if(!await L())return e.NextResponse.json({installed:!1,config:null,message:"Claude Desktop (Cowork mode) not detected"});let a=await M(await E()),b=a?.appliedId||null,c=await C(),d=b?i().join(c,`${b}.json`):null,f=d?await M(d):null,g=f?.inferenceGatewayBaseUrl||null,h=Array.isArray(f?.inferenceModels)?f.inferenceModels.map(a=>"string"==typeof a?a:a?.name).filter(Boolean):[],j=Array.isArray(f?.managedMcpServers)?f.managedMcpServers:[],k=!!(f?.inferenceProvider===x&&g),l=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name)),m=j.filter(a=>l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>a.name),o=j.filter(a=>a.custom||!l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>({name:a.name,url:a.url,transport:a.transport,custom:!0}));return e.NextResponse.json({installed:!0,config:f,has10Router:k,configPath:d,cowork:{appliedId:b,baseUrl:g,models:h,provider:f?.inferenceProvider||null,plugins:j.filter(a=>!a.custom&&!(l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/"))).map(a=>{let b=a.toolPolicy?Object.keys(a.toolPolicy):[],c=`${a.name}-`,d=new Set;for(let a of b){let b=a;for(;b.startsWith(c);)b=b.slice(c.length);d.add(b)}let e=n.DEFAULT_PLUGINS.find(b=>b.name===a.name),f=e&&Array.isArray(e.toolNames)?e.toolNames:Array.from(d);return{name:a.name,url:a.url,transport:a.transport,oauth:!!a.oauth,toolNames:f}}),localPlugins:m,customPlugins:o},defaultPlugins:n.DEFAULT_PLUGINS,localStdioPlugins:n.LOCAL_STDIO_PLUGINS})}catch(a){return console.log("Error reading cowork settings:",a),e.NextResponse.json({error:"Failed to read cowork settings"},{status:500})}}async function Q(a){try{let{baseUrl:b,apiKey:c,models:d,plugins:f,localPlugins:h,customPlugins:j}=await a.json();if(!b||!c)return e.NextResponse.json({error:"baseUrl and apiKey are required"},{status:400});let k=Array.isArray(d)?d.filter(a=>"string"==typeof a&&a.trim()):[];if(0===k.length)return e.NextResponse.json({error:"At least one model is required"},{status:400});let l=Array.isArray(f)?f:n.DEFAULT_PLUGINS,m=Array.isArray(h)?h:[],o=(Array.isArray(j)?j:[]).filter(a=>a?.url),p=await w((a=>{let b=Array.isArray(a)?a:[],c=[];for(let a of b){let b=n.LOCAL_STDIO_PLUGINS.find(b=>b.name===a);if(!b)continue;let d={name:b.name,url:`http://localhost:${s}/api/mcp/${b.name}/sse`,transport:"sse"};if(Array.isArray(b.toolNames)&&b.toolNames.length>0){let a=`${b.name}-`,c={};for(let d of b.toolNames)c[d]="allow",c[`${a}${d}`]="allow";d.toolPolicy=c}c.push(d)}return c})(m)),q=await w((a=>{if(!Array.isArray(a))return[];let b=[];for(let c of a)c?.name&&c?.url&&b.push({name:c.name,url:c.url,transport:c.transport||"sse",custom:!0});return b})(o)),r=[...(0,n.buildManagedMcpServers)(l),...p,...q],t=await J(),u=await N(),v=i().join(D(),`${u.appliedId}.json`),z={...y,inferenceProvider:x,inferenceGatewayBaseUrl:b,inferenceGatewayApiKey:c,inferenceModels:k.map(a=>({name:a}))};r.length>0&&(z.managedMcpServers=r),await g().writeFile(v,JSON.stringify(z,null,2));let A=null;try{A=await O(r)}catch(a){A={error:a.message}}try{await K()}catch{}return e.NextResponse.json({success:!0,bootstrapped:t,message:t?"Cowork enabled (3p mode set). Quit & reopen Claude Desktop.":"Cowork settings applied. Quit & reopen Claude Desktop.",configPath:v,skipApprovals:A,localMcp:{applied:m,via:"3p-sse-bridge"}})}catch(a){return console.log("Error applying cowork settings:",a),e.NextResponse.json({error:"Failed to apply cowork settings"},{status:500})}}async function R(){try{let a=await M(await E());if(!a?.appliedId)return e.NextResponse.json({success:!0,message:"No active config to reset"});let b=i().join(await C(),`${a.appliedId}.json`);try{await g().writeFile(b,JSON.stringify({},null,2))}catch(a){if("ENOENT"!==a.code)throw a}try{await O([])}catch{}try{await K()}catch{}return e.NextResponse.json({success:!0,message:"Cowork config reset"})}catch(a){return console.log("Error resetting cowork settings:",a),e.NextResponse.json({error:"Failed to reset cowork settings"},{status:500})}}(0,r.D)([P,Q,R]),(0,d.A)(P,"00efc07253569e3efd6daa4a5c4b9a5f6b51a1362d",null),(0,d.A)(Q,"40a639d05be41b85e04fa5e5c069265939f512df34",null),(0,d.A)(R,"00b26eb0073f6269eaa67720ea25d48bf1ac7428ef",null)},28286:a=>{"use strict";a.exports={DEFAULT_PLUGINS:[{name:"exa",title:"Exa",description:"Real-time web search and code documentation",url:"https://mcp.exa.ai/mcp",transport:"http",oauth:!1,toolNames:["web_search_exa","web_fetch_exa"]},{name:"tavily",title:"Tavily",description:"Real-time web search optimized for LLM agents",url:"https://mcp.tavily.com/mcp",transport:"http",oauth:!0,toolNames:["tavily_search","tavily_extract","tavily_crawl","tavily_map"]}],LOCAL_STDIO_PLUGINS:[{name:"browsermcp",title:"Browser MCP",description:"Control your running Chrome (requires Chrome extension)",extensionUrl:"https://chromewebstore.google.com/detail/browser-mcp-automate-your/bjfgambnhccakkhmkepdoekmckoijdlc",command:"npx",args:["-y","@browsermcp/mcp@latest"],toolNames:["browser_navigate","browser_snapshot","browser_click","browser_type","browser_screenshot","browser_get_console_logs","browser_wait","browser_press_key","browser_go_back","browser_go_forward"]}],buildManagedMcpServers:function(a){let b=Array.isArray(a)?a:[],c=[],d=new Set;for(let a of b){if(!a?.name||!a?.url||d.has(a.name))continue;d.add(a.name);let b={name:a.name,url:a.url,transport:a.transport||(/\/sse(\b|\/)/i.test(a.url)?"sse":"http")};if(a.oauth&&(b.oauth=!0),Array.isArray(a.toolNames)&&a.toolNames.length>0){let c=`${a.name}-`,d=new Set;for(let b of a.toolNames){if("string"!=typeof b||!b)continue;let a=b;for(;a.startsWith(c);)a=a.slice(c.length);d.add(a)}let e={};for(let a of d)e[a]="allow",e[`${c}${a}`]="allow";b.toolPolicy=e}c.push(b)}return c}}},30869:(a,b,c)=>{"use strict";c.d(b,{Nu:()=>h,UY:()=>j,eh:()=>f.eh,fg:()=>e.fg,h0:()=>i,oc:()=>k,vQ:()=>g});var d=c(39006),e=c(40615),f=c(81329);let g={name:"10Router",description:"AI Infrastructure Management",version:d.rE},h={repoUrl:"https://github.com/techysy/10router",donateUrl:"https://raw.githubusercontent.com/techysy/10router/refs/heads/main/donate.json",changelogUrlBase:"https://raw.githubusercontent.com/techysy/10router/refs/heads/main/public/i18n/changelog/",changelogUrlFallbackBase:"https://gitee.com/techysy/10router/raw/main/public/i18n/changelog/"},i={npmPackageName:"@techysy/10router",installCmd:"npm i -g @techysy/10router",installCmdLatest:"npm i -g @techysy/10router@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:20128},j={maxLines:200,pollIntervalMs:1e3},k={tickIntervalMs:6e4,pingLeadMs:5e3,refreshAheadMs:3e5,failureCooldownMs:9e5,providers:{claude:{settingsKey:"claudeAutoPing",quotaKey:"session (5h)",pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1},codex:{settingsKey:"codexAutoPing",quotaKey:"session",pingWhenResetAtSlides:!0,resetAtDriftMs:3e4,minPingIntervalMs:6e5,skipWhenBlockingQuotaExhausted:!0,pingModel:"gpt-5.5",pingText:"hi",pingInstructions:"Reply with OK.",pingReasoningEffort:"none"}}}},39006:a=>{"use strict";a.exports={rE:"1.3.6"}},49120:(a,b,c)=>{"use strict";c.d(b,{jL:()=>l,nJ:()=>p,ok:()=>o});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="10router",k="9router",l={main:"db.json",usage:"usage.json",disabled:"disabledModels.json",details:"request-details.json"};function m(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),k):g().join(i().homedir(),`.${k}`)}function n(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}function o(){let a=process.env.DATA_DIR;if(!a)return!function(){try{let a=m(),b=n();if(!e().existsSync(a)||e().existsSync(g().join(b,"db","data.sqlite"))||Object.values(l).some(a=>e().existsSync(g().join(b,a))))return;e().cpSync(a,b,{recursive:!0,force:!1}),console.log(`[migration] copied legacy data dir ${a} → ${b}`)}catch(a){console.warn(`[migration] failed to migrate ${m()} → ${n()}: ${a?.message}`)}}(),n();if("win32"===process.platform&&/^\//.test(a))return console.warn(`[DATA_DIR] '${a}' is a Unix path on Windows → fallback to default`),n();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),n();throw b}}let p=o()},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.nJ,"machine-id"),m=h().join(k.nJ,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.nJ,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="9r-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},78335:()=>{},96487:()=>{}};
@@ -1,6 +0,0 @@
1
- exports.id=480,exports.ids=[480,1998],exports.modules={38859:(a,b,c)=>{"use strict";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)=>{"use strict";c.d(b,{proxyAwareFetch:()=>q});var d=c(27910),e=c(41004);let f=globalThis.fetch,g=new Map,h=new Map,i=["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"],j=["8.8.8.8","8.8.4.4"];function k(a){return null==a?"":String(a).trim()}async function l(a){let b=h.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(j);let g=d(f.resolve4.bind(f)),i=await g(a);return h.set(a,{ip:i[0],expiry:Date.now()+e.v1.dnsCacheTtlMs}),i[0]}catch(b){return console.warn(`[ProxyFetch] DNS resolve failed for ${a}:`,b.message),null}}function m(a,b){let c,d=k(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 n(a){let b=k(a);return b?/^[a-z][a-z0-9+.-]*:\/\//i.test(b)?b:`http://${b}`:null}async function o(a){let b=n(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 p(a,b,e){let f=await Promise.resolve().then(c.t.bind(c,55591,23)),g=await Promise.resolve().then(c.t.bind(c,91645,23)),h=f.default??f,i=g.default??g;return new Promise((c,f)=>{let g=new i.Socket;g.connect(443,b,()=>{let b={socket:g,servername:a.hostname,path:a.pathname+a.search,method:e.method||"POST",headers:{...e.headers,Host:a.hostname}},i=h.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())};c(b)});i.on("error",f),e.body&&i.write("string"==typeof e.body?e.body:JSON.stringify(e.body)),i.end()}),g.on("error",f)})}async function q(a,b={},c=null){let d="string"==typeof a?a:a.toString(),e=k(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=k(b?.url??b?.connectionProxyUrl);if(!c)return null;let d=k(b?.noProxy??b?.connectionNoProxy);return d&&m(a,d)?null:n(c)}(d,c),h=g?null:n(function(a){let b;if(m(a,process.env.NO_PROXY||process.env.no_proxy))return null;try{b=new URL(a).protocol}catch{return null}return"https:"===b?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)),j=g||h;if(function(a){try{let b=new URL(a).hostname;return i.some(a=>b.includes(a))}catch{return!1}}(d)){if(j)try{let c=await o(j);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 l(a.hostname);if(c)return await p(a,c,b)}catch(a){console.warn(`[ProxyFetch] MITM bypass failed: ${a.message}`)}if(j)return f(a,b)}if(j)try{let c=await o(j);return await f(a,{...b,dispatcher:c})}catch(d){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${d.message}`);if(c?.onProxyFallback)try{c.onProxyFallback(d)}catch{}return console.warn(`[ProxyFetch] Proxy failed, falling back to direct: ${d.message}`),f(a,b)}let r=c?.proxyPoolId||c?.enabled===!0||c?.connectionProxyEnabled===!0||!!k(c?.url??c?.connectionProxyUrl);if(c?.strictProxy===!0&&r)throw Error("[ProxyFetch] Proxy required but none resolved (strictProxy=true)");return f(a,b)}async function r(a,b={}){return q(a,b,null)}globalThis.fetch!==r&&(globalThis.fetch=r)},69704:(a,b,c)=>{"use strict";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)=>{"use strict";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)=>{"use strict";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")}}},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,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,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,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
- "use strict";exports.id=5485,exports.ids=[5485],exports.modules={1133:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{configureQuotaAutoPing:()=>z,runQuotaAutoPingTick:()=>w,startQuotaAutoPing:()=>x,stopQuotaAutoPing:()=>y});var e=c(48895),f=c(89718),g=c(69788),h=c(6551),i=c(55330),j=c(74129),k=c(39609),l=c(39326),m=c(18271),n=c(30869),o=a([e,i,m]);[e,i,m]=o.then?(await o)():o;let A=n.oc,B={claude:{getUsage:g.gl,sendPing:s},codex:{getUsage:h.Tl,sendPing:u}},C=global.__quotaAutoPing??={interval:null,running:!1,resetCache:{},failureCache:{}};function p(a){let b=new Date(a).getTime();return Number.isFinite(b)?new Date(6e4*Math.floor(b/6e4)).toISOString():a}function q(a,b=null){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 r(a){if(!a||!0===a.unlimited)return!1;let b=q(a.remaining);if(null!==b)return b<=0;let c=q(a.used),d=q(a.total);return null!==d&&d>0&&null!==c&&c>=d}async function s(a,b,c,d){return(await d.proxyAwareFetch("https://api.anthropic.com/v1/messages?beta=true",{method:"POST",headers:{...j.$B,Authorization:`Bearer ${a.accessToken}`,"content-type":"application/json"},body:JSON.stringify({model:b.pingModel,max_tokens:b.pingMaxTokens,messages:[{role:"user",content:b.pingText}]})},c)).ok}async function t(a){if("function"==typeof a?.text)return void await a.text();let b=a?.body?.getReader?.();if(b)try{for(;;){let{done:a}=await b.read();if(a)return}}finally{b.releaseLock?.()}}async function u(a,b,c,d){var e;let f=d.getExecutor("codex"),{response:g}=await f.execute({model:b.pingModel,stream:!0,credentials:{accessToken:a.accessToken,connectionId:a.id,providerSpecificData:a.providerSpecificData},proxyOptions:c,log:console,body:{model:b.pingModel,input:(e=b.pingText,[{type:"message",role:"user",content:[{type:"input_text",text:e}]}]),instructions:b.pingInstructions,reasoning:b.pingReasoningEffort?{effort:b.pingReasoningEffort,summary:"auto"}:void 0,store:!1,stream:!0}});if(!g.ok){try{await g.body?.cancel?.()}catch{}return!1}return await t(g),!0}async function v(a,b,c,d,e,f=C){var g,h,i;let j=(g=a.id,`${b}:${g}`),k=f.resetCache[j];if(!c.pingWhenResetAtSlides&&k&&Date.now()<new Date(k).getTime()-A.refreshAheadMs||function(a,b,c=Date.now()){let d=a.failureCache[b];return d&&c-d<A.failureCooldownMs}(f,j))return;let l=(h=await e.resolveConnectionProxyConfig(a.providerSpecificData),{connectionProxyEnabled:!0===h.connectionProxyEnabled,connectionProxyUrl:h.connectionProxyUrl||"",connectionNoProxy:h.connectionNoProxy||"",vercelRelayUrl:h.vercelRelayUrl||"",strictProxy:!1}),m=a;try{m=(await e.refreshAndUpdateCredentials(m,!1,l)).connection}catch(c){f.failureCache[j]=Date.now(),console.warn(`[AutoPing] ${b}:${a.id}: refresh failed: ${c.message}`);return}let n=await d.getUsage(m.accessToken,l),o=n?.quotas||{},q=o?.[c.quotaKey],s=q?.resetAt;if(!s||(f.resetCache[j]=s,c.skipWhenBlockingQuotaExhausted&&(i=c.quotaKey,Object.entries(o||{}).some(([a,b])=>a!==i&&!String(a).toLowerCase().includes("session")&&r(b)))||r(q)))return;let t=Date.now(),u=p(s),w=m.lastPingedResetKey||p(m.lastPingedResetAt);if(!(!function(a,b,c,d){if(a.pingWhenResetAtSlides){let d,e;return!!b&&(d=new Date(b).getTime(),e=new Date(c).getTime(),(Number.isFinite(d)&&Number.isFinite(e)?e-d:0)>=(a.resetAtDriftMs||0))}let e=new Date(c).getTime();return Number.isFinite(e)&&d>=e-A.pingLeadMs}(c,k,s,t)||function(a,b,c=Date.now()){if(!b)return!1;let d=new Date(a.lastPingAt).getTime();return Number.isFinite(d)&&c-d<b}(m,c.minPingIntervalMs,t))&&w!==u){if(!await d.sendPing(m,c,l,e)){f.failureCache[j]=Date.now(),console.warn(`[AutoPing] ${b}:${m.id}: ping failed (reset ${s})`);return}delete f.failureCache[j],await e.updateProviderConnection(m.id,{lastPingedResetAt:s,lastPingedResetKey:u,lastPingAt:new Date().toISOString(),updatedAt:new Date().toISOString()}),console.log(`[AutoPing] ${b}:${m.id}: ping sent (reset ${s})`)}}async function w(a={getSettings:f.getSettings,getProviderConnections:f.getProviderConnections,updateProviderConnection:f.updateProviderConnection,resolveConnectionProxyConfig:l.B,refreshAndUpdateCredentials:m.refreshAndUpdateCredentials,proxyAwareFetch:k.proxyAwareFetch,getExecutor:i.SB},b=C){if(!b.running){b.running=!0;try{let d=await a.getSettings();for(let[e,f]of Object.entries(A.providers)){let g=B[e];if(!g)continue;let h=d?.[f.settingsKey]?.connections||{};if(0!==Object.keys(h).length)for(let d of(await a.getProviderConnections({provider:e,isActive:!0})).filter(a=>"oauth"===a.authType&&!0===h[a.id]))try{await v(d,e,f,g,a,b)}catch(a){var c;b.failureCache[c=d.id,`${e}:${c}`]=Date.now(),console.warn(`[AutoPing] ${e}:${d.id}: ${a.message}`)}}}catch(a){console.warn("[AutoPing] tick error:",a.message)}finally{b.running=!1}}}function x(){!C.interval&&(console.log("[AutoPing] scheduler started"),w().catch(()=>{}),C.interval=setInterval(()=>{w().catch(()=>{})},A.tickIntervalMs),C.interval.unref&&C.interval.unref())}function y(){C.interval&&(clearInterval(C.interval),C.interval=null,console.log("[AutoPing] scheduler stopped"))}function z(a){Object.values(A.providers).some(b=>Object.values(a?.[b.settingsKey]?.connections||{}).some(Boolean))?x():y()}d()}catch(a){d(a)}})},18271:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>o,computeConnectionUsage:()=>p,refreshAndUpdateCredentials:()=>n});var e=c(48895),f=c(89718),g=c(27323),h=c(78661),i=c(8521),j=c(55330),k=c(39326),l=c(40615),m=a([e,j]);[e,j]=m.then?(await m)():m;let q=["expired","authentication","unauthorized","401","re-authorize"];async function n(a,b=!1,c=null){let d=a.id?await (0,f.Mc)(a.id):null;d&&(a=d);let e=(0,j.SB)(a.provider),g={accessToken:a.accessToken,refreshToken:a.refreshToken,idToken:a.idToken,expiresAt:a.expiresAt||a.tokenExpiresAt,lastRefreshAt:a.lastRefreshAt,connectionId:a.id,providerSpecificData:a.providerSpecificData,copilotToken:a.providerSpecificData?.copilotToken,copilotTokenExpiresAt:a.providerSpecificData?.copilotTokenExpiresAt};if(!(b||e.needsRefresh(g)))return{connection:a,refreshed:!1};let h=await e.refreshCredentials(g,console,c);if(h&&(0,i.jT)(h))throw Error("Refresh token invalid or reused. Please re-authorize the connection.");if(!h){if(a.accessToken)return{connection:a,refreshed:!1};throw Error("Failed to refresh credentials. Please re-authorize the connection.")}let k={updatedAt:new Date().toISOString()};h.accessToken&&(k.accessToken=h.accessToken),h.refreshToken&&(k.refreshToken=h.refreshToken),h.idToken&&(k.idToken=h.idToken),h.lastRefreshAt&&(k.lastRefreshAt=h.lastRefreshAt),h.expiresIn?(k.expiresAt=new Date(Date.now()+1e3*h.expiresIn).toISOString(),k.expiresIn=h.expiresIn):h.expiresAt&&(k.expiresAt=h.expiresAt);let l={...h.providerSpecificData||{},...h.copilotToken?{copilotToken:h.copilotToken}:{},...h.copilotTokenExpiresAt?{copilotTokenExpiresAt:h.copilotTokenExpiresAt}:{}};return Object.keys(l).length>0&&(k.providerSpecificData={...a.providerSpecificData||{},...l}),await (0,f.updateProviderConnection)(a.id,k),{connection:{...a,...k,providerSpecificData:k.providerSpecificData||a.providerSpecificData},refreshed:!0}}async function o(a,{params:b}){let c,{connectionId:d}=await b,e="1"===new URL(a.url).searchParams.get("force");try{c=await (0,f.Mc)(d)}catch(a){return console.warn(`[Usage] unknown: ${a.message}`),Response.json({error:a.message},{status:500})}if(!c)return Response.json({error:"Connection not found"},{status:404});let{status:g,body:h}=await p(c,{force:e});return Response.json(h,200===g?void 0:{status:g})}async function p(a,{force:b=!1}={}){try{let c="oauth"===a.authType,d=("apikey"===a.authType||"api_key"===a.authType)&&l.jO.includes(a.provider);if(!c&&!d)return{status:200,body:{message:"Usage not available for this connection"}};let e=await (0,k.B)(a.providerSpecificData),i={connectionProxyEnabled:!0===e.connectionProxyEnabled,connectionProxyUrl:e.connectionProxyUrl||"",connectionNoProxy:e.connectionNoProxy||"",vercelRelayUrl:e.vercelRelayUrl||"",strictProxy:!1};if(c)try{a=(await n(a,!1,i)).connection}catch(a){return console.error("[Usage API] Credential refresh failed:",a),{status:401,body:{error:`Credential refresh failed: ${a.message}`}}}let j=await (0,g.my)(a,i,{force:b});if(c&&function(a){if(!a?.message)return!1;let b=a.message.toLowerCase();return q.some(a=>b.includes(a))}(j)&&a.refreshToken)try{a=(await n(a,!0,i)).connection,j=await (0,g.my)(a,i,{force:b})}catch(b){console.warn(`[Usage] ${a.provider}: force refresh failed: ${b.message}`)}try{let b=(0,h.Y)(j);b?await (0,f.updateProviderConnection)(a.id,{earliestPackageExpiry:b.expiry,earliestPackageName:b.name,quotaCheckedAt:new Date().toISOString()}):j&&j.quotas&&await (0,f.updateProviderConnection)(a.id,{earliestPackageExpiry:null,earliestPackageName:null,quotaCheckedAt:new Date().toISOString()})}catch(b){console.warn(`[Usage API] Failed to update package expiry for ${a.id}:`,b.message)}return{status:200,body:j}}catch(c){let b=a?.provider??"unknown";return console.warn(`[Usage] ${b}: ${c.message}`),{status:500,body:{error:c.message}}}}d()}catch(a){d(a)}})},85081:(a,b,c)=>{c.d(b,{Ay:()=>j});var d=c(77598);let e=function(a){return Array.isArray(a)?a=Buffer.from(a):"string"==typeof a&&(a=Buffer.from(a,"utf8")),(0,d.createHash)("sha1").update(a).digest()},f=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i,g=function(a){let b;if(!("string"==typeof a&&f.test(a)))throw TypeError("Invalid UUID");return Uint8Array.of((b=parseInt(a.slice(0,8),16))>>>24,b>>>16&255,b>>>8&255,255&b,(b=parseInt(a.slice(9,13),16))>>>8,255&b,(b=parseInt(a.slice(14,18),16))>>>8,255&b,(b=parseInt(a.slice(19,23),16))>>>8,255&b,(b=parseInt(a.slice(24,36),16))/0x10000000000&255,b/0x100000000&255,b>>>24&255,b>>>16&255,b>>>8&255,255&b)};var h=c(50122);function i(a,b,c,d){var f=b,i=d;let j="string"==typeof a?function(a){let b=new Uint8Array((a=unescape(encodeURIComponent(a))).length);for(let c=0;c<a.length;++c)b[c]=a.charCodeAt(c);return b}(a):a,k="string"==typeof f?g(f):f;if("string"==typeof f&&(f=g(f)),f?.length!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+j.length);if(l.set(k),l.set(j,k.length),(l=e(l))[6]=15&l[6]|80,l[8]=63&l[8]|128,c){if((i=i||0)<0||i+16>c.length)throw RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);for(let a=0;a<16;++a)c[i+a]=l[a];return c}return(0,h.k)(l)}i.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",i.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8";let j=i}};
@@ -1 +0,0 @@
1
- exports.id=653,exports.ids=[653],exports.modules={30906:(a,b,c)=>{"use strict";let d;c.d(b,{gR:()=>F,hT:()=>E,Pf:()=>D,GY:()=>C,sP:()=>G,Ir:()=>B,Mj:()=>A,iw:()=>y,EJ:()=>z,Ui:()=>J,Rj:()=>K,HO:()=>H,x8:()=>I});var e=c(77598),f=c.n(e),g=c(99129),h=c(88783),i=c(80700),j=c(19035),k=c(20055);async function l(a,b,c){let d=a.get(b)||a.set(b,{}).get(b),{alg:e}=c;if(void 0===d[e]){let a=await (0,h.x)(c,{...b,alg:e,ext:!0});if("public"!==a.type)throw new g.Dm("JSON Web Key Set members must be public keys");d[e]=a}return d[e]}function m(a){let b;try{b=structuredClone(a)}catch{}if(!(0,j.fV)(b))throw new g.Dm("JSON Web Key Set malformed");let c=new WeakMap;return Object.defineProperty(async(a,d)=>{let{alg:e,kid:f}={...a,...d?.header},h="string"==typeof e?i.p[e]:void 0;if(!h||h.secret)throw new g.T0('Unsupported "alg" value for a JSON Web Key Set');let j=b.keys.filter(a=>(function(a,b,c,d){let{kty:e,key_ops:f,ext:g,kid:h,alg:i,use:j,crv:l}=(0,k.Z)(a),m=Array.isArray(f)?[...f]:f;return(void 0===g||"boolean"==typeof g)&&(void 0===m||Array.isArray(m)&&m.every((a,b)=>"string"==typeof a&&m.indexOf(a)===b)&&m.includes("verify"))&&b.kty.includes(e)&&(void 0===d||"string"==typeof d&&d===h)&&(void 0===i?"AKP"!==e:c===i)&&(void 0===j||"sig"===j)&&(!b.crv||l===b.crv)})(a,h,e,f)),{0:m,length:n}=j;if(!n)throw new g.BT;if(1!==n){let a=new g.$4;throw a[Symbol.asyncIterator]=async function*(){for(let a of j)try{yield await l(c,a,h)}catch{}},a}return l(c,m,h)},"jwks",{value:()=>structuredClone(b)})}("u"<typeof navigator||!navigator.userAgent?.startsWith?.("Mozilla/5.0 "))&&(d="jose/v6.2.10");let n=Symbol();async function o(a,b,c,d=fetch){let e=await d(a,{method:"GET",signal:c,redirect:"manual",headers:b}).catch(a=>{if("TimeoutError"===a.name)throw new g.xb;throw a});if(200!==e.status)throw new g.i4("Expected 200 OK from the JSON Web Key Set HTTP response");try{return await e.json()}catch{throw new g.i4("Failed to parse the JSON Web Key Set HTTP response as JSON")}}let p=Symbol();function q(a,b){return Number.isFinite(a)&&Date.now()<a+b}function r(a,b,c){if(Number.isNaN(a))throw TypeError(`"${c}" option must not be NaN`);return"number"==typeof a?a:b}var s=c(17509),t=c(89718);let u="openid profile email",v="Sign in with OIDC";function w(a){return(a||"").trim().replace(/\/+$/,"")}function x(a){return(a||u).trim()||u}function y(a){let b=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||"";if(b)return w(b);let c=a?.headers?.get?.("x-forwarded-proto")||"",d=a?.headers?.get?.("x-forwarded-host")||a?.headers?.get?.("host")||"";if(d){let b=(c||new URL(a.url).protocol||"http:").replace(/:$/,"");return`${b}://${d}`.replace(/\/+$/,"")}return w(new URL(a.url).origin)}function z(a){return!!(w(a?.oidcIssuerUrl)&&(a?.oidcClientId||"").trim()&&(a?.oidcClientSecret||"").trim())}async function A(){let a=await (0,t.getSettings)();return["oidc","both"].includes(a.authMode)&&z(a)?{issuerUrl:w(a.oidcIssuerUrl),clientId:a.oidcClientId.trim(),clientSecret:a.oidcClientSecret.trim(),scopes:x(a.oidcScopes),loginLabel:(a.oidcLoginLabel||v).trim()||v}:null}async function B(a){let b=`${w(a)}/.well-known/openid-configuration`,c=await fetch(b,{cache:"no-store"});if(!c.ok)throw Error(`Failed to load OIDC discovery document from ${b}`);return await c.json()}function C(){let a=f().randomBytes(32).toString("base64url"),b=f().createHash("sha256").update(a).digest("base64url");return{verifier:a,challenge:b}}function D(){return f().randomBytes(16).toString("base64url")}function E(){return f().randomBytes(16).toString("base64url")}function F({authorizationEndpoint:a,clientId:b,redirectUri:c,scopes:d=u,state:e,nonce:f,codeChallenge:g}){let h=new URL(a);return h.searchParams.set("response_type","code"),h.searchParams.set("client_id",b),h.searchParams.set("redirect_uri",c),h.searchParams.set("scope",x(d)),h.searchParams.set("state",e),h.searchParams.set("nonce",f),h.searchParams.set("code_challenge",g),h.searchParams.set("code_challenge_method","S256"),h.toString()}async function G({tokenEndpoint:a,clientId:b,clientSecret:c,code:d,redirectUri:e,codeVerifier:f}){let g=new URLSearchParams({grant_type:"authorization_code",client_id:b,code:d,redirect_uri:e,code_verifier:f});c&&g.set("client_secret",c);let h=await fetch(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:g}),i=await h.json().catch(()=>({}));if(!h.ok)throw Error(i?.error_description||i?.error||`OIDC token exchange failed (${h.status})`);return i}async function H({tokenEndpoint:a,clientId:b,clientSecret:c,redirectUri:d}){if(!c)return{tested:!1,valid:null,message:"No client secret was provided, so secret validation was skipped."};let e=new URLSearchParams({grant_type:"authorization_code",client_id:b,client_secret:c,code:"__oidc_test_invalid_code__",redirect_uri:d,code_verifier:"__oidc_test_invalid_verifier__"}),f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e}),g=await f.json().catch(()=>({})),h=(g?.error||"").toLowerCase(),i=g?.error_description||g?.error||"";return f.ok?{tested:!0,valid:!0,message:"Client secret was accepted by the token endpoint.",raw:g}:"invalid_client"===h||"unauthorized_client"===h||/client.*(invalid|failed|mismatch)/i.test(i)?{tested:!0,valid:!1,message:i||"Client secret is not valid.",raw:g}:"invalid_grant"===h||"invalid_code"===h||/grant|code/i.test(i)?{tested:!0,valid:!0,message:"Client secret was accepted; the token exchange failed only because the test authorization code is invalid.",raw:g}:{tested:!0,valid:null,message:i||`Token endpoint responded with ${f.status}`,raw:g}}async function I({idToken:a,issuer:b,audience:c,jwksUri:e,nonce:f}){let h=function(a){let b,c,e;if(!(a instanceof URL))throw TypeError("url must be an instance of URL");let f=new URL(a.href).href,h=(void 0)??{},i=h.timeoutDuration;if("number"==typeof i&&(!Number.isInteger(i)||i<0))throw TypeError('"timeoutDuration" option must be a non-negative integer');let k="number"==typeof i?i:5e3,l=r(h.cooldownDuration,3e4,"cooldownDuration"),s=r(h.cacheMaxAge,6e5,"cacheMaxAge"),t=new Headers(h.headers);d&&!t.has("User-Agent")&&t.set("User-Agent",d),t.has("accept")||t.set("accept","application/json, application/jwk-set+json");let u=h[n],v=h[p],w=0,x=0;if(v&&"object"==typeof v){let{uat:a,jwks:c}=v;q(a,s)&&(0,j.fV)(c)&&(b=a,e=m(c))}let y=async()=>{if(c&&("u">typeof WebSocketPair||"u">typeof navigator&&"Cloudflare-Workers"===navigator.userAgent||"u">typeof EdgeRuntime&&"vercel"===EdgeRuntime)&&(c=void 0),!c){let a=++w,d=c=o(f,t,AbortSignal.timeout(k),u).then(c=>{let d=m(c);if(a<=x)return;e=d;let f=Date.now();v&&(v.uat=f,v.jwks=c),b=f,x=a}).finally(()=>{c===d&&(c=void 0)})}await c};return Object.defineProperties(async(a,c)=>{e&&q(b,s)||await y();try{return await e(a,c)}catch(d){if(d instanceof g.BT&&!q(b,l))return await y(),e(a,c);throw d}},{coolingDown:{get:()=>q(b,l),enumerable:!0},fresh:{get:()=>q(b,s),enumerable:!0},reload:{value:y,enumerable:!0},reloading:{get:()=>!!c,enumerable:!0},jwks:{value:()=>e?.jwks(),enumerable:!0}})}(new URL(e)),{payload:i}=await (0,s.V)(a,h,{issuer:b,audience:c,nonce:f});return i}function J(a={}){return a.preferred_username||a.email||a.name||a.given_name||a.sub||"OIDC user"}function K(a={}){return a.email||""}},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,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,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,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=6982,exports.ids=[6982],exports.modules={8303:(a,b,c)=>{"use strict";c.d(b,{B3:()=>k,T1:()=>l,im:()=>j,sv:()=>i});var d=c(48645);let e=[3e4,12e4,6e5,18e5],f=new Map;function g(){return Date.now()}function h(a){let b=f.get(a);return b?b.lastFailAt&&g()-b.lastFailAt>36e5&&(!b.lockUntil||g()>=b.lockUntil)?(f.delete(a),null):b:null}function i(a){let b=h(a);if(!b||!b.lockUntil)return{locked:!1};let c=b.lockUntil-g();return c<=0?{locked:!1}:{locked:!0,retryAfter:Math.ceil(c/1e3)}}function j(a){let b=h(a)||{fails:0,lockUntil:0,lockLevel:0,lastFailAt:0};if(b.fails+=1,b.lastFailAt=g(),b.fails>=5){let a=e[Math.min(b.lockLevel,e.length-1)];b.lockUntil=g()+a,b.lockLevel+=1,b.fails=0}return f.set(a,b),{remainingBeforeLock:Math.max(0,5-b.fails)}}function k(a){f.delete(a)}function l(a){if((0,d.M)(a)){let b=a.headers.get("x-10r-real-ip");if(b)return b}if("true"===process.env.TRUST_PROXY){let b=a.headers.get("x-forwarded-for");if(b)return b.split(",")[0].trim()}return"unknown"}},17509:(a,b,c)=>{"use strict";c.d(b,{V:()=>n});var d=c(91356),e=c(80700),f=c(99129),g=c(73575),h=c(41570),i=c(44893),j=c(69052);async function k(a,b,c,i,k,l,m){let n=!1;"function"==typeof c&&(c=await c(k,a),n=!0);let o="string"==typeof m,p=(0,e.q)(l),q=(0,g.xW)(void 0!==i?(0,g.lF)(i):new Uint8Array,(0,g.lF)("."),o?b[2]??=(0,h.Fo)(m,"payload",f.Ye):m),r=(0,h.h2)(a.signature,"signature",f.Ye),s=await (0,j.d)(p,c,"verify");if(!await (0,d.M)(p,s,r,q))throw new f.h2;return[o?(0,h.h2)(m,"payload",f.Ye):m,k,o,s,n]}async function l(a,b,c){if(a instanceof Uint8Array&&(a=g.D0.decode(a)),"string"!=typeof a)throw new f.Ye("Compact JWS must be a string or Uint8Array");let{0:d,1:e,2:j,length:l}=a.split(".");if(3!==l)throw new f.Ye("Invalid Compact JWS");let m=function(a,b=void 0===a?{}:(0,h.OX)(a,f.Ye,"JWS Protected Header is invalid")){return b}(d),[n,o]=function(a,b,c){let d=(0,i.J0)(a,(0,i.nI)(f.Ye,i.qc,c[1],a,b)),e=b.alg;if("string"!=typeof e||!e)throw new f.Ye('JWS "alg" (Algorithm) Header Parameter missing or invalid');if(c[0]&&!c[0].has(e))throw new f.Rb('"alg" (Algorithm) Header Parameter value not allowed');return[d,e]}(m,m,b),p=n?e:function(a){try{return(0,g.lF)(a)}catch{throw new f.Ye("JWS Compact Serialization payload must use only ASCII characters")}}(e);return k({payload:e,protected:d,signature:j},b,c,d,m,o,p)}var m=c(17347);async function n(a,b,c){let d=await l(a,[c&&(0,i.Fw)("algorithms",c.algorithms),c?.crit],b);if(!d[2])throw new f.Dp("JWTs MUST NOT use unencoded payload");let e={payload:(0,m.k6)(d[1],d[0],c),protectedHeader:d[1]};return"function"==typeof b?{...e,key:d[3]}:e}},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}},48645:(a,b,c)=>{"use strict";function d(a){let b=process.env.TENROUTER_PEER_TOKEN;return!!b&&a.headers.get("x-10r-peer-token")===b}c.d(b,{M:()=>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,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,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,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,3 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1243],{15536:(e,t,l)=>{"use strict";l.d(t,{Cp:()=>r,Hx:()=>n,Iv:()=>d,Nv:()=>u,RL:()=>c,ev:()=>m,fl:()=>i,hT:()=>s,oX:()=>a,t6:()=>o});let s=["zh-CN","zh-TW"],a=[{icon:"public",title:"Access Anywhere",desc:"Use your API from any network"},{icon:"group",title:"Share Endpoint",desc:"Share URL with team members"},{icon:"code",title:"Use in Cursor/Cline",desc:"Connect AI tools remotely"},{icon:"lock",title:"Encrypted",desc:"End-to-end TLS via Cloudflare"}],n=2e3,r=3e5,i=5e3,o=5,c=1e4,d=5e3,m=[{id:"lite",label:"Lite",desc:"Drop filler, keep grammar"},{id:"full",label:"Full",desc:"Drop articles, fragments OK"},{id:"ultra",label:"Ultra",desc:"Telegraphic, max compression"},{id:"wenyan-lite",label:"文 Lite",desc:"Classical Chinese, light compression",wenyan:!0},{id:"wenyan",label:"文 Full",desc:"Maximum 文言文, 80-90% reduction",wenyan:!0},{id:"wenyan-ultra",label:"文 Ultra",desc:"Extreme classical compression",wenyan:!0}],u=[{id:"lite",label:"Lite",desc:"Build asked, name lazier option"},{id:"full",label:"Full",desc:"Ladder enforced: stdlib/native first"},{id:"ultra",label:"Ultra",desc:"YAGNI extremist, deletion first"}]},20242:(e,t,l)=>{"use strict";l.d(t,{default:()=>b});var s=l(95155),a=l(12115),n=l(14051),r=l.n(n),i=l(35497),o=l(11059),c=l(15536);async function d(e){if(!e)return!1;try{return(await fetch(`${e}/api/health`,{mode:"cors",cache:"no-store",signal:AbortSignal.timeout(c.Iv)})).ok}catch{return!1}}async function m(...e){let t=e.filter(Boolean).map(d);return!!t.length&&new Promise(e=>{let l=t.length;t.forEach(t=>t.then(t=>{t?e(!0):0==--l&&e(!1)}))})}var u=l(72767);function x({label:e,url:t,copyId:l,copied:a,onCopy:n,badge:r,actions:o}){return(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${"CF"===r||"TS"===r?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:e}),(0,s.jsx)(i.pd,{value:t,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,s.jsx)("button",{onClick:()=>n(t,l),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:a===l?"check":"content_copy"})}),o]})}function h({status:e,className:t=""}){return(0,s.jsx)("div",{className:`p-2 rounded text-sm ${t} ${"success"===e.type?"bg-green-500/10 text-green-600 dark:text-green-400":"warning"===e.type?"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400":"info"===e.type?"bg-blue-500/10 text-blue-600 dark:text-blue-400":"bg-red-500/10 text-red-600 dark:text-red-400"}`,children:e.message.split(/(https?:\/\/[^\s]+)/g).map((e,t)=>/^https?:\/\//.test(e)?(0,s.jsx)("a",{href:e,target:"_blank",rel:"noreferrer",className:"underline font-medium",children:e},t):e)})}function p({text:e}){return(0,s.jsxs)("span",{className:"relative group inline-flex items-center",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted cursor-help",children:"help"}),(0,s.jsx)("span",{className:"pointer-events-none absolute left-5 top-1/2 -translate-y-1/2 z-50 w-64 rounded bg-gray-900 dark:bg-gray-800 text-white text-xs px-2.5 py-1.5 opacity-0 group-hover:opacity-100 transition-opacity shadow-lg",children:e})]})}function y({message:e,action:t}){return(0,s.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/20 text-amber-700 dark:text-amber-400",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px] shrink-0 mt-0.5",children:"warning"}),(0,s.jsx)("p",{className:"text-xs flex-1",children:e}),t&&(0,s.jsx)("a",{href:t.href,className:"text-xs font-medium underline shrink-0 hover:opacity-80",onClick:t.href.startsWith("#")?e=>{e.preventDefault(),document.getElementById(t.href.slice(1))?.scrollIntoView({behavior:"smooth"})}:void 0,children:t.label})]})}var g=l(73006);function b({machineId:e}){let[t,l]=(0,a.useState)([]),[n,r]=(0,a.useState)(!0),[f,j]=(0,a.useState)(!1),[w,k]=(0,a.useState)(""),[v,T]=(0,a.useState)(null),[N,C]=(0,a.useState)(null),[S,E]=(0,a.useState)(!1),[_,P]=(0,a.useState)(!1),[$,A]=(0,a.useState)(!1),R=(0,a.useRef)(!1),[I,O]=(0,a.useState)(null),[U,D]=(0,a.useState)(!0),[F,L]=(0,a.useState)(!0),[W,q]=(0,a.useState)(!1),[K,z]=(0,a.useState)(!0),[H,M]=(0,a.useState)(!1),[B,J]=(0,a.useState)(!1),[Y,Q]=(0,a.useState)(""),[X,Z]=(0,a.useState)(""),[G,V]=(0,a.useState)(!1),[ee,et]=(0,a.useState)(""),[el,es]=(0,a.useState)(null),[ea,en]=(0,a.useState)(!1),[er,ei]=(0,a.useState)(!1),[eo,ec]=(0,a.useState)(!1),[ed,em]=(0,a.useState)(!1),[eu,ex]=(0,a.useState)(""),[eh,ep]=(0,a.useState)(!1),[ey,eg]=(0,a.useState)(""),[eb,ef]=(0,a.useState)(null),[ej,ew]=(0,a.useState)(""),[ek,ev]=(0,a.useState)(""),[eT,eN]=(0,a.useState)(null),[eC,eS]=(0,a.useState)(!1),[eE,e_]=(0,a.useState)([]),[eP,e$]=(0,a.useState)(""),[eA,eR]=(0,a.useState)(!1),[eI,eO]=(0,a.useState)(!1),[eU,eD]=(0,a.useState)(!1),eF=(0,a.useRef)(null),eL=(0,a.useRef)(0),eW=(0,a.useRef)(0),eq=(0,a.useRef)(!1),eK=(0,a.useRef)(!1),ez=(0,a.useRef)(!1),eH=(0,a.useRef)(!1),[eM,eB]=(0,a.useState)(!1),[eJ,eY]=(0,a.useState)(!1),[eQ,eX]=(0,a.useState)(new Set),[eZ,eG]=(0,a.useState)(!1);(0,a.useEffect)(()=>{eG(!["localhost","127.0.0.1","::1"].includes(window.location.hostname))},[]);let{copied:eV,copy:e0}=(0,o.C)(),e1=!U||!F,e5=U?"Set a dashboard password before activating the tunnel.":'Enable "Require login" and set a custom password before activating the tunnel.';(0,a.useEffect)(()=>{eF.current&&(eF.current.scrollTop=eF.current.scrollHeight)},[eE]),(0,a.useEffect)(()=>{te(),e3()},[]),(0,a.useEffect)(()=>{if(!(H||eo))return;let e=!H||B,t=!eo||ed,l=()=>{document.hidden||e4()};if(document.addEventListener("visibilitychange",l),e&&t)return()=>document.removeEventListener("visibilitychange",l);let s=setInterval(()=>{document.hidden||e4()},c.fl);return()=>{clearInterval(s),document.removeEventListener("visibilitychange",l)}},[H,eo,B,ed]),(0,a.useEffect)(()=>{let e=async()=>{if(!document.hidden){if(H&&(Y||X)){let e=await m(X,Y);eq.current=e,e?(eL.current=0,J(!0),ez.current||(ez.current=!0,eB(!0))):(eL.current+=1,eL.current>=c.t6&&J(!1))}else eq.current=!1;if(eo&&eu){let e=await d(eu);eK.current=e,e?(eW.current=0,em(!0),eH.current||(eH.current=!0,eY(!0))):(eW.current+=1,eW.current>=c.t6&&em(!1))}else eK.current=!1}};if(!(H&&(Y||X)||eo&&eu))return;e();let t=!eo||ed;if((!H||B)&&t)return;let l=setInterval(e,c.RL);return()=>clearInterval(l)},[H,Y,X,eo,eu,B,ed]);let e2=(0,a.useCallback)((e,t,l,s,a,n)=>{t.current?(l.current=0,s(!0),a.current||(a.current=!0,n(!0))):(l.current+=1,l.current>=c.t6&&s(!1))},[]),e4=async()=>{try{let e=await fetch("/api/tunnel/status",{cache:"no-store"});if(!e.ok)return;let t=await e.json(),l=t.tunnel?.settingsEnabled??t.tunnel?.enabled??!1,s=t.tunnel?.tunnelUrl||"";Q(s),Z(t.tunnel?.publicUrl||""),M(l),e2(null,eq,eL,J,ez,eB);let a=t.tailscale?.settingsEnabled??t.tailscale?.enabled??!1,n=t.tailscale?.tunnelUrl||"";ex(n),ec(a),e2(null,eK,eW,em,eH,eY)}catch{}},e3=async()=>{z(!0);try{let[e,t]=await Promise.all([u.A.getState().fetchSettings(),fetch("/api/tunnel/status",{cache:"no-store"})]);if(e&&(E(e.requireApiKey||!1),P(!0===e.apiKeyRotation),D(!1!==e.requireLogin),L(e.hasPassword||!1),q(e.tunnelDashboardAccess||!1)),t.ok){let e=await t.json(),l=e.tunnel?.settingsEnabled??e.tunnel?.enabled??!1,s=e.tunnel?.tunnelUrl||"";Q(s),Z(e.tunnel?.publicUrl||""),M(l),e2(null,eq,eL,J,ez,eB);let a=e.tailscale?.settingsEnabled??e.tailscale?.enabled??!1,n=e.tailscale?.tunnelUrl||"";ex(n),ec(a),e2(null,eK,eW,em,eH,eY)}}catch(e){console.log("Error loading settings:",e)}finally{z(!1)}},e8=async e=>{try{await u.A.getState().patchSettings({tunnelDashboardAccess:e})&&q(e)}catch(e){console.log("Error updating tunnelDashboardAccess:",e)}},e6=async e=>{try{await u.A.getState().patchSettings({requireApiKey:e})&&E(e)}catch(e){console.log("Error updating requireApiKey:",e)}},e7=async e=>{try{let t=await u.A.getState().patchSettings({apiKeyRotation:e});return t&&P(e),!!t}catch(e){return console.log("Error updating apiKeyRotation:",e),!1}},e9=async()=>{if(!R.current){R.current=!0,C(null),A(!0);try{let e=await fetch("/api/keys/rotate",{method:"POST"});if(e.ok){let t=await e.json(),s=await fetch("/api/keys");if(s.ok){let e=await s.json();l(e.keys||[])}O(t)}}catch(e){console.log("Error rotating keys:",e)}finally{A(!1),R.current=!1}}},te=async()=>{try{let e=async()=>{let e=await fetch("/api/keys");return e.ok&&(await e.json()).keys||[]},t=await e();if(0===t.length)try{(await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:"Default Key"})})).ok&&(t=await e())}catch{}l(t)}catch(e){console.log("Error fetching data:",e)}finally{r(!1)}},tt=async(...e)=>{V(!0),et("Waiting for tunnel ready...");let t=e.filter(Boolean).map(e=>`${e}/api/health`),l=Date.now();for(;Date.now()-l<c.Cp;){if(await new Promise(e=>setTimeout(e,c.Hx)),await Promise.any(t.map(async e=>{if((await fetch(e,{mode:"cors",cache:"no-store"})).ok)return!0;throw Error("not ready")})).catch(()=>!1))return M(!0),V(!1),et(""),!0;if((Date.now()-l)%1e4<c.Hx)try{let e=await fetch("/api/tunnel/status");if(e.ok){let t=await e.json();if(!t.tunnel?.enabled)return es({type:"error",message:(0,g.Tl)("Tunnel process stopped unexpectedly.")}),V(!1),et(""),!1}}catch{}}return es({type:"error",message:(0,g.Tl)("Tunnel created but not reachable. Please try again.")}),V(!1),et(""),!1},tl=async()=>{en(!1),V(!0),es(null),et("Creating tunnel...");let e=!0;(async()=>{for(;e;){try{let t=await fetch("/api/tunnel/status");if(t.ok){let l=await t.json();l.download?.downloading?et(`Downloading cloudflared... ${l.download.progress}%`):e&&et("Creating tunnel...")}}catch{}await new Promise(e=>setTimeout(e,1e3))}})();try{let t=await fetch("/api/tunnel/enable",{method:"POST"});e=!1;let l=await t.json();if(!t.ok)return void es({type:"error",message:l.error||"Failed to enable tunnel"});let s=l.tunnelUrl;if(!s)return void es({type:"error",message:(0,g.Tl)("No tunnel URL returned")});Q(s),Z(l.publicUrl||""),await tt(l.publicUrl,s)}catch(e){es({type:"error",message:e.message})}finally{e=!1,V(!1),et("")}},ts=async()=>{V(!0),es(null);try{let e=await fetch("/api/tunnel/disable",{method:"POST"}),t=await e.json();e.ok?(M(!1),Q(""),ei(!1),es({type:"success",message:(0,g.Tl)("Tunnel disabled")})):es({type:"error",message:t.error||(0,g.Tl)("Failed to disable tunnel")})}catch(e){es({type:"error",message:e.message})}finally{V(!1)}},ta=async()=>{eN(null);try{let e=await fetch("/api/tunnel/tailscale-check");if(e.ok){let t=await e.json();return eN(t.installed),t}}catch{}return eN(!1),{installed:!1}},tn=async()=>{eS(!0),ef(null),e_([]);try{let e=await fetch("/api/tunnel/tailscale-install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:eP})});e$("");let t=e.body.getReader(),l=new TextDecoder,s="";for(;;){let{done:e,value:a}=await t.read();if(e)break;let n=(s+=l.decode(a,{stream:!0})).split("\n\n");for(let e of(s=n.pop()||"",n)){let t=e.split("\n"),l="progress",s=null;for(let e of t)if(e.startsWith("event: ")&&(l=e.slice(7).trim()),e.startsWith("data: "))try{s=JSON.parse(e.slice(6))}catch{}if(s)if("progress"===l)e_(e=>[...e.slice(-50),s.message]);else if("done"===l){eN(!0),eS(!1),eO(!1),tc();return}else"error"===l&&ef({type:"error",message:s.error||(0,g.Tl)("Install failed")})}}}catch(e){ef({type:"error",message:e.message})}finally{eS(!1)}},tr=async e=>{eg((0,g.Tl)("Waiting for Tailscale ready..."));let t=`${e}/api/health`,l=Date.now();for(;Date.now()-l<c.Cp;){await new Promise(e=>setTimeout(e,c.Hx));try{let e=await fetch(t,{mode:"no-cors",cache:"no-store"});if(e.ok||"opaque"===e.type)return!0}catch{}}return!1},ti=(e,t)=>{ew(e),ev(t)},to=()=>{ew(""),ev("")},tc=async()=>{eO(!1),eR(!0),ep(!0),ef(null),eg("Connecting..."),to();try{let e=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),t=await e.json();if(e.ok&&t.success){ex(t.tunnelUrl||"");let e=await tr(t.tunnelUrl);ec(!0),ef(e?null:{type:"warning",message:(0,g.Tl)("Connected but not reachable yet.")});return}if(t.needsLogin&&t.authUrl){ti(t.authUrl,(0,g.Tl)("Open Login Page")),eg((0,g.Tl)('Login required — click "Open Login Page" to continue'));for(let e=0;e<40;e++){await new Promise(e=>setTimeout(e,3e3));try{let e=await fetch("/api/tunnel/tailscale-check");if(e.ok&&(await e.json()).loggedIn){to(),eg((0,g.Tl)("Starting funnel..."));let e=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),t=await e.json();if(e.ok&&t.success){ex(t.tunnelUrl||"");let e=await tr(t.tunnelUrl);ec(!0),ef(e?null:{type:"warning",message:(0,g.Tl)("Connected but not reachable yet.")})}else t.funnelNotEnabled&&t.enableUrl?await td(t.enableUrl):ef({type:"error",message:t.error||(0,g.Tl)("Failed to start funnel")});return}}catch{}}to(),ef({type:"error",message:(0,g.Tl)("Login timed out. Please try again.")});return}if(t.funnelNotEnabled&&t.enableUrl)return void await td(t.enableUrl);ef({type:"error",message:t.error||(0,g.Tl)("Failed to connect")})}catch(e){ef({type:"error",message:e.message})}finally{ep(!1),eR(!1),eg(""),to()}},td=async e=>{ti(e,(0,g.Tl)("Open Funnel Settings")),eg((0,g.Tl)('Click "Open Funnel Settings" to enable Funnel...'));for(let e=0;e<40;e++){await new Promise(e=>setTimeout(e,3e3));try{let e=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),t=await e.json();if(e.ok&&t.success){to(),ex(t.tunnelUrl||"");let e=await tr(t.tunnelUrl);ec(!0),ef(e?null:{type:"warning",message:(0,g.Tl)("Connected but not reachable yet.")});return}if(t.funnelNotEnabled)continue;if(t.error){to(),ef({type:"error",message:t.error});return}}catch{}}to(),ef({type:"error",message:(0,g.Tl)("Timed out waiting for Funnel to be enabled.")})},tm=async()=>{ep(!0),ef(null);try{let e=await fetch("/api/tunnel/tailscale-disable",{method:"POST"}),t=await e.json();e.ok?(ec(!1),ex(""),eD(!1),ef({type:"success",message:(0,g.Tl)("Tailscale disabled")})):ef({type:"error",message:t.error||(0,g.Tl)("Failed to disable Tailscale")})}catch(e){ef({type:"error",message:e.message})}finally{ep(!1)}},tu=async()=>{ef(null),e_([]);let e=await ta();e?.installed&&e?.hasCachedPassword?tc():eO(!0)},tx=async()=>{if(w.trim())try{let e=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:w})}),t=await e.json();e.ok&&(T(t.key),await te(),k(""),j(!1))}catch(e){console.log("Error creating key:",e)}},th=async e=>{C({title:(0,g.Tl)("Delete API Key"),message:(0,g.Tl)("Delete this API key?"),onConfirm:async()=>{C(null);try{(await fetch(`/api/keys/${e}`,{method:"DELETE"})).ok&&(l(t.filter(t=>t.id!==e)),eX(t=>{let l=new Set(t);return l.delete(e),l}))}catch(e){console.log("Error deleting key:",e)}}})},tp=async(e,t)=>{try{(await fetch(`/api/keys/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})).ok&&l(l=>l.map(l=>l.id===e?{...l,isActive:t}:l))}catch(e){console.log("Error toggling key:",e)}},[ty,tg]=(0,a.useState)("/v1");return((0,a.useEffect)(()=>{tg(`${window.location.origin}/v1`)},[]),n)?(0,s.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,s.jsx)(i.Qv,{}),(0,s.jsx)(i.Qv,{})]}):(0,s.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,s.jsxs)(i.Zp,{children:[(0,s.jsxs)("h2",{className:"text-lg font-semibold mb-4 flex items-center gap-2",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-primary",children:"api"}),(0,g.Tl)("API Endpoint")]}),(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,s.jsx)(x,{label:(0,g.Tl)("Local"),url:ty,copyId:"local_url",copied:eV,onCopy:e0}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${H?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tunnel"}),H&&!G&&B?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.pd,{value:`${X||Y}/v1`,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,s.jsx)("button",{onClick:()=>e0(`${X||Y}/v1`,"tunnel_url"),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tunnel_url"===eV?"check":"content_copy"})}),(0,s.jsx)("button",{onClick:()=>ei(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:(0,g.Tl)("Disable Tunnel"),children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!H||G||B?G?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-surface text-sm text-text-muted",children:[(0,s.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),ee||(0,g.Tl)("Creating tunnel...")]}),(0,s.jsx)("button",{onClick:()=>{V(!1),et("")},className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:(0,g.Tl)("Stop"),children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):el?.type==="error"?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),el.message]}),(0,s.jsx)(i.$n,{size:"sm",icon:"cloud_upload",onClick:()=>en(!0),children:(0,g.Tl)("Enable")})]}):K?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-surface text-sm text-text-muted",children:[(0,s.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),(0,s.jsx)("button",{onClick:()=>z(!1),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:(0,g.Tl)("Stop"),children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):(0,s.jsx)(i.$n,{size:"sm",icon:"cloud_upload",onClick:()=>{e1?es({type:"error",message:`${(0,g.Tl)("Security required")}: ${e5}`}):S?en(!0):es({type:"error",message:(0,g.Tl)('Security required: Enable "Require API key" before activating the tunnel.')})},children:(0,g.Tl)("Enable")}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,s.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),eM?(0,g.Tl)("Tunnel reconnecting..."):(0,g.Tl)("Tunnel checking...")]}),(0,s.jsx)("button",{onClick:()=>ei(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:(0,g.Tl)("Disable Tunnel"),children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${eo?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tailscale"}),eo&&!eh&&ed?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.pd,{value:`${eu}/v1`,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,s.jsx)("button",{onClick:()=>e0(`${eu}/v1`,"ts_url"),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"ts_url"===eV?"check":"content_copy"})}),(0,s.jsx)("button",{onClick:()=>eD(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:(0,g.Tl)("Disable Tailscale"),children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!eo||eh||ed?eh||eA?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-surface text-sm text-text-muted",children:[(0,s.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),ey||(0,g.Tl)("Connecting...")]}),ej&&(0,s.jsx)(i.$n,{size:"sm",icon:"open_in_new",onClick:()=>window.open(ej,"tailscale_auth","width=600,height=700,noopener,noreferrer"),children:ek||(0,g.Tl)("Open")}),(0,s.jsx)("button",{onClick:()=>{ep(!1),eR(!1),eg(""),to()},className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:(0,g.Tl)("Stop"),children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):eb?.type==="error"?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),eb.message]}),(0,s.jsx)(i.$n,{size:"sm",icon:"vpn_lock",onClick:tu,children:(0,g.Tl)("Enable")})]}):(0,s.jsx)(i.$n,{size:"sm",icon:"vpn_lock",onClick:()=>{e1?ef({type:"error",message:`${(0,g.Tl)("Security required")}: ${e5}`}):tu()},className:"bg-linear-to-r from-indigo-500 to-purple-500 hover:from-indigo-600 hover:to-purple-600 text-white!",children:(0,g.Tl)("Enable")}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,s.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),eJ?(0,g.Tl)("Tailscale reconnecting..."):(0,g.Tl)("Tailscale checking...")]}),(0,s.jsx)("button",{onClick:()=>eD(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:(0,g.Tl)("Disable Tailscale"),children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]})]}),e1&&!H&&!eo&&(0,s.jsx)("div",{className:"mt-4",children:(0,s.jsx)(y,{message:e5,action:{label:(0,g.Tl)("Open settings"),href:"/dashboard/profile"}})}),(H||eo)&&(0,s.jsxs)("div",{className:"mt-4 flex flex-col gap-2",children:[!S&&(0,s.jsx)(y,{message:(0,g.Tl)("Require API key is disabled — your endpoint is publicly accessible without authentication."),action:{label:(0,g.Tl)("Enable"),href:"#require-api-key"}}),(!U||!F)&&(0,s.jsx)(y,{message:U?(0,g.Tl)("No dashboard password is set — set one on the Settings page."):(0,g.Tl)("Require login is disabled — anyone can access your dashboard via tunnel."),action:{label:U?(0,g.Tl)("Change password"):(0,g.Tl)("Enable"),href:"/dashboard/profile"}})]}),(H||eo)&&(0,s.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex items-center gap-3",children:[(0,s.jsx)(i.lM,{checked:W,onChange:()=>e8(!W)}),(0,s.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,s.jsx)("p",{className:"font-medium text-sm",children:(0,g.Tl)("Allow dashboard access via tunnel")}),(0,s.jsx)(p,{text:(0,g.Tl)("When enabled, the dashboard can be accessed through your tunnel or Tailscale URL (login still required). When disabled, dashboard access via tunnel/Tailscale is completely blocked.")})]})]})]}),(0,s.jsxs)(i.Zp,{id:"require-api-key",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,s.jsxs)("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-primary",children:"vpn_key"}),(0,g.Tl)("API Keys")]}),(0,s.jsx)(i.$n,{icon:"add",onClick:()=>j(!0),children:(0,g.Tl)("Create Key")})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between pb-4 mb-4 border-b border-border",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"font-medium",children:(0,g.Tl)("Require API key")}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:(0,g.Tl)("Requests without a valid key will be rejected")})]}),(0,s.jsx)(i.lM,{checked:S,onChange:e=>{e?e6(!0):C({title:(0,g.Tl)("Disable API key requirement?"),message:(0,g.Tl)("Requests without a valid key will be accepted while this is off. You can re-enable it at any time."),onConfirm:()=>e6(!1)})}})]}),eZ&&!S&&(0,s.jsx)("div",{className:"mb-4 -mt-2",children:(0,s.jsx)(y,{message:(0,g.Tl)("Endpoint is exposed without an API key.")})}),(0,s.jsxs)("div",{className:"flex items-center justify-between py-4 mb-4 border-b border-border gap-3",children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("p",{className:"font-medium flex items-center gap-2",children:[(0,g.Tl)("Key secret rotation"),(0,s.jsx)("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded bg-amber-500/10 text-amber-600 dark:text-amber-400",children:(0,g.Tl)("Experimental")})]}),(0,s.jsx)("p",{className:"text-sm text-text-muted truncate",children:(0,g.Tl)("Sign new keys with an auto-generated secret instead of the built-in one")})]}),(0,s.jsx)(p,{text:(0,g.Tl)("When enabled, the HMAC secret used for API key CRC is auto-generated to the data directory (api-key-secret, mode 0600) — or set API_KEY_SECRET to pin your own (env always wins). Existing keys keep working only if they were issued under the same secret; enabling invalidates previously issued keys, and Re-issue all keys re-creates every stored key under the current secret so clients can be updated in one step.")})]}),(0,s.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[_&&(0,s.jsx)(i.$n,{size:"xs",onClick:()=>C({title:(0,g.Tl)("Re-issue all API keys?"),message:(0,g.Tl)("Every existing key will be replaced with a new one signed under the current secret. All clients using old keys will stop working until updated. This cannot be undone."),onConfirm:e9}),disabled:$,children:$?(0,g.Tl)("Rotating…"):(0,g.Tl)("Rotate all")}),(0,s.jsx)(i.lM,{checked:_,onChange:e=>{e?C({title:(0,g.Tl)("Enable key secret rotation?"),message:(0,g.Tl)("New keys will be signed with an auto-generated secret. Keys issued BEFORE enabling will stop validating and cannot be restored — re-create them and update every client. This cannot be undone silently."),onConfirm:()=>e7(!0)}):C({title:(0,g.Tl)("Disable key secret rotation?"),message:(0,g.Tl)("New keys will be signed with the built-in secret again. Keys issued while rotation was enabled will stop validating — re-create them and update every client."),onConfirm:()=>e7(!1)})}})]})]}),0===t.length?(0,s.jsxs)("div",{className:"text-center py-12",children:[(0,s.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"vpn_key"})}),(0,s.jsx)("p",{className:"text-text-main font-medium mb-1",children:(0,g.Tl)("No API keys yet")}),(0,s.jsx)("p",{className:"text-sm text-text-muted mb-4",children:(0,g.Tl)("Create your first API key to get started")}),(0,s.jsx)(i.$n,{icon:"add",onClick:()=>j(!0),children:(0,g.Tl)("Create Key")})]}):(0,s.jsx)("div",{className:"flex flex-col",children:t.map(e=>{var t;return(0,s.jsxs)("div",{className:`group flex items-center justify-between py-3 border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0 ${!1===e.isActive?"opacity-60":""}`,children:[(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsx)("p",{className:"text-sm font-medium",children:e.name}),(0,s.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,s.jsx)("code",{className:"text-xs text-text-muted font-mono",children:eQ.has(e.id)?e.key:(t=e.key)&&!(t.length<=10)?t.slice(0,6)+"•".repeat(t.length-10)+t.slice(-4):t||""}),(0,s.jsx)("button",{onClick:()=>{var t;return t=e.id,void eX(e=>{let l=new Set(e);return l.has(t)?l.delete(t):l.add(t),l})},className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-all",title:eQ.has(e.id)?(0,g.Tl)("Hide key"):(0,g.Tl)("Show key"),children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:eQ.has(e.id)?"visibility_off":"visibility"})}),(0,s.jsx)("button",{onClick:()=>e0(e.key,e.id),className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-all",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:eV===e.id?"check":"content_copy"})})]}),(0,s.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:[(0,g.Tl)("Created")," ",new Date(e.createdAt).toLocaleDateString()]}),!1===e.isActive&&(0,s.jsx)("p",{className:"text-xs text-orange-500 mt-1",children:(0,g.Tl)("Paused")})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(i.lM,{size:"sm",checked:e.isActive??!0,onChange:t=>{e.isActive&&!t?C({title:(0,g.Tl)("Pause API Key"),message:`${(0,g.Tl)("Pause API key")} "${e.name}"?
2
-
3
- ${(0,g.Tl)("This key will stop working immediately but can be resumed later.")}`,onConfirm:async()=>{C(null),tp(e.id,t)}}):tp(e.id,t)},title:e.isActive?(0,g.Tl)("Pause key"):(0,g.Tl)("Resume key")}),(0,s.jsx)("button",{onClick:()=>th(e.id),className:"p-2 hover:bg-red-500/10 rounded text-red-500 opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-all",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},e.id)})})]}),(0,s.jsx)(i.aF,{isOpen:f,title:(0,g.Tl)("Create API Key"),onClose:()=>{j(!1),k("")},children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)(i.pd,{label:(0,g.Tl)("Key Name"),value:w,onChange:e=>k(e.target.value),placeholder:(0,g.Tl)("Production Key")}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(i.$n,{onClick:tx,fullWidth:!0,disabled:!w.trim(),children:(0,g.Tl)("Create")}),(0,s.jsx)(i.$n,{onClick:()=>{j(!1),k("")},variant:"ghost",fullWidth:!0,children:(0,g.Tl)("Cancel")})]})]})}),(0,s.jsx)(i.aF,{isOpen:!!I,title:(0,g.Tl)("Keys Re-issued"),onClose:()=>O(null),children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,s.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:(0,g.Tl)("Save these keys now — shown only once")}),(0,s.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:(0,g.Tl)("Old keys no longer work. Update every client with the new values below.")})]}),(0,s.jsx)("div",{className:"flex flex-col gap-2 max-h-72 overflow-y-auto",children:(I?.rotated||[]).map(e=>(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("p",{className:"text-xs font-medium text-text-muted",children:e.name}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(i.pd,{value:e.key,readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,s.jsx)(i.$n,{variant:"secondary",icon:eV===`rot_${e.id}`?"check":"content_copy",onClick:()=>e0(e.key,`rot_${e.id}`),children:eV===`rot_${e.id}`?"Copied!":"Copy"})]})]},e.id))}),(0,s.jsx)(i.$n,{onClick:()=>O(null),fullWidth:!0,children:(0,g.Tl)("Done")})]})}),(0,s.jsx)(i.aF,{isOpen:!!v,title:(0,g.Tl)("API Key Created"),onClose:()=>T(null),children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,s.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:(0,g.Tl)("Save this key now!")}),(0,s.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:(0,g.Tl)("This is the only time you will see this key. Store it securely.")})]}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(i.pd,{value:v||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,s.jsx)(i.$n,{variant:"secondary",icon:"created_key"===eV?"check":"content_copy",onClick:()=>e0(v,"created_key"),children:"created_key"===eV?(0,g.Tl)("Copied!"):(0,g.Tl)("Copy")})]}),(0,s.jsx)(i.$n,{onClick:()=>T(null),fullWidth:!0,children:(0,g.Tl)("Done")})]})}),(0,s.jsx)(i.aF,{isOpen:ea,title:(0,g.Tl)("Enable Tunnel"),onClose:()=>en(!1),children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)("div",{className:"bg-surface-2 border border-border-subtle rounded-lg p-4",children:(0,s.jsxs)("div",{className:"flex items-start gap-3",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-primary",children:"cloud_upload"}),(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-sm text-text-main font-medium mb-1",children:(0,g.Tl)("Cloudflare Tunnel")}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:(0,g.Tl)("Expose your local 10Router to the internet. No port forwarding, no static IP needed. Share endpoint URL with your team or use it in Cursor, Cline, and other AI tools from anywhere.")})]})]})}),(0,s.jsx)("div",{className:"grid grid-cols-2 gap-3",children:c.oX.map(e=>(0,s.jsxs)("div",{className:"flex flex-col items-center text-center p-3 rounded-lg bg-sidebar/50",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-xl text-primary mb-1",children:e.icon}),(0,s.jsx)("p",{className:"text-xs font-semibold",children:e.title}),(0,s.jsx)("p",{className:"text-xs text-text-muted",children:e.desc})]},e.title))}),(0,s.jsx)("p",{className:"text-xs text-text-muted",children:(0,g.Tl)("Requires outbound port 7844 (TCP/UDP). Connection may take 10-30s.")}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(i.$n,{onClick:tl,fullWidth:!0,children:(0,g.Tl)("Start Tunnel")}),(0,s.jsx)(i.$n,{onClick:()=>en(!1),variant:"ghost",fullWidth:!0,children:(0,g.Tl)("Cancel")})]})]})}),(0,s.jsx)(i.aF,{isOpen:er,title:(0,g.Tl)("Disable Tunnel"),onClose:()=>!G&&ei(!1),children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)("p",{className:"text-sm text-text-muted",children:(0,g.Tl)("The Cloudflare tunnel will be disconnected. Remote access via tunnel URL will stop working.")}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(i.$n,{onClick:ts,fullWidth:!0,disabled:G,variant:"danger",children:G?"Disabling...":"Disable"}),(0,s.jsx)(i.$n,{onClick:()=>ei(!1),variant:"ghost",fullWidth:!0,disabled:G,children:(0,g.Tl)("Cancel")})]})]})}),(0,s.jsx)(i.aF,{isOpen:eI,title:(0,g.Tl)("Tailscale Funnel"),onClose:()=>{eC||(eO(!1),e$(""),ef(null))},children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[null===eT&&(0,s.jsxs)("p",{className:"text-sm text-text-muted flex items-center gap-2",children:[(0,s.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),(0,g.Tl)("Checking...")]}),!1===eT&&!eC&&(0,s.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,s.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale is not installed. Install it to enable Funnel."}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(i.$n,{onClick:tn,fullWidth:!0,children:(0,g.Tl)("Install Tailscale")}),(0,s.jsx)(i.$n,{onClick:()=>eO(!1),variant:"ghost",fullWidth:!0,children:(0,g.Tl)("Cancel")})]})]}),eC&&(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 text-sm text-text-muted",children:[(0,s.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Installing Tailscale..."]}),eE.length>0&&(0,s.jsx)("div",{ref:eF,className:"bg-black/5 dark:bg-white/5 rounded p-2 max-h-40 overflow-y-auto font-mono text-xs text-text-muted",children:eE.map((e,t)=>(0,s.jsx)("div",{children:e},t))})]}),!0===eT&&!eC&&(0,s.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check_circle"}),"Tailscale installed"]}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(i.$n,{onClick:()=>tc(),fullWidth:!0,children:(0,g.Tl)("Connect")}),(0,s.jsx)(i.$n,{onClick:()=>eO(!1),variant:"ghost",fullWidth:!0,children:(0,g.Tl)("Cancel")})]})]}),eb&&(0,s.jsx)(h,{status:eb})]})}),(0,s.jsx)(i.aF,{isOpen:eU,title:(0,g.Tl)("Disable Tailscale"),onClose:()=>!eh&&eD(!1),children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale Funnel will be stopped. Remote access via Tailscale URL will stop working."}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(i.$n,{onClick:tm,fullWidth:!0,disabled:eh,variant:"danger",children:eh?"Disabling...":"Disable"}),(0,s.jsx)(i.$n,{onClick:()=>eD(!1),variant:"ghost",fullWidth:!0,disabled:eh,children:(0,g.Tl)("Cancel")})]})]})}),(0,s.jsx)(i.uo,{isOpen:!!N,onClose:()=>C(null),onConfirm:()=>{let e=N?.onConfirm;C(null),e?.()},title:N?.title||"Confirm",message:N?.message,variant:"danger"})]})}b.propTypes={machineId:r().string.isRequired}},51243:(e,t,l)=>{Promise.resolve().then(l.bind(l,20242))}}]);