sidekick-agent-hub 0.24.4 → 0.25.0

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