sidekick-agent-hub 0.24.2 → 0.24.4

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.
package/README.md CHANGED
@@ -60,6 +60,7 @@ The standalone commands open the dashboard directly to a specific panel or run a
60
60
  | ------------------ | ------------------------------------------------------------------------- |
61
61
  | `--project <path>` | Override project path (default: current working directory) |
62
62
  | `--provider <id>` | Session provider: `claude-code`, `opencode`, `codex`, or `auto` (default) |
63
+ | `--no-color` | Disable colored output (also honors `NO_COLOR`) |
63
64
  | `--session <id>` | Follow a specific session by ID |
64
65
  | `--replay` | Replay existing events from the beginning before streaming live |
65
66
 
@@ -340,7 +341,7 @@ Press `z` to cycle through layout modes:
340
341
  | Key | Action |
341
342
  | --- | ---------------------------------------------------------------------------------------- |
342
343
  | `v` | Cycle mind map view: tree → boxed → flow |
343
- | `f` | Cycle node filter: all → file → tool → task → subagent → command → plan → knowledge-note |
344
+ | `F` | Cycle node filter: all → file → tool → task → subagent → command → plan → knowledge-note |
344
345
 
345
346
  ### Session Panel — AI Summary Tab
346
347
 
@@ -348,6 +349,13 @@ Press `z` to cycle through layout modes:
348
349
  | --- | ----------------------------- |
349
350
  | `n` | Generate / retry AI narrative |
350
351
 
352
+ ### Plans Panel
353
+
354
+ | Key | Action |
355
+ | --- | -------------------------------------------------------------- |
356
+ | `S` | Cycle plan source filter: all → claude-code → opencode → codex |
357
+ | `c` | Copy the selected plan's markdown to the clipboard |
358
+
351
359
  ### General
352
360
 
353
361
  | Key | Action |
@@ -357,6 +365,7 @@ Press `z` to cycle through layout modes:
357
365
  | `x` | Open context menu for selected item |
358
366
  | `M` | Toggle mouse capture (turn off to restore terminal text selection/copy) |
359
367
  | `?` | Show help |
368
+ | `R` | Refresh persisted project data (tasks, notes, decisions, plans) from disk |
360
369
  | `r` | Generate HTML report for the current session |
361
370
  | `V` | Show version / changelog |
362
371
  | `q` / `Ctrl+C` | Quit |
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __createRequire } from "module";
3
3
  const require = __createRequire(import.meta.url);
