switchboard-router 0.9.44 → 0.9.46

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 (132) hide show
  1. package/app/{.next-cli-build/static/chunks/1321-840780dd1bbcf469.js → .next/static/chunks/1321-468635886f5017ab.js} +1 -1
  2. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-cf70f587dc7ab205.js +1 -0
  3. package/app/.next/static/css/912e8e046d0cd4ca.css +1 -0
  4. package/app/.next-cli-build/BUILD_ID +1 -1
  5. package/app/.next-cli-build/app-path-routes-manifest.json +19 -19
  6. package/app/.next-cli-build/build-manifest.json +2 -2
  7. package/app/.next-cli-build/prerender-manifest.json +3 -3
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  38. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  39. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  40. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  41. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  43. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  44. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  45. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
  46. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  47. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
  48. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
  49. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  50. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  51. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  52. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  53. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  54. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  55. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +1 -1
  56. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  57. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +2 -2
  58. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +2 -2
  59. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +3 -3
  60. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +3 -3
  61. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  62. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  63. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  64. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
  65. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  66. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  67. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  68. package/app/.next-cli-build/server/app/callback.html +1 -1
  69. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  70. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  71. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  72. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
  73. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  74. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  75. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  76. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  77. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  78. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
  79. package/app/.next-cli-build/server/app/index.html +1 -1
  80. package/app/.next-cli-build/server/app/index.rsc +4 -4
  81. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  82. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  83. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  84. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  85. package/app/.next-cli-build/server/app/landing.html +1 -1
  86. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  87. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  88. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  89. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
  90. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  91. package/app/.next-cli-build/server/app/login.html +1 -1
  92. package/app/.next-cli-build/server/app/login.rsc +5 -5
  93. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
  94. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  95. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +5 -5
  96. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  97. package/app/.next-cli-build/server/app-paths-manifest.json +19 -19
  98. package/app/.next-cli-build/server/chunks/1350.js +1 -1
  99. package/app/.next-cli-build/server/chunks/2619.js +1 -1
  100. package/app/.next-cli-build/server/chunks/2847.js +1 -1
  101. package/app/.next-cli-build/server/chunks/369.js +9 -9
  102. package/app/.next-cli-build/server/chunks/5781.js +2 -2
  103. package/app/.next-cli-build/server/chunks/6533.js +1 -1
  104. package/app/.next-cli-build/server/chunks/7201.js +1 -1
  105. package/app/.next-cli-build/server/chunks/869.js +1 -1
  106. package/app/.next-cli-build/server/chunks/8942.js +1 -1
  107. package/app/.next-cli-build/server/chunks/8998.js +8 -8
  108. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  109. package/app/.next-cli-build/server/middleware.js +8 -8
  110. package/app/.next-cli-build/server/pages/404.html +1 -1
  111. package/app/.next-cli-build/server/pages/500.html +1 -1
  112. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  113. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  114. package/app/{.next/static/chunks/1321-840780dd1bbcf469.js → .next-cli-build/static/chunks/1321-468635886f5017ab.js} +1 -1
  115. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-cf70f587dc7ab205.js +1 -0
  116. package/app/.next-cli-build/static/css/912e8e046d0cd4ca.css +1 -0
  117. package/app/open-sse/identity/tls/bin/darwin/arm64/switchboard-claude-tls +0 -0
  118. package/app/open-sse/identity/tls/bin/darwin/x64/switchboard-claude-tls +0 -0
  119. package/app/open-sse/identity/tls/bin/linux/arm64/switchboard-claude-tls +0 -0
  120. package/app/open-sse/identity/tls/bin/linux/x64/switchboard-claude-tls +0 -0
  121. package/app/open-sse/identity/tls/bin/win32/arm64/switchboard-claude-tls.exe +0 -0
  122. package/app/open-sse/identity/tls/bin/win32/x64/switchboard-claude-tls.exe +0 -0
  123. package/app/package.json +1 -1
  124. package/package.json +1 -1
  125. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-2050b8c10234b86e.js +0 -1
  126. package/app/.next/static/css/5c8909d9cd96e270.css +0 -1
  127. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-2050b8c10234b86e.js +0 -1
  128. package/app/.next-cli-build/static/css/5c8909d9cd96e270.css +0 -1
  129. /package/app/.next/static/{XYJiCIvalz3FNIm1goDwC → WW6AmUFPUk6i1gC7bGp99}/_buildManifest.js +0 -0
  130. /package/app/.next/static/{XYJiCIvalz3FNIm1goDwC → WW6AmUFPUk6i1gC7bGp99}/_ssgManifest.js +0 -0
  131. /package/app/.next-cli-build/static/{XYJiCIvalz3FNIm1goDwC → WW6AmUFPUk6i1gC7bGp99}/_buildManifest.js +0 -0
  132. /package/app/.next-cli-build/static/{XYJiCIvalz3FNIm1goDwC → WW6AmUFPUk6i1gC7bGp99}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=2619,exports.ids=[2619],exports.modules={4630:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(45350);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},10952:(a,b,c)=>{var d=c(12407),e=c(33234);(0,d.qd)({loadProviderQuotaState:e.l,saveProviderQuotaState:e._})},18271:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>n,refreshAndUpdateCredentials:()=>m});var e=c(30369);c(10952);var f=c(15717),g=c(43763),h=c(48400),i=c(18129),j=c(39326),k=c(40615),l=a([e,h]);[e,h]=l.then?(await l)():l;let o=["expired","authentication","unauthorized","401","re-authorize"];async function m(a,b=!1,c=null){let d=await (0,f.Mc)(a.id);if(!d)throw Error("Connection no longer available");let e=["accessToken","refreshToken","idToken"].some(b=>(d[b]??null)!==(a[b]??null))||["copilotToken","copilotTokenExpiresAt"].some(b=>(d.providerSpecificData?.[b]??null)!==(a.providerSpecificData?.[b]??null)),g=d.provider!==a.provider||d.authType!==a.authType;if(a=d,g||e&&a.accessToken)return{connection:a,refreshed:!1};let j=(0,h.getExecutor)(a.provider),k={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||j.needsRefresh(k)))return{connection:a,refreshed:!1};let l=await (0,i.MF)(a.provider,k,()=>j.refreshCredentials(k,console,c));if(!l||l.error){let b=await (0,f.Mc)(a.id);if(b?.accessToken)return{connection:b,refreshed:!1};throw Error("Failed to refresh credentials. Please re-authorize the connection.")}let n={updatedAt:new Date().toISOString()};l.accessToken&&(n.accessToken=l.accessToken),l.refreshToken&&(n.refreshToken=l.refreshToken),l.idToken&&(n.idToken=l.idToken),l.lastRefreshAt&&(n.lastRefreshAt=l.lastRefreshAt);let o=(0,i.Jj)(a.id,l),p=o?.expiresAt??(l.expiresAt?new Date(l.expiresAt).getTime():null);Number.isFinite(p)?(n.expiresAt=new Date(p).toISOString(),n.expiresIn=Math.max(0,Math.ceil((p-Date.now())/1e3))):l.expiresIn&&(n.expiresAt=new Date(Date.now()+1e3*l.expiresIn).toISOString(),n.expiresIn=l.expiresIn);let q={...Object.fromEntries(Object.entries((0,i.Hf)(l)).filter(([b,c])=>JSON.stringify(c)!==JSON.stringify(a.providerSpecificData?.[b]))),...l.copilotToken?{copilotToken:l.copilotToken}:{},...l.copilotTokenExpiresAt?{copilotTokenExpiresAt:l.copilotTokenExpiresAt}:{}};Object.keys(q).length>0&&(n.providerSpecificData=q);let r=await (0,f.rS)(a.id,a,n);if(!r){let b=await (0,f.Mc)(a.id);if(b?.accessToken)return{connection:b,refreshed:!1};throw Error("Connection no longer available")}return{connection:r,refreshed:!0}}async function n(a,{params:b}){let c;try{let{connectionId:d}=await b;if(!d||"string"!=typeof d||d.length>200)return Response.json({error:"Invalid connection id"},{status:400});let e="1"===new URL(a.url).searchParams.get("force");if(!(c=await (0,f.Mc)(d)))return Response.json({error:"Connection not found"},{status:404});let h="oauth"===c.authType,i=("apikey"===c.authType||"api_key"===c.authType)&&k.jO.includes(c.provider);if(!h&&!i)return Response.json({error:"Usage not available for this connection"},{status:400});let l=await (0,j.B)(c.providerSpecificData),n={connectionProxyEnabled:!0===l.connectionProxyEnabled,connectionProxyUrl:l.connectionProxyUrl||"",connectionNoProxy:l.connectionNoProxy||"",vercelRelayUrl:l.vercelRelayUrl||"",strictProxy:!1};if(h)try{c=(await m(c,!1,n)).connection}catch(a){return console.error("[Usage API] Credential refresh failed:",a),Response.json({error:"Credential refresh failed. Please re-authorize the connection."},{status:401})}let p=await (0,g.my)(c,n,{force:e});if(h&&function(a){if(!a?.message)return!1;let b=a.message.toLowerCase();return o.some(a=>b.includes(a))}(p)&&c.refreshToken)try{c=(await m(c,!0,n)).connection,p=await (0,g.my)(c,n,{force:e})}catch(a){console.warn(`[Usage] ${c.provider}: force refresh failed: ${a.message}`)}return Response.json(p)}catch(b){let a=c?.provider??"unknown";return console.warn(`[Usage] ${a}: ${b.message}`),Response.json({error:"Failed to fetch usage"},{status:500})}}d()}catch(a){d(a)}})},43763:(a,b,c)=>{c.d(b,{RO:()=>p.RO,Yt:()=>p.Yt,my:()=>X});var d=c(46052),e=c(88705);async function f(a,b,c=null){try{if(!a)throw Error("No GitHub access token available. Please re-authorize the connection.");let b=await (0,d.Fm)((0,e.U)("github").url,{headers:{Authorization:`token ${a}`,Accept:"application/json"},identity:"copilot",provider:"github",format:"openai"},c);if(!b.ok){let a=await b.text();throw Error(`GitHub API error: ${a}`)}let f=await b.json();if(f.quota_snapshots){let a=f.quota_snapshots,b=(0,e.eZ)(f.quota_reset_date);return{plan:f.copilot_plan,resetDate:f.quota_reset_date,quotas:{chat:{...g(a.chat),resetAt:b},completions:{...g(a.completions),resetAt:b},premium_interactions:{...g(a.premium_interactions),resetAt:b}}}}if(f.monthly_quotas||f.limited_user_quotas){let a=f.monthly_quotas||{},b=f.limited_user_quotas||{},c=(0,e.eZ)(f.limited_user_reset_date);return{plan:f.copilot_plan||f.access_type_sku,resetDate:f.limited_user_reset_date,quotas:{chat:{used:b.chat||0,total:a.chat||0,unlimited:!1,resetAt:c},completions:{used:b.completions||0,total:a.completions||0,unlimited:!1,resetAt:c}}}}return{message:"GitHub Copilot connected. Unable to parse quota data."}}catch(a){throw Error(`Failed to fetch GitHub usage: ${a.message}`)}}function g(a){return a?{used:a.entitlement-a.remaining,total:a.entitlement,remaining:a.remaining,unlimited:a.unlimited||!1}:{used:0,total:0,unlimited:!0}}var h=c(28730);let i=(0,e.U)("antigravity");async function j(a,b,c=null){if(!a)return{plan:"Free",message:"Gemini CLI access token not available."};try{let d=(0,e.gD)(b?.projectId),f="Free";if(!d){let b=await k(a,c);d=(0,e.gD)(b?.cloudaicompanionProject),f=b?.currentTier?.name||f}if(!d)return{plan:f,message:"Gemini CLI project ID not available. Reconnect Gemini CLI, or configure a Google Cloud project with Gemini Code Assist access before checking quota."};let g=await (0,e.u9)((0,e.U)("gemini-cli").quotaUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({project:d}),identity:"gemini-cli",provider:"gemini-cli",format:"gemini"},1e4,c);if(!g.ok)return{plan:f,message:`Gemini CLI quota error (${g.status}).`};let h=await g.json(),i={};if(Array.isArray(h.buckets))for(let a of h.buckets){if(!a.modelId||null==a.remainingFraction)continue;let b=Number(a.remainingFraction)||0,c=Math.round(1e3*b),d=Math.max(0,1e3-c);i[a.modelId]={used:d,total:1e3,resetAt:(0,e.eZ)(a.resetTime),remainingPercentage:100*b,unlimited:!1}}return{plan:f,quotas:i}}catch(a){return{message:`Gemini CLI error: ${a.message}`}}}async function k(a,b=null){try{let c=await (0,e.u9)((0,e.U)("gemini-cli").loadCodeAssistUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:h.Cn}),identity:"gemini-cli",provider:"gemini-cli",format:"gemini"},1e4,b);if(!c.ok)return null;return await c.json()}catch{return null}}async function l(a,b,c=null){try{let b=await m(a,c),d=b?.cloudaicompanionProject||null,f=await (0,e.u9)(i.quotaApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","X-Client-Name":"antigravity"},body:JSON.stringify({...d?{project:d}:{}}),identity:"antigravity",provider:"antigravity",format:"antigravity"},1e4,c);if(403===f.status)return{message:"Antigravity quota API access forbidden. Chat may still work.",quotas:{}};if(401===f.status)return{message:"Antigravity quota API authentication expired. Chat may still work.",quotas:{}};if(!f.ok)throw Error(`Antigravity API error: ${f.status}`);let g=await f.json(),h={};if(g.models){let a=["gemini-3-flash-agent","gemini-3.5-flash-low","gemini-3.5-flash-extra-low","gemini-pro-agent","gemini-3.1-pro-low","claude-sonnet-4-6","claude-opus-4-6-thinking","gpt-oss-120b-medium","gemini-3-flash","gemini-3.1-flash-image","gemini-3-pro-image"];for(let[b,c]of Object.entries(g.models)){if(!c.quotaInfo||c.isInternal||!a.includes(b))continue;let d=c.quotaInfo.remainingFraction||0,f=100*d,g=Math.round(1e3*d),i=1e3-g;h[b]={used:i,total:1e3,resetAt:(0,e.eZ)(c.quotaInfo.resetTime),remainingPercentage:f,unlimited:!1,displayName:c.displayName||b}}}return{plan:b?.currentTier?.name||"Unknown",quotas:h,subscriptionInfo:b}}catch(a){return console.error("[Antigravity Usage] Error:",a.message,a.cause),{message:`Antigravity error: ${a.message}`}}}async function m(a,b=null){try{let c=await (0,e.u9)(i.loadProjectApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:h.Cn,mode:1}),identity:"antigravity",provider:"antigravity",format:"antigravity"},1e4,b);if(!c.ok)return null;return await c.json()}catch(a){return console.error("[Antigravity Subscription] Error:",a.message),null}}var n=c(11841),o=c(98594),p=c(49485),q=c(3148);async function r(a,b,c=null){let f=b?.authMethod||"builder-id",g="api_key"===f,h=g?{tokentype:"API_KEY"}:{},i="external_idp"===f?{TokenType:"EXTERNAL_IDP"}:{},j=g?b?.profileArn||"":b?.profileArn||(0,q.We)(f),k=new URLSearchParams({isEmailRequired:"true",origin:"AI_EDITOR",resourceType:"AGENTIC_REQUEST"}),l=!1,m=[];for(let b of[{name:"codewhisperer-get",run:async()=>(0,d.Fm)(`${(0,e.U)("kiro").cwHost}${(0,e.U)("kiro").limitsPath}?${k.toString()}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","x-amz-user-agent":"aws-sdk-js/1.0.0 KiroIDE","user-agent":"aws-sdk-js/1.0.0 KiroIDE",...h,...i}},c)},{name:"codewhisperer-post",run:async()=>(0,d.Fm)((0,e.U)("kiro").cwHost,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.GetUsageLimits",Accept:"application/json",...h,...i},body:JSON.stringify({origin:"AI_EDITOR",...j?{profileArn:j}:{},resourceType:"AGENTIC_REQUEST"})},c)},{name:"q-get",run:async()=>{let b=new URLSearchParams({origin:"AI_EDITOR",...j?{profileArn:j}:{},resourceType:"AGENTIC_REQUEST"});return(0,d.Fm)(`${(0,e.U)("kiro").qHost}${(0,e.U)("kiro").limitsPath}?${b}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json",...h,...i}},c)}}])try{let a=await b.run();if(!a.ok){let c=await a.text().catch(()=>"");(401===a.status||403===a.status)&&(l=!0),m.push(`${b.name}:${a.status}${c?`:${c}`:""}`);continue}let c=await a.json();return function(a){let b=a.usageBreakdownList||[],c={},d=(0,e.eZ)(a.nextDateReset||a.resetDate);return b.forEach(a=>{let b=a.resourceType?.toLowerCase()||"unknown",f=a.currentUsageWithPrecision||0,g=a.usageLimitWithPrecision||0;if(c[b]={used:f,total:g,remaining:g-f,resetAt:d,unlimited:!1},a.freeTrialInfo){let f=a.freeTrialInfo.currentUsageWithPrecision||0,g=a.freeTrialInfo.usageLimitWithPrecision||0;c[`${b}_freetrial`]={used:f,total:g,remaining:g-f,resetAt:(0,e.eZ)(a.freeTrialInfo.freeTrialExpiry||d),unlimited:!1}}}),{plan:a.subscriptionInfo?.subscriptionTitle||"Kiro",quotas:c}}(c)}catch(a){m.push(`${b.name}:${a.message}`)}return l&&"idc"===f?{message:"Kiro quota API is unavailable for the current AWS IAM Identity Center session. Chat may still work. If this persists after renewing your session, reconnect Kiro.",quotas:{}}:l&&("google"===f||"github"===f)?{message:"Kiro quota API authentication expired. Chat may still work.",quotas:{}}:l?{message:"Kiro quota API rejected the current token. Chat may still work.",quotas:{}}:{message:m.length>0?`Unable to fetch Kiro usage right now. (${m[m.length-1]})`:"Unable to fetch Kiro usage right now.",quotas:{}}}let s={minimax:(0,e.U)("minimax").urls,"minimax-cn":(0,e.U)("minimax-cn").urls};function t(a,b,c){return a&&"object"==typeof a?a[b]??a[c]??null:null}function u(a,b,c){if(!a||"object"!=typeof a)return null;let d=a[b]??a[c];if(null==d)return null;let e=Number(d);return Number.isFinite(e)?Math.max(0,Math.min(100,e)):null}function v(a){return Math.max(0,Number(t(a,"current_interval_total_count","currentIntervalTotalCount"))||0)}function w(a){return Math.max(0,Number(t(a,"current_weekly_total_count","currentWeeklyTotalCount"))||0)}function x(a){return!!(v(a)>0||w(a)>0)||null!==u(a,"current_interval_remaining_percent","currentIntervalRemainingPercent")||null!==u(a,"current_weekly_remaining_percent","currentWeeklyRemainingPercent")}function y(a,b,c,d,f,g,h,i,j,k){let l=d(c),m=u(c,h,i);if(l<=0&&null===m)return;let n=Math.max(0,Number(t(c,f,g))||0),o=l,p=n;l<=0&&(o=100,p=k?Math.round(m/100*o):Math.round(o*(1-m/100))),a[b]=function(a,b,c,d,e=null){var f,g,h;let i=Math.max(0,a),j=d?Math.max(i-b,0):Math.min(Math.max(0,b),i),k=Math.max(i-j,0),l=(f=e,g=k,h=i,null!=f&&Number.isFinite(f)?Math.max(0,Math.min(100,f)):h>0?Math.max(0,Math.min(100,g/h*100)):0);return{used:j,total:i,remaining:k,remainingPercentage:l,resetAt:c,unlimited:!1}}(o,p,function(a,b,c,d,f,g){let h=Number(t(a,c,d))||0;return h>0?new Date(b+h).toISOString():(0,e.eZ)(t(a,f,g))}(c,...j),k,m)}async function z(a,b,c=null){if(!a)return{message:"MiniMax API key not available."};let e=s[b]||[],f="";for(let b=0;b<e.length;b+=1){let g=e[b],h=b<e.length-1;try{let b=await (0,d.Fm)(g,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"}},c),e=await b.text(),i={};if(e)try{i=JSON.parse(e)}catch{i={}}let j=(i?.base_resp??i?.baseResp)||{},k=Number(j.status_code??j.statusCode)||0,l=String(j.status_msg??j.statusMsg??"").trim(),m=`${l} ${e}`.trim(),n=/token plan|coding plan|invalid api key|invalid key|unauthorized|inactive/i;if(401===b.status||403===b.status||1004===k||n.test(m))return{message:"MiniMax API key invalid or inactive. Use an active Token/Coding Plan key."};if(!b.ok){if(f=`MiniMax usage endpoint error (${b.status})`,(404===b.status||405===b.status||b.status>=500)&&h)continue;return{message:`MiniMax connected. ${f}`}}if(0!==k)return{message:`MiniMax connected. ${l||"Upstream quota API error"}`};let o=i?.model_remains??i?.modelRemains,p=(Array.isArray(o)?o:[]).filter(x);if(0===p.length)return{message:"MiniMax connected. No quota data was returned."};let q=Date.now(),r=g.includes("/coding_plan/remains"),s={};for(let a of p){let b=function(a){let b=String(t(a,"model_name","modelName")||"").trim();return b?"MiniMax-M*"===b||"general"===b?"M-series":b.replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,a=>a.toUpperCase()).replace(/\bTo\b/g,"to").replace(/\bTts\b/g,"TTS").replace(/\bHd\b/g,"HD"):"MiniMax"}(a);y(s,`${b} (5h)`,a,v,"current_interval_usage_count","currentIntervalUsageCount","current_interval_remaining_percent","currentIntervalRemainingPercent",[q,"remains_time","remainsTime","end_time","endTime"],r),y(s,`${b} (7d)`,a,w,"current_weekly_usage_count","currentWeeklyUsageCount","current_weekly_remaining_percent","currentWeeklyRemainingPercent",[q,"weekly_remains_time","weeklyRemainsTime","weekly_end_time","weeklyEndTime"],r)}if(0===Object.keys(s).length)return{message:"MiniMax connected. Unable to extract quota usage."};return{quotas:s}}catch(a){if(f=a.message,!h)break}}return{message:f?`MiniMax connected. Unable to fetch usage: ${f}`:"MiniMax connected. Unable to fetch usage."}}var A=c(45350);let B="codebuddy-cn";function C(a,b){let c=Number(a??b);return Number.isFinite(c)?c:0}async function D(a,b,c,f=null){let g=a||b;if(!g)return{message:"CodeBuddy CN credential not available."};try{let a=await (0,d.Fm)((0,e.U)(B).url,{method:"POST",headers:{...A.xq[B]?.headers||{},Authorization:`Bearer ${g}`,"Content-Type":"application/json",Accept:"application/json"},body:"{}"},f);if(401===a.status||403===a.status)return{message:"CodeBuddy CN credential invalid or expired."};if(!a.ok)return{message:`CodeBuddy CN quota API error (${a.status}).`};let b=await a.json();if(b?.code!==0)return{message:`CodeBuddy CN quota error: ${b?.msg||"unknown"}`};let c=b?.data?.Response?.Data||{},h=Array.isArray(c.Accounts)?c.Accounts:[];if(0===h.length)return{message:"CodeBuddy CN connected. No credit package found."};let i=a=>{let b=(0,e.eZ)(a.CycleEndTime);return b?new Date(b).getTime():1/0},j=a=>{let b=i(a),c=Number(a.DeductionEndTime);return Number.isFinite(b)&&Number.isFinite(c)&&c-b>1728e5},k=(a,b)=>i(a)-i(b),l=h.filter(j).sort(k),m=h.filter(a=>!j(a)).sort(k),n={},o={};l.forEach(a=>{let b=function(a){let b=(0,e.eZ)(a.CycleStartTime),c=(0,e.eZ)(a.CycleEndTime);if(b&&c){let a=(new Date(c).getTime()-new Date(b).getTime())/864e5;if(a<=1.5)return"Daily";if(a<=10)return"Weekly"}return"Monthly"}(a);o[b]=(o[b]||0)+1,n[o[b]>1?`${b} ${o[b]}`:b]={used:C(a.CycleCapacityUsedPrecise,a.CycleCapacityUsed),total:C(a.CycleCapacitySizePrecise,a.CycleCapacitySize),resetAt:(0,e.eZ)(a.CycleEndTime),unlimited:!1,recurring:!0}}),m.forEach((a,b)=>{n[`Bonus Pack ${b+1}`]={used:C(a.CapacityUsedPrecise,a.CapacityUsed),total:C(a.CapacitySizePrecise,a.CapacitySize),resetAt:(0,e.eZ)(a.CycleEndTime),unlimited:!1,recurring:!1}});let p=l[0]||h[0]||{};return{plan:p.PackageName||p.SubProductName||"CodeBuddy CN",quotas:n}}catch(a){return{message:`CodeBuddy CN error: ${a.message}`}}}let E={LEVEL_BASIC:"Moderato",LEVEL_INTERMEDIATE:"Allegretto",LEVEL_ADVANCED:"Allegro",LEVEL_STANDARD:"Vivace"};function F({used:a,total:b,remaining:c,resetAt:d}){let f,g=Math.max(0,(0,e.IQ)(b,0)),h=Math.max(0,(0,e.IQ)(a,0));return f=g>0&&null!=c&&Number.isFinite(Number(c))?Math.max(0,Number(c))/g*100:g>0?Math.max(0,g-h)/g*100:0,{used:h,total:g,remainingPercentage:f,resetAt:d||null,unlimited:!1}}async function G(a=null,b=null,c=null,f=null){let g="string"==typeof b&&b.length>0,i=!g&&"string"==typeof a&&a.length>0;if(!g&&!i)return{message:"Kimi access token or API key not available."};let j=g?{"x-api-key":b}:{Authorization:`Bearer ${a}`,...(0,h.VK)(f?.deviceId)};try{let a,b=await (0,d.Fm)("https://api.kimi.com/coding/v1/usages",{method:"GET",headers:{...j,"Content-Type":"application/json",Accept:"application/json"}},c),f=await b.text().catch(()=>"");if(!b.ok)return{plan:"Kimi Coding",message:function(a,b){let c=null;try{c=JSON.parse(b||"")}catch{}let d=Array.isArray(c?.details)?c.details[0]:null,e=d?.debug||c?.debug||null,f=e?.reason||c?.reason||"",g=e?.localizedMessage?.message||d?.localizedMessage?.message||c?.message||"";if(401===a)return"Kimi authentication expired. Please re-authorize.";if(403===a&&("REASON_FEATURE_NO_PERMISSION"===f||/permission_denied|do not have permission|subscribe/i.test(`${c?.code||""} ${g} ${b||""}`)))return g||"Kimi connected, but this account has no permission to view usage. Subscribe to Kimi Code to access quota.";let h=(g||b||"").slice(0,100);return h?`Kimi Coding connected. API Error ${a}: ${h}`:`Kimi Coding connected. API Error ${a}`}(b.status,f)};try{a=JSON.parse(f||"{}")}catch{return{plan:"Kimi Coding",message:"Kimi Coding connected. Invalid JSON response from API."}}let g={},h=a?.usage&&"object"==typeof a.usage?a.usage:{},i=(0,e.IQ)(h.limit??h.Limit,0),k=(0,e.IQ)(h.used??h.Used,0),l=h.remaining??h.Remaining,m=null!=l&&""!==l?(0,e.IQ)(l,NaN):NaN,n=h.resetTime||h.ResetTime||h.reset_at||h.resetAt;for(let b of(i>0&&(g.Weekly=F({used:k,total:i,remaining:Number.isFinite(m)?m:null,resetAt:(0,e.eZ)(n)})),Array.isArray(a?.limits)?a.limits:[])){if(!b||"object"!=typeof b)continue;let a=b.detail&&"object"==typeof b.detail?b.detail:{},c=(0,e.IQ)(a.limit??a.Limit,0),d=(0,e.IQ)(a.remaining??a.Remaining,NaN),f=a.resetTime||a.reset_at||a.resetAt;if(c>0){let a=Number.isFinite(d)?d:Math.max(0,c);g.Ratelimit=F({used:Math.max(0,c-a),total:c,remaining:a,resetAt:(0,e.eZ)(f)})}}let o=a?.user?.membership?.level,p=function(a){if(!a)return"";let b=String(a);return E[b]?E[b]:b.replace(/^LEVEL_/,"").toLowerCase()}(o)||"Kimi Coding";if(Object.keys(g).length>0)return{plan:p,quotas:g};return{plan:p,message:"Kimi Coding connected. Usage tracked per request."}}catch(a){return{message:`Kimi Coding connected. Unable to fetch usage: ${a.message}`}}}async function H(a=null,b=null){if(!a||"string"!=typeof a||!a.trim())return{message:"DeepSeek API key not available. Add a key to view usage."};try{let c=await (0,d.Fm)("https://api.deepseek.com/user/balance",{method:"GET",headers:{Authorization:`Bearer ${a.trim()}`,"Content-Type":"application/json",Accept:"application/json"}},b);if(401===c.status||403===c.status)return{plan:"DeepSeek",message:"DeepSeek authentication failed. Check the API key."};if(!c.ok){let a=await c.text().catch(()=>"");return{plan:"DeepSeek",message:`DeepSeek balance API error (${c.status})${a?`: ${a.slice(0,120)}`:""}`}}let f=await c.json().catch(()=>null);if(!f||"object"!=typeof f)return{message:"DeepSeek balance response was not JSON."};let g=function(a){let b=Array.isArray(a?.balance_infos)?a.balance_infos:[],c=[];for(let a of b){if(!a||"object"!=typeof a)continue;let b="string"==typeof a.currency?a.currency.toUpperCase():"";if(!b)continue;let d=(0,e.IQ)(a.total_balance??a.totalBalance,0);c.push({currency:b,totalBalance:d,grantedBalance:(0,e.IQ)(a.granted_balance??a.grantedBalance,0),toppedUpBalance:(0,e.IQ)(a.topped_up_balance??a.toppedUpBalance,0)})}return c}(f);if(0===g.length)return{plan:"DeepSeek",message:"DeepSeek connected. No balance data returned."};let h=!0===f.is_available||!0===f.isAvailable,i={};for(let a of g){let b=Math.max(0,a.totalBalance);i[`Balance (${a.currency})`]={used:0,total:b,remainingPercentage:100*(b>0),resetAt:null,unlimited:b>0}}return{plan:h?"DeepSeek":"DeepSeek (Insufficient Balance)",quotas:i}}catch(a){return{message:`DeepSeek error: ${a.message}`}}}var I=c(13247);let J=(a,b=0)=>a&&"object"==typeof a&&"val"in a?(0,e.IQ)(a.val,b):(0,e.IQ)(a,b);function K(a,b,c=null){let d=Math.max(0,b),e=Math.max(0,a);return{used:e,total:d,remainingPercentage:d?Math.max(0,(d-e)/d*100):0,resetAt:c,unlimited:!1}}async function L(a,b=null,c=null){if(!a)return{message:"Grok CLI access token not available."};let f=(0,I.Ab)(a,b||{}),g=(0,e.U)("grok-cli");try{let[a,b]=await Promise.all([(0,d.Fm)(g.url,{method:"GET",headers:f,...I.Ai},c),(0,d.Fm)(g.userUrl,{method:"GET",headers:f,signal:AbortSignal.timeout(2e3),...I.Ai},c).catch(()=>null)]);if(401===a.status||403===a.status)return{message:"Grok CLI authentication expired. Please re-authorize."};if(!a.ok)return{message:`Grok CLI billing API error (${a.status})`};let h=await a.json(),i=b?.ok?await b.json().catch(()=>null):null,j=function(a,b=null){let c=a&&"object"==typeof a?a:{},d=c.config&&"object"==typeof c.config?c.config:c,f=(0,e.eZ)(d.billingPeriodEnd||d.currentPeriod?.end||d.resetAt),g=b?.subscriptionTier||b?.subscription_tier||b?.subscription?.tier||"",h="string"==typeof g&&""!==g&&!/^(free|none|null)$/i.test(g),i={},j=J(d.monthlyLimit??c.monthlyLimit,NaN),k=J(d.includedUsed??c.includedUsed??d.totalUsed??c.totalUsed,0);Number.isFinite(j)&&j>0&&(i["Monthly included"]=K(k,j,f));let l=J(d.onDemandCap??c.onDemandCap,NaN),m=J(d.onDemandUsed??c.onDemandUsed,0);Number.isFinite(l)&&l>0?i["On-demand"]=K(m,l,f):h||0!==l||(i["On-demand"]=K(1,1,f));let n=J(d.prepaidBalance??c.prepaidBalance,NaN);return Number.isFinite(n)&&n>0&&(i.Prepaid=K(0,n)),{plan:g?String(g).replace(/[_-]+/g," ").replace(/\b\w/g,a=>a.toUpperCase()):b?.hasGrokCodeAccess?"Grok Code":"Grok Build",quotas:i,subscriptionAccess:h}}(h,i);if(Object.keys(j.quotas).length)return{plan:j.plan,quotas:j.quotas};return{plan:j.plan,quotas:{},message:j.subscriptionAccess?"Subscription access is active; Grok does not expose a numeric included quota.":"Grok Build connected, but no credit allotment was returned."}}catch(a){return{message:`Grok CLI usage error: ${a.message}`}}}function M(a,b){let c=Math.max(0,Math.min(100,a)),d=Math.max(0,100-c);return{used:c,total:100,remaining:d,remainingPercentage:d,resetAt:(0,e.eZ)(b),unlimited:!1}}async function N(a,b=null,c=null){var f;let g,h,i,j=b&&"object"==typeof b?b:{},k="string"==typeof j.subsTierName&&j.subsTierName.trim()?j.subsTierName.trim():"";if(!a)return k?{plan:k,quotas:{},message:"Muse connected. Live quota unavailable — no device token stored, showing last known plan."}:{message:"Muse connected. Subscription quota requires OAuth sign-in (no device token stored)."};let l=process.env.META_MINT_URL||(0,e.U)("muse").url;if(!l)return{message:"Muse connected. Usage endpoint is not configured."};try{g=await (0,d.Fm)(l,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json",Accept:"application/json","x-api-version":"1.0.0"},body:"{}",identity:"muse-code",provider:"muse"},c)}catch(a){return{message:`Muse connected. Unable to fetch usage: ${a.message}`}}if(401===g.status||403===g.status)return{message:"Muse authentication expired. Please re-authorize the connection."};if(!g.ok)return{message:`Muse connected. Usage API temporarily unavailable (${g.status}).`};try{h=await g.json()}catch{return{message:"Muse connected. Usage response was not JSON."}}let m=h?.subs_usage&&"object"==typeof h.subs_usage?h.subs_usage:null,n="string"==typeof h?.subs_tier_name&&h.subs_tier_name.trim()||"string"==typeof m?.tier&&m.tier.trim()||k||"Muse";if(h?.is_subs_active===!1)return{plan:n,quotas:{},message:"Muse connected. No active subscription on this account."};let o={},p=m?.window&&"object"==typeof m.window?m.window:null,q=m?.weekly&&"object"==typeof m.weekly?m.weekly:null,r=(0,e.IQ)(p?.used_percent,NaN);p&&Number.isFinite(r)&&(o[f=p.window_duration_mins,!Number.isFinite(i=(0,e.IQ)(f,300))||i<=0?"Session (5h)":i%60==0?`Session (${i/60}h)`:`Session (${i}m)`]=M(r,p.resets_at));let s=(0,e.IQ)(q?.used_percent,NaN);return(q&&Number.isFinite(s)&&(o["Weekly (7d)"]=M(s,q.resets_at)),0===Object.keys(o).length)?{plan:n,quotas:o,message:"Muse connected. No active usage window reported — quota is idle."}:{plan:n,quotas:o}}let O={international:(0,e.U)("glm").url,china:(0,e.U)("glm-cn").url},P=(0,e.U)("vercel-ai-gateway").url;async function Q(a,b){try{if(!b?.resourceUrl)return{message:"Qwen connected. No resource URL available."};return{message:"Qwen connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch Qwen usage."}}}async function R(a){try{return{message:"iFlow connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch iFlow usage."}}}async function S(a,b,c=null){if(!a)return{message:"Ollama Cloud API key not available."};try{let b,f=await (0,d.Fm)("https://ollama.com/api/usage",{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},c);if(401===f.status||403===f.status)return{message:"Ollama Cloud API key invalid or expired."};if(!f.ok)return{message:`Ollama Cloud usage API error (${f.status}).`};try{b=await f.json()}catch{return{message:"Ollama Cloud usage response was not JSON."}}let g=await (0,d.Fm)("https://ollama.com/api/me",{method:"POST",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Length":"0"}},c).then(a=>a.ok?a.json():null).catch(()=>null),h="string"==typeof g?.Plan?g.Plan:"",i=h?h.charAt(0).toUpperCase()+h.slice(1).toLowerCase():"Ollama Cloud",j=b?.limits&&"object"==typeof b.limits?b.limits:{};function e(a,b=null){let c=Math.max(0,Math.min(1,Number(a)||0)),d=Math.round(100*c);return{used:d,total:100,remainingPercentage:100-d,resetAt:b,unlimited:!1}}let k=j.session?.usage,l=j.weekly?.usage,m=Number(k),n=Number(l),o=null!=k&&!Number.isNaN(m),p=null!=l&&!Number.isNaN(n);if(!o&&!p)return{plan:i,message:"Ollama Cloud connected. No usage limits reported.",quotas:{}};let q={};return o&&(q["Session (5h)"]=e(m)),p&&(q["Weekly (7d)"]=e(n)),{plan:i,quotas:q}}catch(a){return{message:`Ollama Cloud error: ${a.message}`}}}async function T(a,b,c=null){if(!a)return{message:"GLM API key not available."};let e=O["glm-cn"===b?"china":"international"];try{let b=await (0,d.Fm)(e,{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},c);if(!b.ok){if(401===b.status)return{message:"GLM API key invalid or expired."};return{message:`GLM quota API error (${b.status}).`}}let f=await b.json(),g=f?.data&&"object"==typeof f.data?f.data:{},h=Array.isArray(g.limits)?g.limits:[],i={};for(let a of h){if(!a||"TOKENS_LIMIT"!==a.type)continue;let b=Number(a.percentage)||0,c=Number(a.nextResetTime)||0,d=Math.max(0,100-b);i.session={used:b,total:100,remaining:d,remainingPercentage:d,resetAt:c>0?new Date(c).toISOString():null,unlimited:!1}}let j="string"==typeof g.level?g.level:"";return{plan:j?j.charAt(0).toUpperCase()+j.slice(1).toLowerCase():"Unknown",quotas:i}}catch(a){return{message:`GLM error: ${a.message}`}}}async function U(a,b=null){if(!a)return{message:"Vercel AI Gateway API key not available."};try{let c=await (0,d.Fm)(P,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},b);if(401===c.status||403===c.status)return{message:"Vercel AI Gateway API key invalid or expired."};if(!c.ok){let a=await c.text().catch(()=>""),b=a?`: ${a.slice(0,200)}`:"";return{message:`Vercel AI Gateway credits API error (${c.status})${b}`}}let e=await c.json(),f=Number(e?.balance)||0,g=Number(e?.total_used)||0;if(f<=0&&g<=0)return{plan:"Pay-as-you-go",message:"Vercel AI Gateway connected. No credit allocation found (BYOK or unfunded account).",quotas:{}};return{plan:"Pay-as-you-go",quotas:{"Used (USD)":{used:g,total:0,remaining:0,remainingPercentage:100,unlimited:!0},"Remaining (USD)":{used:f,total:5,remaining:f,remainingPercentage:f/5*100,unlimited:!1}}}}catch(a){return{message:`Vercel AI Gateway error: ${a.message}`}}}async function V(a,b=null){if(!a)return{message:"Qoder usage unavailable: no access token"};try{let c=await (0,d.Fm)((0,e.U)("qoder").url,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},b);if(!c.ok)return{message:`Qoder connected. Usage fetch returned ${c.status}.`};let f=await c.json().catch(()=>null);if(!f)return{message:"Qoder connected. Usage response was not JSON."};let g=f.userQuota||{},h=f.orgResourcePackage||{},i=Number.isFinite(Number(f.expiresAt))&&Number(f.expiresAt)>0?Number(f.expiresAt):null,j=i?new Date(i).toISOString():null;return{quotas:{user:{total:Number(g.total)||0,used:Number(g.used)||0,remaining:Number(g.remaining)||0,unit:g.unit||"credits",resetAt:j},organization:{total:Number(h.total)||0,used:Number(h.used)||0,remaining:Number(h.remaining)||0,unit:h.unit||"credits",resetAt:j}},totalUsagePercentage:Number(f.totalUsagePercentage)||0,isQuotaExceeded:!!f.isQuotaExceeded,expiresAt:i}}catch(a){return{message:`Qoder connected. Unable to fetch usage: ${a.message}`}}}let W={github:a=>f(a.accessToken,a.providerSpecificData,a.proxyOptions),"gemini-cli":a=>j(a.accessToken,a.providerDataWithProjectId,a.proxyOptions),antigravity:a=>l(a.accessToken,a.providerSpecificData,a.proxyOptions),claude:a=>(0,o.g)(a.accessToken,a.proxyOptions,{force:a.force,connectionId:a.connectionId,quotaIdentity:a.quotaIdentity}),codex:a=>(0,p.Tl)(a.accessToken,a.proxyOptions),kiro:a=>r(a.accessToken,a.providerSpecificData,a.proxyOptions),qoder:a=>V(a.accessToken,a.proxyOptions),qwen:a=>Q(a.accessToken,a.providerSpecificData),iflow:a=>R(a.accessToken),ollama:a=>S(a.apiKey,a.providerSpecificData,a.proxyOptions),glm:a=>T(a.apiKey,a.provider,a.proxyOptions),"glm-cn":a=>T(a.apiKey,a.provider,a.proxyOptions),minimax:a=>z(a.apiKey,a.provider,a.proxyOptions),"minimax-cn":a=>z(a.apiKey,a.provider,a.proxyOptions),"vercel-ai-gateway":a=>U(a.apiKey,a.proxyOptions),"codebuddy-cn":a=>D(a.accessToken,a.apiKey,a.providerSpecificData,a.proxyOptions),kimi:a=>G(a.accessToken,a.apiKey,a.proxyOptions,a.providerSpecificData),"kimi-coding":a=>G(a.accessToken,a.apiKey,a.proxyOptions,a.providerSpecificData),deepseek:a=>H(a.apiKey,a.proxyOptions),"grok-cli":a=>L(a.accessToken,a.providerSpecificData,a.proxyOptions),muse:a=>N(a.providerSpecificData?.dcaToken||a.refreshToken,a.providerSpecificData,a.proxyOptions)};async function X(a,b=null,c={}){let{provider:d,accessToken:e,apiKey:f,refreshToken:g,providerSpecificData:h,projectId:i}=a,j={...h||{},...i?{projectId:i}:{}},k=W[d];return k?await k({provider:d,connectionId:a.id,quotaIdentity:(0,n.AN)(a),accessToken:e,apiKey:f,refreshToken:g,providerSpecificData:h,providerDataWithProjectId:j,proxyOptions:b,force:!0===c.force}):{message:`Usage API not implemented for ${d}`}}},49485:(a,b,c)=>{c.d(b,{RO:()=>m,Tl:()=>k,Yt:()=>l});var d=c(46052),e=c(88705);let f={usageUrl:(0,e.U)("codex").url,resetCreditsUrl:(0,e.U)("codex").resetCreditsUrl,resetCreditsConsumeUrl:(0,e.U)("codex").resetCreditsConsumeUrl};function g(a){if(!a)return null;let b=a instanceof Date?a:new Date("number"==typeof a&&a<1e12?1e3*a:a);return Number.isFinite(b.getTime())?b.toISOString():null}function h(a){return!a||"object"!=typeof a||Array.isArray(a)?null:a.rate_limit&&"object"==typeof a.rate_limit?a.rate_limit:a}function i(a){let b=Math.max(0,Math.min(100,(0,e.IQ)(a?.used_percent??a?.percent_used,0)));return{used:b,total:100,remaining:Math.max(0,100-b),resetAt:(0,e.eZ)(a?.reset_at??a?.resets_at??a?.resetAt??null),unlimited:!1}}function j(a,b,c){let d=h(c);if(!d)return!1;let e=d.primary_window||d.primary||c.primary_window||c.primary,f=d.secondary_window||d.secondary||c.secondary_window||c.secondary,g=!1;return e&&(a[b?`${b}_session`:"session"]=i(e),g=!0),f&&(a[b?`${b}_weekly`:"weekly"]=i(f),g=!0),g}async function k(a,b=null){try{let c=await (0,d.Fm)(f.usageUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"},identity:"codex-cli",provider:"codex",format:"codex"},b);if(!c.ok)return{message:`Codex connected. Usage API temporarily unavailable (${c.status}).`};let g=await c.json(),i=g.rate_limit||g.rate_limits||g.rate_limits_by_limit_id?.codex||{},k=function(a){if(a.code_review_rate_limit||a.review_rate_limit)return a.code_review_rate_limit||a.review_rate_limit;let b=a.rate_limits_by_limit_id;return b&&"object"==typeof b&&!Array.isArray(b)?b.code_review||b.codex_review||b.review||null:(Array.isArray(a.additional_rate_limits)?a.additional_rate_limits:[]).find(a=>{let b=String(a?.limit_name||a?.metered_feature||a?.id||"").toLowerCase();return"code_review"===b||"codex_review"===b||"review"===b||b.includes("review")})||null}(g),l=Math.max(0,(0,e.IQ)(g.rate_limit_reset_credits?.available_count,0)),m={};return j(m,"",i),j(m,"review",k),{plan:g.plan_type||g.summary?.plan||"unknown",limitReached:h(i)?.limit_reached||!1,reviewLimitReached:h(k)?.limit_reached||!1,resetCredits:{availableCount:l},quotas:m}}catch(a){throw Error(`Failed to fetch Codex usage: ${a.message}`)}}async function l(a,b=null,c=null){if(!a)throw Error("No Codex access token available. Please re-authorize the connection.");let h=c?.workspaceId||c?.accountId||c?.chatgptAccountId||null,i={Authorization:`Bearer ${a}`,Accept:"application/json","OpenAI-Beta":"codex-1",originator:"codex_cli_rs"};h&&(i["ChatGPT-Account-ID"]=h);let j=await (0,d.Fm)(f.resetCreditsUrl,{method:"GET",headers:i,identity:"codex-cli",provider:"codex",format:"codex"},b),k=null;try{k=await j.json()}catch{k=null}if(!j.ok)throw Error(k?.message||k?.error||k?.detail||`Codex reset credits API unavailable (${j.status}).`);let m=Array.isArray(k?.credits)?k.credits:[];return{availableCount:Math.max(0,(0,e.IQ)(k?.available_count??k?.availableCount,0)),credits:m.map(a=>({status:String(a?.status||"unknown"),grantedAt:g(a?.granted_at??a?.grantedAt),expiresAt:g(a?.expires_at??a?.expiresAt)}))}}async function m(a,b,c=null){let g;if(!a)throw Error("No Codex access token available. Please re-authorize the connection.");if(!b||"string"!=typeof b)throw Error("A redeem request id is required to consume a Codex reset credit.");let h=null;try{g=await (0,d.Fm)(f.resetCreditsConsumeUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({redeem_request_id:b}),identity:"codex-cli",provider:"codex",format:"codex"},c);let e=await g.text();h=e?JSON.parse(e):null}catch(a){throw Error(`Failed to consume Codex reset credit: ${a.message}`)}let i=h?.code||null,j=(0,e.IQ)(h?.windows_reset,0);return{ok:g.ok&&("reset"===i||j>0),noCredit:g.ok&&"no_credit"===i,status:g.status,code:i,windowsReset:j,message:h?.message||null,raw:h}}},75008:(a,b,c)=>{c.d(b,{R:()=>f});var d=c(57034);let e=/^arn:(aws|aws-us-gov):codewhisperer:([^:]+):(\d{12}):profile\/([^/]+)$/;function f(a){let b="string"==typeof a?a.trim():"",c=b.match(e);return c&&(0,d.i7)(c[2])?{profileArn:b,region:c[2]}:null}},88705:(a,b,c)=>{c.d(b,{IQ:()=>h,U:()=>f,eZ:()=>g,gD:()=>i,u9:()=>j});var d=c(45350),e=c(46052);let f=a=>d.xq[a]?.usage||{};function g(a){if(!a)return null;try{if(a instanceof Date)return a.toISOString();if("number"==typeof a)return new Date(a<1e12?1e3*a:a).toISOString();if("string"==typeof a){if(/^\d+$/.test(a)){let b=Number(a);return new Date(b<1e12?1e3*b:b).toISOString()}return new Date(a).toISOString()}return null}catch(b){return console.warn(`Failed to parse reset time: ${a}`,b),null}}function h(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&a.trim()){let b=Number(a);if(Number.isFinite(b))return b}return b}function i(a){return"string"==typeof a?a.trim()||null:a&&"object"==typeof a&&"string"==typeof a.id&&a.id.trim()||null}async function j(a,b,c=1e4,d=null){let f=new AbortController,g=setTimeout(()=>f.abort(),c);try{return await (0,e.Fm)(a,{...b,signal:f.signal},d)}finally{clearTimeout(g)}}},98594:(a,b,c)=>{c.d(b,{g:()=>m});var d=c(12407),e=c(11841),f=c(46052),g=c(92675),h=c(88705);let i={oauthUsageUrl:(0,h.U)("claude").oauthUrl,apiVersion:g.b8},j=new Map,k=e.R3,l=new Map;async function m(a,b=null,c={}){let e=c?.force===!0,f=c?.quotaIdentity,g=f?.connectionId&&f.createdAt?JSON.stringify(f):c?.connectionId||a,h=g&&l.get(g);if(h?.promise)return h.promise;let i=h?.result||null,q=h?.expiresAt||0,r=(0,d.oC)(),s=f?.connectionId&&f.createdAt&&r.loadProviderQuotaState&&r.saveProviderQuotaState;if(!s&&!e&&q>Date.now()&&!(j.get(g)>Date.now()))return i;let t=(async()=>{if(s){let a;try{a=await r.loadProviderQuotaState(f)}catch{let a=j.get(g),b=a>Date.now()?o(a):{code:"quota_state_unavailable",message:"Claude quota history is temporarily unavailable. Try again after storage recovers."};return i?{...i,...b,stale:!0}:b}if(a?.invalidIdentity)return n();a?.result&&(!i||Date.parse(a.result.observedAt)>=Date.parse(i.observedAt))&&(i=a.result,q=h?.expiresAt===0&&h.result?.observedAt===a.result.observedAt?0:a.expiresAt||0);let b=Date.parse(a?.retryAt);Number.isFinite(b)&&j.set(g,Math.max(j.get(g)||0,b))}let c=j.get(g);if(c>Date.now())return i?{...i,...o(c),stale:!0}:o(c);if(!e&&q>Date.now()&&i)return l.set(g,{result:i,expiresAt:q}),i;let d=await p(a,b,g),m=d?.quotas&&!d.stale;if(s)try{let a=await r.saveProviderQuotaState(f,{retryAt:429===d.status?d.retryAt:null,result:m?d:i,expiresAt:m?Date.parse(d.observedAt)+k:0});if(!1===a)return n()}catch{console.warn("[Usage] Unable to persist quota state; retaining in-process backoff.")}return g&&m?(l.set(g,{result:d,expiresAt:Date.parse(d.observedAt)+k}),d):i?{...i,...d,stale:!0}:d})();return g&&l.set(g,{promise:t,result:i,expiresAt:q}),t.then(()=>{let a=l.get(g);g&&a?.promise===t&&(i?l.set(g,{result:i,expiresAt:0}):l.delete(g))}),t}function n(){return{code:"connection_changed",message:"Claude connection changed. Reload its quota information."}}function o(a){return{status:429,code:"rate_limited",retryAt:new Date(a).toISOString(),retryAfterSeconds:Math.max(0,Math.ceil((a-Date.now())/1e3)),message:`Claude subscription usage is rate-limited. Try again after ${new Date(a).toUTCString()}.`}}async function p(a,b=null,c=a){try{let d=j.get(c);if(d&&Date.now()<d)return o(d);let e=await (0,f.Fm)(i.oauthUsageUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-beta":"oauth-2025-04-20","anthropic-version":i.apiVersion},identity:"claude-cli",provider:"claude",format:"claude"},b);if(e.ok){let a=await e.json(),b={},c=a=>a&&"object"==typeof a&&"number"==typeof a.utilization,d=a=>{let b=a.utilization,c=Math.max(0,100-b);return{used:b,total:100,remaining:c,remainingPercentage:c,resetAt:(0,h.eZ)(a.resets_at),unlimited:!1}};for(let[e,f]of(c(a.five_hour)&&(b["session (5h)"]=d(a.five_hour)),c(a.seven_day)&&(b["weekly (7d)"]=d(a.seven_day)),Object.entries(a)))if(e.startsWith("seven_day_")&&"seven_day"!==e&&c(f)){let a=e.replace("seven_day_","");b[`weekly ${a} (7d)`]=d(f)}return{plan:"Claude Code",observedAt:new Date().toISOString(),extraUsage:a.extra_usage??null,quotas:b}}if(429===e.status){let a,b,d,f=(a=e.headers.get("retry-after"),b=a?.trim()?Number(a):NaN,d=a?Date.parse(a):NaN,Number.isFinite(b)&&b>=0?Date.now()+Math.max(1e3,1e3*b):Number.isFinite(d)&&d>Date.now()?d:Date.now()+18e4);return j.set(c,f),o(f)}if(401===e.status)return{status:401,code:"authentication_error",message:"Claude subscription session expired or is unauthorized. Reconnect Claude if refreshing the session fails."};return{status:e.status,code:403===e.status?"permission_denied":"usage_unavailable",message:`Claude subscription usage is unavailable (HTTP ${e.status}).`}}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}}};
1
+ "use strict";exports.id=2619,exports.ids=[2619],exports.modules={4630:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(45350);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},10952:(a,b,c)=>{var d=c(12407),e=c(33234);(0,d.qd)({loadProviderQuotaState:e.l,saveProviderQuotaState:e._})},18271:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>n,refreshAndUpdateCredentials:()=>m});var e=c(30369);c(10952);var f=c(15717),g=c(43763),h=c(48400),i=c(18129),j=c(39326),k=c(40615),l=a([e,h]);[e,h]=l.then?(await l)():l;let o=["expired","authentication","unauthorized","401","re-authorize"];async function m(a,b=!1,c=null){let d=await (0,f.Mc)(a.id);if(!d)throw Error("Connection no longer available");let e=["accessToken","refreshToken","idToken"].some(b=>(d[b]??null)!==(a[b]??null))||["copilotToken","copilotTokenExpiresAt"].some(b=>(d.providerSpecificData?.[b]??null)!==(a.providerSpecificData?.[b]??null)),g=d.provider!==a.provider||d.authType!==a.authType;if(a=d,g||e&&a.accessToken)return{connection:a,refreshed:!1};let j=(0,h.getExecutor)(a.provider),k={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||j.needsRefresh(k)))return{connection:a,refreshed:!1};let l=await (0,i.MF)(a.provider,k,()=>j.refreshCredentials(k,console,c));if(!l||l.error){let b=await (0,f.Mc)(a.id);if(b?.accessToken)return{connection:b,refreshed:!1};throw Error("Failed to refresh credentials. Please re-authorize the connection.")}let n={updatedAt:new Date().toISOString()};l.accessToken&&(n.accessToken=l.accessToken),l.refreshToken&&(n.refreshToken=l.refreshToken),l.idToken&&(n.idToken=l.idToken),l.lastRefreshAt&&(n.lastRefreshAt=l.lastRefreshAt);let o=(0,i.Jj)(a.id,l),p=o?.expiresAt??(l.expiresAt?new Date(l.expiresAt).getTime():null);Number.isFinite(p)?(n.expiresAt=new Date(p).toISOString(),n.expiresIn=Math.max(0,Math.ceil((p-Date.now())/1e3))):l.expiresIn&&(n.expiresAt=new Date(Date.now()+1e3*l.expiresIn).toISOString(),n.expiresIn=l.expiresIn);let q={...Object.fromEntries(Object.entries((0,i.Hf)(l)).filter(([b,c])=>JSON.stringify(c)!==JSON.stringify(a.providerSpecificData?.[b]))),...l.copilotToken?{copilotToken:l.copilotToken}:{},...l.copilotTokenExpiresAt?{copilotTokenExpiresAt:l.copilotTokenExpiresAt}:{}};Object.keys(q).length>0&&(n.providerSpecificData=q);let r=await (0,f.rS)(a.id,a,n);if(!r){let b=await (0,f.Mc)(a.id);if(b?.accessToken)return{connection:b,refreshed:!1};throw Error("Connection no longer available")}return{connection:r,refreshed:!0}}async function n(a,{params:b}){let c;try{let{connectionId:d}=await b;if(!d||"string"!=typeof d||d.length>200)return Response.json({error:"Invalid connection id"},{status:400});let e="1"===new URL(a.url).searchParams.get("force");if(!(c=await (0,f.Mc)(d)))return Response.json({error:"Connection not found"},{status:404});let h="oauth"===c.authType,i=("apikey"===c.authType||"api_key"===c.authType)&&k.jO.includes(c.provider);if(!h&&!i)return Response.json({error:"Usage not available for this connection"},{status:400});let l=await (0,j.B)(c.providerSpecificData),n={connectionProxyEnabled:!0===l.connectionProxyEnabled,connectionProxyUrl:l.connectionProxyUrl||"",connectionNoProxy:l.connectionNoProxy||"",vercelRelayUrl:l.vercelRelayUrl||"",strictProxy:!1};if(h)try{c=(await m(c,!1,n)).connection}catch(a){return console.error("[Usage API] Credential refresh failed:",a),Response.json({error:"Credential refresh failed. Please re-authorize the connection."},{status:401})}let p=await (0,g.my)(c,n,{force:e});if(h&&function(a){if(!a?.message)return!1;let b=a.message.toLowerCase();return o.some(a=>b.includes(a))}(p)&&c.refreshToken)try{c=(await m(c,!0,n)).connection,p=await (0,g.my)(c,n,{force:e})}catch(a){console.warn(`[Usage] ${c.provider}: force refresh failed: ${a.message}`)}return Response.json(p,{headers:{"Cache-Control":"no-store"}})}catch(b){let a=c?.provider??"unknown";return console.warn(`[Usage] ${a}: ${b.message}`),Response.json({error:"Failed to fetch usage"},{status:500})}}d()}catch(a){d(a)}})},43763:(a,b,c)=>{c.d(b,{RO:()=>q.RO,Yt:()=>q.Yt,my:()=>Z});var d=c(95812),e=c(46052),f=c(88705);async function g(a,b,c=null){try{if(!a)throw Error("No GitHub access token available. Please re-authorize the connection.");let b=await (0,e.Fm)((0,f.U)("github").url,{headers:{Authorization:`token ${a}`,Accept:"application/json"},identity:"copilot",provider:"github",format:"openai"},c);if(!b.ok){let a=await b.text();throw Error(`GitHub API error: ${a}`)}let g=await b.json();if(g.quota_snapshots){let a=g.quota_snapshots,b=(0,f.eZ)(g.quota_reset_date_utc||g.quota_reset_date);return{plan:g.copilot_plan,resetDate:g.quota_reset_date,quotas:{chat:{...h(a.chat),resetAt:(0,f.eZ)(a.chat?.quota_reset_at)||b},completions:{...h(a.completions),resetAt:(0,f.eZ)(a.completions?.quota_reset_at)||b},premium_interactions:{...h(a.premium_interactions),resetAt:(0,f.eZ)(a.premium_interactions?.quota_reset_at)||b}}}}if(g.monthly_quotas||g.limited_user_quotas){let a=g.monthly_quotas||{},b=g.limited_user_quotas||{},c=(0,f.eZ)(g.limited_user_reset_date);return{plan:g.copilot_plan||g.access_type_sku,resetDate:g.limited_user_reset_date,quotas:{chat:{used:null!==(0,d.Gv)(a.chat)&&null!==(0,d.Gv)(b.chat)?Math.max(0,(0,d.Gv)(a.chat)-(0,d.Gv)(b.chat)):null,remaining:(0,d.Gv)(b.chat),total:(0,d.Gv)(a.chat),unlimited:!1,resetAt:c},completions:{used:null!==(0,d.Gv)(a.completions)&&null!==(0,d.Gv)(b.completions)?Math.max(0,(0,d.Gv)(a.completions)-(0,d.Gv)(b.completions)):null,remaining:(0,d.Gv)(b.completions),total:(0,d.Gv)(a.completions),unlimited:!1,resetAt:c}}}}return{message:"GitHub Copilot connected. Unable to parse quota data."}}catch(a){throw Error(`Failed to fetch GitHub usage: ${a.message}`)}}function h(a){if(!a)return{used:null,total:null,unlimited:!1};let b=(0,d.Gv)(a.entitlement),c=(0,d.Gv)(a.quota_remaining??a.remaining);return{used:(0,d.Gv)(a.credits_used)??(null!==b&&null!==c?Math.max(0,b-c):null),remainingPercentage:(0,d.Gv)(a.percent_remaining),total:b,remaining:c,unlimited:a.unlimited||!1}}var i=c(28730);let j=(0,f.U)("antigravity");async function k(a,b,c=null){if(!a)return{plan:"Unknown",message:"Gemini CLI access token not available."};try{let e=(0,f.gD)(b?.projectId),g="Unknown";if(!e){let b=await l(a,c);e=(0,f.gD)(b?.cloudaicompanionProject),g=b?.currentTier?.name||g}if(!e)return{plan:g,message:"Gemini CLI project ID not available. Reconnect Gemini CLI, or configure a Google Cloud project with Gemini Code Assist access before checking quota."};let h=await (0,f.u9)((0,f.U)("gemini-cli").quotaUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({project:e}),identity:"gemini-cli",provider:"gemini-cli",format:"gemini"},1e4,c);if(!h.ok)return{plan:g,message:`Gemini CLI quota error (${h.status}).`};let i=await h.json(),j={};if(Array.isArray(i.buckets))for(let a of i.buckets){if(!a.modelId||null==a.remainingFraction)continue;let b=(0,d.Gv)(a.remainingFraction);if(null===b||b<0||b>1)continue;let c=100*b,e=Math.max(0,100-c);j[a.modelId]={used:e,total:100,resetAt:(0,f.eZ)(a.resetTime),remainingPercentage:100*b,unlimited:!1,unit:"%"}}return{plan:g,quotas:j}}catch(a){return{message:`Gemini CLI error: ${a.message}`}}}async function l(a,b=null){try{let c=await (0,f.u9)((0,f.U)("gemini-cli").loadCodeAssistUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:i.Cn}),identity:"gemini-cli",provider:"gemini-cli",format:"gemini"},1e4,b);if(!c.ok)return null;return await c.json()}catch{return null}}async function m(a,b,c=null){try{let b=await n(a,c),e=b?.cloudaicompanionProject||null,g=await (0,f.u9)(j.quotaApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","X-Client-Name":"antigravity"},body:JSON.stringify({...e?{project:e}:{}}),identity:"antigravity",provider:"antigravity",format:"antigravity"},1e4,c);if(403===g.status)return{message:"Antigravity quota API access forbidden. Chat may still work.",quotas:{}};if(401===g.status)return{message:"Antigravity quota API authentication expired. Chat may still work.",quotas:{}};if(!g.ok)throw Error(`Antigravity API error: ${g.status}`);let h=await g.json(),i={};if(h.models){let a=["gemini-3-flash-agent","gemini-3.5-flash-low","gemini-3.5-flash-extra-low","gemini-pro-agent","gemini-3.1-pro-low","claude-sonnet-4-6","claude-opus-4-6-thinking","gpt-oss-120b-medium","gemini-3-flash","gemini-3.1-flash-image","gemini-3-pro-image"];for(let[b,c]of Object.entries(h.models)){if(!c.quotaInfo||c.isInternal||!a.includes(b))continue;let e=(0,d.Gv)(c.quotaInfo.remainingFraction);if(null===e||e<0||e>1)continue;let g=100*e,h=100*e,j=100-h;i[b]={used:j,total:100,resetAt:(0,f.eZ)(c.quotaInfo.resetTime),remainingPercentage:g,unlimited:!1,unit:"%",displayName:c.displayName||b}}}return{plan:b?.currentTier?.name||"Unknown",quotas:i,subscriptionInfo:b}}catch(a){return console.error("[Antigravity Usage] Error:",a.message,a.cause),{message:`Antigravity error: ${a.message}`}}}async function n(a,b=null){try{let c=await (0,f.u9)(j.loadProjectApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:i.Cn,mode:1}),identity:"antigravity",provider:"antigravity",format:"antigravity"},1e4,b);if(!c.ok)return null;return await c.json()}catch(a){return console.error("[Antigravity Subscription] Error:",a.message),null}}var o=c(11841),p=c(98594),q=c(49485),r=c(3148);async function s(a,b,c=null){let g=b?.authMethod||"builder-id",h="api_key"===g,i=h?{tokentype:"API_KEY"}:{},j="external_idp"===g?{TokenType:"EXTERNAL_IDP"}:{},k=h?b?.profileArn||"":b?.profileArn||(0,r.We)(g),l=new URLSearchParams({isEmailRequired:"true",origin:"AI_EDITOR",resourceType:"AGENTIC_REQUEST"}),m=!1,n=[];for(let b of[{name:"codewhisperer-get",run:async()=>(0,e.Fm)(`${(0,f.U)("kiro").cwHost}${(0,f.U)("kiro").limitsPath}?${l.toString()}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","x-amz-user-agent":"aws-sdk-js/1.0.0 KiroIDE","user-agent":"aws-sdk-js/1.0.0 KiroIDE",...i,...j}},c)},{name:"codewhisperer-post",run:async()=>(0,e.Fm)((0,f.U)("kiro").cwHost,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.GetUsageLimits",Accept:"application/json",...i,...j},body:JSON.stringify({origin:"AI_EDITOR",...k?{profileArn:k}:{},resourceType:"AGENTIC_REQUEST"})},c)},{name:"q-get",run:async()=>{let b=new URLSearchParams({origin:"AI_EDITOR",...k?{profileArn:k}:{},resourceType:"AGENTIC_REQUEST"});return(0,e.Fm)(`${(0,f.U)("kiro").qHost}${(0,f.U)("kiro").limitsPath}?${b}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json",...i,...j}},c)}}])try{let a=await b.run();if(!a.ok){let c=await a.text().catch(()=>"");(401===a.status||403===a.status)&&(m=!0),n.push(`${b.name}:${a.status}${c?`:${c}`:""}`);continue}let c=await a.json();return function(a){let b=a.usageBreakdownList||[],c={},e=(0,f.eZ)(a.nextDateReset||a.resetDate);return b.forEach(a=>{let b=a.resourceType?.toLowerCase()||"unknown",g=(0,d.Gv)(a.currentUsageWithPrecision),h=(0,d.Gv)(a.usageLimitWithPrecision);if(c[b]={used:g,total:h,remaining:null!==h&&null!==g?Math.max(0,h-g):null,resetAt:e,unlimited:!1},a.freeTrialInfo){let g=(0,d.Gv)(a.freeTrialInfo.currentUsageWithPrecision),h=(0,d.Gv)(a.freeTrialInfo.usageLimitWithPrecision);c[`${b}_freetrial`]={used:g,total:h,remaining:null!==h&&null!==g?Math.max(0,h-g):null,recurring:!1,resetAt:(0,f.eZ)(a.freeTrialInfo.freeTrialExpiry||e),unlimited:!1}}}),{plan:a.subscriptionInfo?.subscriptionTitle||"Kiro",quotas:c}}(c)}catch(a){n.push(`${b.name}:${a.message}`)}return m&&"idc"===g?{message:"Kiro quota API is unavailable for the current AWS IAM Identity Center session. Chat may still work. If this persists after renewing your session, reconnect Kiro.",quotas:{}}:m&&("google"===g||"github"===g)?{message:"Kiro quota API authentication expired. Chat may still work.",quotas:{}}:m?{message:"Kiro quota API rejected the current token. Chat may still work.",quotas:{}}:{message:n.length>0?`Unable to fetch Kiro usage right now. (${n[n.length-1]})`:"Unable to fetch Kiro usage right now.",quotas:{}}}let t={minimax:(0,f.U)("minimax").urls,"minimax-cn":(0,f.U)("minimax-cn").urls};function u(a,b,c){return a&&"object"==typeof a?a[b]??a[c]??null:null}function v(a,b,c){if(!a||"object"!=typeof a)return null;let e=a[b]??a[c];if(null==e)return null;let f=(0,d.Gv)(e);return null===f?null:Math.max(0,Math.min(100,f))}function w(a){return Math.max(0,Number(u(a,"current_interval_total_count","currentIntervalTotalCount"))||0)}function x(a){return Math.max(0,Number(u(a,"current_weekly_total_count","currentWeeklyTotalCount"))||0)}function y(a){return!!(w(a)>0||x(a)>0)||null!==v(a,"current_interval_remaining_percent","currentIntervalRemainingPercent")||null!==v(a,"current_weekly_remaining_percent","currentWeeklyRemainingPercent")}function z(a,b,c,d,e,g){let h=Number(u(a,c,d))||0;return h>0?new Date(b+h).toISOString():(0,f.eZ)(u(a,e,g))}function A(a,b,c,e,f,g,h,i,j,k){let l=e(c),m=v(c,h,i);if(l<=0&&null===m)return;let n=(0,d.Gv)(u(c,f,g));if(null===n&&null===m){a[b]={used:null,total:l,remainingPercentage:null,resetAt:z(c,...j),unlimited:!1};return}let o=Math.max(0,n??(k?l*m/100:l*(1-m/100))),p=l,q=o;l<=0&&(p=100,q=k?Math.round(m/100*p):Math.round(p*(1-m/100))),a[b]=function(a,b,c,d,e=null){var f,g,h;let i=Math.max(0,a),j=d?Math.max(i-b,0):Math.min(Math.max(0,b),i),k=Math.max(i-j,0),l=(f=e,g=k,h=i,null!=f&&Number.isFinite(f)?Math.max(0,Math.min(100,f)):h>0?Math.max(0,Math.min(100,g/h*100)):0);return{used:j,total:i,remaining:k,remainingPercentage:l,resetAt:c,unlimited:!1}}(p,q,z(c,...j),k,m)}async function B(a,b,c=null){if(!a)return{message:"MiniMax API key not available."};let d=t[b]||[],f="";for(let b=0;b<d.length;b+=1){let g=d[b],h=b<d.length-1;try{let b=await (0,e.Fm)(g,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"}},c),d=await b.text(),i={};if(d)try{i=JSON.parse(d)}catch{i={}}let j=(i?.base_resp??i?.baseResp)||{},k=Number(j.status_code??j.statusCode)||0,l=String(j.status_msg??j.statusMsg??"").trim(),m=`${l} ${d}`.trim(),n=/token plan|coding plan|invalid api key|invalid key|unauthorized|inactive/i;if(401===b.status||403===b.status||1004===k||n.test(m))return{message:"MiniMax API key invalid or inactive. Use an active Token/Coding Plan key."};if(!b.ok){if(f=`MiniMax usage endpoint error (${b.status})`,(404===b.status||405===b.status||b.status>=500)&&h)continue;return{message:`MiniMax connected. ${f}`}}if(0!==k)return{message:`MiniMax connected. ${l||"Upstream quota API error"}`};let o=i?.model_remains??i?.modelRemains,p=(Array.isArray(o)?o:[]).filter(y);if(0===p.length)return{message:"MiniMax connected. No quota data was returned."};let q=Date.now(),r=g.includes("/coding_plan/remains"),s={};for(let a of p){let b=function(a){let b=String(u(a,"model_name","modelName")||"").trim();return b?"MiniMax-M*"===b||"general"===b?"M-series":b.replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,a=>a.toUpperCase()).replace(/\bTo\b/g,"to").replace(/\bTts\b/g,"TTS").replace(/\bHd\b/g,"HD"):"MiniMax"}(a);A(s,`${b} (5h)`,a,w,"current_interval_usage_count","currentIntervalUsageCount","current_interval_remaining_percent","currentIntervalRemainingPercent",[q,"remains_time","remainsTime","end_time","endTime"],r),A(s,`${b} (7d)`,a,x,"current_weekly_usage_count","currentWeeklyUsageCount","current_weekly_remaining_percent","currentWeeklyRemainingPercent",[q,"weekly_remains_time","weeklyRemainsTime","weekly_end_time","weeklyEndTime"],r)}if(0===Object.keys(s).length)return{message:"MiniMax connected. Unable to extract quota usage."};return{quotas:s}}catch(a){if(f=a.message,!h)break}}return{message:f?`MiniMax connected. Unable to fetch usage: ${f}`:"MiniMax connected. Unable to fetch usage."}}var C=c(45350);let D="codebuddy-cn";function E(a,b){return(0,d.Gv)(a??b)}async function F(a,b,c,d=null){let g=a||b;if(!g)return{message:"CodeBuddy CN credential not available."};try{let a=await (0,e.Fm)((0,f.U)(D).url,{method:"POST",headers:{...C.xq[D]?.headers||{},Authorization:`Bearer ${g}`,"Content-Type":"application/json",Accept:"application/json"},body:"{}"},d);if(401===a.status||403===a.status)return{message:"CodeBuddy CN credential invalid or expired."};if(!a.ok)return{message:`CodeBuddy CN quota API error (${a.status}).`};let b=await a.json();if(b?.code!==0)return{message:`CodeBuddy CN quota error: ${b?.msg||"unknown"}`};let c=b?.data?.Response?.Data||{},h=Array.isArray(c.Accounts)?c.Accounts:[];if(0===h.length)return{message:"CodeBuddy CN connected. No credit package found."};let i=a=>{let b=(0,f.eZ)(a.CycleEndTime);return b?new Date(b).getTime():1/0},j=a=>{let b=i(a),c=(0,f.eZ)(a.DeductionEndTime),d=c?Date.parse(c):NaN;return Number.isFinite(b)&&Number.isFinite(d)&&d-b>1728e5},k=(a,b)=>i(a)-i(b),l=h.filter(j).sort(k),m=h.filter(a=>!j(a)).sort(k),n={},o={};l.forEach(a=>{let b=function(a){let b=(0,f.eZ)(a.CycleStartTime),c=(0,f.eZ)(a.CycleEndTime);if(b&&c){let a=(new Date(c).getTime()-new Date(b).getTime())/864e5;if(a<=1.5)return"Daily";if(a<=10)return"Weekly"}return"Monthly"}(a);o[b]=(o[b]||0)+1,n[o[b]>1?`${b} ${o[b]}`:b]={used:E(a.CycleCapacityUsedPrecise,a.CycleCapacityUsed),total:E(a.CycleCapacitySizePrecise,a.CycleCapacitySize),resetAt:(0,f.eZ)(a.CycleEndTime),unlimited:!1,recurring:!0}}),m.forEach((a,b)=>{n[`Bonus Pack ${b+1}`]={used:E(a.CapacityUsedPrecise,a.CapacityUsed),total:E(a.CapacitySizePrecise,a.CapacitySize),resetAt:(0,f.eZ)(a.CycleEndTime),unlimited:!1,recurring:!1}});let p=l[0]||h[0]||{};return{plan:p.PackageName||p.SubProductName||"CodeBuddy CN",quotas:n}}catch(a){return{message:`CodeBuddy CN error: ${a.message}`}}}let G={LEVEL_BASIC:"Moderato",LEVEL_INTERMEDIATE:"Allegretto",LEVEL_ADVANCED:"Allegro",LEVEL_STANDARD:"Vivace"};function H({used:a,total:b,remaining:c,resetAt:e}){let g,h=Math.max(0,(0,f.IQ)(b,0)),i=(0,d.Gv)(a),j=null===i?null:Math.max(0,i);return g=h>0&&null!=c&&Number.isFinite(Number(c))?Math.max(0,Number(c))/h*100:h>0&&null!==j?Math.max(0,h-j)/h*100:null,{used:null===j&&null!=c?Math.max(0,h-c):j,total:h,remainingPercentage:g,resetAt:e||null,unlimited:!1}}async function I(a=null,b=null,c=null,g=null){let h="string"==typeof b&&b.length>0,j=!h&&"string"==typeof a&&a.length>0;if(!h&&!j)return{message:"Kimi access token or API key not available."};let k=h?{"x-api-key":b}:{Authorization:`Bearer ${a}`,...(0,i.VK)(g?.deviceId)};try{let a,b=await (0,e.Fm)("https://api.kimi.com/coding/v1/usages",{method:"GET",headers:{...k,"Content-Type":"application/json",Accept:"application/json"}},c),g=await b.text().catch(()=>"");if(!b.ok)return{plan:"Kimi Coding",message:function(a,b){let c=null;try{c=JSON.parse(b||"")}catch{}let d=Array.isArray(c?.details)?c.details[0]:null,e=d?.debug||c?.debug||null,f=e?.reason||c?.reason||"",g=e?.localizedMessage?.message||d?.localizedMessage?.message||c?.message||"";if(401===a)return"Kimi authentication expired. Please re-authorize.";if(403===a&&("REASON_FEATURE_NO_PERMISSION"===f||/permission_denied|do not have permission|subscribe/i.test(`${c?.code||""} ${g} ${b||""}`)))return g||"Kimi connected, but this account has no permission to view usage. Subscribe to Kimi Code to access quota.";let h=(g||b||"").slice(0,100);return h?`Kimi Coding connected. API Error ${a}: ${h}`:`Kimi Coding connected. API Error ${a}`}(b.status,g)};try{a=JSON.parse(g||"{}")}catch{return{plan:"Kimi Coding",message:"Kimi Coding connected. Invalid JSON response from API."}}let h={},i=a?.usage&&"object"==typeof a.usage?a.usage:{},j=(0,f.IQ)(i.limit??i.Limit,0),l=(0,d.Gv)(i.used??i.Used),m=i.remaining??i.Remaining,n=null!=m&&""!==m?(0,f.IQ)(m,NaN):NaN,o=i.resetTime||i.ResetTime||i.reset_at||i.resetAt;j>0&&(h.Weekly=H({used:l,total:j,remaining:Number.isFinite(n)?n:null,resetAt:(0,f.eZ)(o)}));let p=Array.isArray(a?.limits)?a.limits:[],q=0;for(let a of p){if(!a||"object"!=typeof a)continue;let b=a.detail&&"object"==typeof a.detail?a.detail:{},c=(0,f.IQ)(b.limit??b.Limit,0),e=(0,f.IQ)(b.remaining??b.Remaining,NaN),g=b.resetTime||b.reset_at||b.resetAt;if(c>0){let a=Number.isFinite(e)?e:null;q++,h[1===q?"Ratelimit":`Ratelimit ${q}`]=H({used:null===a?(0,d.Gv)(b.used??b.Used):Math.max(0,c-a),total:c,remaining:a,resetAt:(0,f.eZ)(g)})}}let r=a?.user?.membership?.level,s=function(a){if(!a)return"";let b=String(a);return G[b]?G[b]:b.replace(/^LEVEL_/,"").toLowerCase()}(r)||"Kimi Coding";if(Object.keys(h).length>0)return{plan:s,quotas:h};return{plan:s,message:"Kimi Coding connected. Usage tracked per request."}}catch(a){return{message:`Kimi Coding connected. Unable to fetch usage: ${a.message}`}}}async function J(a=null,b=null){if(!a||"string"!=typeof a||!a.trim())return{message:"DeepSeek API key not available. Add a key to view usage."};try{let c=await (0,e.Fm)("https://api.deepseek.com/user/balance",{method:"GET",headers:{Authorization:`Bearer ${a.trim()}`,"Content-Type":"application/json",Accept:"application/json"}},b);if(401===c.status||403===c.status)return{plan:"DeepSeek",message:"DeepSeek authentication failed. Check the API key."};if(!c.ok){let a=await c.text().catch(()=>"");return{plan:"DeepSeek",message:`DeepSeek balance API error (${c.status})${a?`: ${a.slice(0,120)}`:""}`}}let g=await c.json().catch(()=>null);if(!g||"object"!=typeof g)return{message:"DeepSeek balance response was not JSON."};let h=function(a){let b=Array.isArray(a?.balance_infos)?a.balance_infos:[],c=[];for(let a of b){if(!a||"object"!=typeof a)continue;let b="string"==typeof a.currency?a.currency.toUpperCase():"";if(!b)continue;let e=(0,d.Gv)(a.total_balance??a.totalBalance);null===e||e<0||c.push({currency:b,totalBalance:e,grantedBalance:(0,f.IQ)(a.granted_balance??a.grantedBalance,0),toppedUpBalance:(0,f.IQ)(a.topped_up_balance??a.toppedUpBalance,0)})}return c}(g);if(0===h.length)return{plan:"DeepSeek",message:"DeepSeek connected. No balance data returned."};let i=!0===g.is_available||!0===g.isAvailable,j={};for(let a of h){let b=Math.max(0,a.totalBalance);j[`Balance (${a.currency})`]={kind:"balance",balance:b,unit:a.currency,used:null,total:null,remainingPercentage:null,resetAt:null,unlimited:!1}}return{plan:i?"DeepSeek":"DeepSeek (Insufficient Balance)",quotas:j}}catch(a){return{message:`DeepSeek error: ${a.message}`}}}var K=c(13247);let L=(a,b=0)=>a&&"object"==typeof a&&"val"in a?(0,f.IQ)(a.val,b):(0,f.IQ)(a,b);function M(a,b,c=null){let d=Math.max(0,b),e=null===a?null:Math.max(0,a);return{used:e,total:d,remainingPercentage:null===e?null:d?Math.max(0,(d-e)/d*100):0,resetAt:c,unlimited:!1}}async function N(a,b=null,c=null){if(!a)return{message:"Grok CLI access token not available."};let d=(0,K.Ab)(a,b||{}),g=(0,f.U)("grok-cli");try{let[a,b]=await Promise.all([(0,e.Fm)(g.url,{method:"GET",headers:d,...K.Ai},c),(0,e.Fm)(g.userUrl,{method:"GET",headers:d,signal:AbortSignal.timeout(2e3),...K.Ai},c).catch(()=>null)]);if(401===a.status||403===a.status)return{message:"Grok CLI authentication expired. Please re-authorize."};if(!a.ok)return{message:`Grok CLI billing API error (${a.status})`};let h=await a.json(),i=b?.ok?await b.json().catch(()=>null):null,j=function(a,b=null){let c=a&&"object"==typeof a?a:{},d=c.config&&"object"==typeof c.config?c.config:c,e=(0,f.eZ)(d.billingPeriodEnd||d.currentPeriod?.end||d.resetAt),g=b?.subscriptionTier||b?.subscription_tier||b?.subscription?.tier||"",h="string"==typeof g&&""!==g&&!/^(free|none|null)$/i.test(g),i={},j=L(d.monthlyLimit??c.monthlyLimit,NaN),k=L(d.includedUsed??c.includedUsed??d.totalUsed??c.totalUsed,null);Number.isFinite(j)&&j>0&&(i["Monthly included"]=M(k,j,e));let l=L(d.onDemandCap??c.onDemandCap,NaN),m=L(d.onDemandUsed??c.onDemandUsed,null);Number.isFinite(l)&&l>0&&(i["On-demand"]=M(m,l,e)),0===l&&(i["On-demand"]={used:m,total:0,remainingPercentage:null,unlimited:!1,available:!1,resetAt:e});let n=L(d.prepaidBalance??c.prepaidBalance,NaN);return Number.isFinite(n)&&n>=0&&(i.Prepaid={kind:"balance",balance:n,unit:"credits",used:null,total:null,unlimited:!1}),{plan:g?String(g).replace(/[_-]+/g," ").replace(/\b\w/g,a=>a.toUpperCase()):b?.hasGrokCodeAccess?"Grok Code":"Grok Build",quotas:i,subscriptionAccess:h}}(h,i);if(Object.keys(j.quotas).length)return{plan:j.plan,quotas:j.quotas};return{plan:j.plan,quotas:{},message:j.subscriptionAccess?"Subscription access is active; Grok does not expose a numeric included quota.":"Grok Build connected, but no credit allotment was returned."}}catch(a){return{message:`Grok CLI usage error: ${a.message}`}}}function O(a,b){let c=Math.max(0,Math.min(100,a)),d=Math.max(0,100-c);return{used:c,total:100,remaining:d,remainingPercentage:d,resetAt:(0,f.eZ)(b),unlimited:!1}}async function P(a,b=null,c=null){var d;let g,h,i,j=b&&"object"==typeof b?b:{},k="string"==typeof j.subsTierName&&j.subsTierName.trim()?j.subsTierName.trim():"";if(!a)return k?{plan:k,quotas:{},message:"Muse connected. Live quota unavailable — no device token stored, showing last known plan."}:{message:"Muse connected. Subscription quota requires OAuth sign-in (no device token stored)."};let l=process.env.META_MINT_URL||(0,f.U)("muse").url;if(!l)return{message:"Muse connected. Usage endpoint is not configured."};try{g=await (0,e.Fm)(l,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json",Accept:"application/json","x-api-version":"1.0.0"},body:"{}",identity:"muse-code",provider:"muse"},c)}catch(a){return{message:`Muse connected. Unable to fetch usage: ${a.message}`}}if(401===g.status||403===g.status)return{message:"Muse authentication expired. Please re-authorize the connection."};if(!g.ok)return{message:`Muse connected. Usage API temporarily unavailable (${g.status}).`};try{h=await g.json()}catch{return{message:"Muse connected. Usage response was not JSON."}}let m=h?.subs_usage&&"object"==typeof h.subs_usage?h.subs_usage:null,n="string"==typeof h?.subs_tier_name&&h.subs_tier_name.trim()||"string"==typeof m?.tier&&m.tier.trim()||k||"Muse";if(h?.is_subs_active===!1)return{plan:n,quotas:{},message:"Muse connected. No active subscription on this account."};let o={},p=m?.window&&"object"==typeof m.window?m.window:null,q=m?.weekly&&"object"==typeof m.weekly?m.weekly:null,r=(0,f.IQ)(p?.used_percent,NaN);p&&Number.isFinite(r)&&(o[d=p.window_duration_mins,!Number.isFinite(i=(0,f.IQ)(d,NaN))||i<=0?"Session":i%60==0?`Session (${i/60}h)`:`Session (${i}m)`]=O(r,p.resets_at));let s=(0,f.IQ)(q?.used_percent,NaN);return(q&&Number.isFinite(s)&&(o["Weekly (7d)"]=O(s,q.resets_at)),0===Object.keys(o).length)?{plan:n,quotas:o,message:"Muse connected. No active usage window reported — quota is idle."}:{plan:n,quotas:o}}let Q={international:(0,f.U)("glm").url,china:(0,f.U)("glm-cn").url},R=(0,f.U)("vercel-ai-gateway").url;async function S(a,b){try{if(!b?.resourceUrl)return{message:"Qwen connected. No resource URL available."};return{message:"Qwen connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch Qwen usage."}}}async function T(a){try{return{message:"iFlow connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch iFlow usage."}}}async function U(a,b,c=null){if(!a)return{message:"Ollama Cloud API key not available."};try{let b,g=await (0,e.Fm)("https://ollama.com/api/usage",{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},c);if(401===g.status||403===g.status)return{message:"Ollama Cloud API key invalid or expired."};if(!g.ok)return{message:`Ollama Cloud usage API error (${g.status}).`};try{b=await g.json()}catch{return{message:"Ollama Cloud usage response was not JSON."}}let h=await (0,e.Fm)("https://ollama.com/api/me",{method:"POST",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Length":"0"}},c).then(a=>a.ok?a.json():null).catch(()=>null),i="string"==typeof h?.Plan?h.Plan:"",j=i?i.charAt(0).toUpperCase()+i.slice(1).toLowerCase():"Ollama Cloud",k=b?.limits&&"object"==typeof b.limits?b.limits:{};function f(a,b=null){let c=Math.max(0,Math.min(1,Number(a)||0)),d=Math.round(100*c);return{used:d,total:100,remainingPercentage:100-d,resetAt:b,unlimited:!1}}let l=k.session?.usage,m=k.weekly?.usage,n=(0,d.Gv)(l),o=(0,d.Gv)(m),p=null!==n&&n>=0&&n<=1,q=null!==o&&o>=0&&o<=1;if(!p&&!q)return{plan:j,message:"Ollama Cloud connected. No usage limits reported.",quotas:{}};let r={};return p&&(r["Session (5h)"]=f(n)),q&&(r["Weekly (7d)"]=f(o)),{plan:j,quotas:r}}catch(a){return{message:`Ollama Cloud error: ${a.message}`}}}async function V(a,b,c=null){if(!a)return{message:"GLM API key not available."};let g=Q["glm-cn"===b?"china":"international"];try{let b=await (0,e.Fm)(g,{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},c);if(!b.ok){if(401===b.status)return{message:"GLM API key invalid or expired."};return{message:`GLM quota API error (${b.status}).`}}let h=await b.json(),i=h?.data&&"object"==typeof h.data?h.data:{},j=Array.isArray(i.limits)?i.limits:[],k={};for(let a of j){if(!a||!["TOKENS_LIMIT","TIME_LIMIT"].includes(a.type))continue;if("TIME_LIMIT"===a.type){k.Tools={used:(0,d.Gv)(a.currentValue),total:(0,d.Gv)(a.usage),remaining:(0,d.Gv)(a.remaining),resetAt:(0,f.eZ)(a.nextResetTime),unlimited:!1};continue}let b=(0,d.Gv)(a.percentage),c=Number(a.nextResetTime)||0,e=null===b||b<0?null:Math.max(0,100-b),g=k.session?`session ${Object.keys(k).length+1}`:"session";k[g]={used:b,total:100,remaining:e,remainingPercentage:e,resetAt:(0,f.eZ)(c),unlimited:!1}}let l="string"==typeof i.level?i.level:"";return{plan:l?l.charAt(0).toUpperCase()+l.slice(1).toLowerCase():"Unknown",quotas:k}}catch(a){return{message:`GLM error: ${a.message}`}}}async function W(a,b=null){if(!a)return{message:"Vercel AI Gateway API key not available."};try{let c=await (0,e.Fm)(R,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},b);if(401===c.status||403===c.status)return{message:"Vercel AI Gateway API key invalid or expired."};if(!c.ok){let a=await c.text().catch(()=>""),b=a?`: ${a.slice(0,200)}`:"";return{message:`Vercel AI Gateway credits API error (${c.status})${b}`}}let f=await c.json(),g=(0,d.Gv)(f?.balance),h=(0,d.Gv)(f?.total_used);if(null===g||g<0)return{plan:"Pay-as-you-go",message:"Credit balance unavailable.",quotas:{}};return{plan:"Pay-as-you-go",quotas:{"Balance (USD)":{kind:"balance",balance:g,unit:"USD",used:h,total:null,remainingPercentage:null,unlimited:!1,resetAt:null}}}}catch(a){return{message:`Vercel AI Gateway error: ${a.message}`}}}async function X(a,b=null){if(!a)return{message:"Qoder usage unavailable: no access token"};try{let c=await (0,e.Fm)((0,f.U)("qoder").url,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},b);if(!c.ok)return{message:`Qoder connected. Usage fetch returned ${c.status}.`};let g=await c.json().catch(()=>null);if(!g)return{message:"Qoder connected. Usage response was not JSON."};let h=g.userQuota||{},i=g.orgResourcePackage||{},j=Number.isFinite(Number(g.expiresAt))&&Number(g.expiresAt)>0?Number(g.expiresAt):null,k=j?(0,f.eZ)(j):null;return{quotas:{user:{total:(0,d.Gv)(h.total),used:(0,d.Gv)(h.used),remaining:(0,d.Gv)(h.remaining),unit:h.unit||"credits",resetAt:k},organization:{total:(0,d.Gv)(i.total),used:(0,d.Gv)(i.used),remaining:(0,d.Gv)(i.remaining),unit:i.unit||"credits",resetAt:k}},totalUsagePercentage:Number(g.totalUsagePercentage)||0,isQuotaExceeded:!!g.isQuotaExceeded,expiresAt:j}}catch(a){return{message:`Qoder connected. Unable to fetch usage: ${a.message}`}}}let Y={github:a=>g(a.accessToken,a.providerSpecificData,a.proxyOptions),"gemini-cli":a=>k(a.accessToken,a.providerDataWithProjectId,a.proxyOptions),antigravity:a=>m(a.accessToken,a.providerSpecificData,a.proxyOptions),claude:a=>(0,p.g)(a.accessToken,a.proxyOptions,{force:a.force,connectionId:a.connectionId,quotaIdentity:a.quotaIdentity}),codex:a=>(0,q.Tl)(a.accessToken,a.proxyOptions,a.providerSpecificData),kiro:a=>s(a.accessToken,a.providerSpecificData,a.proxyOptions),qoder:a=>X(a.accessToken,a.proxyOptions),qwen:a=>S(a.accessToken,a.providerSpecificData),iflow:a=>T(a.accessToken),ollama:a=>U(a.apiKey,a.providerSpecificData,a.proxyOptions),glm:a=>V(a.apiKey,a.provider,a.proxyOptions),"glm-cn":a=>V(a.apiKey,a.provider,a.proxyOptions),minimax:a=>B(a.apiKey,a.provider,a.proxyOptions),"minimax-cn":a=>B(a.apiKey,a.provider,a.proxyOptions),"vercel-ai-gateway":a=>W(a.apiKey,a.proxyOptions),"codebuddy-cn":a=>F(a.accessToken,a.apiKey,a.providerSpecificData,a.proxyOptions),kimi:a=>I(a.accessToken,a.apiKey,a.proxyOptions,a.providerSpecificData),"kimi-coding":a=>I(a.accessToken,a.apiKey,a.proxyOptions,a.providerSpecificData),deepseek:a=>J(a.apiKey,a.proxyOptions),"grok-cli":a=>N(a.accessToken,a.providerSpecificData,a.proxyOptions),muse:a=>P(a.providerSpecificData?.dcaToken||a.refreshToken,a.providerSpecificData,a.proxyOptions)};async function Z(a,b=null,c={}){let{provider:d,accessToken:e,apiKey:f,refreshToken:g,providerSpecificData:h,projectId:i}=a,j={...h||{},...i?{projectId:i}:{}},k=Y[d];if(!k)return{message:`Usage API not implemented for ${d}`};let l=await k({provider:d,connectionId:a.id,quotaIdentity:(0,o.AN)(a),accessToken:e,apiKey:f,refreshToken:g,providerSpecificData:h,providerDataWithProjectId:j,proxyOptions:b,force:!0===c.force});return l?.quotas&&!l.stale?{...l,observedAt:l.observedAt||new Date().toISOString()}:l}},49485:(a,b,c)=>{c.d(b,{RO:()=>o,Tl:()=>m,Yt:()=>n});var d=c(95812),e=c(46052),f=c(88705);let g={usageUrl:(0,f.U)("codex").url,resetCreditsUrl:(0,f.U)("codex").resetCreditsUrl,resetCreditsConsumeUrl:(0,f.U)("codex").resetCreditsConsumeUrl};function h(a){if(!a)return null;let b=a instanceof Date?a:new Date("number"==typeof a&&a<1e12?1e3*a:a);return Number.isFinite(b.getTime())?b.toISOString():null}function i(a){return a?.workspaceId||a?.accountId||a?.chatgptAccountId||null}function j(a){return!a||"object"!=typeof a||Array.isArray(a)?null:a.rate_limit&&"object"==typeof a.rate_limit?a.rate_limit:a}function k(a){let b=(0,d.Gv)(a?.used_percent??a?.percent_used),c=null!==b&&b>=0?b:null,e=(0,d.Gv)(a?.limit_window_seconds);return{used:c,total:100,remaining:null===c?null:Math.max(0,100-c),...e>0?{windowSeconds:e,displayName:18e3===e?"Session (5h)":604800===e?"Weekly (7d)":`Window (${e/3600}h)`}:{},resetAt:(0,f.eZ)(a?.reset_at??a?.resets_at??a?.resetAt??null)||((0,d.Gv)(a?.reset_after_seconds)>0?new Date(Date.now()+1e3*(0,d.Gv)(a.reset_after_seconds)).toISOString():null),unlimited:!1}}function l(a,b,c){let d=j(c);if(!d)return!1;let e=d.primary_window||d.primary||c.primary_window||c.primary,f=d.secondary_window||d.secondary||c.secondary_window||c.secondary,g=!1;return e&&(a[b?`${b}_session`:"session"]=k(e),!0===d.limit_reached&&(a[b?`${b}_session`:"session"].blocked=!0),g=!0),f&&(a[b?`${b}_weekly`:"weekly"]=k(f),!0===d.limit_reached&&(a[b?`${b}_weekly`:"weekly"].blocked=!0),g=!0),g}async function m(a,b=null,c=null){try{let d=await (0,e.Fm)(g.usageUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json",...i(c)?{"ChatGPT-Account-ID":i(c)}:{}},identity:"codex-cli",provider:"codex",format:"codex"},b);if(!d.ok)return{message:`Codex connected. Usage API temporarily unavailable (${d.status}).`};let h=await d.json(),k=h.rate_limit||h.rate_limits||h.rate_limits_by_limit_id?.codex||{},m=function(a){if(a.code_review_rate_limit||a.review_rate_limit)return a.code_review_rate_limit||a.review_rate_limit;let b=a.rate_limits_by_limit_id;return b&&"object"==typeof b&&!Array.isArray(b)?b.code_review||b.codex_review||b.review||null:(Array.isArray(a.additional_rate_limits)?a.additional_rate_limits:[]).find(a=>{let b=String(a?.limit_name||a?.metered_feature||a?.id||"").toLowerCase();return"code_review"===b||"codex_review"===b||"review"===b||b.includes("review")})||null}(h),n=Math.max(0,(0,f.IQ)(h.rate_limit_reset_credits?.available_count,0)),o={};for(let a of(l(o,"",k),l(o,"review",m),Array.isArray(h.additional_rate_limits)?h.additional_rate_limits:[])){if(a===m)continue;let b=a.limit_name||a.metered_feature||a.id;"string"==typeof b&&b&&l(o,b,a)}for(let[a,b]of Object.entries(h.rate_limits_by_limit_id||{}))"codex"!==a&&b!==m&&l(o,a,b);for(let[a,b]of Object.entries(o))b.displayName&&"session"!==a&&"weekly"!==a&&(b.displayName=`${a.replace(/_(session|weekly)$/,"")} \xb7 ${b.displayName}`);return{plan:h.plan_type||h.summary?.plan||"unknown",limitReached:j(k)?.limit_reached||!1,reviewLimitReached:j(m)?.limit_reached||!1,resetCredits:{availableCount:n},quotas:o}}catch(a){throw Error(`Failed to fetch Codex usage: ${a.message}`)}}async function n(a,b=null,c=null){if(!a)throw Error("No Codex access token available. Please re-authorize the connection.");let d=i(c),j={Authorization:`Bearer ${a}`,Accept:"application/json","OpenAI-Beta":"codex-1",originator:"codex_cli_rs"};d&&(j["ChatGPT-Account-ID"]=d);let k=await (0,e.Fm)(g.resetCreditsUrl,{method:"GET",headers:j,identity:"codex-cli",provider:"codex",format:"codex"},b),l=null;try{l=await k.json()}catch{l=null}if(!k.ok)throw Error(l?.message||l?.error||l?.detail||`Codex reset credits API unavailable (${k.status}).`);let m=Array.isArray(l?.credits)?l.credits:[];return{availableCount:Math.max(0,(0,f.IQ)(l?.available_count??l?.availableCount,0)),credits:m.map(a=>({status:String(a?.status||"unknown"),grantedAt:h(a?.granted_at??a?.grantedAt),expiresAt:h(a?.expires_at??a?.expiresAt)}))}}async function o(a,b,c=null){let d;if(!a)throw Error("No Codex access token available. Please re-authorize the connection.");if(!b||"string"!=typeof b)throw Error("A redeem request id is required to consume a Codex reset credit.");let h=null;try{d=await (0,e.Fm)(g.resetCreditsConsumeUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({redeem_request_id:b}),identity:"codex-cli",provider:"codex",format:"codex"},c);let f=await d.text();h=f?JSON.parse(f):null}catch(a){throw Error(`Failed to consume Codex reset credit: ${a.message}`)}let i=h?.code||null,j=(0,f.IQ)(h?.windows_reset,0);return{ok:d.ok&&("reset"===i||j>0),noCredit:d.ok&&"no_credit"===i,status:d.status,code:i,windowsReset:j,message:h?.message||null,raw:h}}},75008:(a,b,c)=>{c.d(b,{R:()=>f});var d=c(57034);let e=/^arn:(aws|aws-us-gov):codewhisperer:([^:]+):(\d{12}):profile\/([^/]+)$/;function f(a){let b="string"==typeof a?a.trim():"",c=b.match(e);return c&&(0,d.i7)(c[2])?{profileArn:b,region:c[2]}:null}},88705:(a,b,c)=>{c.d(b,{IQ:()=>h,U:()=>f,eZ:()=>g,gD:()=>i,u9:()=>j});var d=c(45350),e=c(46052);let f=a=>d.xq[a]?.usage||{};function g(a){if(!a)return null;try{if(a instanceof Date)return a.toISOString();if("number"==typeof a)return new Date(a<1e12?1e3*a:a).toISOString();if("string"==typeof a){if(/^\d+$/.test(a)){let b=Number(a);return new Date(b<1e12?1e3*b:b).toISOString()}return new Date(a).toISOString()}return null}catch(b){return console.warn(`Failed to parse reset time: ${a}`,b),null}}function h(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&a.trim()){let b=Number(a);if(Number.isFinite(b))return b}return b}function i(a){return"string"==typeof a?a.trim()||null:a&&"object"==typeof a&&"string"==typeof a.id&&a.id.trim()||null}async function j(a,b,c=1e4,d=null){let f=new AbortController,g=setTimeout(()=>f.abort(),c);try{return await (0,e.Fm)(a,{...b,signal:f.signal},d)}finally{clearTimeout(g)}}},98594:(a,b,c)=>{c.d(b,{g:()=>m});var d=c(12407),e=c(11841),f=c(46052),g=c(92675),h=c(88705);let i={oauthUsageUrl:(0,h.U)("claude").oauthUrl,apiVersion:g.b8},j=new Map,k=e.R3,l=new Map;async function m(a,b=null,c={}){let e=c?.force===!0,f=c?.quotaIdentity,g=f?.connectionId&&f.createdAt?JSON.stringify(f):c?.connectionId||a,h=g&&l.get(g);if(h?.promise)return h.promise;let i=h?.result||null,q=h?.expiresAt||0,r=(0,d.oC)(),s=f?.connectionId&&f.createdAt&&r.loadProviderQuotaState&&r.saveProviderQuotaState;if(!s&&!e&&q>Date.now()&&!(j.get(g)>Date.now()))return i;let t=(async()=>{if(s){let a;try{a=await r.loadProviderQuotaState(f)}catch{let a=j.get(g),b=a>Date.now()?o(a):{code:"quota_state_unavailable",message:"Claude quota history is temporarily unavailable. Try again after storage recovers."};return i?{...i,...b,stale:!0}:b}if(a?.invalidIdentity)return n();a?.result&&(!i||Date.parse(a.result.observedAt)>=Date.parse(i.observedAt))&&(i=a.result,q=h?.expiresAt===0&&h.result?.observedAt===a.result.observedAt?0:a.expiresAt||0);let b=Date.parse(a?.retryAt);Number.isFinite(b)&&j.set(g,Math.max(j.get(g)||0,b))}let c=j.get(g);if(c>Date.now())return i?{...i,...o(c),stale:!0}:o(c);if(!e&&q>Date.now()&&i)return l.set(g,{result:i,expiresAt:q}),i;let d=await p(a,b,g),m=d?.quotas&&!d.stale;if(s)try{let a=await r.saveProviderQuotaState(f,{retryAt:429===d.status?d.retryAt:null,result:m?d:i,expiresAt:m?Date.parse(d.observedAt)+k:0});if(!1===a)return n()}catch{console.warn("[Usage] Unable to persist quota state; retaining in-process backoff.")}return g&&m?(l.set(g,{result:d,expiresAt:Date.parse(d.observedAt)+k}),d):i?{...i,...d,stale:!0}:d})();return g&&l.set(g,{promise:t,result:i,expiresAt:q}),t.then(()=>{let a=l.get(g);g&&a?.promise===t&&(i?l.set(g,{result:i,expiresAt:0}):l.delete(g))}),t}function n(){return{code:"connection_changed",message:"Claude connection changed. Reload its quota information."}}function o(a){return{status:429,code:"rate_limited",retryAt:new Date(a).toISOString(),retryAfterSeconds:Math.max(0,Math.ceil((a-Date.now())/1e3)),message:`Claude subscription usage is rate-limited. Try again after ${new Date(a).toUTCString()}.`}}async function p(a,b=null,c=a){try{let d=j.get(c);if(d&&Date.now()<d)return o(d);let e=await (0,f.Fm)(i.oauthUsageUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-beta":"oauth-2025-04-20","anthropic-version":i.apiVersion},identity:"claude-cli",provider:"claude",format:"claude"},b);if(e.ok){let a=await e.json(),b={},c=a=>a&&"object"==typeof a&&Number.isFinite(a.utilization)&&a.utilization>=0,d=a=>{let b=a.utilization,c=Math.max(0,100-b);return{used:b,total:100,remaining:c,remainingPercentage:c,resetAt:(0,h.eZ)(a.resets_at),unlimited:!1}};for(let[e,f]of(c(a.five_hour)&&(b["session (5h)"]=d(a.five_hour)),c(a.seven_day)&&(b["weekly (7d)"]=d(a.seven_day)),Object.entries(a)))if(e.startsWith("seven_day_")&&"seven_day"!==e&&c(f)){let a=e.replace("seven_day_","");b[`weekly ${a} (7d)`]=d(f)}return{plan:"Claude Code",observedAt:new Date().toISOString(),extraUsage:a.extra_usage??null,quotas:b}}if(429===e.status){let a,b,d,f=(a=e.headers.get("retry-after"),b=a?.trim()?Number(a):NaN,d=a?Date.parse(a):NaN,Number.isFinite(b)&&b>=0?Date.now()+Math.max(1e3,1e3*b):Number.isFinite(d)&&d>Date.now()?d:Date.now()+18e4);return j.set(c,f),o(f)}if(401===e.status)return{status:401,code:"authentication_error",message:"Claude subscription session expired or is unauthorized. Reconnect Claude if refreshing the session fails."};return{status:e.status,code:403===e.status?"permission_denied":"usage_unavailable",message:`Claude subscription usage is unavailable (HTTP ${e.status}).`}}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}}};