sidekick-agent-hub 0.24.4 → 0.24.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -131,9 +131,25 @@ Export session data as text, markdown, or JSON.
131
131
  | `--expand` | Show all events including noise |
132
132
  | `--session <id>` | Target a specific session (default: most recent) |
133
133
  | `--list` | List available sessions and exit |
134
+ | `--limit <n>` | Maximum sessions listed with `--list` (default: 50) |
134
135
 
135
136
  Global flags `--project` and `--provider` also apply.
136
137
 
138
+ ## Prompt History
139
+
140
+ ```bash
141
+ sidekick history [options]
142
+ ```
143
+
144
+ Show recent user prompts across Codex sessions, newest first — across every workspace. Use `--path <sessionId>` to resolve a session ID (or unique prefix) to its rollout transcript file, e.g. `less "$(sidekick history --path 0198a3c2)"`. The global `--json` flag emits full session IDs and ISO timestamps.
145
+
146
+ | Flag | Description |
147
+ | -------------------- | ------------------------------------------------------------ |
148
+ | `--limit <n>` | Maximum prompts to show (default: 20) |
149
+ | `--path <sessionId>` | Print the rollout transcript path for a session ID or prefix |
150
+
151
+ Codex-only for now (reads the global `~/.codex/history.jsonl`); Claude Code and OpenCode are not yet supported. Not to be confused with `sidekick quota history`, the quota utilization heatmap.
152
+
137
153
  ## HTML Report
138
154
 