4
- var kt=Object.create;var ze=Object.defineProperty;var Qt=Object.getOwnPropertyDescriptor;var Vt=Object.getOwnPropertyNames;var Gt=Object.getPrototypeOf,Yt=Object.prototype.hasOwnProperty;var l=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var b=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var Xt=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Vt(t))!Yt.call(e,i)&&i!==n&&ze(e,i,{get:()=>t[i],enumerable:!(r=Qt(t,i))||r.enumerable});return e};var Zt=(e,t,n)=>(n=e!=null?kt(Gt(e)):{},Xt(t||!e||!e.__esModule?ze(n,"default",{value:e,enumerable:!0}):n,e));var he=b(_=>{"use strict";var en=_&&_.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),tn=_&&_.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),fe=_&&_.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&en(n,t,r[i]);return tn(n,t),n}})();Object.defineProperty(_,"__esModule",{value:!0});_.getConfigDir=pe;_.getProjectDataPath=rn;_.getGlobalDataPath=cn;_.encodeWorkspacePath=le;_.getProjectSlug=on;_.resolveProjectIdentity=ve;_.getProjectSlugRaw=un;var nn=fe(l("fs")),U=fe(l("path")),We=fe(l("os"));function pe(){return process.platform==="win32"?U.join(process.env.APPDATA||We.homedir(),"sidekick"):U.join(We.homedir(),".config","sidekick")}function rn(e,t){return U.join(pe(),t,`${e}.json`)}function cn(e){return U.join(pe(),e)}function le(e){return e.replace(/\\/g,"/").replace(/[:/_]/g,"-")}function on(e){return ve(e).canonicalSlug}function ve(e){let t=U.resolve(e||process.cwd()),n;try{n=nn.realpathSync(t)}catch{n=t}let r=le(n),i=le(t);return{cwd:t,resolvedCwd:n,canonicalSlug:r,legacySlug:i,candidates:r===i?[r]:[r,i],hasLegacyMismatch:r!==i}}function un(e){return ve(e).legacySlug}});var ee=b(y=>{"use strict";var an=y&&y.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),sn=y&&y.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Ke=y&&y.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&an(n,t,r[i]);return sn(n,t),n}})();Object.defineProperty(y,"__esModule",{value:!0});y.getAccountsDir=ge;y.readSavedAccountRegistry=$;y.writeSavedAccountRegistry=J;y.listSavedAccountProfiles=vn;y.getActiveSavedAccount=hn;y.upsertSavedAccountProfile=gn;y.setActiveSavedAccount=yn;y.replaceSavedAccountProfiles=mn;y.removeSavedAccountProfile=An;var X=Ke(l("fs")),Ue=Ke(l("path")),dn=he();function ge(){return Ue.join((0,dn.getConfigDir)(),"accounts")}function Je(){return Ue.join(ge(),"accounts.json")}function ln(){X.mkdirSync(ge(),{recursive:!0,mode:448})}function fn(e,t,n=384){let r=e+".tmp",i=JSON.stringify(t,null,2);JSON.parse(i),X.writeFileSync(r,i,{encoding:"utf8",mode:n}),X.renameSync(r,e)}function Z(){return{version:2,activeByProvider:{"claude-code":null,codex:null},accounts:[]}}function ke(e){let t=Z();return t.activeByProvider["claude-code"]=e.activeByProvider?.["claude-code"]??null,t.activeByProvider.codex=e.activeByProvider?.codex??null,t.accounts=Array.isArray(e.accounts)?e.accounts.filter(n=>!!n&&(n.providerId==="claude-code"||n.providerId==="codex")&&typeof n.id=="string"&&typeof n.addedAt=="string").map(n=>({...n,label:n.label||void 0,email:n.email||void 0,providerAccountId:n.providerAccountId||void 0,metadata:n.metadata?{email:n.metadata.email||void 0,workspaceId:n.metadata.workspaceId||void 0,planType:n.metadata.planType||void 0,authMode:n.metadata.authMode||void 0}:void 0})):[],t}function pn(e){return{version:2,activeByProvider:{"claude-code":e.activeAccountUuid,codex:null},accounts:e.accounts.map(t=>({id:t.uuid,providerId:"claude-code",providerAccountId:t.uuid,email:t.email,label:t.label,addedAt:t.addedAt,metadata:{email:t.email}}))}}function $(){try{let e=X.readFileSync(Je(),"utf8"),t=JSON.parse(e);return t?.version===2?ke(t):t?.version===1&&Array.isArray(t.accounts)?pn(t):null}catch{return null}}function J(e){ln(),fn(Je(),ke(e))}function vn(e){let t=$();return t?e?t.accounts.filter(n=>n.providerId===e):t.accounts:[]}function hn(e){let t=$();if(!t)return null;let n=t.activeByProvider[e];return n?t.accounts.find(r=>r.providerId===e&&r.id===n)??null:null}function gn(e){let t=$()??Z(),n=t.accounts.findIndex(r=>r.providerId===e.providerId&&r.id===e.id);return n>=0?t.accounts[n]=e:t.accounts.push(e),J(t),t}function yn(e,t){let n=$()??Z();return n.activeByProvider[e]=t,J(n),n}function mn(e,t,n){let r=$()??Z();return r.accounts=r.accounts.filter(i=>i.providerId!==e).concat(t),r.activeByProvider[e]=n,J(r),r}function An(e,t){let n=$();if(!n)return null;let r=n.accounts.findIndex(c=>c.providerId===e&&c.id===t);if(r===-1)return null;let[i]=n.accounts.splice(r,1);return n.activeByProvider[e]===t&&(n.activeByProvider[e]=n.accounts.find(c=>c.providerId===e)?.id??null),J(n),i}});var me=b(A=>{"use strict";var Sn=A&&A.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),_n=A&&A.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Ve=A&&A.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&Sn(n,t,r[i]);return _n(n,t),n}})();Object.defineProperty(A,"__esModule",{value:!0});A.getClaudeProfilesDir=Ge;A.getClaudeProfileHome=Ye;A.ensureClaudeProfileDirs=bn;A.claudeKeychainSuffix=Xe;A.claudeKeychainService=Ze;A.readClaudeProfileIdentity=et;A.keychainServiceExists=tt;A.isClaudeProfileAuthenticated=Pn;var jn=l("child_process"),wn=l("crypto"),ye=Ve(l("fs")),te=Ve(l("path")),Cn=ee(),Qe="Claude Code-credentials";function Ge(){return te.join((0,Cn.getAccountsDir)(),"claude","profiles")}function Ye(e){return te.join(Ge(),e,"home")}function bn(e){ye.mkdirSync(Ye(e),{recursive:!0,mode:448})}function Xe(e){return(0,wn.createHash)("sha256").update(e).digest("hex").slice(0,8)}function Ze(e){return e?`${Qe}-${Xe(e)}`:Qe}function et(e){try{let t=JSON.parse(ye.readFileSync(te.join(e,".claude.json"),"utf8")),n=t?.oauthAccount?.emailAddress,r=t?.oauthAccount?.accountUuid;return typeof n=="string"&&typeof r=="string"?{email:n,uuid:r}:null}catch{return null}}function tt(e){try{return(0,jn.execFileSync)("security",["find-generic-password","-s",e],{stdio:["ignore","ignore","ignore"],timeout:4e3,killSignal:"SIGKILL"}),!0}catch{return!1}}function Pn(e){return(process.platform==="darwin"?tt(Ze(e)):ye.existsSync(te.join(e,".credentials.json")))&&et(e)!==null}});var ot=b(I=>{"use strict";var On=I&&I.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),In=I&&I.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),_e=I&&I.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&On(n,t,r[i]);return In(n,t),n}})();Object.defineProperty(I,"__esModule",{value:!0});I.KEYCHAIN_SERVICE=void 0;I.readActiveCredentials=Dn;I.writeActiveCredentials=xn;var Se=_e(l("fs")),nt=_e(l("path")),Mn=_e(l("os")),rt=l("child_process"),it=me();I.KEYCHAIN_SERVICE="Claude Code-credentials";function Ae(e){return`'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function ct(e){return nt.join(e??nt.join(Mn.homedir(),".claude"),".credentials.json")}function Dn(e){if(process.platform==="darwin")try{let t=(0,rt.execFileSync)("security",["find-generic-password","-s",(0,it.claudeKeychainService)(e),"-w"],{encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:4e3,killSignal:"SIGKILL"});return JSON.parse(t.trim())}catch{return null}try{return JSON.parse(Se.readFileSync(ct(e),"utf8"))}catch{return null}}function xn(e,t){let n=JSON.stringify(e);if(JSON.parse(n),process.platform==="darwin"){let c=(0,it.claudeKeychainService)(t),u=process.env.USER||"user",s=["add-generic-password","-U","-s",Ae(c),"-a",Ae(u),"-w",Ae(n)].join(" ");(0,rt.execFileSync)("security",["-i"],{input:s+`
5
- `,stdio:["pipe","pipe","pipe"],timeout:4e3,killSignal:"SIGKILL"});return}let r=ct(t),i=r+".tmp";Se.writeFileSync(i,n,{encoding:"utf8",mode:384}),Se.renameSync(i,r)}});var yt=b(p=>{"use strict";var Nn=p&&p.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),En=p&&p.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),je=p&&p.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&Nn(n,t,r[i]);return En(n,t),n}})();Object.defineProperty(p,"__esModule",{value:!0});p.readAccountRegistry=ie;p.writeAccountRegistry=re;p.readActiveClaudeAccount=ce;p.addCurrentAccount=Ln;p.switchToAccount=Bn;p.resolveActiveClaudeHome=zn;p.applyActiveClaudeToLiveHome=ht;p.reconcileClaudeAuthState=Wn;p.removeAccount=Kn;p.listAccounts=Un;p.getActiveAccount=gt;p.resolveActiveClaudeAccount=Jn;p.isMultiAccountEnabled=kn;var g=je(l("fs")),h=je(l("path")),ut=je(l("os")),M=ot(),m=ee(),W=me();function at(){return h.join(ut.homedir(),".claude")}function x(){let e=h.join(at(),".claude.json");try{if(JSON.parse(g.readFileSync(e,"utf8"))?.oauthAccount)return e}catch{}return h.join(ut.homedir(),".claude.json")}function B(){return h.join((0,m.getAccountsDir)(),"credentials")}function z(){return h.join((0,m.getAccountsDir)(),"configs")}function Fn(){return h.join((0,m.getAccountsDir)(),"claude",".profiles-migrated-v1")}function Tn(){for(let e of[(0,m.getAccountsDir)(),B(),z()])g.mkdirSync(e,{recursive:!0,mode:448})}function F(e,t,n=384){g.mkdirSync(h.dirname(e),{recursive:!0,mode:448});let r=e+".tmp",i=JSON.stringify(t,null,2);JSON.parse(i),g.writeFileSync(r,i,{encoding:"utf8",mode:n}),g.renameSync(r,e)}function we(e){try{return JSON.parse(g.readFileSync(e,"utf8"))}catch{return null}}function st(e){return we(e)?.oauthAccount??null}function dt(e,t){F(h.join((0,W.getClaudeProfileHome)(e),".claude.json"),{oauthAccount:t})}function lt(e,t){(0,M.writeActiveCredentials)(t,(0,W.getClaudeProfileHome)(e))}function ne(e,t,n){dt(e,n),lt(e,t)}function ft(e){return we(h.join(B(),`${e}.credentials.json`))}function pt(e){return we(h.join(z(),`${e}.config.json`))}function vt(e){return st(h.join((0,W.getClaudeProfileHome)(e),".claude.json"))}function Hn(e){let t=(0,M.readActiveCredentials)((0,W.getClaudeProfileHome)(e)),n=vt(e);if(t&&n)return{credentials:t,oauthAccount:n};let r=ft(e),i=pt(e);if(r&&i){try{ne(e,r,i)}catch{}return{credentials:r,oauthAccount:i}}return null}function $n(){return st(x())}function Rn(){let e=ce();if(!e)return;let t=(0,M.readActiveCredentials)(),n=$n();if(t)try{F(h.join(B(),`${e.uuid}.credentials.json`),t),lt(e.uuid,t)}catch{}if(n)try{F(h.join(z(),`${e.uuid}.config.json`),n),dt(e.uuid,n)}catch{}}function qn(e){let t={};try{t=JSON.parse(g.readFileSync(x(),"utf8"))}catch{}t.oauthAccount=e,F(x(),t)}function ie(){let e=(0,m.readSavedAccountRegistry)();if(!e)return null;let t=e.accounts.filter(n=>n.providerId==="claude-code").map(n=>({uuid:n.providerAccountId??n.id,email:n.email??n.metadata?.email??"unknown",label:n.label,addedAt:n.addedAt}));return{version:1,activeAccountUuid:e.activeByProvider["claude-code"],accounts:t}}function re(e){let t=e.accounts.map(n=>({id:n.uuid,providerId:"claude-code",providerAccountId:n.uuid,email:n.email,label:n.label,addedAt:n.addedAt,metadata:{email:n.email}}));(0,m.replaceSavedAccountProfiles)("claude-code",t,e.activeAccountUuid)}function ce(){try{let e=g.readFileSync(x(),"utf8"),t=JSON.parse(e),n=t?.oauthAccount?.emailAddress,r=t?.oauthAccount?.accountUuid;return!n||!r?null:{email:n,uuid:r}}catch{return null}}function Ln(e){let t=ce();if(!t)return{success:!1,error:"No active Claude account found. Sign in with `claude` first."};let n=(0,M.readActiveCredentials)();if(!n)return{success:!1,error:"Could not read Claude credentials."};let r;try{r=JSON.parse(g.readFileSync(x(),"utf8")).oauthAccount}catch{return{success:!1,error:"Could not read Claude config file."}}Tn();let i=ie()??{version:1,activeAccountUuid:null,accounts:[]},c=i.accounts.find(u=>u.uuid===t.uuid);if(c){e!==void 0&&(c.label=e),F(h.join(B(),`${t.uuid}.credentials.json`),n),F(h.join(z(),`${t.uuid}.config.json`),r);try{ne(t.uuid,n,r)}catch{}return i.activeAccountUuid=t.uuid,re(i),{success:!0}}F(h.join(B(),`${t.uuid}.credentials.json`),n),F(h.join(z(),`${t.uuid}.config.json`),r);try{ne(t.uuid,n,r)}catch{}return i.accounts.push({uuid:t.uuid,email:t.email,label:e,addedAt:new Date().toISOString()}),i.activeAccountUuid=t.uuid,re(i),{success:!0}}function Bn(e){let t=ie();if(!t)return{success:!1,error:"No account registry found. Save an account first."};if(!t.accounts.find(u=>u.uuid===e))return{success:!1,error:`Account ${e} not found in registry.`};let r=null,i=null;r=(0,M.readActiveCredentials)();try{i=g.readFileSync(x(),"utf8")}catch{}try{Rn()}catch{}try{(0,m.setActiveSavedAccount)("claude-code",e)}catch(u){return{success:!1,error:`Failed to update account registry: ${u}`}}let c=ht();if(!c.success){try{(0,m.setActiveSavedAccount)("claude-code",t.activeAccountUuid)}catch{}if(r)try{(0,M.writeActiveCredentials)(r)}catch{}if(i)try{g.writeFileSync(x(),i)}catch{}return c}return c}function zn(){let e=(0,m.getActiveSavedAccount)("claude-code");return e?(0,W.getClaudeProfileHome)(e.providerAccountId??e.id):at()}function ht(){let e=(0,m.getActiveSavedAccount)("claude-code");if(!e)return{success:!1,error:"No active Claude account found."};let t=e.providerAccountId??e.id,n=Hn(t);if(!n)return{success:!1,error:`Stored credentials for ${e.email??t} not found.`};let r=(0,M.readActiveCredentials)(),i=null;try{i=g.readFileSync(x(),"utf8")}catch{}try{(0,M.writeActiveCredentials)(n.credentials)}catch(c){if(r)try{(0,M.writeActiveCredentials)(r)}catch{}return{success:!1,error:`Failed to write credentials: ${c}`}}try{qn(n.oauthAccount)}catch(c){if(r)try{(0,M.writeActiveCredentials)(r)}catch{}if(i)try{g.writeFileSync(x(),i)}catch{}return{success:!1,error:`Failed to write config: ${c}`}}return{success:!0}}function Wn(){try{let e=Fn();if(g.existsSync(e))return;let t=(0,m.readSavedAccountRegistry)();if(t)for(let n of t.accounts.filter(r=>r.providerId==="claude-code"))try{let r=n.providerAccountId??n.id;if((0,M.readActiveCredentials)((0,W.getClaudeProfileHome)(r))&&vt(r))continue;let i=ft(r),c=pt(r);if(!i||!c)continue;ne(r,i,c)}catch{}g.mkdirSync(h.dirname(e),{recursive:!0,mode:448}),g.writeFileSync(e,new Date().toISOString()+`
6
- `,{encoding:"utf8",mode:384})}catch{}}function Kn(e){let t=ie();if(!t)return{success:!1,error:"No account registry found."};let n=t.accounts.findIndex(r=>r.uuid===e);if(n===-1)return{success:!1,error:`Account ${e} not found.`};try{g.unlinkSync(h.join(B(),`${e}.credentials.json`))}catch{}try{g.unlinkSync(h.join(z(),`${e}.config.json`))}catch{}return t.accounts.splice(n,1),t.activeAccountUuid===e&&(t.activeAccountUuid=t.accounts[0]?.uuid??null),re(t),{success:!0}}function Un(){return(0,m.listSavedAccountProfiles)("claude-code").map(e=>({uuid:e.providerAccountId??e.id,email:e.email??e.metadata?.email??"unknown",label:e.label,addedAt:e.addedAt}))}function gt(){let e=(0,m.getActiveSavedAccount)("claude-code");return e?{uuid:e.providerAccountId??e.id,email:e.email??e.metadata?.email??"unknown",label:e.label,addedAt:e.addedAt}:null}function Jn(){let e=ce();if(e){let n=(0,m.listSavedAccountProfiles)("claude-code"),r=n.find(i=>(i.providerAccountId??i.id)===e.uuid)??n.find(i=>(i.email??i.metadata?.email)===e.email);if(r){let i=(0,m.getActiveSavedAccount)("claude-code");if(!i||i.id!==r.id)try{(0,m.setActiveSavedAccount)("claude-code",r.id)}catch{}}return{email:e.email,label:r?.label,providerAccountId:e.uuid,registryAccountId:r?.id,source:"live"}}let t=gt();return t?{email:t.email,label:t.label,providerAccountId:t.uuid,registryAccountId:t.uuid,source:"registry"}:{source:"none"}}function kn(){return(0,m.listSavedAccountProfiles)("claude-code").length>=1}});var Mt=b(f=>{"use strict";var Qn=f&&f.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),Vn=f&&f.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Pe=f&&f.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&Qn(n,t,r[i]);return Vn(n,t),n}})();Object.defineProperty(f,"__esModule",{value:!0});f.getSystemCodexHome=k;f.getCodexMonitoringHomes=er;f.getCodexProfilesDir=jt;f.getCodexProfileHome=N;f.readCodexAccountMetadata=ue;f.isCodexProfileAuthenticated=bt;f.listCodexAccounts=Q;f.getActiveCodexAccount=ae;f.resolveSidekickCodexHome=Me;f.resolveActiveCodexAccount=lr;f.getCodexExecutionEnv=fr;f.prepareCodexAccount=pr;f.finalizeCodexAccount=Pt;f.switchToCodexAccount=hr;f.reconcileCodexAuthState=gr;f.removeCodexAccount=yr;var d=Pe(l("fs")),Gn=Pe(l("os")),a=Pe(l("path")),At=l("child_process"),Yn=l("crypto"),j=ee(),Xn=11520*60*1e3;function St(){return a.join(Gn.homedir(),".codex")}function _t(){let e=process.env.CODEX_HOME?.trim();return e||null}function Zn(e){let t=new Set,n=[];for(let r of e){let i=a.resolve(r);t.has(i)||(t.add(i),n.push(r))}return n}function k(){return _t()??St()}function er(){let e=_t();if(e)return[e];let t=[St()];for(let n of Q()){let r=N(n.id);d.existsSync(a.join(r,"sessions"))&&t.push(r)}return Zn(t)}function jt(){return a.join((0,j.getAccountsDir)(),"codex","profiles")}function Oe(e){return a.join(jt(),e)}function N(e){return a.join(Oe(e),"codex-home")}function wt(e){return a.join(Oe(e),"profile.json")}function Ct(e){d.mkdirSync(N(e),{recursive:!0,mode:448})}function tr(e,t,n=384){let r=e+".tmp",i=JSON.stringify(t,null,2);JSON.parse(i);try{d.writeFileSync(r,i,{encoding:"utf8",mode:n}),d.renameSync(r,e)}catch(c){try{d.unlinkSync(r)}catch{}throw c}}function S(e,t,n=384){d.mkdirSync(a.dirname(e),{recursive:!0,mode:448});let r=e+".tmp";try{d.writeFileSync(r,t,{encoding:"utf8",mode:n}),d.renameSync(r,e)}catch(i){try{d.unlinkSync(r)}catch{}throw i}}function T(e){try{return d.readFileSync(e,"utf8")}catch{return null}}function nr(e){try{return JSON.parse(d.readFileSync(wt(e),"utf8"))}catch{return null}}function rr(e,t){Ct(e),tr(wt(e),t)}function Ce(e,t){return d.existsSync(e)?(d.mkdirSync(a.dirname(t),{recursive:!0,mode:448}),d.copyFileSync(e,t),!0):!1}function ir(e,t){Ce(a.join(e,"config.toml"),a.join(t,"config.toml"))}function cr(e,t){let n=Ce(a.join(e,"auth.json"),a.join(t,"auth.json")),r=Ce(a.join(e,".credentials.json"),a.join(t,".credentials.json"));return n||r}function or(e){let t=e.split(".");if(t.length<2)return null;try{let n=Buffer.from(t[1],"base64url").toString("utf8");return JSON.parse(n)}catch{return null}}function Ie(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function R(e){let t=Ie(e);if(!t)return null;let n=t.tokens?.id_token,r=n?or(n):null,i=r?.["https://api.openai.com/profile"],c=r?.["https://api.openai.com/auth"],u=typeof r?.email=="string"?r.email:typeof i?.email=="string"?i.email:void 0,s=typeof c?.chatgpt_account_id=="string"?c.chatgpt_account_id:t.tokens?.account_id,o=typeof c?.chatgpt_plan_type=="string"?c.chatgpt_plan_type:void 0,v=t.OPENAI_API_KEY||t.auth_mode==="api_key"?"api-key":"chatgpt";return{email:u,workspaceId:s,planType:o,authMode:v}}function be(e,t){let n=Ie(e);if(n?.last_refresh){let r=Date.parse(n.last_refresh);if(!Number.isNaN(r))return r}if(t)try{return d.statSync(t).mtimeMs}catch{}return null}function ur(e){let t=R(T(a.join(e,"auth.json")));return t?{email:t.email,workspaceId:t.workspaceId,planType:t.planType,authMode:t.authMode}:{}}function ar(e){let t=a.join(e,".credentials.json");if(!d.existsSync(t))return{};try{let n=JSON.parse(d.readFileSync(t,"utf8"));if(typeof n.OPENAI_API_KEY=="string"||typeof n.CODEX_API_KEY=="string")return{authMode:"api-key"}}catch{}return{}}function oe(e){try{let t={...process.env,CODEX_HOME:e},n=(0,At.spawnSync)("codex",["login","status"],{encoding:"utf8",env:t,timeout:4e3,killSignal:"SIGKILL"}),r=String(n.stdout??"").trim();if(n.status===0&&/^Logged in/i.test(r))return/API key/i.test(r)?{loggedIn:!0,authMode:"api-key"}:/ChatGPT/i.test(r)?{loggedIn:!0,authMode:"chatgpt"}:{loggedIn:!0}}catch{}return{loggedIn:!1}}function sr(){if(process.platform==="win32")return!1;try{return(0,At.spawnSync)("pgrep",["-x","codex"],{encoding:"utf8",timeout:4e3,killSignal:"SIGKILL"}).status===0}catch{return!1}}function ue(e){let t=ur(e);if(t.email||t.workspaceId||t.planType||t.authMode)return t;let n=ar(e);if(n.authMode)return n;let r=oe(e);return r.loggedIn?{authMode:r.authMode??"unknown"}:{}}function bt(e){return d.existsSync(a.join(e,"auth.json"))||d.existsSync(a.join(e,".credentials.json"))?!0:oe(e).loggedIn}function dr(e,t){let n=e.trim().toLowerCase();return Q().find(i=>i.id!==t&&(i.label??"").trim().toLowerCase()===n)?`A Codex account named "${e}" already exists.`:null}function Q(){return(0,j.listSavedAccountProfiles)("codex")}function ae(){return(0,j.getActiveSavedAccount)("codex")}function Me(){return k()}function lr(){let e=R(T(a.join(Me(),"auth.json")));if(e&&(e.email||e.workspaceId)){let n=De(e);if(n){let r=(0,j.getActiveSavedAccount)("codex");if(!r||r.id!==n.id)try{(0,j.setActiveSavedAccount)("codex",n.id)}catch{}}return{email:e.email??n?.email??n?.metadata?.email,label:n?.label,providerAccountId:n?.providerAccountId??e.workspaceId,registryAccountId:n?.id,source:"live"}}let t=ae();return t?{email:t.email??t.metadata?.email,label:t.label,providerAccountId:t.providerAccountId,registryAccountId:t.id,source:"registry"}:{source:"none"}}function fr(e=process.env){return{...e,CODEX_HOME:Me()}}function pr(e){let t=e.trim();if(!t)return{success:!1,error:"Codex accounts require a non-empty label."};let n=dr(t);if(n)return{success:!1,error:n};let r=(0,Yn.randomUUID)(),i=N(r);Ct(r),rr(r,{label:t,addedAt:new Date().toISOString()});let c=k();return ir(c,i),cr(c,i)?{...Pt(r),profileId:r,codexHome:i,needsLogin:!1}:{success:!0,profileId:r,codexHome:i,needsLogin:!0}}function Pt(e,t={}){let n=nr(e);if(!n)return{success:!1,error:`Codex profile ${e} was not prepared.`};let r=N(e);if(!bt(r))return{success:!1,error:"Codex profile is not authenticated yet."};let i=ue(r),c={id:e,providerId:"codex",label:n.label,email:i.email,addedAt:n.addedAt,metadata:i};return(0,j.upsertSavedAccountProfile)(c),t.activate===!1?{success:!0}:d.existsSync(a.join(r,"auth.json"))||d.existsSync(a.join(r,".credentials.json"))?It(c):((0,j.setActiveSavedAccount)("codex",e),{success:!0,warning:"Codex stores credentials in the OS keyring; sidekick cannot swap them per account, so `codex` keeps using the keyring credentials."})}function mt(){return a.join((0,j.getAccountsDir)(),"codex","stash")}function Ot(e,t){try{let n=new Date().toISOString().replace(/[:.]/g,"-"),r=null;if(e&&(r=a.join(mt(),`auth-${n}.json`),S(r,e)),t){let i=a.join(mt(),`credentials-${n}.json`);S(i,t),r=r??i}return r}catch{return null}}function De(e){let t=Q();if(e?.workspaceId){let n=t.find(r=>r.metadata?.workspaceId===e.workspaceId);if(n)return n}if(e?.email){let n=t.find(r=>(r.email??r.metadata?.email)===e.email);if(n)return n}return!e?.workspaceId&&!e?.email?ae():null}function vr(e,t){if(!e&&!t)return{};try{let n=R(e),r=De(n);if(!r){let c=Ot(e,t);return{stashPath:c??void 0,warning:c?`Live Codex credentials did not match any saved account; stashed at ${c}.`:"Live Codex credentials did not match any saved account and could not be stashed."}}let i=N(r.id);e&&S(a.join(i,"auth.json"),e),t&&S(a.join(i,".credentials.json"),t);try{let c=ue(i);(0,j.upsertSavedAccountProfile)({...r,email:c.email??r.email,metadata:{...r.metadata,...c}})}catch{}return{syncedProfileId:r.id}}catch(n){return{warning:`Could not back up live Codex credentials: ${n}`}}}function It(e){let t=k(),n=a.join(t,"auth.json"),r=a.join(t,".credentials.json"),i=T(n),c=T(r);if(!i&&!c&&oe(t).loggedIn)return{success:!1,error:'Codex stores credentials in the OS keyring; file-based account switching is not supported. Set `cli_auth_credentials_store = "file"` in ~/.codex/config.toml and run `codex login` again.'};let u=N(e.id),s=a.join(u,"auth.json"),o=T(s),v=T(a.join(u,".credentials.json")),H=e.label??e.email??e.id;if(!o&&!v)return{success:!1,error:`No stored credentials for "${H}". Remove and re-add this account.`};if(o&&!Ie(o))return{success:!1,error:`Stored credentials for "${H}" are corrupted. Remove and re-add this account.`};let E=[];sr()&&E.push("A codex process appears to be running; restart codex sessions so they pick up the switched account.");let O=R(i),K=R(o),$e=e.metadata?.workspaceId??K?.workspaceId,Re=e.email??e.metadata?.email??K?.email;if(!!(O?.workspaceId&&$e&&O.workspaceId===$e||O?.email&&Re&&O.email===Re||i!==null&&i===o||!i&&!o&&c!==null&&c===v)){try{i&&S(s,i),c&&S(a.join(u,".credentials.json"),c);let L=ue(u);(0,j.upsertSavedAccountProfile)({...e,email:L.email??e.email,metadata:{...e.metadata,...L}})}catch{}return(0,j.setActiveSavedAccount)("codex",e.id),{success:!0,warning:E.length?E.join(" "):void 0}}let qe=be(o,s);qe!==null&&Date.now()-qe>Xn&&E.push(`Stored credentials for "${H}" have not been refreshed in over 8 days; codex may ask you to log in again.`);let Le=vr(i,c);Le.warning&&E.push(Le.warning);let Be=()=>{try{i?S(n,i):d.rmSync(n,{force:!0}),c?S(r,c):d.rmSync(r,{force:!0})}catch{}};try{o?(S(n,o),v?S(r,v):c&&d.rmSync(r,{force:!0})):(S(r,v),i&&d.rmSync(n,{force:!0}))}catch(L){return Be(),{success:!1,error:`Failed to write Codex credentials: ${L}`}}try{(0,j.setActiveSavedAccount)("codex",e.id)}catch(L){return Be(),{success:!1,error:`Failed to update account registry: ${L}`}}return{success:!0,warning:E.length?E.join(" "):void 0}}function hr(e){let t=Q().find(n=>n.id===e);return t?It(t):{success:!1,error:`Codex account ${e} not found.`}}function gr(){try{let e=a.join((0,j.getAccountsDir)(),"codex",".live-auth-migrated-v1");if(d.existsSync(e))return;let t=()=>S(e,new Date().toISOString()+`
7
- `),n=ae();if(!n){t();return}let r=N(n.id),i=a.join(r,"auth.json"),c=T(i);if(!c){t();return}let u=k(),s=a.join(u,"auth.json"),o=T(s);if(!o){oe(u).loggedIn||S(s,c),t();return}let v=R(o),H=R(c);if(!!(v?.workspaceId&&H?.workspaceId&&v.workspaceId===H.workspaceId||v?.email&&v.email===H?.email)){let O=be(o,s),K=be(c,i);K!==null&&(O===null||K>O)?(Ot(o,null),S(s,c)):S(i,o)}else{let O=De(v);O&&O.id!==n.id&&(S(a.join(N(O.id),"auth.json"),o),(0,j.setActiveSavedAccount)("codex",O.id))}t()}catch{}}function yr(e){return(0,j.removeSavedAccountProfile)("codex",e)?(d.rmSync(Oe(e),{recursive:!0,force:!0}),{success:!0}):{success:!1,error:`Codex account ${e} not found.`}}});var Dt=b(xe=>{"use strict";Object.defineProperty(xe,"__esModule",{value:!0});xe.getActiveAccountStatus=_r;var mr=yt(),Ar=Mt();function Sr(e){return e instanceof Error?e.message:String(e)}function _r(e){try{let t=(0,mr.resolveActiveClaudeAccount)(),n=(0,Ar.resolveActiveCodexAccount)(),r=t.source!=="none"?{present:!0,...t.registryAccountId?{accountId:t.registryAccountId}:{},email:t.email,label:t.label??t.email}:{present:!1},i=n.source!=="none"?{present:!0,...n.registryAccountId?{accountId:n.registryAccountId}:{},email:n.email,label:n.label??n.email??n.providerAccountId}:{present:!1};return{ok:r.present||i.present,claude:r,codex:i,error:e}}catch(t){return{ok:!1,claude:{present:!1},codex:{present:!1},error:e??Sr(t)}}}});var xt=b(Ne=>{"use strict";Object.defineProperty(Ne,"__esModule",{value:!0});Ne.isAggregateCodexLimit=jr;function jr(e){return!e||e==="codex"}});var Rt=b(D=>{"use strict";var wr=D&&D.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),Cr=D&&D.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Ee=D&&D.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&wr(n,t,r[i]);return Cr(n,t),n}})();Object.defineProperty(D,"__esModule",{value:!0});D.writeQuotaSnapshot=Fr;D.readQuotaSnapshot=Tr;var Ft=Ee(l("crypto")),w=Ee(l("fs")),br=Ee(l("path")),Tt=he(),Nt=xt(),Pr=15,Or=1e4,Ir=15e3,Mr=new Int32Array(new SharedArrayBuffer(4));function Fe(){return br.join((0,Tt.getConfigDir)(),"quota-snapshots.json")}function Ht(){w.mkdirSync((0,Tt.getConfigDir)(),{recursive:!0,mode:448})}function Dr(e,t,n=384){let r=`${e}.${process.pid}.${Date.now()}.${Ft.randomBytes(8).toString("hex")}.tmp`,i=JSON.stringify(t,null,2);JSON.parse(i);try{w.writeFileSync(r,i,{encoding:"utf8",mode:n}),w.renameSync(r,e)}catch(c){try{w.rmSync(r,{force:!0})}catch{}throw c}}function $t(){try{let e=JSON.parse(w.readFileSync(Fe(),"utf8"));if(e?.version===1&&Array.isArray(e.snapshots))return e}catch{}return{version:1,snapshots:[]}}function xr(e){Ht(),Dr(Fe(),e)}function Nr(e){Ht();let t=`${Fe()}.lock`,n=`${process.pid}:${Ft.randomBytes(16).toString("hex")}`,r=Date.now()+Ir;for(;;)try{let i=w.openSync(t,"wx",384);w.writeFileSync(i,n,"utf8"),w.fsyncSync(i),w.closeSync(i);break}catch(i){if(i.code!=="EEXIST")throw i;try{let c=w.statSync(t);if(Date.now()-c.mtimeMs>Or){let u=w.readFileSync(t,"utf8"),s=Number.parseInt(u.split(":",1)[0],10),o=Number.isInteger(s)&&s>0;if(o)try{process.kill(s,0)}catch(v){o=v.code==="EPERM"}o||w.rmSync(t,{force:!0})}}catch{}if(Date.now()>=r)throw new Error(`Timed out waiting for quota lock: ${t}`);Atomics.wait(Mr,0,0,Pr)}try{return e()}finally{try{w.readFileSync(t,"utf8")===n&&w.rmSync(t,{force:!0})}catch{}}}function Et(e){let t=e.capturedAt?Date.parse(e.capturedAt):NaN;return Number.isFinite(t)?t:0}function se(e){let t=Date.parse(e);return Number.isFinite(t)?t:0}function Er(e,t){let n=(0,Nt.isAggregateCodexLimit)(e.limitId),r=(0,Nt.isAggregateCodexLimit)(t.limitId);if(n!==r)return n;let i=se(e.fiveHour.resetsAt),c=se(t.fiveHour.resetsAt);if(i!==c)return i>c;let u=se(e.sevenDay.resetsAt),s=se(t.sevenDay.resetsAt);if(u!==s)return u>s;let o=e.fiveHour.utilization+e.sevenDay.utilization,v=t.fiveHour.utilization+t.sevenDay.utilization;return o!==v?o>v:Et(e)>Et(t)}function Fr(e,t,n){Nr(()=>{let r=$t(),i=r.snapshots.findIndex(o=>o.providerId===e&&o.accountId===t),c=i>=0?r.snapshots[i].quota:void 0,u={...n,providerId:e,capturedAt:n.capturedAt??new Date().toISOString(),source:n.source??"session",stale:!1,resetCredits:n.resetCredits??(e==="codex"?c?.resetCredits:void 0)};if(i>=0&&Er(r.snapshots[i].quota,u))return;let s={providerId:e,accountId:t,quota:u};i>=0?r.snapshots[i]=s:r.snapshots.push(s),xr(r)})}function Tr(e,t){let r=$t().snapshots.find(i=>i.providerId===e&&i.accountId===t);return r?{...r.quota,providerId:e,source:"cache",stale:!0}:null}});var He=b(V=>{"use strict";Object.defineProperty(V,"__esModule",{value:!0});V.BurnRateCalculator=void 0;V.estimateTimeToQuota=qt;var Te=class{events=[];windowMs;constructor(t=5){this.windowMs=t*6e4}addEvent(t,n=new Date){this.events.push({tokens:t,timestamp:n}),this.pruneOldEvents(n)}calculateBurnRate(t=new Date){if(this.pruneOldEvents(t),this.events.length===0)return 0;let n=this.events.reduce((i,c)=>i+c.tokens,0),r=Math.max((t.getTime()-this.events[0].timestamp.getTime())/6e4,1);return n/r}estimateTimeToQuota(t,n,r=new Date){return qt(t,n,this.calculateBurnRate(r))}getEventCount(){return this.events.length}reset(){this.events=[]}pruneOldEvents(t){let n=t.getTime()-this.windowMs;this.events=this.events.filter(r=>r.timestamp.getTime()>=n)}};V.BurnRateCalculator=Te;function qt(e,t,n){if(n<=0)return null;let r=t-e;return r<=0?0:r/n}});var Lt=b(P=>{"use strict";Object.defineProperty(P,"__esModule",{value:!0});P.SEVEN_DAY_WINDOW_MS=P.FIVE_HOUR_WINDOW_MS=void 0;P.projectQuotaWindow=Y;P.withQuotaProjections=qr;P.fetchQuota=Br;var Hr="https://api.anthropic.com/api/oauth/usage",$r="oauth-2025-04-20",Rr=1e4;P.FIVE_HOUR_WINDOW_MS=5*36e5;P.SEVEN_DAY_WINDOW_MS=7*864e5;function Y(e){let{utilization:t,resetsAt:n,windowMs:r,capturedAt:i}=e;if(!n||t<=0||!Number.isFinite(t)||r<=0)return;let c=new Date(n).getTime();if(!Number.isFinite(c))return;let u=i?Date.parse(i):NaN,s=Number.isFinite(u)?u:Date.now(),o=r-(c-s);if(!(o<=0))return Math.min(Math.round(t*(r/o)),200)}function qr(e,t={}){if(!e.available)return e;let n={...e},r=t.capturedAt??e.capturedAt;if(n.projectedFiveHour==null){let i=Y({utilization:n.fiveHour.utilization,resetsAt:n.fiveHour.resetsAt,windowMs:t.fiveHourWindowMs??P.FIVE_HOUR_WINDOW_MS,capturedAt:r});i!==void 0&&(n.projectedFiveHour=i)}if(n.projectedSevenDay==null){let i=Y({utilization:n.sevenDay.utilization,resetsAt:n.sevenDay.resetsAt,windowMs:t.sevenDayWindowMs??P.SEVEN_DAY_WINDOW_MS,capturedAt:r});i!==void 0&&(n.projectedSevenDay=i)}return n}function G(e,t={}){return{fiveHour:{utilization:0,resetsAt:""},sevenDay:{utilization:0,resetsAt:""},available:!1,error:e,...t}}function Lr(e){if(!e)return;let t=Number(e);if(Number.isFinite(t)&&t>=0)return Math.round(t*1e3);let n=Date.parse(e);if(!Number.isNaN(n))return Math.max(n-Date.now(),0)}async function Br(e){let t=new AbortController,n=setTimeout(()=>t.abort(),Rr);n.unref();try{let r=await fetch(Hr,{method:"GET",signal:t.signal,headers:{Authorization:`Bearer ${e}`,"anthropic-beta":$r,"Content-Type":"application/json"}});if(!r.ok)return r.status===401?G("Sign in to Claude Code to view quota",{failureKind:"auth",httpStatus:r.status}):r.status===429?G(`API error: ${r.status}`,{failureKind:"rate_limit",httpStatus:r.status,retryAfterMs:Lr(r.headers.get("retry-after"))}):r.status>=500&&r.status<=599?G(`API error: ${r.status}`,{failureKind:"server",httpStatus:r.status}):G(`API error: ${r.status}`,{failureKind:"unknown",httpStatus:r.status});let i=await r.json(),c=i.five_hour?.utilization??0,u=i.seven_day?.utilization??0,s=i.five_hour?.resets_at??"",o=i.seven_day?.resets_at??"";return{fiveHour:{utilization:c,resetsAt:s},sevenDay:{utilization:u,resetsAt:o},available:!0,projectedFiveHour:Y({utilization:c,resetsAt:s,windowMs:P.FIVE_HOUR_WINDOW_MS}),projectedSevenDay:Y({utilization:u,resetsAt:o,windowMs:P.SEVEN_DAY_WINDOW_MS})}}catch{return G("Network error",{failureKind:"network"})}finally{clearTimeout(n)}}});var zt=b(de=>{"use strict";Object.defineProperty(de,"__esModule",{value:!0});de.selectStatuslineAccount=Bt;de.formatStatusline=Kr;var zr=Lt(),Wr=He();function Bt(e){return e.accounts.claude.present?{providerId:"claude-code",accountId:e.accounts.claude.accountId,accountLabel:e.accounts.claude.label??e.accounts.claude.email??"claude",quota:e.claudeQuota??null}:e.accounts.codex.present?{providerId:"codex",accountId:e.accounts.codex.accountId,accountLabel:e.accounts.codex.label??e.accounts.codex.email??"codex",quota:e.codexQuota??null}:null}function Kr(e){let t=Bt(e);if(!t)return"acct:none \xB7 quota unavailable";let n=Jr(t.accountLabel),r=t.quota;if(!r?.available)return`acct:${n} \xB7 quota unavailable`;let i=e.now??new Date,c=kr(r.fiveHour.utilization),u=Qr(r.fiveHour.resetsAt,i),s=Ur(r,i),o=s==null?"":` \xB7 ~${Vr(s)} left`;return`acct:${n} \xB7 5h ${Math.round(c)}% resets ${u}${o}`}function Ur(e,t){let n=Date.parse(e.fiveHour.resetsAt);if(!Number.isFinite(n))return null;let r=t.getTime();if(n<=r)return null;let i=e.capturedAt?Date.parse(e.capturedAt):t.getTime(),c=Number.isFinite(i)?i:t.getTime();if(c>=n)return null;let u=(c-(n-zr.FIVE_HOUR_WINDOW_MS))/6e4;if(u<=0||e.fiveHour.utilization<=0)return null;let s=e.fiveHour.utilization/u,o=(0,Wr.estimateTimeToQuota)(e.fiveHour.utilization,100,s),v=(n-r)/6e4;return o!==null&&o<v?o:null}function Jr(e){let t=e.trim();return(t.includes("@")?t.split("@")[0]:t).replace(/\s+/g,"-").slice(0,24)||"unknown"}function kr(e){return Number.isFinite(e)?Math.min(100,Math.max(0,e)):0}function Qr(e,t){let n=new Date(e),r=Number.isNaN(n.getTime())?t:n;return new Intl.DateTimeFormat(void 0,{hour:"2-digit",minute:"2-digit",hour12:!1}).format(r)}function Vr(e){let t=Math.max(0,Math.round(e));if(t<60)return`${t}min`;let n=Math.floor(t/60),r=t%60;return r?`${n}h${r}m`:`${n}h`}});var Ut=b(C=>{"use strict";Object.defineProperty(C,"__esModule",{value:!0});C.selectStatuslineAccount=C.formatStatusline=C.estimateTimeToQuota=C.BurnRateCalculator=C.readQuotaSnapshot=C.getActiveAccountStatus=void 0;var Gr=Dt();Object.defineProperty(C,"getActiveAccountStatus",{enumerable:!0,get:function(){return Gr.getActiveAccountStatus}});var Yr=Rt();Object.defineProperty(C,"readQuotaSnapshot",{enumerable:!0,get:function(){return Yr.readQuotaSnapshot}});var Wt=He();Object.defineProperty(C,"BurnRateCalculator",{enumerable:!0,get:function(){return Wt.BurnRateCalculator}});Object.defineProperty(C,"estimateTimeToQuota",{enumerable:!0,get:function(){return Wt.estimateTimeToQuota}});var Kt=zt();Object.defineProperty(C,"formatStatusline",{enumerable:!0,get:function(){return Kt.formatStatusline}});Object.defineProperty(C,"selectStatuslineAccount",{enumerable:!0,get:function(){return Kt.selectStatuslineAccount}})});var q=Zt(Ut(),1);function Jt(){let e=(0,q.getActiveAccountStatus)(),t=e.claude.accountId?(0,q.readQuotaSnapshot)("claude-code",e.claude.accountId):null,n=e.codex.accountId?(0,q.readQuotaSnapshot)("codex",e.codex.accountId):null;process.stdout.write(`${(0,q.formatStatusline)({accounts:e,claudeQuota:t,codexQuota:n})}
8
- `)}function Xr(e){for(let t=0;t<e.length;t++){let n=e[t];if(n!=="--json"){if(n==="--project"||n==="--provider"){t++;continue}if(!(n.startsWith("--project=")||n.startsWith("--provider=")))return n==="statusline"}}return!1}Xr(process.argv.slice(2))?Jt():await import("./sidekick-main.mjs");
4
+ var Yt=Object.create;var Ke=Object.defineProperty;var Xt=Object.getOwnPropertyDescriptor;var Zt=Object.getOwnPropertyNames;var en=Object.getPrototypeOf,tn=Object.prototype.hasOwnProperty;var l=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var b=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var nn=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Zt(t))!tn.call(e,i)&&i!==n&&Ke(e,i,{get:()=>t[i],enumerable:!(r=Xt(t,i))||r.enumerable});return e};var rn=(e,t,n)=>(n=e!=null?Yt(en(e)):{},nn(t||!e||!e.__esModule?Ke(n,"default",{value:e,enumerable:!0}):n,e));var he=b(p=>{"use strict";var on=p&&p.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),cn=p&&p.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),pe=p&&p.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&on(n,t,r[i]);return cn(n,t),n}})();Object.defineProperty(p,"__esModule",{value:!0});p.CONFIG_DIR_ENV_VAR=void 0;p.getDefaultConfigDir=We;p.setConfigDir=an;p.getConfigDirOverride=sn;p.getConfigDir=ve;p.getProjectDataPath=dn;p.getGlobalDataPath=ln;p.encodeWorkspacePath=fe;p.getProjectSlug=fn;p.resolveProjectIdentity=ge;p.getProjectSlugRaw=pn;var un=pe(l("fs")),R=pe(l("path")),Ue=pe(l("os"));p.CONFIG_DIR_ENV_VAR="SIDEKICK_CONFIG_DIR";var X=null;function We(){return process.platform==="win32"?R.join(process.env.APPDATA||Ue.homedir(),"sidekick"):R.join(Ue.homedir(),".config","sidekick")}function an(e){let t=e?.trim();X=t?R.resolve(t):null}function sn(){return X}function ve(){if(X)return X;let e=process.env[p.CONFIG_DIR_ENV_VAR]?.trim();return e?R.resolve(e):We()}function dn(e,t){return R.join(ve(),t,`${e}.json`)}function ln(e){return R.join(ve(),e)}function fe(e){return e.replace(/\\/g,"/").replace(/[:/_]/g,"-")}function fn(e){return ge(e).canonicalSlug}function ge(e){let t=R.resolve(e||process.cwd()),n;try{n=un.realpathSync(t)}catch{n=t}let r=fe(n),i=fe(t);return{cwd:t,resolvedCwd:n,canonicalSlug:r,legacySlug:i,candidates:r===i?[r]:[r,i],hasLegacyMismatch:r!==i}}function pn(e){return ge(e).legacySlug}});var te=b(y=>{"use strict";var vn=y&&y.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),gn=y&&y.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Je=y&&y.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&vn(n,t,r[i]);return gn(n,t),n}})();Object.defineProperty(y,"__esModule",{value:!0});y.getAccountsDir=me;y.readSavedAccountRegistry=$;y.writeSavedAccountRegistry=J;y.listSavedAccountProfiles=Sn;y.getActiveSavedAccount=_n;y.upsertSavedAccountProfile=Cn;y.setActiveSavedAccount=jn;y.replaceSavedAccountProfiles=wn;y.removeSavedAccountProfile=bn;var Z=Je(l("fs")),ke=Je(l("path")),hn=he();function me(){return ke.join((0,hn.getConfigDir)(),"accounts")}function Qe(){return ke.join(me(),"accounts.json")}function mn(){Z.mkdirSync(me(),{recursive:!0,mode:448})}function yn(e,t,n=384){let r=e+".tmp",i=JSON.stringify(t,null,2);JSON.parse(i),Z.writeFileSync(r,i,{encoding:"utf8",mode:n}),Z.renameSync(r,e)}function ee(){return{version:2,activeByProvider:{"claude-code":null,codex:null},accounts:[]}}function Ve(e){let t=ee();return t.activeByProvider["claude-code"]=e.activeByProvider?.["claude-code"]??null,t.activeByProvider.codex=e.activeByProvider?.codex??null,t.accounts=Array.isArray(e.accounts)?e.accounts.filter(n=>!!n&&(n.providerId==="claude-code"||n.providerId==="codex")&&typeof n.id=="string"&&typeof n.addedAt=="string").map(n=>({...n,label:n.label||void 0,email:n.email||void 0,providerAccountId:n.providerAccountId||void 0,metadata:n.metadata?{email:n.metadata.email||void 0,workspaceId:n.metadata.workspaceId||void 0,planType:n.metadata.planType||void 0,authMode:n.metadata.authMode||void 0}:void 0})):[],t}function An(e){return{version:2,activeByProvider:{"claude-code":e.activeAccountUuid,codex:null},accounts:e.accounts.map(t=>({id:t.uuid,providerId:"claude-code",providerAccountId:t.uuid,email:t.email,label:t.label,addedAt:t.addedAt,metadata:{email:t.email}}))}}function $(){try{let e=Z.readFileSync(Qe(),"utf8"),t=JSON.parse(e);return t?.version===2?Ve(t):t?.version===1&&Array.isArray(t.accounts)?An(t):null}catch{return null}}function J(e){mn(),yn(Qe(),Ve(e))}function Sn(e){let t=$();return t?e?t.accounts.filter(n=>n.providerId===e):t.accounts:[]}function _n(e){let t=$();if(!t)return null;let n=t.activeByProvider[e];return n?t.accounts.find(r=>r.providerId===e&&r.id===n)??null:null}function Cn(e){let t=$()??ee(),n=t.accounts.findIndex(r=>r.providerId===e.providerId&&r.id===e.id);return n>=0?t.accounts[n]=e:t.accounts.push(e),J(t),t}function jn(e,t){let n=$()??ee();return n.activeByProvider[e]=t,J(n),n}function wn(e,t,n){let r=$()??ee();return r.accounts=r.accounts.filter(i=>i.providerId!==e).concat(t),r.activeByProvider[e]=n,J(r),r}function bn(e,t){let n=$();if(!n)return null;let r=n.accounts.findIndex(o=>o.providerId===e&&o.id===t);if(r===-1)return null;let[i]=n.accounts.splice(r,1);return n.activeByProvider[e]===t&&(n.activeByProvider[e]=n.accounts.find(o=>o.providerId===e)?.id??null),J(n),i}});var Ae=b(S=>{"use strict";var On=S&&S.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),Pn=S&&S.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Ye=S&&S.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&On(n,t,r[i]);return Pn(n,t),n}})();Object.defineProperty(S,"__esModule",{value:!0});S.getClaudeProfilesDir=Xe;S.getClaudeProfileHome=Ze;S.ensureClaudeProfileDirs=xn;S.claudeKeychainSuffix=et;S.claudeKeychainService=tt;S.readClaudeProfileIdentity=nt;S.keychainServiceExists=rt;S.isClaudeProfileAuthenticated=Nn;var In=l("child_process"),Dn=l("crypto"),ye=Ye(l("fs")),ne=Ye(l("path")),Mn=te(),Ge="Claude Code-credentials";function Xe(){return ne.join((0,Mn.getAccountsDir)(),"claude","profiles")}function Ze(e){return ne.join(Xe(),e,"home")}function xn(e){ye.mkdirSync(Ze(e),{recursive:!0,mode:448})}function et(e){return(0,Dn.createHash)("sha256").update(e).digest("hex").slice(0,8)}function tt(e){return e?`${Ge}-${et(e)}`:Ge}function nt(e){try{let t=JSON.parse(ye.readFileSync(ne.join(e,".claude.json"),"utf8")),n=t?.oauthAccount?.emailAddress,r=t?.oauthAccount?.accountUuid;return typeof n=="string"&&typeof r=="string"?{email:n,uuid:r}:null}catch{return null}}function rt(e){try{return(0,In.execFileSync)("security",["find-generic-password","-s",e],{stdio:["ignore","ignore","ignore"],timeout:4e3,killSignal:"SIGKILL"}),!0}catch{return!1}}function Nn(e){return(process.platform==="darwin"?rt(tt(e)):ye.existsSync(ne.join(e,".credentials.json")))&&nt(e)!==null}});var at=b(I=>{"use strict";var En=I&&I.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),Fn=I&&I.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Ce=I&&I.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&En(n,t,r[i]);return Fn(n,t),n}})();Object.defineProperty(I,"__esModule",{value:!0});I.KEYCHAIN_SERVICE=void 0;I.readActiveCredentials=Hn;I.writeActiveCredentials=Rn;var _e=Ce(l("fs")),it=Ce(l("path")),Tn=Ce(l("os")),ot=l("child_process"),ct=Ae();I.KEYCHAIN_SERVICE="Claude Code-credentials";function Se(e){return`'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function ut(e){return it.join(e??it.join(Tn.homedir(),".claude"),".credentials.json")}function Hn(e){if(process.platform==="darwin")try{let t=(0,ot.execFileSync)("security",["find-generic-password","-s",(0,ct.claudeKeychainService)(e),"-w"],{encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:4e3,killSignal:"SIGKILL"});return JSON.parse(t.trim())}catch{return null}try{return JSON.parse(_e.readFileSync(ut(e),"utf8"))}catch{return null}}function Rn(e,t){let n=JSON.stringify(e);if(JSON.parse(n),process.platform==="darwin"){let o=(0,ct.claudeKeychainService)(t),u=process.env.USER||"user",s=["add-generic-password","-U","-s",Se(o),"-a",Se(u),"-w",Se(n)].join(" ");(0,ot.execFileSync)("security",["-i"],{input:s+`
5
+ `,stdio:["pipe","pipe","pipe"],timeout:4e3,killSignal:"SIGKILL"});return}let r=ut(t),i=r+".tmp";_e.writeFileSync(i,n,{encoding:"utf8",mode:384}),_e.renameSync(i,r)}});var At=b(v=>{"use strict";var $n=v&&v.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),Ln=v&&v.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),je=v&&v.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&$n(n,t,r[i]);return Ln(n,t),n}})();Object.defineProperty(v,"__esModule",{value:!0});v.readAccountRegistry=oe;v.writeAccountRegistry=ie;v.readActiveClaudeAccount=ce;v.addCurrentAccount=Jn;v.switchToAccount=kn;v.resolveActiveClaudeHome=Qn;v.applyActiveClaudeToLiveHome=mt;v.reconcileClaudeAuthState=Vn;v.removeAccount=Gn;v.listAccounts=Yn;v.getActiveAccount=yt;v.resolveActiveClaudeAccount=Xn;v.isMultiAccountEnabled=Zn;var m=je(l("fs")),h=je(l("path")),st=je(l("os")),D=at(),A=te(),U=Ae();function dt(){return h.join(st.homedir(),".claude")}function x(){let e=h.join(dt(),".claude.json");try{if(JSON.parse(m.readFileSync(e,"utf8"))?.oauthAccount)return e}catch{}return h.join(st.homedir(),".claude.json")}function z(){return h.join((0,A.getAccountsDir)(),"credentials")}function K(){return h.join((0,A.getAccountsDir)(),"configs")}function qn(){return h.join((0,A.getAccountsDir)(),"claude",".profiles-migrated-v1")}function Bn(){for(let e of[(0,A.getAccountsDir)(),z(),K()])m.mkdirSync(e,{recursive:!0,mode:448})}function F(e,t,n=384){m.mkdirSync(h.dirname(e),{recursive:!0,mode:448});let r=e+".tmp",i=JSON.stringify(t,null,2);JSON.parse(i),m.writeFileSync(r,i,{encoding:"utf8",mode:n}),m.renameSync(r,e)}function we(e){try{return JSON.parse(m.readFileSync(e,"utf8"))}catch{return null}}function lt(e){return we(e)?.oauthAccount??null}function ft(e,t){F(h.join((0,U.getClaudeProfileHome)(e),".claude.json"),{oauthAccount:t})}function pt(e,t){(0,D.writeActiveCredentials)(t,(0,U.getClaudeProfileHome)(e))}function re(e,t,n){ft(e,n),pt(e,t)}function vt(e){return we(h.join(z(),`${e}.credentials.json`))}function gt(e){return we(h.join(K(),`${e}.config.json`))}function ht(e){return lt(h.join((0,U.getClaudeProfileHome)(e),".claude.json"))}function zn(e){let t=(0,D.readActiveCredentials)((0,U.getClaudeProfileHome)(e)),n=ht(e);if(t&&n)return{credentials:t,oauthAccount:n};let r=vt(e),i=gt(e);if(r&&i){try{re(e,r,i)}catch{}return{credentials:r,oauthAccount:i}}return null}function Kn(){return lt(x())}function Un(){let e=ce();if(!e)return;let t=(0,D.readActiveCredentials)(),n=Kn();if(t)try{F(h.join(z(),`${e.uuid}.credentials.json`),t),pt(e.uuid,t)}catch{}if(n)try{F(h.join(K(),`${e.uuid}.config.json`),n),ft(e.uuid,n)}catch{}}function Wn(e){let t={};try{t=JSON.parse(m.readFileSync(x(),"utf8"))}catch{}t.oauthAccount=e,F(x(),t)}function oe(){let e=(0,A.readSavedAccountRegistry)();if(!e)return null;let t=e.accounts.filter(n=>n.providerId==="claude-code").map(n=>({uuid:n.providerAccountId??n.id,email:n.email??n.metadata?.email??"unknown",label:n.label,addedAt:n.addedAt}));return{version:1,activeAccountUuid:e.activeByProvider["claude-code"],accounts:t}}function ie(e){let t=e.accounts.map(n=>({id:n.uuid,providerId:"claude-code",providerAccountId:n.uuid,email:n.email,label:n.label,addedAt:n.addedAt,metadata:{email:n.email}}));(0,A.replaceSavedAccountProfiles)("claude-code",t,e.activeAccountUuid)}function ce(){try{let e=m.readFileSync(x(),"utf8"),t=JSON.parse(e),n=t?.oauthAccount?.emailAddress,r=t?.oauthAccount?.accountUuid;return!n||!r?null:{email:n,uuid:r}}catch{return null}}function Jn(e){let t=ce();if(!t)return{success:!1,error:"No active Claude account found. Sign in with `claude` first."};let n=(0,D.readActiveCredentials)();if(!n)return{success:!1,error:"Could not read Claude credentials."};let r;try{r=JSON.parse(m.readFileSync(x(),"utf8")).oauthAccount}catch{return{success:!1,error:"Could not read Claude config file."}}Bn();let i=oe()??{version:1,activeAccountUuid:null,accounts:[]},o=i.accounts.find(u=>u.uuid===t.uuid);if(o){e!==void 0&&(o.label=e),F(h.join(z(),`${t.uuid}.credentials.json`),n),F(h.join(K(),`${t.uuid}.config.json`),r);try{re(t.uuid,n,r)}catch{}return i.activeAccountUuid=t.uuid,ie(i),{success:!0}}F(h.join(z(),`${t.uuid}.credentials.json`),n),F(h.join(K(),`${t.uuid}.config.json`),r);try{re(t.uuid,n,r)}catch{}return i.accounts.push({uuid:t.uuid,email:t.email,label:e,addedAt:new Date().toISOString()}),i.activeAccountUuid=t.uuid,ie(i),{success:!0}}function kn(e){let t=oe();if(!t)return{success:!1,error:"No account registry found. Save an account first."};if(!t.accounts.find(u=>u.uuid===e))return{success:!1,error:`Account ${e} not found in registry.`};let r=null,i=null;r=(0,D.readActiveCredentials)();try{i=m.readFileSync(x(),"utf8")}catch{}try{Un()}catch{}try{(0,A.setActiveSavedAccount)("claude-code",e)}catch(u){return{success:!1,error:`Failed to update account registry: ${u}`}}let o=mt();if(!o.success){try{(0,A.setActiveSavedAccount)("claude-code",t.activeAccountUuid)}catch{}if(r)try{(0,D.writeActiveCredentials)(r)}catch{}if(i)try{m.writeFileSync(x(),i)}catch{}return o}return o}function Qn(){let e=(0,A.getActiveSavedAccount)("claude-code");return e?(0,U.getClaudeProfileHome)(e.providerAccountId??e.id):dt()}function mt(){let e=(0,A.getActiveSavedAccount)("claude-code");if(!e)return{success:!1,error:"No active Claude account found."};let t=e.providerAccountId??e.id,n=zn(t);if(!n)return{success:!1,error:`Stored credentials for ${e.email??t} not found.`};let r=(0,D.readActiveCredentials)(),i=null;try{i=m.readFileSync(x(),"utf8")}catch{}try{(0,D.writeActiveCredentials)(n.credentials)}catch(o){if(r)try{(0,D.writeActiveCredentials)(r)}catch{}return{success:!1,error:`Failed to write credentials: ${o}`}}try{Wn(n.oauthAccount)}catch(o){if(r)try{(0,D.writeActiveCredentials)(r)}catch{}if(i)try{m.writeFileSync(x(),i)}catch{}return{success:!1,error:`Failed to write config: ${o}`}}return{success:!0}}function Vn(){try{let e=qn();if(m.existsSync(e))return;let t=(0,A.readSavedAccountRegistry)();if(t)for(let n of t.accounts.filter(r=>r.providerId==="claude-code"))try{let r=n.providerAccountId??n.id;if((0,D.readActiveCredentials)((0,U.getClaudeProfileHome)(r))&&ht(r))continue;let i=vt(r),o=gt(r);if(!i||!o)continue;re(r,i,o)}catch{}m.mkdirSync(h.dirname(e),{recursive:!0,mode:448}),m.writeFileSync(e,new Date().toISOString()+`
6
+ `,{encoding:"utf8",mode:384})}catch{}}function Gn(e){let t=oe();if(!t)return{success:!1,error:"No account registry found."};let n=t.accounts.findIndex(r=>r.uuid===e);if(n===-1)return{success:!1,error:`Account ${e} not found.`};try{m.unlinkSync(h.join(z(),`${e}.credentials.json`))}catch{}try{m.unlinkSync(h.join(K(),`${e}.config.json`))}catch{}return t.accounts.splice(n,1),t.activeAccountUuid===e&&(t.activeAccountUuid=t.accounts[0]?.uuid??null),ie(t),{success:!0}}function Yn(){return(0,A.listSavedAccountProfiles)("claude-code").map(e=>({uuid:e.providerAccountId??e.id,email:e.email??e.metadata?.email??"unknown",label:e.label,addedAt:e.addedAt}))}function yt(){let e=(0,A.getActiveSavedAccount)("claude-code");return e?{uuid:e.providerAccountId??e.id,email:e.email??e.metadata?.email??"unknown",label:e.label,addedAt:e.addedAt}:null}function Xn(){let e=ce();if(e){let n=(0,A.listSavedAccountProfiles)("claude-code"),r=n.find(i=>(i.providerAccountId??i.id)===e.uuid)??n.find(i=>(i.email??i.metadata?.email)===e.email);if(r){let i=(0,A.getActiveSavedAccount)("claude-code");if(!i||i.id!==r.id)try{(0,A.setActiveSavedAccount)("claude-code",r.id)}catch{}}return{email:e.email,label:r?.label,providerAccountId:e.uuid,registryAccountId:r?.id,source:"live"}}let t=yt();return t?{email:t.email,label:t.label,providerAccountId:t.uuid,registryAccountId:t.uuid,source:"registry"}:{source:"none"}}function Zn(){return(0,A.listSavedAccountProfiles)("claude-code").length>=1}});var xt=b(f=>{"use strict";var er=f&&f.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),tr=f&&f.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Pe=f&&f.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&er(n,t,r[i]);return tr(n,t),n}})();Object.defineProperty(f,"__esModule",{value:!0});f.getSystemCodexHome=k;f.getCodexMonitoringHomes=cr;f.getCodexProfilesDir=wt;f.getCodexProfileHome=N;f.readCodexAccountMetadata=ae;f.isCodexProfileAuthenticated=Pt;f.listCodexAccounts=Q;f.getActiveCodexAccount=se;f.resolveSidekickCodexHome=Me;f.resolveActiveCodexAccount=mr;f.getCodexExecutionEnv=yr;f.prepareCodexAccount=Ar;f.finalizeCodexAccount=It;f.switchToCodexAccount=_r;f.reconcileCodexAuthState=Cr;f.removeCodexAccount=jr;var d=Pe(l("fs")),nr=Pe(l("os")),a=Pe(l("path")),_t=l("child_process"),rr=l("crypto"),C=te(),ir=11520*60*1e3;function Ct(){return a.join(nr.homedir(),".codex")}function jt(){let e=process.env.CODEX_HOME?.trim();return e||null}function or(e){let t=new Set,n=[];for(let r of e){let i=a.resolve(r);t.has(i)||(t.add(i),n.push(r))}return n}function k(){return jt()??Ct()}function cr(){let e=jt();if(e)return[e];let t=[Ct()];for(let n of Q()){let r=N(n.id);d.existsSync(a.join(r,"sessions"))&&t.push(r)}return or(t)}function wt(){return a.join((0,C.getAccountsDir)(),"codex","profiles")}function Ie(e){return a.join(wt(),e)}function N(e){return a.join(Ie(e),"codex-home")}function bt(e){return a.join(Ie(e),"profile.json")}function Ot(e){d.mkdirSync(N(e),{recursive:!0,mode:448})}function ur(e,t,n=384){let r=e+".tmp",i=JSON.stringify(t,null,2);JSON.parse(i);try{d.writeFileSync(r,i,{encoding:"utf8",mode:n}),d.renameSync(r,e)}catch(o){try{d.unlinkSync(r)}catch{}throw o}}function _(e,t,n=384){d.mkdirSync(a.dirname(e),{recursive:!0,mode:448});let r=e+".tmp";try{d.writeFileSync(r,t,{encoding:"utf8",mode:n}),d.renameSync(r,e)}catch(i){try{d.unlinkSync(r)}catch{}throw i}}function T(e){try{return d.readFileSync(e,"utf8")}catch{return null}}function ar(e){try{return JSON.parse(d.readFileSync(bt(e),"utf8"))}catch{return null}}function sr(e,t){Ot(e),ur(bt(e),t)}function be(e,t){return d.existsSync(e)?(d.mkdirSync(a.dirname(t),{recursive:!0,mode:448}),d.copyFileSync(e,t),!0):!1}function dr(e,t){be(a.join(e,"config.toml"),a.join(t,"config.toml"))}function lr(e,t){let n=be(a.join(e,"auth.json"),a.join(t,"auth.json")),r=be(a.join(e,".credentials.json"),a.join(t,".credentials.json"));return n||r}function fr(e){let t=e.split(".");if(t.length<2)return null;try{let n=Buffer.from(t[1],"base64url").toString("utf8");return JSON.parse(n)}catch{return null}}function De(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function L(e){let t=De(e);if(!t)return null;let n=t.tokens?.id_token,r=n?fr(n):null,i=r?.["https://api.openai.com/profile"],o=r?.["https://api.openai.com/auth"],u=typeof r?.email=="string"?r.email:typeof i?.email=="string"?i.email:void 0,s=typeof o?.chatgpt_account_id=="string"?o.chatgpt_account_id:t.tokens?.account_id,c=typeof o?.chatgpt_plan_type=="string"?o.chatgpt_plan_type:void 0,g=t.OPENAI_API_KEY||t.auth_mode==="api_key"?"api-key":"chatgpt";return{email:u,workspaceId:s,planType:c,authMode:g}}function Oe(e,t){let n=De(e);if(n?.last_refresh){let r=Date.parse(n.last_refresh);if(!Number.isNaN(r))return r}if(t)try{return d.statSync(t).mtimeMs}catch{}return null}function pr(e){let t=L(T(a.join(e,"auth.json")));return t?{email:t.email,workspaceId:t.workspaceId,planType:t.planType,authMode:t.authMode}:{}}function vr(e){let t=a.join(e,".credentials.json");if(!d.existsSync(t))return{};try{let n=JSON.parse(d.readFileSync(t,"utf8"));if(typeof n.OPENAI_API_KEY=="string"||typeof n.CODEX_API_KEY=="string")return{authMode:"api-key"}}catch{}return{}}function ue(e){try{let t={...process.env,CODEX_HOME:e},n=(0,_t.spawnSync)("codex",["login","status"],{encoding:"utf8",env:t,timeout:4e3,killSignal:"SIGKILL"}),r=String(n.stdout??"").trim();if(n.status===0&&/^Logged in/i.test(r))return/API key/i.test(r)?{loggedIn:!0,authMode:"api-key"}:/ChatGPT/i.test(r)?{loggedIn:!0,authMode:"chatgpt"}:{loggedIn:!0}}catch{}return{loggedIn:!1}}function gr(){if(process.platform==="win32")return!1;try{return(0,_t.spawnSync)("pgrep",["-x","codex"],{encoding:"utf8",timeout:4e3,killSignal:"SIGKILL"}).status===0}catch{return!1}}function ae(e){let t=pr(e);if(t.email||t.workspaceId||t.planType||t.authMode)return t;let n=vr(e);if(n.authMode)return n;let r=ue(e);return r.loggedIn?{authMode:r.authMode??"unknown"}:{}}function Pt(e){return d.existsSync(a.join(e,"auth.json"))||d.existsSync(a.join(e,".credentials.json"))?!0:ue(e).loggedIn}function hr(e,t){let n=e.trim().toLowerCase();return Q().find(i=>i.id!==t&&(i.label??"").trim().toLowerCase()===n)?`A Codex account named "${e}" already exists.`:null}function Q(){return(0,C.listSavedAccountProfiles)("codex")}function se(){return(0,C.getActiveSavedAccount)("codex")}function Me(){return k()}function mr(){let e=L(T(a.join(Me(),"auth.json")));if(e&&(e.email||e.workspaceId)){let n=xe(e);if(n){let r=(0,C.getActiveSavedAccount)("codex");if(!r||r.id!==n.id)try{(0,C.setActiveSavedAccount)("codex",n.id)}catch{}}return{email:e.email??n?.email??n?.metadata?.email,label:n?.label,providerAccountId:n?.providerAccountId??e.workspaceId,registryAccountId:n?.id,source:"live"}}let t=se();return t?{email:t.email??t.metadata?.email,label:t.label,providerAccountId:t.providerAccountId,registryAccountId:t.id,source:"registry"}:{source:"none"}}function yr(e=process.env){return{...e,CODEX_HOME:Me()}}function Ar(e){let t=e.trim();if(!t)return{success:!1,error:"Codex accounts require a non-empty label."};let n=hr(t);if(n)return{success:!1,error:n};let r=(0,rr.randomUUID)(),i=N(r);Ot(r),sr(r,{label:t,addedAt:new Date().toISOString()});let o=k();return dr(o,i),lr(o,i)?{...It(r),profileId:r,codexHome:i,needsLogin:!1}:{success:!0,profileId:r,codexHome:i,needsLogin:!0}}function It(e,t={}){let n=ar(e);if(!n)return{success:!1,error:`Codex profile ${e} was not prepared.`};let r=N(e);if(!Pt(r))return{success:!1,error:"Codex profile is not authenticated yet."};let i=ae(r),o={id:e,providerId:"codex",label:n.label,email:i.email,addedAt:n.addedAt,metadata:i};return(0,C.upsertSavedAccountProfile)(o),t.activate===!1?{success:!0}:d.existsSync(a.join(r,"auth.json"))||d.existsSync(a.join(r,".credentials.json"))?Mt(o):((0,C.setActiveSavedAccount)("codex",e),{success:!0,warning:"Codex stores credentials in the OS keyring; sidekick cannot swap them per account, so `codex` keeps using the keyring credentials."})}function St(){return a.join((0,C.getAccountsDir)(),"codex","stash")}function Dt(e,t){try{let n=new Date().toISOString().replace(/[:.]/g,"-"),r=null;if(e&&(r=a.join(St(),`auth-${n}.json`),_(r,e)),t){let i=a.join(St(),`credentials-${n}.json`);_(i,t),r=r??i}return r}catch{return null}}function xe(e){let t=Q();if(e?.workspaceId){let n=t.find(r=>r.metadata?.workspaceId===e.workspaceId);if(n)return n}if(e?.email){let n=t.find(r=>(r.email??r.metadata?.email)===e.email);if(n)return n}return!e?.workspaceId&&!e?.email?se():null}function Sr(e,t){if(!e&&!t)return{};try{let n=L(e),r=xe(n);if(!r){let o=Dt(e,t);return{stashPath:o??void 0,warning:o?`Live Codex credentials did not match any saved account; stashed at ${o}.`:"Live Codex credentials did not match any saved account and could not be stashed."}}let i=N(r.id);e&&_(a.join(i,"auth.json"),e),t&&_(a.join(i,".credentials.json"),t);try{let o=ae(i);(0,C.upsertSavedAccountProfile)({...r,email:o.email??r.email,metadata:{...r.metadata,...o}})}catch{}return{syncedProfileId:r.id}}catch(n){return{warning:`Could not back up live Codex credentials: ${n}`}}}function Mt(e){let t=k(),n=a.join(t,"auth.json"),r=a.join(t,".credentials.json"),i=T(n),o=T(r);if(!i&&!o&&ue(t).loggedIn)return{success:!1,error:'Codex stores credentials in the OS keyring; file-based account switching is not supported. Set `cli_auth_credentials_store = "file"` in ~/.codex/config.toml and run `codex login` again.'};let u=N(e.id),s=a.join(u,"auth.json"),c=T(s),g=T(a.join(u,".credentials.json")),H=e.label??e.email??e.id;if(!c&&!g)return{success:!1,error:`No stored credentials for "${H}". Remove and re-add this account.`};if(c&&!De(c))return{success:!1,error:`Stored credentials for "${H}" are corrupted. Remove and re-add this account.`};let E=[];gr()&&E.push("A codex process appears to be running; restart codex sessions so they pick up the switched account.");let P=L(i),W=L(c),$e=e.metadata?.workspaceId??W?.workspaceId,Le=e.email??e.metadata?.email??W?.email;if(!!(P?.workspaceId&&$e&&P.workspaceId===$e||P?.email&&Le&&P.email===Le||i!==null&&i===c||!i&&!c&&o!==null&&o===g)){try{i&&_(s,i),o&&_(a.join(u,".credentials.json"),o);let B=ae(u);(0,C.upsertSavedAccountProfile)({...e,email:B.email??e.email,metadata:{...e.metadata,...B}})}catch{}return(0,C.setActiveSavedAccount)("codex",e.id),{success:!0,warning:E.length?E.join(" "):void 0}}let qe=Oe(c,s);qe!==null&&Date.now()-qe>ir&&E.push(`Stored credentials for "${H}" have not been refreshed in over 8 days; codex may ask you to log in again.`);let Be=Sr(i,o);Be.warning&&E.push(Be.warning);let ze=()=>{try{i?_(n,i):d.rmSync(n,{force:!0}),o?_(r,o):d.rmSync(r,{force:!0})}catch{}};try{c?(_(n,c),g?_(r,g):o&&d.rmSync(r,{force:!0})):(_(r,g),i&&d.rmSync(n,{force:!0}))}catch(B){return ze(),{success:!1,error:`Failed to write Codex credentials: ${B}`}}try{(0,C.setActiveSavedAccount)("codex",e.id)}catch(B){return ze(),{success:!1,error:`Failed to update account registry: ${B}`}}return{success:!0,warning:E.length?E.join(" "):void 0}}function _r(e){let t=Q().find(n=>n.id===e);return t?Mt(t):{success:!1,error:`Codex account ${e} not found.`}}function Cr(){try{let e=a.join((0,C.getAccountsDir)(),"codex",".live-auth-migrated-v1");if(d.existsSync(e))return;let t=()=>_(e,new Date().toISOString()+`
7
+ `),n=se();if(!n){t();return}let r=N(n.id),i=a.join(r,"auth.json"),o=T(i);if(!o){t();return}let u=k(),s=a.join(u,"auth.json"),c=T(s);if(!c){ue(u).loggedIn||_(s,o),t();return}let g=L(c),H=L(o);if(!!(g?.workspaceId&&H?.workspaceId&&g.workspaceId===H.workspaceId||g?.email&&g.email===H?.email)){let P=Oe(c,s),W=Oe(o,i);W!==null&&(P===null||W>P)?(Dt(c,null),_(s,o)):_(i,c)}else{let P=xe(g);P&&P.id!==n.id&&(_(a.join(N(P.id),"auth.json"),c),(0,C.setActiveSavedAccount)("codex",P.id))}t()}catch{}}function jr(e){return(0,C.removeSavedAccountProfile)("codex",e)?(d.rmSync(Ie(e),{recursive:!0,force:!0}),{success:!0}):{success:!1,error:`Codex account ${e} not found.`}}});var Nt=b(Ne=>{"use strict";Object.defineProperty(Ne,"__esModule",{value:!0});Ne.getActiveAccountStatus=Pr;var wr=At(),br=xt();function Or(e){return e instanceof Error?e.message:String(e)}function Pr(e){try{let t=(0,wr.resolveActiveClaudeAccount)(),n=(0,br.resolveActiveCodexAccount)(),r=t.source!=="none"?{present:!0,...t.registryAccountId?{accountId:t.registryAccountId}:{},email:t.email,label:t.label??t.email}:{present:!1},i=n.source!=="none"?{present:!0,...n.registryAccountId?{accountId:n.registryAccountId}:{},email:n.email,label:n.label??n.email??n.providerAccountId}:{present:!1};return{ok:r.present||i.present,claude:r,codex:i,error:e}}catch(t){return{ok:!1,claude:{present:!1},codex:{present:!1},error:e??Or(t)}}}});var Et=b(Ee=>{"use strict";Object.defineProperty(Ee,"__esModule",{value:!0});Ee.isAggregateCodexLimit=Ir;function Ir(e){return!e||e==="codex"}});var qt=b(M=>{"use strict";var Dr=M&&M.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),Mr=M&&M.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Fe=M&&M.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&Dr(n,t,r[i]);return Mr(n,t),n}})();Object.defineProperty(M,"__esModule",{value:!0});M.writeQuotaSnapshot=qr;M.readQuotaSnapshot=Br;var Ht=Fe(l("crypto")),j=Fe(l("fs")),xr=Fe(l("path")),Rt=he(),Ft=Et(),Nr=15,Er=1e4,Fr=15e3,Tr=new Int32Array(new SharedArrayBuffer(4));function Te(){return xr.join((0,Rt.getConfigDir)(),"quota-snapshots.json")}function $t(){j.mkdirSync((0,Rt.getConfigDir)(),{recursive:!0,mode:448})}function Hr(e,t,n=384){let r=`${e}.${process.pid}.${Date.now()}.${Ht.randomBytes(8).toString("hex")}.tmp`,i=JSON.stringify(t,null,2);JSON.parse(i);try{j.writeFileSync(r,i,{encoding:"utf8",mode:n}),j.renameSync(r,e)}catch(o){try{j.rmSync(r,{force:!0})}catch{}throw o}}function Lt(){try{let e=JSON.parse(j.readFileSync(Te(),"utf8"));if(e?.version===1&&Array.isArray(e.snapshots))return e}catch{}return{version:1,snapshots:[]}}function Rr(e){$t(),Hr(Te(),e)}function $r(e){$t();let t=`${Te()}.lock`,n=`${process.pid}:${Ht.randomBytes(16).toString("hex")}`,r=Date.now()+Fr;for(;;)try{let i=j.openSync(t,"wx",384);j.writeFileSync(i,n,"utf8"),j.fsyncSync(i),j.closeSync(i);break}catch(i){if(i.code!=="EEXIST")throw i;try{let o=j.statSync(t);if(Date.now()-o.mtimeMs>Er){let u=j.readFileSync(t,"utf8"),s=Number.parseInt(u.split(":",1)[0],10),c=Number.isInteger(s)&&s>0;if(c)try{process.kill(s,0)}catch(g){c=g.code==="EPERM"}c||j.rmSync(t,{force:!0})}}catch{}if(Date.now()>=r)throw new Error(`Timed out waiting for quota lock: ${t}`);Atomics.wait(Tr,0,0,Nr)}try{return e()}finally{try{j.readFileSync(t,"utf8")===n&&j.rmSync(t,{force:!0})}catch{}}}function Tt(e){let t=e.capturedAt?Date.parse(e.capturedAt):NaN;return Number.isFinite(t)?t:0}function de(e){let t=Date.parse(e);return Number.isFinite(t)?t:0}function Lr(e,t){let n=(0,Ft.isAggregateCodexLimit)(e.limitId),r=(0,Ft.isAggregateCodexLimit)(t.limitId);if(n!==r)return n;let i=de(e.fiveHour.resetsAt),o=de(t.fiveHour.resetsAt);if(i!==o)return i>o;let u=de(e.sevenDay.resetsAt),s=de(t.sevenDay.resetsAt);if(u!==s)return u>s;let c=e.fiveHour.utilization+e.sevenDay.utilization,g=t.fiveHour.utilization+t.sevenDay.utilization;return c!==g?c>g:Tt(e)>Tt(t)}function qr(e,t,n){$r(()=>{let r=Lt(),i=r.snapshots.findIndex(c=>c.providerId===e&&c.accountId===t),o=i>=0?r.snapshots[i].quota:void 0,u={...n,providerId:e,capturedAt:n.capturedAt??new Date().toISOString(),source:n.source??"session",stale:!1,resetCredits:n.resetCredits??(e==="codex"?o?.resetCredits:void 0)};if(i>=0&&Lr(r.snapshots[i].quota,u))return;let s={providerId:e,accountId:t,quota:u};i>=0?r.snapshots[i]=s:r.snapshots.push(s),Rr(r)})}function Br(e,t){let r=Lt().snapshots.find(i=>i.providerId===e&&i.accountId===t);return r?{...r.quota,providerId:e,source:"cache",stale:!0}:null}});var Re=b(V=>{"use strict";Object.defineProperty(V,"__esModule",{value:!0});V.BurnRateCalculator=void 0;V.estimateTimeToQuota=Bt;var He=class{events=[];windowMs;constructor(t=5){this.windowMs=t*6e4}addEvent(t,n=new Date){this.events.push({tokens:t,timestamp:n}),this.pruneOldEvents(n)}calculateBurnRate(t=new Date){if(this.pruneOldEvents(t),this.events.length===0)return 0;let n=this.events.reduce((i,o)=>i+o.tokens,0),r=Math.max((t.getTime()-this.events[0].timestamp.getTime())/6e4,1);return n/r}estimateTimeToQuota(t,n,r=new Date){return Bt(t,n,this.calculateBurnRate(r))}getEventCount(){return this.events.length}reset(){this.events=[]}pruneOldEvents(t){let n=t.getTime()-this.windowMs;this.events=this.events.filter(r=>r.timestamp.getTime()>=n)}};V.BurnRateCalculator=He;function Bt(e,t,n){if(n<=0)return null;let r=t-e;return r<=0?0:r/n}});var zt=b(O=>{"use strict";Object.defineProperty(O,"__esModule",{value:!0});O.SEVEN_DAY_WINDOW_MS=O.FIVE_HOUR_WINDOW_MS=void 0;O.projectQuotaWindow=Y;O.withQuotaProjections=Wr;O.fetchQuota=kr;var zr="https://api.anthropic.com/api/oauth/usage",Kr="oauth-2025-04-20",Ur=1e4;O.FIVE_HOUR_WINDOW_MS=5*36e5;O.SEVEN_DAY_WINDOW_MS=7*864e5;function Y(e){let{utilization:t,resetsAt:n,windowMs:r,capturedAt:i}=e;if(!n||t<=0||!Number.isFinite(t)||r<=0)return;let o=new Date(n).getTime();if(!Number.isFinite(o))return;let u=i?Date.parse(i):NaN,s=Number.isFinite(u)?u:Date.now(),c=r-(o-s);if(!(c<=0))return Math.min(Math.round(t*(r/c)),200)}function Wr(e,t={}){if(!e.available)return e;let n={...e},r=t.capturedAt??e.capturedAt;if(n.projectedFiveHour==null){let i=Y({utilization:n.fiveHour.utilization,resetsAt:n.fiveHour.resetsAt,windowMs:t.fiveHourWindowMs??O.FIVE_HOUR_WINDOW_MS,capturedAt:r});i!==void 0&&(n.projectedFiveHour=i)}if(n.projectedSevenDay==null){let i=Y({utilization:n.sevenDay.utilization,resetsAt:n.sevenDay.resetsAt,windowMs:t.sevenDayWindowMs??O.SEVEN_DAY_WINDOW_MS,capturedAt:r});i!==void 0&&(n.projectedSevenDay=i)}return n}function G(e,t={}){return{fiveHour:{utilization:0,resetsAt:""},sevenDay:{utilization:0,resetsAt:""},available:!1,error:e,...t}}function Jr(e){if(!e)return;let t=Number(e);if(Number.isFinite(t)&&t>=0)return Math.round(t*1e3);let n=Date.parse(e);if(!Number.isNaN(n))return Math.max(n-Date.now(),0)}async function kr(e){let t=new AbortController,n=setTimeout(()=>t.abort(),Ur);n.unref();try{let r=await fetch(zr,{method:"GET",signal:t.signal,headers:{Authorization:`Bearer ${e}`,"anthropic-beta":Kr,"Content-Type":"application/json"}});if(!r.ok)return r.status===401?G("Sign in to Claude Code to view quota",{failureKind:"auth",httpStatus:r.status}):r.status===429?G(`API error: ${r.status}`,{failureKind:"rate_limit",httpStatus:r.status,retryAfterMs:Jr(r.headers.get("retry-after"))}):r.status>=500&&r.status<=599?G(`API error: ${r.status}`,{failureKind:"server",httpStatus:r.status}):G(`API error: ${r.status}`,{failureKind:"unknown",httpStatus:r.status});let i=await r.json(),o=i.five_hour?.utilization??0,u=i.seven_day?.utilization??0,s=i.five_hour?.resets_at??"",c=i.seven_day?.resets_at??"";return{fiveHour:{utilization:o,resetsAt:s},sevenDay:{utilization:u,resetsAt:c},available:!0,projectedFiveHour:Y({utilization:o,resetsAt:s,windowMs:O.FIVE_HOUR_WINDOW_MS}),projectedSevenDay:Y({utilization:u,resetsAt:c,windowMs:O.SEVEN_DAY_WINDOW_MS})}}catch{return G("Network error",{failureKind:"network"})}finally{clearTimeout(n)}}});var Ut=b(le=>{"use strict";Object.defineProperty(le,"__esModule",{value:!0});le.selectStatuslineAccount=Kt;le.formatStatusline=Gr;var Qr=zt(),Vr=Re();function Kt(e){return e.accounts.claude.present?{providerId:"claude-code",accountId:e.accounts.claude.accountId,accountLabel:e.accounts.claude.label??e.accounts.claude.email??"claude",quota:e.claudeQuota??null}:e.accounts.codex.present?{providerId:"codex",accountId:e.accounts.codex.accountId,accountLabel:e.accounts.codex.label??e.accounts.codex.email??"codex",quota:e.codexQuota??null}:null}function Gr(e){let t=Kt(e);if(!t)return"acct:none \xB7 quota unavailable";let n=Xr(t.accountLabel),r=t.quota;if(!r?.available)return`acct:${n} \xB7 quota unavailable`;let i=e.now??new Date,o=Zr(r.fiveHour.utilization),u=ei(r.fiveHour.resetsAt,i),s=Yr(r,i),c=s==null?"":` \xB7 ~${ti(s)} left`;return`acct:${n} \xB7 5h ${Math.round(o)}% resets ${u}${c}`}function Yr(e,t){let n=Date.parse(e.fiveHour.resetsAt);if(!Number.isFinite(n))return null;let r=t.getTime();if(n<=r)return null;let i=e.capturedAt?Date.parse(e.capturedAt):t.getTime(),o=Number.isFinite(i)?i:t.getTime();if(o>=n)return null;let u=(o-(n-Qr.FIVE_HOUR_WINDOW_MS))/6e4;if(u<=0||e.fiveHour.utilization<=0)return null;let s=e.fiveHour.utilization/u,c=(0,Vr.estimateTimeToQuota)(e.fiveHour.utilization,100,s),g=(n-r)/6e4;return c!==null&&c<g?c:null}function Xr(e){let t=e.trim();return(t.includes("@")?t.split("@")[0]:t).replace(/\s+/g,"-").slice(0,24)||"unknown"}function Zr(e){return Number.isFinite(e)?Math.min(100,Math.max(0,e)):0}function ei(e,t){let n=new Date(e),r=Number.isNaN(n.getTime())?t:n;return new Intl.DateTimeFormat(void 0,{hour:"2-digit",minute:"2-digit",hour12:!1}).format(r)}function ti(e){let t=Math.max(0,Math.round(e));if(t<60)return`${t}min`;let n=Math.floor(t/60),r=t%60;return r?`${n}h${r}m`:`${n}h`}});var kt=b(w=>{"use strict";Object.defineProperty(w,"__esModule",{value:!0});w.selectStatuslineAccount=w.formatStatusline=w.estimateTimeToQuota=w.BurnRateCalculator=w.readQuotaSnapshot=w.getActiveAccountStatus=void 0;var ni=Nt();Object.defineProperty(w,"getActiveAccountStatus",{enumerable:!0,get:function(){return ni.getActiveAccountStatus}});var ri=qt();Object.defineProperty(w,"readQuotaSnapshot",{enumerable:!0,get:function(){return ri.readQuotaSnapshot}});var Wt=Re();Object.defineProperty(w,"BurnRateCalculator",{enumerable:!0,get:function(){return Wt.BurnRateCalculator}});Object.defineProperty(w,"estimateTimeToQuota",{enumerable:!0,get:function(){return Wt.estimateTimeToQuota}});var Jt=Ut();Object.defineProperty(w,"formatStatusline",{enumerable:!0,get:function(){return Jt.formatStatusline}});Object.defineProperty(w,"selectStatuslineAccount",{enumerable:!0,get:function(){return Jt.selectStatuslineAccount}})});var q=rn(kt(),1);function Qt(){let e=(0,q.getActiveAccountStatus)(),t=e.claude.accountId?(0,q.readQuotaSnapshot)("claude-code",e.claude.accountId):null,n=e.codex.accountId?(0,q.readQuotaSnapshot)("codex",e.codex.accountId):null;process.stdout.write(`${(0,q.formatStatusline)({accounts:e,claudeQuota:t,codexQuota:n})}
8
+ `)}var Vt=["--project","--provider"],ii=["--json","--no-color"];function oi(e){for(let t=0;t<e.length;t++){let n=e[t];if(!ii.includes(n)){if(Vt.includes(n)){t++;continue}if(!Vt.some(r=>n.startsWith(`${r}=`)))return n}}}function Gt(e){return oi(e)==="statusline"}Gt(process.argv.slice(2))?Qt():await import("./sidekick-main.mjs");