139
155
  ```bash
@@ -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 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");
4
+ var Ln=Object.create;var ct=Object.defineProperty;var $n=Object.getOwnPropertyDescriptor;var Tn=Object.getOwnPropertyNames;var Rn=Object.getPrototypeOf,Hn=Object.prototype.hasOwnProperty;var f=(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 j=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var Wn=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Tn(t))!Hn.call(e,i)&&i!==n&&ct(e,i,{get:()=>t[i],enumerable:!(r=$n(t,i))||r.enumerable});return e};var qn=(e,t,n)=>(n=e!=null?Ln(Rn(e)):{},Wn(t||!e||!e.__esModule?ct(n,"default",{value:e,enumerable:!0}):n,e));var be=j(p=>{"use strict";var Bn=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]})),zn=p&&p.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),_e=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"&&Bn(n,t,r[i]);return zn(n,t),n}})();Object.defineProperty(p,"__esModule",{value:!0});p.CONFIG_DIR_ENV_VAR=void 0;p.getDefaultConfigDir=at;p.setConfigDir=kn;p.getConfigDirOverride=Jn;p.getConfigDir=Ce;p.getProjectDataPath=Un;p.getGlobalDataPath=Qn;p.encodeWorkspacePath=we;p.getProjectSlug=Vn;p.resolveProjectIdentity=je;p.getProjectSlugRaw=Gn;var Kn=_e(f("fs")),W=_e(f("path")),ot=_e(f("os"));p.CONFIG_DIR_ENV_VAR="SIDEKICK_CONFIG_DIR";var ie=null;function at(){return process.platform==="win32"?W.join(process.env.APPDATA||ot.homedir(),"sidekick"):W.join(ot.homedir(),".config","sidekick")}function kn(e){let t=e?.trim();ie=t?W.resolve(t):null}function Jn(){return ie}function Ce(){if(ie)return ie;let e=process.env[p.CONFIG_DIR_ENV_VAR]?.trim();return e?W.resolve(e):at()}function Un(e,t){return W.join(Ce(),t,`${e}.json`)}function Qn(e){return W.join(Ce(),e)}function we(e){return e.replace(/\\/g,"/").replace(/[:/_]/g,"-")}function Vn(e){return je(e).canonicalSlug}function je(e){let t=W.resolve(e||process.cwd()),n;try{n=Kn.realpathSync(t)}catch{n=t}let r=we(n),i=we(t);return{cwd:t,resolvedCwd:n,canonicalSlug:r,legacySlug:i,candidates:r===i?[r]:[r,i],hasLegacyMismatch:r!==i}}function Gn(e){return je(e).legacySlug}});var X=j(b=>{"use strict";var Yn=b&&b.__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]})),Xn=b&&b.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Ie=b&&b.__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"&&Yn(n,t,r[i]);return Xn(n,t),n}})();Object.defineProperty(b,"__esModule",{value:!0});b.atomicWriteJson=st;b.atomicWriteJsonSync=dt;b.atomicWriteFileSync=lt;b.updateJsonStoreAtomic=ir;b.withFileLockSync=yt;b.updateJsonStoreAtomicSync=ur;var J=Ie(f("crypto")),a=Ie(f("fs")),k=Ie(f("path")),Oe=1e4,K=3e3,Zn=12e4,ut=15e3,er=15,tr=new Int32Array(new SharedArrayBuffer(4));async function nr(e){let t;try{t=await a.promises.open(e,"r"),await t.sync()}catch(n){let r=n.code;if(!["EISDIR","EINVAL","ENOSYS","EPERM","EACCES"].includes(r??""))throw n}finally{await t?.close().catch(()=>{})}}function rr(e){let t;try{t=a.openSync(e,"r"),a.fsyncSync(t)}catch(n){let r=n.code;if(!["EISDIR","EINVAL","ENOSYS","EPERM","EACCES"].includes(r??""))throw n}finally{t!==void 0&&a.closeSync(t)}}async function st(e,t){await a.promises.mkdir(k.dirname(e),{recursive:!0,mode:448});let n=`${e}.${process.pid}.${J.randomBytes(8).toString("hex")}.tmp`,r;try{r=await a.promises.open(n,"wx",384),await r.writeFile(JSON.stringify(t,null,2),"utf8"),await r.sync(),await r.close(),r=void 0,await a.promises.rename(n,e),await nr(k.dirname(e))}catch(i){throw await r?.close().catch(()=>{}),await a.promises.rm(n,{force:!0}).catch(()=>{}),i}}function dt(e,t){lt(e,JSON.stringify(t,null,2))}function lt(e,t,n=384){a.mkdirSync(k.dirname(e),{recursive:!0,mode:448});let r=`${e}.${process.pid}.${J.randomBytes(8).toString("hex")}.tmp`,i;try{i=a.openSync(r,"wx",n),a.writeFileSync(i,t,{encoding:"utf8"}),a.fsyncSync(i),a.closeSync(i),i=void 0,a.renameSync(r,e),rr(k.dirname(e))}catch(c){throw i!==void 0&&a.closeSync(i),a.rmSync(r,{force:!0}),c}}async function ir(e,t,n){await a.promises.mkdir(k.dirname(e),{recursive:!0,mode:448});let r=`${e}.lock`,i=await cr(r);try{let c=t(),o;try{o=await a.promises.readFile(e,"utf8")}catch(s){if(s.code!=="ENOENT")throw s}if(o!==void 0)try{c=JSON.parse(o)}catch{let s=`${e}.corrupt-${Date.now()}-${J.randomBytes(4).toString("hex")}`;await a.promises.rename(e,s)}let d=await n(c);return await st(e,d),d}finally{await or(r,i)}}async function cr(e){let t=Date.now()+K,n=null;for(;;)try{let r=await a.promises.open(e,"wx",384),i=`${process.pid}:${J.randomBytes(16).toString("hex")}`;await r.writeFile(i,"utf8"),await r.sync();let c=setInterval(()=>{a.promises.utimes(e,new Date,new Date).catch(()=>{})},Math.floor(Oe/3));return c.unref(),{handle:r,token:i,heartbeat:c}}catch(r){if(r.code!=="EEXIST")throw r;let i=await a.promises.readFile(e,"utf8").catch(()=>null);i!==null&&i!==n&&(n=i,t=Date.now()+K);try{let c=await a.promises.stat(e),o=Date.now()-c.mtimeMs;o>Oe&&!ft(i,o)&&await a.promises.rm(e,{force:!0})}catch{}if(Date.now()>=t)throw new Error(`Timed out waiting for store lock: ${e} (no progress for ${K}ms)`);await new Promise(c=>setTimeout(c,15))}}async function or(e,t){clearInterval(t.heartbeat),await t.handle.close().catch(()=>{});try{await a.promises.readFile(e,"utf8")===t.token&&await a.promises.rm(e,{force:!0})}catch{}}function ft(e,t){if(t>Zn)return!1;let n=Number.parseInt((e??"").split(":",1)[0],10);if(!Number.isInteger(n)||n<=0)return!1;try{return process.kill(n,0),!0}catch(r){return r.code==="EPERM"}}function yt(e,t){let n=ar(e);try{return t()}finally{try{a.readFileSync(e,"utf8")===n&&a.rmSync(e,{force:!0})}catch{}}}function ar(e){let t=Date.now(),n=t+K,r=null;for(;;)try{let i=a.openSync(e,"wx",384),c=`${process.pid}:${J.randomBytes(16).toString("hex")}`;return a.writeFileSync(i,c,"utf8"),a.fsyncSync(i),a.closeSync(i),c}catch(i){if(i.code!=="EEXIST")throw i;let c=null;try{c=a.readFileSync(e,"utf8")}catch{}c!==null&&c!==r&&(r=c,n=Date.now()+K);try{let d=a.statSync(e),s=Date.now()-d.mtimeMs;s>Oe&&!ft(c,s)&&a.rmSync(e,{force:!0})}catch{}let o=Date.now();if(o>=n)throw new Error(`Timed out waiting for store lock: ${e} (no progress for ${K}ms)`);if(o-t>=ut)throw new Error(`Timed out waiting for store lock: ${e} (blocked synchronously for ${ut}ms)`);Atomics.wait(tr,0,0,er)}}function ur(e,t,n){return a.mkdirSync(k.dirname(e),{recursive:!0,mode:448}),yt(`${e}.lock`,()=>{let r=t(),i;try{i=a.readFileSync(e,"utf8")}catch(o){if(o.code!=="ENOENT")throw o}if(i!==void 0)try{r=JSON.parse(i)}catch{let o=`${e}.corrupt-${Date.now()}-${J.randomBytes(4).toString("hex")}`;a.renameSync(e,o)}let c=n(r);return dt(e,c),c})}});var oe=j(S=>{"use strict";var sr=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]})),dr=S&&S.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),pt=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"&&sr(n,t,r[i]);return dr(n,t),n}})();Object.defineProperty(S,"__esModule",{value:!0});S.getAccountsDir=Pe;S.readSavedAccountRegistry=Z;S.writeSavedAccountRegistry=yr;S.listSavedAccountProfiles=pr;S.getActiveSavedAccount=mr;S.upsertSavedAccountProfile=hr;S.setActiveSavedAccount=gr;S.replaceSavedAccountProfiles=vr;S.removeSavedAccountProfile=Ar;var mt=pt(f("fs")),ht=pt(f("path")),lr=be(),ce=X();function Pe(){return ht.join((0,lr.getConfigDir)(),"accounts")}function xe(){return ht.join(Pe(),"accounts.json")}function De(){return xe()+".lock"}function Me(){mt.mkdirSync(Pe(),{recursive:!0,mode:448})}function Ee(e){(0,ce.atomicWriteJsonSync)(xe(),vt(e))}function Fe(e){return Me(),(0,ce.withFileLockSync)(De(),()=>{let t=e(Z()??gt());return Ee(t),t})}function gt(){return{version:2,activeByProvider:{"claude-code":null,codex:null},accounts:[]}}function vt(e){let t=gt();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 fr(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 Z(){try{let e=mt.readFileSync(xe(),"utf8"),t=JSON.parse(e);return t?.version===2?vt(t):t?.version===1&&Array.isArray(t.accounts)?fr(t):null}catch{return null}}function yr(e){Me(),(0,ce.withFileLockSync)(De(),()=>Ee(e))}function pr(e){let t=Z();return t?e?t.accounts.filter(n=>n.providerId===e):t.accounts:[]}function mr(e){let t=Z();if(!t)return null;let n=t.activeByProvider[e];return n?t.accounts.find(r=>r.providerId===e&&r.id===n)??null:null}function hr(e){return Fe(t=>{let n=t.accounts.findIndex(r=>r.providerId===e.providerId&&r.id===e.id);return n>=0?t.accounts[n]=e:t.accounts.push(e),t})}function gr(e,t){return Fe(n=>(n.activeByProvider[e]=t,n))}function vr(e,t,n){return Fe(r=>(r.accounts=r.accounts.filter(i=>i.providerId!==e).concat(t),r.activeByProvider[e]=n,r))}function Ar(e,t){return Me(),(0,ce.withFileLockSync)(De(),()=>{let n=Z();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),Ee(n),i})}});var Le=j(_=>{"use strict";var Sr=_&&_.__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]})),wr=_&&_.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),St=_&&_.__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"&&Sr(n,t,r[i]);return wr(n,t),n}})();Object.defineProperty(_,"__esModule",{value:!0});_.getClaudeProfilesDir=wt;_.getClaudeProfileHome=_t;_.ensureClaudeProfileDirs=br;_.claudeKeychainSuffix=Ct;_.claudeKeychainService=jt;_.readClaudeProfileIdentity=bt;_.keychainServiceExists=Ot;_.isClaudeProfileAuthenticated=Or;var _r=f("child_process"),Cr=f("crypto"),Ne=St(f("fs")),ae=St(f("path")),jr=oe(),At="Claude Code-credentials";function wt(){return ae.join((0,jr.getAccountsDir)(),"claude","profiles")}function _t(e){return ae.join(wt(),e,"home")}function br(e){Ne.mkdirSync(_t(e),{recursive:!0,mode:448})}function Ct(e){return(0,Cr.createHash)("sha256").update(e).digest("hex").slice(0,8)}function jt(e){return e?`${At}-${Ct(e)}`:At}function bt(e){try{let t=JSON.parse(Ne.readFileSync(ae.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 Ot(e){try{return(0,_r.execFileSync)("security",["find-generic-password","-s",e],{stdio:["ignore","ignore","ignore"],timeout:4e3,killSignal:"SIGKILL"}),!0}catch{return!1}}function Or(e){return(process.platform==="darwin"?Ot(jt(e)):Ne.existsSync(ae.join(e,".credentials.json")))&&bt(e)!==null}});var Mt=j(x=>{"use strict";var Ir=x&&x.__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]})),Pr=x&&x.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Re=x&&x.__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"&&Ir(n,t,r[i]);return Pr(n,t),n}})();Object.defineProperty(x,"__esModule",{value:!0});x.KEYCHAIN_SERVICE=void 0;x.readActiveCredentials=Dr;x.writeActiveCredentials=Mr;var Te=Re(f("fs")),It=Re(f("path")),xr=Re(f("os")),Pt=f("child_process"),xt=Le();x.KEYCHAIN_SERVICE="Claude Code-credentials";function $e(e){return`'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function Dt(e){return It.join(e??It.join(xr.homedir(),".claude"),".credentials.json")}function Dr(e){if(process.platform==="darwin")try{let t=(0,Pt.execFileSync)("security",["find-generic-password","-s",(0,xt.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(Te.readFileSync(Dt(e),"utf8"))}catch{return null}}function Mr(e,t){let n=JSON.stringify(e);if(JSON.parse(n),process.platform==="darwin"){let c=(0,xt.claudeKeychainService)(t),o=process.env.USER||"user",d=["add-generic-password","-U","-s",$e(c),"-a",$e(o),"-w",$e(n)].join(" ");(0,Pt.execFileSync)("security",["-i"],{input:d+`
5
+ `,stdio:["pipe","pipe","pipe"],timeout:4e3,killSignal:"SIGKILL"});return}let r=Dt(t),i=r+".tmp";Te.writeFileSync(i,n,{encoding:"utf8",mode:384}),Te.renameSync(i,r)}});var zt=j(h=>{"use strict";var Er=h&&h.__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]})),Fr=h&&h.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),He=h&&h.__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 Fr(n,t),n}})();Object.defineProperty(h,"__esModule",{value:!0});h.readAccountRegistry=de;h.writeAccountRegistry=se;h.readActiveClaudeAccount=le;h.addCurrentAccount=Wr;h.switchToAccount=qr;h.resolveActiveClaudeHome=zr;h.applyActiveClaudeToLiveHome=Kr;h.reconcileClaudeAuthState=kr;h.removeAccount=Jr;h.listAccounts=Ur;h.getActiveAccount=Bt;h.resolveActiveClaudeAccount=Qr;h.isMultiAccountEnabled=Vr;var C=He(f("fs")),m=He(f("path")),Et=He(f("os")),M=Mt(),L=X(),v=oe(),V=Le();function Ft(){return m.join(Et.homedir(),".claude")}function $(){let e=m.join(Ft(),".claude.json");try{if(JSON.parse(C.readFileSync(e,"utf8"))?.oauthAccount)return e}catch{}return m.join(Et.homedir(),".claude.json")}function U(){return m.join((0,v.getAccountsDir)(),"credentials")}function Q(){return m.join((0,v.getAccountsDir)(),"configs")}function Nr(){return m.join((0,v.getAccountsDir)(),"claude",".profiles-migrated-v1")}function Lr(){for(let e of[(0,v.getAccountsDir)(),U(),Q()])C.mkdirSync(e,{recursive:!0,mode:448})}function We(e){try{return JSON.parse(C.readFileSync(e,"utf8"))}catch{return null}}function Nt(e){return We(e)?.oauthAccount??null}function Lt(e,t){(0,L.atomicWriteJsonSync)(m.join((0,V.getClaudeProfileHome)(e),".claude.json"),{oauthAccount:t})}function $t(e,t){(0,M.writeActiveCredentials)(t,(0,V.getClaudeProfileHome)(e))}function ue(e,t,n){Lt(e,n),$t(e,t)}function Tt(e){return We(m.join(U(),`${e}.credentials.json`))}function Rt(e){return We(m.join(Q(),`${e}.config.json`))}function Ht(e){return Nt(m.join((0,V.getClaudeProfileHome)(e),".claude.json"))}function $r(e){let t=(0,M.readActiveCredentials)((0,V.getClaudeProfileHome)(e)),n=Ht(e);if(t&&n)return{credentials:t,oauthAccount:n};let r=Tt(e),i=Rt(e);if(r&&i){try{ue(e,r,i)}catch{}return{credentials:r,oauthAccount:i}}return null}function Tr(){return Nt($())}function Rr(){let e=le();if(!e)return;let t=(0,M.readActiveCredentials)(),n=Tr();if(t)try{(0,L.atomicWriteJsonSync)(m.join(U(),`${e.uuid}.credentials.json`),t),$t(e.uuid,t)}catch{}if(n)try{(0,L.atomicWriteJsonSync)(m.join(Q(),`${e.uuid}.config.json`),n),Lt(e.uuid,n)}catch{}}function Hr(e){let t={};try{t=JSON.parse(C.readFileSync($(),"utf8"))}catch{}t.oauthAccount=e,(0,L.atomicWriteJsonSync)($(),t)}function de(){let e=(0,v.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 se(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,v.replaceSavedAccountProfiles)("claude-code",t,e.activeAccountUuid)}function le(){try{let e=C.readFileSync($(),"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 Wr(e){let t=le();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(C.readFileSync($(),"utf8")).oauthAccount}catch{return{success:!1,error:"Could not read Claude config file."}}Lr();let i=de()??{version:1,activeAccountUuid:null,accounts:[]},c=i.accounts.find(o=>o.uuid===t.uuid);if(c){e!==void 0&&(c.label=e),(0,L.atomicWriteJsonSync)(m.join(U(),`${t.uuid}.credentials.json`),n),(0,L.atomicWriteJsonSync)(m.join(Q(),`${t.uuid}.config.json`),r);try{ue(t.uuid,n,r)}catch{}return i.activeAccountUuid=t.uuid,se(i),{success:!0}}(0,L.atomicWriteJsonSync)(m.join(U(),`${t.uuid}.credentials.json`),n),(0,L.atomicWriteJsonSync)(m.join(Q(),`${t.uuid}.config.json`),r);try{ue(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,se(i),{success:!0}}function Wt(e){let t=m.join((0,v.getAccountsDir)(),"claude");return C.mkdirSync(t,{recursive:!0,mode:448}),(0,L.withFileLockSync)(m.join(t,"auth-swap.lock"),e)}function qr(e){try{return Wt(()=>Br(e))}catch(t){return{success:!1,error:`Could not acquire the account-switch lock: ${t}`}}}function Br(e){let t=de();if(!t)return{success:!1,error:"No account registry found. Save an account first."};if(!t.accounts.find(o=>o.uuid===e))return{success:!1,error:`Account ${e} not found in registry.`};let r=null,i=null;r=(0,M.readActiveCredentials)();try{i=C.readFileSync($(),"utf8")}catch{}try{Rr()}catch{}try{(0,v.setActiveSavedAccount)("claude-code",e)}catch(o){return{success:!1,error:`Failed to update account registry: ${o}`}}let c=qt();if(!c.success){try{(0,v.setActiveSavedAccount)("claude-code",t.activeAccountUuid)}catch{}if(r)try{(0,M.writeActiveCredentials)(r)}catch{}if(i)try{C.writeFileSync($(),i)}catch{}return c}return c}function zr(){let e=(0,v.getActiveSavedAccount)("claude-code");return e?(0,V.getClaudeProfileHome)(e.providerAccountId??e.id):Ft()}function Kr(){try{return Wt(qt)}catch(e){return{success:!1,error:`Could not acquire the account-switch lock: ${e}`}}}function qt(){let e=(0,v.getActiveSavedAccount)("claude-code");if(!e)return{success:!1,error:"No active Claude account found."};let t=e.providerAccountId??e.id,n=$r(t);if(!n)return{success:!1,error:`Stored credentials for ${e.email??t} not found.`};let r=(0,M.readActiveCredentials)(),i=null;try{i=C.readFileSync($(),"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{Hr(n.oauthAccount)}catch(c){if(r)try{(0,M.writeActiveCredentials)(r)}catch{}if(i)try{C.writeFileSync($(),i)}catch{}return{success:!1,error:`Failed to write config: ${c}`}}return{success:!0}}function kr(){try{let e=Nr();if(C.existsSync(e))return;let t=(0,v.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,V.getClaudeProfileHome)(r))&&Ht(r))continue;let i=Tt(r),c=Rt(r);if(!i||!c)continue;ue(r,i,c)}catch{}C.mkdirSync(m.dirname(e),{recursive:!0,mode:448}),C.writeFileSync(e,new Date().toISOString()+`
6
+ `,{encoding:"utf8",mode:384})}catch{}}function Jr(e){let t=de();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{C.unlinkSync(m.join(U(),`${e}.credentials.json`))}catch{}try{C.unlinkSync(m.join(Q(),`${e}.config.json`))}catch{}return t.accounts.splice(n,1),t.activeAccountUuid===e&&(t.activeAccountUuid=t.accounts[0]?.uuid??null),se(t),{success:!0}}function Ur(){return(0,v.listSavedAccountProfiles)("claude-code").map(e=>({uuid:e.providerAccountId??e.id,email:e.email??e.metadata?.email??"unknown",label:e.label,addedAt:e.addedAt}))}function Bt(){let e=(0,v.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 Qr(){let e=le();if(e){let n=(0,v.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,v.getActiveSavedAccount)("claude-code");if(!i||i.id!==r.id)try{(0,v.setActiveSavedAccount)("claude-code",r.id)}catch{}}return{email:e.email,label:r?.label,providerAccountId:e.uuid,registryAccountId:r?.id,source:"live"}}let t=Bt();return t?{email:t.email,label:t.label,providerAccountId:t.uuid,registryAccountId:t.uuid,source:"registry"}:{source:"none"}}function Vr(){return(0,v.listSavedAccountProfiles)("claude-code").length>=1}});var yn=j(l=>{"use strict";var Gr=l&&l.__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]})),Yr=l&&l.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),ze=l&&l.__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"&&Gr(n,t,r[i]);return Yr(n,t),n}})();Object.defineProperty(l,"__esModule",{value:!0});l.getSystemCodexHome=F;l.getCodexMonitoringHomes=ni;l.getCodexProfilesDir=Ut;l.getCodexProfileHome=E;l.readCodexAccountMetadata=Xt;l.readCodexAccountMetadataAsync=Zt;l.isCodexProfileAuthenticated=en;l.isCodexProfileAuthenticatedAsync=tn;l.listCodexAccounts=G;l.getActiveCodexAccount=ge;l.resolveSidekickCodexHome=Ue;l.resolveActiveCodexAccount=fi;l.getCodexExecutionEnv=yi;l.prepareCodexAccount=pi;l.prepareCodexAccountAsync=mi;l.finalizeCodexAccount=cn;l.finalizeCodexAccountAsync=on;l.switchToCodexAccount=Ai;l.switchToCodexAccountAsync=Si;l.reconcileCodexAuthState=wi;l.reconcileCodexAuthStateAsync=_i;l.removeCodexAccount=Ci;var g=ze(f("fs")),Xr=ze(f("os")),u=ze(f("path")),fe=f("child_process"),Zr=f("crypto"),w=oe(),A=X(),ei=11520*60*1e3;function kt(){return u.join(Xr.homedir(),".codex")}function Jt(){let e=process.env.CODEX_HOME?.trim();return e||null}function ti(e){let t=new Set,n=[];for(let r of e){let i=u.resolve(r);t.has(i)||(t.add(i),n.push(r))}return n}function F(){return Jt()??kt()}function ni(){let e=Jt();if(e)return[e];let t=[kt()];for(let n of G()){let r=E(n.id);g.existsSync(u.join(r,"sessions"))&&t.push(r)}return ti(t)}function Ut(){return u.join((0,w.getAccountsDir)(),"codex","profiles")}function Ke(e){return u.join(Ut(),e)}function E(e){return u.join(Ke(e),"codex-home")}function Qt(e){return u.join(Ke(e),"profile.json")}function Vt(e){g.mkdirSync(E(e),{recursive:!0,mode:448})}function R(e){try{return g.readFileSync(e,"utf8")}catch{return null}}function ke(e){try{return JSON.parse(g.readFileSync(Qt(e),"utf8"))}catch{return null}}function ri(e,t){Vt(e),(0,A.atomicWriteJsonSync)(Qt(e),t)}function qe(e,t){return g.existsSync(e)?(g.mkdirSync(u.dirname(t),{recursive:!0,mode:448}),g.copyFileSync(e,t),!0):!1}function ii(e,t){qe(u.join(e,"config.toml"),u.join(t,"config.toml"))}function ci(e,t){let n=qe(u.join(e,"auth.json"),u.join(t,"auth.json")),r=qe(u.join(e,".credentials.json"),u.join(t,".credentials.json"));return n||r}function oi(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 Je(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function q(e){let t=Je(e);if(!t)return null;let n=t.tokens?.id_token,r=n?oi(n):null,i=r?.["https://api.openai.com/profile"],c=r?.["https://api.openai.com/auth"],o=typeof r?.email=="string"?r.email:typeof i?.email=="string"?i.email:void 0,d=typeof c?.chatgpt_account_id=="string"?c.chatgpt_account_id:t.tokens?.account_id,s=typeof c?.chatgpt_plan_type=="string"?c.chatgpt_plan_type:void 0,y=t.OPENAI_API_KEY||t.auth_mode==="api_key"?"api-key":"chatgpt";return{email:o,workspaceId:d,planType:s,authMode:y}}function Be(e,t){let n=Je(e);if(n?.last_refresh){let r=Date.parse(n.last_refresh);if(!Number.isNaN(r))return r}if(t)try{return g.statSync(t).mtimeMs}catch{}return null}function ai(e){let t=q(R(u.join(e,"auth.json")));return t?{email:t.email,workspaceId:t.workspaceId,planType:t.planType,authMode:t.authMode}:{}}function ui(e){let t=u.join(e,".credentials.json");if(!g.existsSync(t))return{};try{let n=JSON.parse(g.readFileSync(t,"utf8"));if(typeof n.OPENAI_API_KEY=="string"||typeof n.CODEX_API_KEY=="string")return{authMode:"api-key"}}catch{}return{}}var ye=4e3;function Gt(e,t){let n=t.trim();return e===0&&/^Logged in/i.test(n)?/API key/i.test(n)?{loggedIn:!0,authMode:"api-key"}:/ChatGPT/i.test(n)?{loggedIn:!0,authMode:"chatgpt"}:{loggedIn:!0}:{loggedIn:!1}}function pe(e){try{let t={...process.env,CODEX_HOME:e},n=(0,fe.spawnSync)("codex",["login","status"],{encoding:"utf8",env:t,timeout:ye,killSignal:"SIGKILL"});return Gt(n.status,String(n.stdout??""))}catch{}return{loggedIn:!1}}function me(e){return new Promise(t=>{try{let n={...process.env,CODEX_HOME:e};(0,fe.execFile)("codex",["login","status"],{encoding:"utf8",env:n,timeout:ye,killSignal:"SIGKILL"},(r,i)=>{t(r?{loggedIn:!1}:Gt(0,String(i??"")))})}catch{t({loggedIn:!1})}})}function si(){if(process.platform==="win32")return!1;try{return(0,fe.spawnSync)("pgrep",["-x","codex"],{encoding:"utf8",timeout:ye,killSignal:"SIGKILL"}).status===0}catch{return!1}}function di(){return process.platform==="win32"?Promise.resolve(!1):new Promise(e=>{try{(0,fe.execFile)("pgrep",["-x","codex"],{encoding:"utf8",timeout:ye,killSignal:"SIGKILL"},t=>e(!t))}catch{e(!1)}})}function he(e){let t=ai(e);if(t.email||t.workspaceId||t.planType||t.authMode)return t;let n=ui(e);return n.authMode?n:null}function Yt(e){return e.loggedIn?{authMode:e.authMode??"unknown"}:{}}function Xt(e){return he(e)??Yt(pe(e))}async function Zt(e){return he(e)??Yt(await me(e))}function ee(e){return g.existsSync(u.join(e,"auth.json"))||g.existsSync(u.join(e,".credentials.json"))}function en(e){return ee(e)||pe(e).loggedIn}async function tn(e){return ee(e)||(await me(e)).loggedIn}function li(e,t){let n=e.trim().toLowerCase();return G().find(i=>i.id!==t&&(i.label??"").trim().toLowerCase()===n)?`A Codex account named "${e}" already exists.`:null}function G(){return(0,w.listSavedAccountProfiles)("codex")}function ge(){return(0,w.getActiveSavedAccount)("codex")}function Ue(){return F()}function fi(){let e=q(R(u.join(Ue(),"auth.json")));if(e&&(e.email||e.workspaceId)){let n=Qe(e);if(n){let r=(0,w.getActiveSavedAccount)("codex");if(!r||r.id!==n.id)try{(0,w.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=ge();return t?{email:t.email??t.metadata?.email,label:t.label,providerAccountId:t.providerAccountId,registryAccountId:t.id,source:"registry"}:{source:"none"}}function yi(e=process.env){return{...e,CODEX_HOME:Ue()}}function nn(e){let t=e.trim();if(!t)return{result:{success:!1,error:"Codex accounts require a non-empty label."}};let n=li(t);if(n)return{result:{success:!1,error:n}};let r=(0,Zr.randomUUID)(),i=E(r);Vt(r),ri(r,{label:t,addedAt:new Date().toISOString()});let c=F();return ii(c,i),ci(c,i)?{finalize:{profileId:r,codexHome:i}}:{result:{success:!0,profileId:r,codexHome:i,needsLogin:!0}}}function pi(e){let t=nn(e);return"finalize"in t?{...cn(t.finalize.profileId),...t.finalize,needsLogin:!1}:t.result}async function mi(e){let t=nn(e);return"finalize"in t?{...await on(t.finalize.profileId),...t.finalize,needsLogin:!1}:t.result}function rn(e,t,n){let r=ke(e);if(!r)return{result:{success:!1,error:`Codex profile ${e} was not prepared.`}};let i=E(e);if(!n.authenticated)return{result:{success:!1,error:"Codex profile is not authenticated yet."}};let c={id:e,providerId:"codex",label:r.label,email:n.metadata.email,addedAt:r.addedAt,metadata:n.metadata};return(0,w.upsertSavedAccountProfile)(c),t.activate===!1?{result:{success:!0}}:ee(i)?{swap:c}:((0,w.setActiveSavedAccount)("codex",e),{result:{success:!0,warning:"Codex stores credentials in the OS keyring; sidekick cannot swap them per account, so `codex` keeps using the keyring credentials."}})}function cn(e,t={}){if(!ke(e))return{success:!1,error:`Codex profile ${e} was not prepared.`};let n=E(e),r=en(n),i=rn(e,t,{authenticated:r,metadata:r?Xt(n):{}});return"swap"in i?un(i.swap):i.result}async function on(e,t={}){if(!ke(e))return{success:!1,error:`Codex profile ${e} was not prepared.`};let n=E(e),r=await tn(n),i=rn(e,t,{authenticated:r,metadata:r?await Zt(n):{}});return"swap"in i?sn(i.swap):i.result}function Kt(){return u.join((0,w.getAccountsDir)(),"codex","stash")}function an(e,t){try{let n=new Date().toISOString().replace(/[:.]/g,"-"),r=null;if(e&&(r=u.join(Kt(),`auth-${n}.json`),(0,A.atomicWriteFileSync)(r,e)),t){let i=u.join(Kt(),`credentials-${n}.json`);(0,A.atomicWriteFileSync)(i,t),r=r??i}return r}catch{return null}}function Qe(e){let t=G();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?ge():null}function hi(e,t){if(!e&&!t)return{};try{let n=q(e),r=Qe(n);if(!r){let c=an(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=E(r.id);e&&(0,A.atomicWriteFileSync)(u.join(i,"auth.json"),e),t&&(0,A.atomicWriteFileSync)(u.join(i,".credentials.json"),t);try{let c=he(i)??{};(0,w.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 ve(e){let t=u.join((0,w.getAccountsDir)(),"codex");return g.mkdirSync(t,{recursive:!0,mode:448}),(0,A.withFileLockSync)(u.join(t,"auth-swap.lock"),e)}function gi(){let e=F();return{codexRunning:si(),systemKeyringLoggedIn:ee(e)?!1:pe(e).loggedIn}}async function vi(){let e=F();return{codexRunning:await di(),systemKeyringLoggedIn:ee(e)?!1:(await me(e)).loggedIn}}function un(e){let t=gi();try{return ve(()=>dn(e,t))}catch(n){return{success:!1,error:`Could not acquire the account-switch lock: ${n}`}}}async function sn(e){let t=await vi();try{return ve(()=>dn(e,t))}catch(n){return{success:!1,error:`Could not acquire the account-switch lock: ${n}`}}}function dn(e,t){let n=F(),r=u.join(n,"auth.json"),i=u.join(n,".credentials.json"),c=R(r),o=R(i);if(!c&&!o&&t.systemKeyringLoggedIn)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 d=E(e.id),s=u.join(d,"auth.json"),y=R(s),D=R(u.join(d,".credentials.json")),H=e.label??e.email??e.id;if(!y&&!D)return{success:!1,error:`No stored credentials for "${H}". Remove and re-add this account.`};if(y&&!Je(y))return{success:!1,error:`Stored credentials for "${H}" are corrupted. Remove and re-add this account.`};let T=[];t.codexRunning&&T.push("A codex process appears to be running; restart codex sessions so they pick up the switched account.");let P=q(c),Y=q(y),et=e.metadata?.workspaceId??Y?.workspaceId,tt=e.email??e.metadata?.email??Y?.email;if(!!(P?.workspaceId&&et&&P.workspaceId===et||P?.email&&tt&&P.email===tt||c!==null&&c===y||!c&&!y&&o!==null&&o===D)){try{c&&(0,A.atomicWriteFileSync)(s,c),o&&(0,A.atomicWriteFileSync)(u.join(d,".credentials.json"),o);let z=he(d)??{};(0,w.upsertSavedAccountProfile)({...e,email:z.email??e.email,metadata:{...e.metadata,...z}})}catch{}return(0,w.setActiveSavedAccount)("codex",e.id),{success:!0,warning:T.length?T.join(" "):void 0}}let nt=Be(y,s);nt!==null&&Date.now()-nt>ei&&T.push(`Stored credentials for "${H}" have not been refreshed in over 8 days; codex may ask you to log in again.`);let rt=hi(c,o);rt.warning&&T.push(rt.warning);let it=()=>{try{c?(0,A.atomicWriteFileSync)(r,c):g.rmSync(r,{force:!0}),o?(0,A.atomicWriteFileSync)(i,o):g.rmSync(i,{force:!0})}catch{}};try{y?((0,A.atomicWriteFileSync)(r,y),D?(0,A.atomicWriteFileSync)(i,D):o&&g.rmSync(i,{force:!0})):((0,A.atomicWriteFileSync)(i,D),c&&g.rmSync(r,{force:!0}))}catch(z){return it(),{success:!1,error:`Failed to write Codex credentials: ${z}`}}try{(0,w.setActiveSavedAccount)("codex",e.id)}catch(z){return it(),{success:!1,error:`Failed to update account registry: ${z}`}}return{success:!0,warning:T.length?T.join(" "):void 0}}function Ai(e){let t=G().find(n=>n.id===e);return t?un(t):{success:!1,error:`Codex account ${e} not found.`}}async function Si(e){let t=G().find(n=>n.id===e);return t?sn(t):{success:!1,error:`Codex account ${e} not found.`}}function ln(){let e=u.join((0,w.getAccountsDir)(),"codex",".live-auth-migrated-v1");return g.existsSync(e)?!1:!g.existsSync(u.join(F(),"auth.json"))}function wi(){try{let e=ln()?pe(F()).loggedIn:!1;ve(()=>fn({systemKeyringLoggedIn:e}))}catch{}}async function _i(){try{let e=ln()?(await me(F())).loggedIn:!1;ve(()=>fn({systemKeyringLoggedIn:e}))}catch{}}function fn(e){try{let t=u.join((0,w.getAccountsDir)(),"codex",".live-auth-migrated-v1");if(g.existsSync(t))return;let n=()=>(0,A.atomicWriteFileSync)(t,new Date().toISOString()+`
7
+ `),r=ge();if(!r){n();return}let i=E(r.id),c=u.join(i,"auth.json"),o=R(c);if(!o){n();return}let d=F(),s=u.join(d,"auth.json"),y=R(s);if(!y){e.systemKeyringLoggedIn||(0,A.atomicWriteFileSync)(s,o),n();return}let D=q(y),H=q(o);if(!!(D?.workspaceId&&H?.workspaceId&&D.workspaceId===H.workspaceId||D?.email&&D.email===H?.email)){let P=Be(y,s),Y=Be(o,c);Y!==null&&(P===null||Y>P)?(an(y,null),(0,A.atomicWriteFileSync)(s,o)):(0,A.atomicWriteFileSync)(c,y)}else{let P=Qe(D);P&&P.id!==r.id&&((0,A.atomicWriteFileSync)(u.join(E(P.id),"auth.json"),y),(0,w.setActiveSavedAccount)("codex",P.id))}n()}catch{}}function Ci(e){return(0,w.removeSavedAccountProfile)("codex",e)?(g.rmSync(Ke(e),{recursive:!0,force:!0}),{success:!0}):{success:!1,error:`Codex account ${e} not found.`}}});var pn=j(Ve=>{"use strict";Object.defineProperty(Ve,"__esModule",{value:!0});Ve.getActiveAccountStatus=Ii;var ji=zt(),bi=yn();function Oi(e){return e instanceof Error?e.message:String(e)}function Ii(e){try{let t=(0,ji.resolveActiveClaudeAccount)(),n=(0,bi.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??Oi(t)}}}});var mn=j(Ge=>{"use strict";Object.defineProperty(Ge,"__esModule",{value:!0});Ge.isAggregateCodexLimit=Pi;function Pi(e){return!e||e==="codex"}});var jn=j(N=>{"use strict";var xi=N&&N.__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]})),Di=N&&N.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),vn=N&&N.__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"&&xi(n,t,r[i]);return Di(n,t),n}})();Object.defineProperty(N,"__esModule",{value:!0});N.writeQuotaSnapshot=Li;N.readQuotaSnapshot=$i;var An=vn(f("fs")),Mi=vn(f("path")),Sn=be(),wn=X(),hn=mn();function Ye(){return Mi.join((0,Sn.getConfigDir)(),"quota-snapshots.json")}function _n(){An.mkdirSync((0,Sn.getConfigDir)(),{recursive:!0,mode:448})}function Cn(){try{let e=JSON.parse(An.readFileSync(Ye(),"utf8"));if(e?.version===1&&Array.isArray(e.snapshots))return e}catch{}return{version:1,snapshots:[]}}function Ei(e){_n(),(0,wn.atomicWriteJsonSync)(Ye(),e)}function Fi(e){return _n(),(0,wn.withFileLockSync)(`${Ye()}.lock`,e)}function gn(e){let t=e.capturedAt?Date.parse(e.capturedAt):NaN;return Number.isFinite(t)?t:0}function Ae(e){let t=Date.parse(e);return Number.isFinite(t)?t:0}function Ni(e,t){let n=(0,hn.isAggregateCodexLimit)(e.limitId),r=(0,hn.isAggregateCodexLimit)(t.limitId);if(n!==r)return n;let i=Ae(e.fiveHour.resetsAt),c=Ae(t.fiveHour.resetsAt);if(i!==c)return i>c;let o=Ae(e.sevenDay.resetsAt),d=Ae(t.sevenDay.resetsAt);if(o!==d)return o>d;let s=e.fiveHour.utilization+e.sevenDay.utilization,y=t.fiveHour.utilization+t.sevenDay.utilization;return s!==y?s>y:gn(e)>gn(t)}function Li(e,t,n){Fi(()=>{let r=Cn(),i=r.snapshots.findIndex(s=>s.providerId===e&&s.accountId===t),c=i>=0?r.snapshots[i].quota:void 0,o={...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&&Ni(r.snapshots[i].quota,o))return;let d={providerId:e,accountId:t,quota:o};i>=0?r.snapshots[i]=d:r.snapshots.push(d),Ei(r)})}function $i(e,t){let r=Cn().snapshots.find(i=>i.providerId===e&&i.accountId===t);return r?{...r.quota,providerId:e,source:"cache",stale:!0}:null}});var Ze=j(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.BurnRateCalculator=void 0;te.estimateTimeToQuota=bn;var Xe=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 bn(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)}};te.BurnRateCalculator=Xe;function bn(e,t,n){if(n<=0)return null;let r=t-e;return r<=0?0:r/n}});var On=j(I=>{"use strict";Object.defineProperty(I,"__esModule",{value:!0});I.SEVEN_DAY_WINDOW_MS=I.FIVE_HOUR_WINDOW_MS=void 0;I.projectQuotaWindow=re;I.withQuotaProjections=Wi;I.fetchQuota=Bi;var Ti="https://api.anthropic.com/api/oauth/usage",Ri="oauth-2025-04-20",Hi=1e4;I.FIVE_HOUR_WINDOW_MS=5*36e5;I.SEVEN_DAY_WINDOW_MS=7*864e5;function re(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 o=i?Date.parse(i):NaN,d=Number.isFinite(o)?o:Date.now(),s=r-(c-d);if(!(s<=0))return Math.min(Math.round(t*(r/s)),200)}function Wi(e,t={}){if(!e.available)return e;let n={...e},r=t.capturedAt??e.capturedAt;if(n.projectedFiveHour==null){let i=re({utilization:n.fiveHour.utilization,resetsAt:n.fiveHour.resetsAt,windowMs:t.fiveHourWindowMs??I.FIVE_HOUR_WINDOW_MS,capturedAt:r});i!==void 0&&(n.projectedFiveHour=i)}if(n.projectedSevenDay==null){let i=re({utilization:n.sevenDay.utilization,resetsAt:n.sevenDay.resetsAt,windowMs:t.sevenDayWindowMs??I.SEVEN_DAY_WINDOW_MS,capturedAt:r});i!==void 0&&(n.projectedSevenDay=i)}return n}function ne(e,t={}){return{fiveHour:{utilization:0,resetsAt:""},sevenDay:{utilization:0,resetsAt:""},available:!1,error:e,...t}}function qi(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 Bi(e){let t=new AbortController,n=setTimeout(()=>t.abort(),Hi);n.unref();try{let r=await fetch(Ti,{method:"GET",signal:t.signal,headers:{Authorization:`Bearer ${e}`,"anthropic-beta":Ri,"Content-Type":"application/json"}});if(!r.ok)return r.status===401?ne("Sign in to Claude Code to view quota",{failureKind:"auth",httpStatus:r.status}):r.status===429?ne(`API error: ${r.status}`,{failureKind:"rate_limit",httpStatus:r.status,retryAfterMs:qi(r.headers.get("retry-after"))}):r.status>=500&&r.status<=599?ne(`API error: ${r.status}`,{failureKind:"server",httpStatus:r.status}):ne(`API error: ${r.status}`,{failureKind:"unknown",httpStatus:r.status});let i=await r.json(),c=i.five_hour?.utilization??0,o=i.seven_day?.utilization??0,d=i.five_hour?.resets_at??"",s=i.seven_day?.resets_at??"";return{fiveHour:{utilization:c,resetsAt:d},sevenDay:{utilization:o,resetsAt:s},available:!0,projectedFiveHour:re({utilization:c,resetsAt:d,windowMs:I.FIVE_HOUR_WINDOW_MS}),projectedSevenDay:re({utilization:o,resetsAt:s,windowMs:I.SEVEN_DAY_WINDOW_MS})}}catch{return ne("Network error",{failureKind:"network"})}finally{clearTimeout(n)}}});var Pn=j(Se=>{"use strict";Object.defineProperty(Se,"__esModule",{value:!0});Se.selectStatuslineAccount=In;Se.formatStatusline=ki;var zi=On(),Ki=Ze();function In(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 ki(e){let t=In(e);if(!t)return"acct:none \xB7 quota unavailable";let n=Ui(t.accountLabel),r=t.quota;if(!r?.available)return`acct:${n} \xB7 quota unavailable`;let i=e.now??new Date,c=Qi(r.fiveHour.utilization),o=Vi(r.fiveHour.resetsAt,i),d=Ji(r,i),s=d==null?"":` \xB7 ~${Gi(d)} left`;return`acct:${n} \xB7 5h ${Math.round(c)}% resets ${o}${s}`}function Ji(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 o=(c-(n-zi.FIVE_HOUR_WINDOW_MS))/6e4;if(o<=0||e.fiveHour.utilization<=0)return null;let d=e.fiveHour.utilization/o,s=(0,Ki.estimateTimeToQuota)(e.fiveHour.utilization,100,d),y=(n-r)/6e4;return s!==null&&s<y?s:null}function Ui(e){let t=e.trim();return(t.includes("@")?t.split("@")[0]:t).replace(/\s+/g,"-").slice(0,24)||"unknown"}function Qi(e){return Number.isFinite(e)?Math.min(100,Math.max(0,e)):0}function Vi(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 Gi(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 Mn=j(O=>{"use strict";Object.defineProperty(O,"__esModule",{value:!0});O.selectStatuslineAccount=O.formatStatusline=O.estimateTimeToQuota=O.BurnRateCalculator=O.readQuotaSnapshot=O.getActiveAccountStatus=void 0;var Yi=pn();Object.defineProperty(O,"getActiveAccountStatus",{enumerable:!0,get:function(){return Yi.getActiveAccountStatus}});var Xi=jn();Object.defineProperty(O,"readQuotaSnapshot",{enumerable:!0,get:function(){return Xi.readQuotaSnapshot}});var xn=Ze();Object.defineProperty(O,"BurnRateCalculator",{enumerable:!0,get:function(){return xn.BurnRateCalculator}});Object.defineProperty(O,"estimateTimeToQuota",{enumerable:!0,get:function(){return xn.estimateTimeToQuota}});var Dn=Pn();Object.defineProperty(O,"formatStatusline",{enumerable:!0,get:function(){return Dn.formatStatusline}});Object.defineProperty(O,"selectStatuslineAccount",{enumerable:!0,get:function(){return Dn.selectStatuslineAccount}})});var B=qn(Mn(),1);function En(){let e=(0,B.getActiveAccountStatus)(),t=e.claude.accountId?(0,B.readQuotaSnapshot)("claude-code",e.claude.accountId):null,n=e.codex.accountId?(0,B.readQuotaSnapshot)("codex",e.codex.accountId):null;process.stdout.write(`${(0,B.formatStatusline)({accounts:e,claudeQuota:t,codexQuota:n})}
8
+ `)}var Fn=["--project","--provider"],Zi=["--json","--no-color"];function ec(e){for(let t=0;t<e.length;t++){let n=e[t];if(!Zi.includes(n)){if(Fn.includes(n)){t++;continue}if(!Fn.some(r=>n.startsWith(`${r}=`)))return n}}}function Nn(e){return ec(e)==="statusline"}Nn(process.argv.slice(2))?En():await import("./sidekick-main.mjs");