sidekick-agent-hub 0.27.4 → 0.27.6
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 +50 -33
- package/dist/sidekick-cli.mjs +18 -17
- package/dist/sidekick-main.mjs +534 -510
- package/package.json +1 -1
package/dist/sidekick-cli.mjs
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __createRequire } from "module";
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
|
-
var bo=Object.create;var $n=Object.defineProperty;var Oo=Object.getOwnPropertyDescriptor;var Po=Object.getOwnPropertyNames;var Io=Object.getPrototypeOf,xo=Object.prototype.hasOwnProperty;var y=(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 C=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var Do=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Po(t))!xo.call(e,i)&&i!==n&&$n(e,i,{get:()=>t[i],enumerable:!(r=Oo(t,i))||r.enumerable});return e};var Eo=(e,t,n)=>(n=e!=null?bo(Io(e)):{},Do(t||!e||!e.__esModule?$n(n,"default",{value:e,enumerable:!0}):n,e));var De=C(F=>{"use strict";var jo=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]})),Mo=F&&F.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Ct=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"&&jo(n,t,r[i]);return Mo(n,t),n}})();Object.defineProperty(F,"__esModule",{value:!0});F.CONFIG_DIR_ENV_VAR=void 0;F.getDefaultConfigDir=Un;F.setConfigDir=Ro;F.getConfigDirOverride=To;F.getConfigDir=bt;F.getProjectDataPath=No;F.getGlobalDataPath=Ho;F.encodeWorkspacePath=wt;F.getProjectSlug=Lo;F.resolveProjectIdentity=Ot;F.getProjectSlugRaw=$o;var Fo=Ct(y("fs")),le=Ct(y("path")),kn=Ct(y("os"));F.CONFIG_DIR_ENV_VAR="SIDEKICK_CONFIG_DIR";var Be=null;function Un(){return process.platform==="win32"?le.join(process.env.APPDATA||kn.homedir(),"sidekick"):le.join(kn.homedir(),".config","sidekick")}function Ro(e){let t=e?.trim();Be=t?le.resolve(t):null}function To(){return Be}function bt(){if(Be)return Be;let e=process.env[F.CONFIG_DIR_ENV_VAR]?.trim();return e?le.resolve(e):Un()}function No(e,t){return le.join(bt(),t,`${e}.json`)}function Ho(e){return le.join(bt(),e)}function wt(e){return e.replace(/\\/g,"/").replace(/[:/_]/g,"-")}function Lo(e){return Ot(e).canonicalSlug}function Ot(e){let t=le.resolve(e||process.cwd()),n;try{n=Fo.realpathSync(t)}catch{n=t}let r=wt(n),i=wt(t);return{cwd:t,resolvedCwd:n,canonicalSlug:r,legacySlug:i,candidates:r===i?[r]:[r,i],hasLegacyMismatch:r!==i}}function $o(e){return Ot(e).legacySlug}});var ie=C(k=>{"use strict";var ko=k&&k.__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]})),Uo=k&&k.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),It=k&&k.__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"&&ko(n,t,r[i]);return Uo(n,t),n}})();Object.defineProperty(k,"__esModule",{value:!0});k.renameSyncWithRetry=Kn;k.renameWithRetry=Qn;k.atomicWriteJson=Vn;k.atomicWriteJsonSync=Gn;k.atomicWriteFileSync=Jn;k.updateJsonStoreAtomic=Vo;k.withFileLockSync=Xn;k.updateJsonStoreAtomicSync=Xo;var Ae=It(y("crypto")),g=It(y("fs")),ve=It(y("path")),Pt=1e4,Se=3e3,qo=12e4,qn=15e3,Bo=15,Bn=new Int32Array(new SharedArrayBuffer(4)),Wo=new Set(["EPERM","EBUSY","EACCES"]),zo=10;function Wn(e){return Math.min(320,20*2**e)}function zn(e,t){if(process.platform!=="win32"||t>=zo-1)return!1;let n=e.code??"";return Wo.has(n)}function Kn(e,t){for(let n=0;;n++)try{g.renameSync(e,t);return}catch(r){if(!zn(r,n))throw r;Atomics.wait(Bn,0,0,Wn(n))}}async function Qn(e,t){for(let n=0;;n++)try{await g.promises.rename(e,t);return}catch(r){if(!zn(r,n))throw r;await new Promise(i=>setTimeout(i,Wn(n)))}}async function Ko(e){let t;try{t=await g.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 Qo(e){let t;try{t=g.openSync(e,"r"),g.fsyncSync(t)}catch(n){let r=n.code;if(!["EISDIR","EINVAL","ENOSYS","EPERM","EACCES"].includes(r??""))throw n}finally{t!==void 0&&g.closeSync(t)}}async function Vn(e,t){await g.promises.mkdir(ve.dirname(e),{recursive:!0,mode:448});let n=`${e}.${process.pid}.${Ae.randomBytes(8).toString("hex")}.tmp`,r;try{r=await g.promises.open(n,"wx",384),await r.writeFile(JSON.stringify(t,null,2),"utf8"),await r.sync(),await r.close(),r=void 0,await Qn(n,e),await Ko(ve.dirname(e))}catch(i){throw await r?.close().catch(()=>{}),await g.promises.rm(n,{force:!0}).catch(()=>{}),i}}function Gn(e,t){Jn(e,JSON.stringify(t,null,2))}function Jn(e,t,n=384){g.mkdirSync(ve.dirname(e),{recursive:!0,mode:448});let r=`${e}.${process.pid}.${Ae.randomBytes(8).toString("hex")}.tmp`,i;try{i=g.openSync(r,"wx",n),g.writeFileSync(i,t,{encoding:"utf8"}),g.fsyncSync(i),g.closeSync(i),i=void 0,Kn(r,e),Qo(ve.dirname(e))}catch(o){throw i!==void 0&&g.closeSync(i),g.rmSync(r,{force:!0}),o}}async function Vo(e,t,n){await g.promises.mkdir(ve.dirname(e),{recursive:!0,mode:448});let r=`${e}.lock`,i=await Go(r);try{let o=t(),a;try{a=await g.promises.readFile(e,"utf8")}catch(s){if(s.code!=="ENOENT")throw s}if(a!==void 0)try{o=JSON.parse(a)}catch{let s=`${e}.corrupt-${Date.now()}-${Ae.randomBytes(4).toString("hex")}`;await g.promises.rename(e,s)}let c=await n(o);return await Vn(e,c),c}finally{await Jo(r,i)}}async function Go(e){let t=Date.now()+Se,n=null;for(;;)try{let r=await g.promises.open(e,"wx",384),i=`${process.pid}:${Ae.randomBytes(16).toString("hex")}`;await r.writeFile(i,"utf8"),await r.sync();let o=setInterval(()=>{g.promises.utimes(e,new Date,new Date).catch(()=>{})},Math.floor(Pt/3));return o.unref(),{handle:r,token:i,heartbeat:o}}catch(r){if(r.code!=="EEXIST")throw r;let i=await g.promises.readFile(e,"utf8").catch(()=>null);i!==null&&i!==n&&(n=i,t=Date.now()+Se);try{let o=await g.promises.stat(e),a=Date.now()-o.mtimeMs;a>Pt&&!Yn(i,a)&&await g.promises.rm(e,{force:!0})}catch{}if(Date.now()>=t)throw new Error(`Timed out waiting for store lock: ${e} (no progress for ${Se}ms)`);await new Promise(o=>setTimeout(o,15))}}async function Jo(e,t){clearInterval(t.heartbeat),await t.handle.close().catch(()=>{});try{await g.promises.readFile(e,"utf8")===t.token&&await g.promises.rm(e,{force:!0})}catch{}}function Yn(e,t){if(t>qo)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 Xn(e,t){let n=Yo(e);try{return t()}finally{try{g.readFileSync(e,"utf8")===n&&g.rmSync(e,{force:!0})}catch{}}}function Yo(e){let t=Date.now(),n=t+Se,r=null;for(;;)try{let i=g.openSync(e,"wx",384),o=`${process.pid}:${Ae.randomBytes(16).toString("hex")}`;return g.writeFileSync(i,o,"utf8"),g.fsyncSync(i),g.closeSync(i),o}catch(i){if(i.code!=="EEXIST")throw i;let o=null;try{o=g.readFileSync(e,"utf8")}catch{}o!==null&&o!==r&&(r=o,n=Date.now()+Se);try{let c=g.statSync(e),s=Date.now()-c.mtimeMs;s>Pt&&!Yn(o,s)&&g.rmSync(e,{force:!0})}catch{}let a=Date.now();if(a>=n)throw new Error(`Timed out waiting for store lock: ${e} (no progress for ${Se}ms)`);if(a-t>=qn)throw new Error(`Timed out waiting for store lock: ${e} (blocked synchronously for ${qn}ms)`);Atomics.wait(Bn,0,0,Bo)}}function Xo(e,t,n){return g.mkdirSync(ve.dirname(e),{recursive:!0,mode:448}),Xn(`${e}.lock`,()=>{let r=t(),i;try{i=g.readFileSync(e,"utf8")}catch(a){if(a.code!=="ENOENT")throw a}if(i!==void 0)try{r=JSON.parse(i)}catch{let a=`${e}.corrupt-${Date.now()}-${Ae.randomBytes(4).toString("hex")}`;g.renameSync(e,a)}let o=n(r);return Gn(e,o),o})}});var Zn=C(We=>{"use strict";Object.defineProperty(We,"__esModule",{value:!0});We._onRawAccountsChanged=Zo;We._emitAccountsChanged=ec;var xt=new Set;function Zo(e){return xt.add(e),()=>xt.delete(e)}function ec(e){for(let t of xt)try{t(e)}catch{}}});var Dt=C(X=>{"use strict";Object.defineProperty(X,"__esModule",{value:!0});X.MODEL_PROVIDER_IDS=X.RUNTIME_QUOTA_PROVIDER_IDS=X.QUOTA_PROVIDER_IDS=X.ACCOUNT_PROVIDER_IDS=X.SESSION_PROVIDER_IDS=void 0;X.SESSION_PROVIDER_IDS=["claude-code","opencode","codex"];X.ACCOUNT_PROVIDER_IDS=["claude-code","codex"];X.QUOTA_PROVIDER_IDS=["claude-code","codex","zai"];X.RUNTIME_QUOTA_PROVIDER_IDS=["claude","codex","zai"];X.MODEL_PROVIDER_IDS=["anthropic","openai","google","unknown"]});var de=C(D=>{"use strict";var tc=D&&D.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),nc=D&&D.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),er=D&&D.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&tc(n,t,r[i]);return nc(n,t),n}})();Object.defineProperty(D,"__esModule",{value:!0});D.ACCOUNT_PROVIDER_IDS=void 0;D.getAccountsDir=Et;D.withSavedAccountRegistryLock=rr;D.readSavedAccountRegistry=Ee;D.writeSavedAccountRegistry=ac;D.listSavedAccountProfiles=sc;D.getActiveSavedAccount=uc;D.upsertSavedAccountProfile=lc;D.setActiveSavedAccount=dc;D.upsertSavedAccountProfileUnlocked=fc;D.setActiveSavedAccountUnlocked=hc;D.replaceSavedAccountProfiles=pc;D.replaceSavedAccountProfilesUnlocked=mc;D.removeSavedAccountProfile=yc;D.removeSavedAccountProfileUnlocked=ur;var tr=er(y("fs")),nr=er(y("path")),rc=De(),ze=ie(),ic=Zn(),oc=Dt();Object.defineProperty(D,"ACCOUNT_PROVIDER_IDS",{enumerable:!0,get:function(){return oc.ACCOUNT_PROVIDER_IDS}});function Et(){return nr.join((0,rc.getConfigDir)(),"accounts")}function jt(){return nr.join(Et(),"accounts.json")}function Mt(){return jt()+".lock"}function Ft(){tr.mkdirSync(Et(),{recursive:!0,mode:448})}function Rt(e,t={}){(0,ze.atomicWriteJsonSync)(jt(),or(e)),t.silent||(0,ic._emitAccountsChanged)("local")}function rr(e){return Ft(),(0,ze.withFileLockSync)(Mt(),e)}function Tt(e,t={}){return rr(()=>Ke(e,t))}function Ke(e,t={}){let n=e(Ee()??ir());return Rt(n,t),n}function ir(){return{version:2,activeByProvider:{"claude-code":null,codex:null},accounts:[]}}function or(e){let t=ir();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,origin:n.metadata.origin||void 0}:void 0})):[],t}function cc(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=tr.readFileSync(jt(),"utf8"),t=JSON.parse(e);return t?.version===2?or(t):t?.version===1&&Array.isArray(t.accounts)?cc(t):null}catch{return null}}function ac(e){Ft(),(0,ze.withFileLockSync)(Mt(),()=>Rt(e))}function sc(e){let t=Ee();return t?e?t.accounts.filter(n=>n.providerId===e):t.accounts:[]}function uc(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 lc(e){return Tt(ar(e))}function dc(e,t,n={}){return Tt(cr(e,t),n)}function cr(e,t){return n=>(n.activeByProvider[e]=t,n)}function ar(e){return 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 fc(e){return Ke(ar(e))}function hc(e,t,n={}){return Ke(cr(e,t),n)}function sr(e,t,n){return r=>(r.accounts=r.accounts.filter(i=>i.providerId!==e).concat(t),r.activeByProvider[e]=n,r)}function pc(e,t,n){return Tt(sr(e,t,n))}function mc(e,t,n){return Ke(sr(e,t,n))}function yc(e,t){return Ft(),(0,ze.withFileLockSync)(Mt(),()=>ur(e,t))}function ur(e,t){let n=Ee();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),Rt(n),i}});var Ge=C(b=>{"use strict";var gc=b&&b.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),Sc=b&&b.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Nt=b&&b.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&gc(n,t,r[i]);return Sc(n,t),n}})();Object.defineProperty(b,"__esModule",{value:!0});b.CLAUDE_SECURESTORAGE_CONFIG_DIR_ENV=void 0;b.getDefaultClaudeHome=Lt;b.isDefaultClaudeHome=dr;b.getLiveClaudeHome=Ve;b.getClaudeProfilesDir=fr;b.getClaudeProfileDir=hr;b.getClaudeProfileHome=pr;b.ensureClaudeProfileDirs=bc;b.claudeKeychainSuffix=mr;b.claudeKeychainService=yr;b.claudeKeychainAccountName=Oc;b.buildClaudeChildEnv=Pc;b.getClaudeConfigPath=gr;b.readLiveClaudeIdentity=Ic;b.readClaudeProfileIdentity=vr;b.keychainServiceExists=Ar;b.isClaudeProfileAuthenticated=xc;var vc=y("child_process"),Ac=y("crypto"),Qe=Nt(y("fs")),Ht=Nt(y("os")),te=Nt(y("path")),_c=de(),lr="Claude Code-credentials",wc=/^[a-zA-Z0-9._-]+$/,Cc="claude-code-user";b.CLAUDE_SECURESTORAGE_CONFIG_DIR_ENV="CLAUDE_SECURESTORAGE_CONFIG_DIR";function Lt(){return te.join(Ht.homedir(),".claude")}function dr(){return!process.env.CLAUDE_CONFIG_DIR?.trim()}function Ve(){let e=process.env.CLAUDE_CONFIG_DIR?.trim();return e||Lt()}function fr(){return te.join((0,_c.getAccountsDir)(),"claude","profiles")}function hr(e){return te.join(fr(),e)}function pr(e){return te.join(hr(e),"home")}function bc(e){Qe.mkdirSync(pr(e),{recursive:!0,mode:448})}function mr(e){return(0,Ac.createHash)("sha256").update(e.normalize("NFC")).digest("hex").slice(0,8)}function yr(e){let t=e??(dr()?void 0:Ve());return t?`${lr}-${mr(t)}`:lr}function Oc(){let e;try{e=process.env.USER||Ht.userInfo().username}catch{e=void 0}return e&&wc.test(e)?e:Cc}function Pc(e,t=process.env){let n={...t,CLAUDE_CONFIG_DIR:e};return delete n[b.CLAUDE_SECURESTORAGE_CONFIG_DIR_ENV],n}function $t(e){try{let t=JSON.parse(Qe.readFileSync(e,"utf8"));return t?.oauthAccount&&typeof t.oauthAccount=="object"?t.oauthAccount:null}catch{return null}}function gr(e=Ve()){let t=te.join(e,".claude.json");return $t(t)?t:te.resolve(e)===te.resolve(Lt())?te.join(Ht.homedir(),".claude.json"):t}function Sr(e){let t=e?.emailAddress,n=e?.accountUuid;return typeof t=="string"&&typeof n=="string"?{email:t,uuid:n}:null}function Ic(e=Ve()){return Sr($t(gr(e)))}function vr(e){return Sr($t(te.join(e,".claude.json")))}function Ar(e){try{return(0,vc.execFileSync)("security",["find-generic-password","-s",e],{stdio:["ignore","ignore","ignore"],timeout:4e3,killSignal:"SIGKILL"}),!0}catch{return!1}}function xc(e){return(process.platform==="darwin"&&Ar(yr(e))||Qe.existsSync(te.join(e,".credentials.json")))&&vr(e)!==null}});var Wt=C(Y=>{"use strict";var Dc=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]})),Ec=Y&&Y.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),wr=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"&&Dc(n,t,r[i]);return Ec(n,t),n}})();Object.defineProperty(Y,"__esModule",{value:!0});Y.KEYCHAIN_SERVICE=void 0;Y.readActiveCredentials=Rc;Y.writeActiveCredentials=Tc;Y.deleteStoredCredentials=Nc;var Cr=wr(y("fs")),jc=wr(y("path")),Ut=y("child_process"),je=Ge(),Mc=ie();Y.KEYCHAIN_SERVICE="Claude Code-credentials";var qt=4e3;function kt(e){return`'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function Bt(e){return jc.join(e??(0,je.getLiveClaudeHome)(),".credentials.json")}function _r(e){try{return JSON.parse(Cr.readFileSync(Bt(e),"utf8"))}catch{return null}}function Fc(e){try{let t=(0,Ut.execFileSync)("security",["find-generic-password","-s",e,"-w"],{encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:qt,killSignal:"SIGKILL"});return JSON.parse(t.trim())}catch{return null}}function Rc(e){return process.platform==="darwin"?Fc((0,je.claudeKeychainService)(e))??_r(e):_r(e)}function Tc(e,t){let n=JSON.stringify(e);if(JSON.parse(n),process.platform==="darwin"){let r=(0,je.claudeKeychainService)(t),i=["add-generic-password","-U","-s",kt(r),"-a",kt((0,je.claudeKeychainAccountName)()),"-w",kt(n)].join(" ");(0,Ut.execFileSync)("security",["-i"],{input:i+`
|
|
5
|
-
`,stdio:["pipe","pipe","pipe"],timeout:qt,killSignal:"SIGKILL"});return}(0,Mc.atomicWriteFileSync)(Bt(t),n,384)}function Nc(e){if(process.platform==="darwin")try{(0,Ut.execFileSync)("security",["delete-generic-password","-s",(0,je.claudeKeychainService)(e)],{stdio:["ignore","ignore","ignore"],timeout:qt,killSignal:"SIGKILL"})}catch{}try{Cr.rmSync(Bt(e),{force:!0})}catch{}}});var Kt=C(Z=>{"use strict";Object.defineProperty(Z,"__esModule",{value:!0});Z.CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS=Z.CLAUDE_ACCESS_TOKEN_LIFETIME_MS=void 0;Z.parseClaudeCredentialBlob=Hc;Z.claudeCredentialFreshness=zt;Z.isNewerClaudeCredential=Lc;Z.resolveClaudeRefreshExpiry=$c;Z.CLAUDE_ACCESS_TOKEN_LIFETIME_MS=480*60*1e3;Z.CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS=504*60*60*1e3;function br(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function Hc(e){if(!e||typeof e!="object")return null;let t=e.claudeAiOauth;if(!t||typeof t!="object")return null;let n=t;return typeof n.accessToken!="string"||!n.accessToken?null:{accessToken:n.accessToken,refreshToken:typeof n.refreshToken=="string"?n.refreshToken:void 0,expiresAt:br(n.expiresAt),refreshTokenExpiresAt:br(n.refreshTokenExpiresAt),scopes:Array.isArray(n.scopes)?n.scopes.filter(r=>typeof r=="string"):void 0,subscriptionType:typeof n.subscriptionType=="string"?n.subscriptionType:void 0,rateLimitTier:typeof n.rateLimitTier=="string"?n.rateLimitTier:void 0}}function zt(e){return e?e.expiresAt??e.refreshTokenExpiresAt??0:0}function Lc(e,t){return zt(e)>zt(t)}function $c(e){return e?e.refreshTokenExpiresAt!==void 0?{refreshExpiresAt:e.refreshTokenExpiresAt,estimated:!1}:e.expiresAt!==void 0?{refreshExpiresAt:e.expiresAt-Z.CLAUDE_ACCESS_TOKEN_LIFETIME_MS+Z.CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS,estimated:!0}:null:null}});var Vt=C(U=>{"use strict";var kc=U&&U.__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]})),Uc=U&&U.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),qc=U&&U.__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"&&kc(n,t,r[i]);return Uc(n,t),n}})();Object.defineProperty(U,"__esModule",{value:!0});U.STALE_AUTH_THRESHOLD_MS=void 0;U.parseJwtPayload=Qt;U.parseAuthJson=Je;U.readAuthIdentityFromRaw=Wc;U.readLastRefresh=zc;U.readAccessTokenExpiry=Kc;U.identitiesMatch=Qc;var Bc=qc(y("fs"));U.STALE_AUTH_THRESHOLD_MS=11520*60*1e3;function Qt(e){let t=e.split(".");if(t.length<2)return null;try{let n=Buffer.from(t[1],"base64url").toString("utf8");return JSON.parse(n)}catch{return null}}function Je(e){if(!e)return null;try{let t=JSON.parse(e);return t&&typeof t=="object"?t:null}catch{return null}}function Wc(e){let t=Je(e);if(!t)return null;let n=t.tokens?.id_token,r=n?Qt(n):null,i=r?.["https://api.openai.com/profile"],o=r?.["https://api.openai.com/auth"],a=typeof r?.email=="string"?r.email:typeof i?.email=="string"?i.email:void 0,c=typeof o?.chatgpt_account_id=="string"?o.chatgpt_account_id:t.tokens?.account_id,s=typeof o?.chatgpt_plan_type=="string"?o.chatgpt_plan_type:void 0,u=t.OPENAI_API_KEY||t.auth_mode==="api_key"?"api-key":"chatgpt";return{email:a,workspaceId:c,planType:s,authMode:u}}function zc(e,t){let n=Je(e);if(n?.last_refresh){let r=Date.parse(n.last_refresh);if(!Number.isNaN(r))return r}if(t)try{return Bc.statSync(t).mtimeMs}catch{}return null}function Kc(e){let n=Je(e)?.tokens?.access_token;if(!n)return null;let r=Qt(n);return typeof r?.exp=="number"&&Number.isFinite(r.exp)?r.exp*1e3:null}function Qc(e,t){return!e||!t?!1:e.workspaceId&&t.workspaceId?e.workspaceId===t.workspaceId:!!(e.email&&t.email&&e.email===t.email)}});var Ye=C(N=>{"use strict";var Vc=N&&N.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),Gc=N&&N.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Jt=N&&N.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&Vc(n,t,r[i]);return Gc(n,t),n}})();Object.defineProperty(N,"__esModule",{value:!0});N.getDefaultSystemCodexHome=Pr;N.getExplicitCodexHome=Ir;N.getSystemCodexHome=xr;N.getCodexProfilesDir=Dr;N.getCodexProfileDir=Yt;N.getCodexProfileHome=Er;N.getCodexProfileStatePath=Xc;N.ensureCodexProfileDirs=Zc;N.readFileOrNull=jr;N.getCodexCredentialStoreMode=ea;N.forceFileCredentialStore=ta;var Or=Jt(y("fs")),Jc=Jt(y("os")),_e=Jt(y("path")),Yc=de();function Pr(){return _e.join(Jc.homedir(),".codex")}function Ir(){let e=process.env.CODEX_HOME?.trim();return e||null}function xr(){return Ir()??Pr()}function Dr(){return _e.join((0,Yc.getAccountsDir)(),"codex","profiles")}function Yt(e){return _e.join(Dr(),e)}function Er(e){return _e.join(Yt(e),"codex-home")}function Xc(e){return _e.join(Yt(e),"profile.json")}function Zc(e){Or.mkdirSync(Er(e),{recursive:!0,mode:448})}function jr(e){try{return Or.readFileSync(e,"utf8")}catch{return null}}var Gt=/^\s*cli_auth_credentials_store\s*=\s*"([a-z]+)"/m;function ea(e=xr()){let r=jr(_e.join(e,"config.toml"))?.match(Gt)?.[1];return r==="file"||r==="keyring"||r==="auto"||r==="ephemeral"?r:"unknown"}function ta(e){if(Gt.test(e))return e.replace(Gt,'cli_auth_credentials_store = "file"');let t='cli_auth_credentials_store = "file"',n=e.replace(/\s*$/,"");if(!n)return`${t}
|
|
6
|
-
`;let
|
|
7
|
-
${
|
|
8
|
-
`;let i
|
|
9
|
-
`:""}${
|
|
4
|
+
var us=Object.create;var ri=Object.defineProperty;var ds=Object.getOwnPropertyDescriptor;var ls=Object.getOwnPropertyNames;var fs=Object.getPrototypeOf,hs=Object.prototype.hasOwnProperty;var g=(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 ps=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ls(t))!hs.call(e,i)&&i!==n&&ri(e,i,{get:()=>t[i],enumerable:!(r=ds(t,i))||r.enumerable});return e};var gs=(e,t,n)=>(n=e!=null?us(fs(e)):{},ps(t||!e||!e.__esModule?ri(n,"default",{value:e,enumerable:!0}):n,e));var pt=b(L=>{"use strict";var ys=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]})),ms=L&&L.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),pn=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"&&ys(n,t,r[i]);return ms(n,t),n}})();Object.defineProperty(L,"__esModule",{value:!0});L.CONFIG_DIR_ENV_VAR=void 0;L.getDefaultConfigDir=oi;L.setConfigDir=vs;L.getConfigDirOverride=Ss;L.getConfigDir=gn;L.getProjectDataPath=ws;L.getGlobalDataPath=_s;L.encodeWorkspacePath=hn;L.getProjectSlug=As;L.resolveProjectIdentity=yn;L.getProjectSlugRaw=bs;var Cs=pn(g("fs")),$e=pn(g("path")),ii=pn(g("os"));L.CONFIG_DIR_ENV_VAR="SIDEKICK_CONFIG_DIR";var It=null;function oi(){return process.platform==="win32"?$e.join(process.env.APPDATA||ii.homedir(),"sidekick"):$e.join(ii.homedir(),".config","sidekick")}function vs(e){let t=e?.trim();It=t?$e.resolve(t):null}function Ss(){return It}function gn(){if(It)return It;let e=process.env[L.CONFIG_DIR_ENV_VAR]?.trim();return e?$e.resolve(e):oi()}function ws(e,t){return $e.join(gn(),t,`${e}.json`)}function _s(e){return $e.join(gn(),e)}function hn(e){return e.replace(/\\/g,"/").replace(/[:/_]/g,"-")}function As(e){return yn(e).canonicalSlug}function yn(e){let t=$e.resolve(e||process.cwd()),n;try{n=Cs.realpathSync(t)}catch{n=t}let r=hn(n),i=hn(t);return{cwd:t,resolvedCwd:n,canonicalSlug:r,legacySlug:i,candidates:r===i?[r]:[r,i],hasLegacyMismatch:r!==i}}function bs(e){return yn(e).legacySlug}});var ie=b(W=>{"use strict";var xs=W&&W.__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]})),Os=W&&W.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Cn=W&&W.__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"&&xs(n,t,r[i]);return Os(n,t),n}})();Object.defineProperty(W,"__esModule",{value:!0});W.renameSyncWithRetry=di;W.renameWithRetry=li;W.atomicWriteJson=fi;W.atomicWriteJsonSync=hi;W.atomicWriteFileSync=pi;W.updateJsonStoreAtomic=Ms;W.withFileLockSync=yi;W.updateJsonStoreAtomicSync=Ls;var Ze=Cn(g("crypto")),w=Cn(g("fs")),Xe=Cn(g("path")),mn=1e4,Ye=3e3,Ps=12e4,ai=15e3,Es=15,si=new Int32Array(new SharedArrayBuffer(4)),ks=new Set(["EPERM","EBUSY","EACCES"]),Rs=10;function ci(e){return Math.min(320,20*2**e)}function ui(e,t){if(process.platform!=="win32"||t>=Rs-1)return!1;let n=e.code??"";return ks.has(n)}function di(e,t){for(let n=0;;n++)try{w.renameSync(e,t);return}catch(r){if(!ui(r,n))throw r;Atomics.wait(si,0,0,ci(n))}}async function li(e,t){for(let n=0;;n++)try{await w.promises.rename(e,t);return}catch(r){if(!ui(r,n))throw r;await new Promise(i=>setTimeout(i,ci(n)))}}async function Is(e){let t;try{t=await w.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 Ds(e){let t;try{t=w.openSync(e,"r"),w.fsyncSync(t)}catch(n){let r=n.code;if(!["EISDIR","EINVAL","ENOSYS","EPERM","EACCES"].includes(r??""))throw n}finally{t!==void 0&&w.closeSync(t)}}async function fi(e,t){await w.promises.mkdir(Xe.dirname(e),{recursive:!0,mode:448});let n=`${e}.${process.pid}.${Ze.randomBytes(8).toString("hex")}.tmp`,r;try{r=await w.promises.open(n,"wx",384),await r.writeFile(JSON.stringify(t,null,2),"utf8"),await r.sync(),await r.close(),r=void 0,await li(n,e),await Is(Xe.dirname(e))}catch(i){throw await r?.close().catch(()=>{}),await w.promises.rm(n,{force:!0}).catch(()=>{}),i}}function hi(e,t){pi(e,JSON.stringify(t,null,2))}function pi(e,t,n=384){w.mkdirSync(Xe.dirname(e),{recursive:!0,mode:448});let r=`${e}.${process.pid}.${Ze.randomBytes(8).toString("hex")}.tmp`,i;try{i=w.openSync(r,"wx",n),w.writeFileSync(i,t,{encoding:"utf8"}),w.fsyncSync(i),w.closeSync(i),i=void 0,di(r,e),Ds(Xe.dirname(e))}catch(o){throw i!==void 0&&w.closeSync(i),w.rmSync(r,{force:!0}),o}}async function Ms(e,t,n){await w.promises.mkdir(Xe.dirname(e),{recursive:!0,mode:448});let r=`${e}.lock`,i=await Fs(r);try{let o=t(),a;try{a=await w.promises.readFile(e,"utf8")}catch(c){if(c.code!=="ENOENT")throw c}if(a!==void 0)try{o=JSON.parse(a)}catch{let c=`${e}.corrupt-${Date.now()}-${Ze.randomBytes(4).toString("hex")}`;await w.promises.rename(e,c)}let s=await n(o);return await fi(e,s),s}finally{await js(r,i)}}async function Fs(e){let t=Date.now()+Ye,n=null;for(;;)try{let r=await w.promises.open(e,"wx",384),i=`${process.pid}:${Ze.randomBytes(16).toString("hex")}`;await r.writeFile(i,"utf8"),await r.sync();let o=setInterval(()=>{w.promises.utimes(e,new Date,new Date).catch(()=>{})},Math.floor(mn/3));return o.unref(),{handle:r,token:i,heartbeat:o}}catch(r){if(r.code!=="EEXIST")throw r;let i=await w.promises.readFile(e,"utf8").catch(()=>null);i!==null&&i!==n&&(n=i,t=Date.now()+Ye);try{let o=await w.promises.stat(e),a=Date.now()-o.mtimeMs;a>mn&&!gi(i,a)&&await w.promises.rm(e,{force:!0})}catch{}if(Date.now()>=t)throw new Error(`Timed out waiting for store lock: ${e} (no progress for ${Ye}ms)`);await new Promise(o=>setTimeout(o,15))}}async function js(e,t){clearInterval(t.heartbeat),await t.handle.close().catch(()=>{});try{await w.promises.readFile(e,"utf8")===t.token&&await w.promises.rm(e,{force:!0})}catch{}}function gi(e,t){if(t>Ps)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 yi(e,t){let n=Ts(e);try{return t()}finally{try{w.readFileSync(e,"utf8")===n&&w.rmSync(e,{force:!0})}catch{}}}function Ts(e){let t=Date.now(),n=t+Ye,r=null;for(;;)try{let i=w.openSync(e,"wx",384),o=`${process.pid}:${Ze.randomBytes(16).toString("hex")}`;return w.writeFileSync(i,o,"utf8"),w.fsyncSync(i),w.closeSync(i),o}catch(i){if(i.code!=="EEXIST")throw i;let o=null;try{o=w.readFileSync(e,"utf8")}catch{}o!==null&&o!==r&&(r=o,n=Date.now()+Ye);try{let s=w.statSync(e),c=Date.now()-s.mtimeMs;c>mn&&!gi(o,c)&&w.rmSync(e,{force:!0})}catch{}let a=Date.now();if(a>=n)throw new Error(`Timed out waiting for store lock: ${e} (no progress for ${Ye}ms)`);if(a-t>=ai)throw new Error(`Timed out waiting for store lock: ${e} (blocked synchronously for ${ai}ms)`);Atomics.wait(si,0,0,Es)}}function Ls(e,t,n){return w.mkdirSync(Xe.dirname(e),{recursive:!0,mode:448}),yi(`${e}.lock`,()=>{let r=t(),i;try{i=w.readFileSync(e,"utf8")}catch(a){if(a.code!=="ENOENT")throw a}if(i!==void 0)try{r=JSON.parse(i)}catch{let a=`${e}.corrupt-${Date.now()}-${Ze.randomBytes(4).toString("hex")}`;w.renameSync(e,a)}let o=n(r);return hi(e,o),o})}});var mi=b(Dt=>{"use strict";Object.defineProperty(Dt,"__esModule",{value:!0});Dt._onRawAccountsChanged=Hs;Dt._emitAccountsChanged=Ns;var vn=new Set;function Hs(e){return vn.add(e),()=>vn.delete(e)}function Ns(e){for(let t of vn)try{t(e)}catch{}}});var Sn=b(oe=>{"use strict";Object.defineProperty(oe,"__esModule",{value:!0});oe.MODEL_PROVIDER_IDS=oe.RUNTIME_QUOTA_PROVIDER_IDS=oe.QUOTA_PROVIDER_IDS=oe.ACCOUNT_PROVIDER_IDS=oe.SESSION_PROVIDER_IDS=void 0;oe.SESSION_PROVIDER_IDS=["claude-code","opencode","codex"];oe.ACCOUNT_PROVIDER_IDS=["claude-code","codex"];oe.QUOTA_PROVIDER_IDS=["claude-code","codex","zai"];oe.RUNTIME_QUOTA_PROVIDER_IDS=["claude","codex","zai"];oe.MODEL_PROVIDER_IDS=["anthropic","openai","google","unknown"]});var be=b(R=>{"use strict";var Bs=R&&R.__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]})),$s=R&&R.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Ci=R&&R.__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"&&Bs(n,t,r[i]);return $s(n,t),n}})();Object.defineProperty(R,"__esModule",{value:!0});R.ACCOUNT_PROVIDER_IDS=void 0;R.getAccountsDir=wn;R.withSavedAccountRegistryLock=wi;R.readSavedAccountRegistry=gt;R.writeSavedAccountRegistry=zs;R.listSavedAccountProfiles=Qs;R.getActiveSavedAccount=Js;R.upsertSavedAccountProfile=Vs;R.setActiveSavedAccount=Gs;R.upsertSavedAccountProfileUnlocked=Ys;R.setActiveSavedAccountUnlocked=Xs;R.replaceSavedAccountProfiles=Zs;R.replaceSavedAccountProfilesUnlocked=ec;R.removeSavedAccountProfile=tc;R.removeSavedAccountProfileUnlocked=Pi;var vi=Ci(g("fs")),Si=Ci(g("path")),Us=pt(),Mt=ie(),qs=mi(),Ks=Sn();Object.defineProperty(R,"ACCOUNT_PROVIDER_IDS",{enumerable:!0,get:function(){return Ks.ACCOUNT_PROVIDER_IDS}});function wn(){return Si.join((0,Us.getConfigDir)(),"accounts")}function _n(){return Si.join(wn(),"accounts.json")}function An(){return _n()+".lock"}function bn(){vi.mkdirSync(wn(),{recursive:!0,mode:448})}function xn(e,t={}){(0,Mt.atomicWriteJsonSync)(_n(),Ai(e)),t.silent||(0,qs._emitAccountsChanged)("local")}function wi(e){return bn(),(0,Mt.withFileLockSync)(An(),e)}function On(e,t={}){return wi(()=>Ft(e,t))}function Ft(e,t={}){let n=e(gt()??_i());return xn(n,t),n}function _i(){return{version:2,activeByProvider:{"claude-code":null,codex:null},accounts:[]}}function Ai(e){let t=_i();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,origin:n.metadata.origin||void 0}:void 0})):[],t}function Ws(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 gt(){try{let e=vi.readFileSync(_n(),"utf8"),t=JSON.parse(e);return t?.version===2?Ai(t):t?.version===1&&Array.isArray(t.accounts)?Ws(t):null}catch{return null}}function zs(e){bn(),(0,Mt.withFileLockSync)(An(),()=>xn(e))}function Qs(e){let t=gt();return t?e?t.accounts.filter(n=>n.providerId===e):t.accounts:[]}function Js(e){let t=gt();if(!t)return null;let n=t.activeByProvider[e];return n?t.accounts.find(r=>r.providerId===e&&r.id===n)??null:null}function Vs(e){return On(xi(e))}function Gs(e,t,n={}){return On(bi(e,t),n)}function bi(e,t){return n=>(n.activeByProvider[e]=t,n)}function xi(e){return 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 Ys(e){return Ft(xi(e))}function Xs(e,t,n={}){return Ft(bi(e,t),n)}function Oi(e,t,n){return r=>(r.accounts=r.accounts.filter(i=>i.providerId!==e).concat(t),r.activeByProvider[e]=n,r)}function Zs(e,t,n){return On(Oi(e,t,n))}function ec(e,t,n){return Ft(Oi(e,t,n))}function tc(e,t){return bn(),(0,Mt.withFileLockSync)(An(),()=>Pi(e,t))}function Pi(e,t){let n=gt();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),xn(n),i}});var et=b(O=>{"use strict";var nc=O&&O.__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]})),rc=O&&O.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Pn=O&&O.__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"&&nc(n,t,r[i]);return rc(n,t),n}})();Object.defineProperty(O,"__esModule",{value:!0});O.CLAUDE_SECURESTORAGE_CONFIG_DIR_ENV=void 0;O.getDefaultClaudeHome=kn;O.isDefaultClaudeHome=Ri;O.getLiveClaudeHome=yt;O.getClaudeProfilesDir=Rn;O.isLiveClaudeHomeSidekickProfile=cc;O.getClaudeProfileDir=Ii;O.getClaudeProfileHome=Di;O.getClaudeCredentialBackupPath=uc;O.ensureClaudeProfileDirs=dc;O.claudeKeychainSuffix=Mi;O.claudeKeychainService=Fi;O.claudeKeychainAccountName=lc;O.buildClaudeChildEnv=fc;O.getClaudeConfigPath=ji;O.readLiveClaudeIdentity=hc;O.readClaudeProfileIdentity=Li;O.keychainServiceExists=Hi;O.isClaudeProfileAuthenticated=pc;var ic=g("child_process"),oc=g("crypto"),jt=Pn(g("fs")),En=Pn(g("os")),J=Pn(g("path")),ki=be(),Ei="Claude Code-credentials",ac=/^[a-zA-Z0-9._-]+$/,sc="claude-code-user";O.CLAUDE_SECURESTORAGE_CONFIG_DIR_ENV="CLAUDE_SECURESTORAGE_CONFIG_DIR";function kn(){return J.join(En.homedir(),".claude")}function Ri(){return!process.env.CLAUDE_CONFIG_DIR?.trim()}function yt(){let e=process.env.CLAUDE_CONFIG_DIR?.trim();return e||kn()}function Rn(){return J.join((0,ki.getAccountsDir)(),"claude","profiles")}function cc(){let e=J.resolve(yt()),t=J.resolve(Rn());return e===t||e.startsWith(t+J.sep)}function Ii(e){return J.join(Rn(),e)}function Di(e){return J.join(Ii(e),"home")}function uc(e){return J.join((0,ki.getAccountsDir)(),"credentials",`${e}.credentials.json`)}function dc(e){jt.mkdirSync(Di(e),{recursive:!0,mode:448})}function Mi(e){return(0,oc.createHash)("sha256").update(e.normalize("NFC")).digest("hex").slice(0,8)}function Fi(e){let t=e??(Ri()?void 0:yt());return t?`${Ei}-${Mi(t)}`:Ei}function lc(){let e;try{e=process.env.USER||En.userInfo().username}catch{e=void 0}return e&&ac.test(e)?e:sc}function fc(e,t=process.env){let n={...t,CLAUDE_CONFIG_DIR:e};return delete n[O.CLAUDE_SECURESTORAGE_CONFIG_DIR_ENV],n}function In(e){try{let t=JSON.parse(jt.readFileSync(e,"utf8"));return t?.oauthAccount&&typeof t.oauthAccount=="object"?t.oauthAccount:null}catch{return null}}function ji(e=yt()){let t=J.join(e,".claude.json");return In(t)?t:J.resolve(e)===J.resolve(kn())?J.join(En.homedir(),".claude.json"):t}function Ti(e){let t=e?.emailAddress,n=e?.accountUuid;return typeof t=="string"&&typeof n=="string"?{email:t,uuid:n}:null}function hc(e=yt()){return Ti(In(ji(e)))}function Li(e){return Ti(In(J.join(e,".claude.json")))}function Hi(e){try{return(0,ic.execFileSync)("security",["find-generic-password","-s",e],{stdio:["ignore","ignore","ignore"],timeout:4e3,killSignal:"SIGKILL"}),!0}catch{return!1}}function pc(e){return(process.platform==="darwin"&&Hi(Fi(e))||jt.existsSync(J.join(e,".credentials.json")))&&Li(e)!==null}});var Ui=b(ae=>{"use strict";var gc=ae&&ae.__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]})),yc=ae&&ae.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Ni=ae&&ae.__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"&&gc(n,t,r[i]);return yc(n,t),n}})();Object.defineProperty(ae,"__esModule",{value:!0});ae.getClaudeCredentialLedgerPath=mt;ae.readClaudeCredentialLedger=vc;ae.recordClaudeCredentialHome=Sc;ae.forgetClaudeCredentialHome=wc;var Bi=Ni(g("fs")),Dn=Ni(g("path")),mc=be(),Cc=et(),$i=ie();function Mn(){return{version:1,entries:[]}}function Fn(e){let t=e?.entries;return Array.isArray(t)?{version:1,entries:t.filter(n=>!!n&&typeof n=="object"&&typeof n.configDir=="string"&&typeof n.service=="string")}:Mn()}function mt(){return Dn.join((0,mc.getAccountsDir)(),"claude","credential-homes.json")}function vc(){try{return Fn(JSON.parse(Bi.readFileSync(mt(),"utf8"))).entries}catch{return[]}}function Sc(e,t,n=new Date){let r=Dn.resolve(e),i=n.toISOString();try{(0,$i.updateJsonStoreAtomicSync)(mt(),Mn,o=>{let a=Fn(o),s=a.entries.find(c=>c.configDir===r);return s?(s.lastWrittenAt=i,t==="profile"&&(s.purpose="profile"),a):(a.entries.push({configDir:r,service:(0,Cc.claudeKeychainService)(r),purpose:t,createdAt:i,lastWrittenAt:i}),a)})}catch{}}function wc(e){let t=Dn.resolve(e);try{if(!Bi.existsSync(mt()))return;(0,$i.updateJsonStoreAtomicSync)(mt(),Mn,n=>{let r=Fn(n);return r.entries=r.entries.filter(i=>i.configDir!==t),r})}catch{}}});var Hn=b(M=>{"use strict";var _c=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]})),Ac=M&&M.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Ki=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"&&_c(n,t,r[i]);return Ac(n,t),n}})();Object.defineProperty(M,"__esModule",{value:!0});M.ClaudeCredentialWriteError=M.SIDEKICK_KEYCHAIN_COMMENT_PREFIX=M.SECURITY_INTERACTIVE_LINE_LIMIT=M.KEYCHAIN_SERVICE=void 0;M.readClaudeCredentialStore=xc;M.readActiveCredentials=Oc;M.writeActiveCredentials=Ec;M.writeLiveClaudeCredentialStoreUnguarded=kc;M.deleteStoredCredentials=Rc;var Wi=Ki(g("fs")),zi=Ki(g("path")),Lt=g("child_process"),De=et(),Qi=Ui(),bc=ie();M.KEYCHAIN_SERVICE="Claude Code-credentials";var Ht=4e3,Ji=44;M.SECURITY_INTERACTIVE_LINE_LIMIT=4032;M.SIDEKICK_KEYCHAIN_COMMENT_PREFIX="sidekick-agent-hub:";var xe=class extends Error{constructor(t){super(t),this.name="ClaudeCredentialWriteError"}};M.ClaudeCredentialWriteError=xe;function Tt(e){return`'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function jn(e){return zi.join(e??(0,De.getLiveClaudeHome)(),".credentials.json")}function Vi(e,t){let n=e.trim();if(!n)return{status:"corrupt",source:t,length:0};let r=t==="keychain"&&!n.startsWith("{")&&/^(?:[0-9a-f]{2})+$/i.test(n)?Buffer.from(n,"hex").toString("utf8"):n;try{let i=JSON.parse(r);if(i&&typeof i=="object"&&!Array.isArray(i))return{status:"ok",blob:i,source:t}}catch{}return{status:"corrupt",source:t,length:r.length}}function Tn(e){let t;try{t=Wi.readFileSync(jn(e),"utf8")}catch(n){return n.code==="ENOENT"?{status:"absent"}:{status:"error",reason:String(n.message??n)}}return Vi(t,"file")}function Gi(e){let t=e.status;return typeof t=="number"?t:null}function Ln(e){try{let t=(0,Lt.execFileSync)("security",["find-generic-password","-a",(0,De.claudeKeychainAccountName)(),"-s",e,"-w"],{encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:Ht,killSignal:"SIGKILL"});return Vi(String(t),"keychain")}catch(t){return Gi(t)===Ji?{status:"absent"}:{status:"error",reason:String(t?.message??t)}}}function xc(e,t={}){if(process.platform==="darwin"){let n=Ln((0,De.claudeKeychainService)(e));if(n.status!=="absent"||t.keychainOnly)return n}return Tn(e)}function Oc(e){if(process.platform==="darwin"){let n=Ln((0,De.claudeKeychainService)(e));if(n.status==="ok")return n.blob}let t=Tn(e);return t.status==="ok"?t.blob:null}function Pc(e,t,n){let r=(0,De.claudeKeychainAccountName)(),i=["add-generic-password","-U","-a",r,"-s",e],o=["add-generic-password","-U","-a",Tt(r),"-s",Tt(e)];n&&(i.push("-j",n),o.push("-j",Tt(n))),i.push("-X",t),o.push("-X",Tt(t));let a=`${o.join(" ")}
|
|
5
|
+
`;if(Buffer.byteLength(a,"utf8")<=M.SECURITY_INTERACTIVE_LINE_LIMIT){(0,Lt.execFileSync)("security",["-i"],{input:a,stdio:["pipe","pipe","pipe"],timeout:Ht,killSignal:"SIGKILL"});return}(0,Lt.execFileSync)("security",i,{stdio:["ignore","pipe","pipe"],timeout:Ht,killSignal:"SIGKILL"})}function Yi(e,t){let n=JSON.stringify(e),r;try{r=JSON.stringify(JSON.parse(n))}catch{throw new xe("Refusing to store a credential that is not JSON.")}if(process.platform==="darwin"){let o=(0,De.claudeKeychainService)(t),a=t?`${M.SIDEKICK_KEYCHAIN_COMMENT_PREFIX}${zi.resolve(t)}`:null;try{Pc(o,Buffer.from(n,"utf8").toString("hex"),a)}catch(c){throw new xe(`Keychain write failed: ${c?.message??c}`)}let s=Ln(o);if(s.status==="error")throw new xe("The Keychain write could not be verified (read-back failed); treating it as not written.");if(s.status!=="ok"||JSON.stringify(s.blob)!==r)throw new xe("The Keychain item did not hold the credential after writing it.");return}(0,bc.atomicWriteFileSync)(jn(t),n,384);let i=Tn(t);if(i.status!=="ok"||JSON.stringify(i.blob)!==r)throw new xe("The credentials file did not hold the credential after writing it.")}function Ec(e,t){if(!t)throw new xe("writeActiveCredentials() needs a config directory; the live Claude login is only written through a guarded account switch.");(0,Qi.recordClaudeCredentialHome)(t,"profile"),Yi(e,t)}function kc(e){Yi(e,void 0)}function qi(e,t){try{return(0,Lt.execFileSync)("security",["delete-generic-password",...t?["-a",(0,De.claudeKeychainAccountName)()]:[],"-s",e],{stdio:["ignore","ignore","ignore"],timeout:Ht,killSignal:"SIGKILL"}),"deleted"}catch(n){return Gi(n)===Ji?"absent":"error"}}function Rc(e){let t=!0;if(process.platform==="darwin"){let n=(0,De.claudeKeychainService)(e),r=qi(n,!0);r==="absent"&&(r=qi(n,!1)),r==="error"&&(t=!1)}try{Wi.rmSync(jn(e),{force:!0})}catch{t=!1}return t&&(0,Qi.forgetClaudeCredentialHome)(e),t}});var Nt=b(V=>{"use strict";Object.defineProperty(V,"__esModule",{value:!0});V.CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS=V.CLAUDE_ACCESS_TOKEN_LIFETIME_MS=void 0;V.parseClaudeCredentialBlob=Dc;V.claudeCredentialFreshness=Nn;V.isNewerClaudeCredential=Mc;V.resolveClaudeRefreshExpiry=Fc;V.claudeRefreshFingerprint=jc;V.claudeLoginOnly=Tc;V.mergeClaudeLoginIntoLive=Lc;var Ic=g("crypto");V.CLAUDE_ACCESS_TOKEN_LIFETIME_MS=480*60*1e3;V.CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS=504*60*60*1e3;function Xi(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function Dc(e){if(!e||typeof e!="object")return null;let t=e.claudeAiOauth;if(!t||typeof t!="object")return null;let n=t;return typeof n.accessToken!="string"||!n.accessToken?null:{accessToken:n.accessToken,refreshToken:typeof n.refreshToken=="string"?n.refreshToken:void 0,expiresAt:Xi(n.expiresAt),refreshTokenExpiresAt:Xi(n.refreshTokenExpiresAt),scopes:Array.isArray(n.scopes)?n.scopes.filter(r=>typeof r=="string"):void 0,subscriptionType:typeof n.subscriptionType=="string"?n.subscriptionType:void 0,rateLimitTier:typeof n.rateLimitTier=="string"?n.rateLimitTier:void 0}}function Nn(e){return e?e.expiresAt??e.refreshTokenExpiresAt??0:0}function Mc(e,t){return Nn(e)>Nn(t)}function Fc(e){return e?e.refreshTokenExpiresAt!==void 0?{refreshExpiresAt:e.refreshTokenExpiresAt,estimated:!1}:e.expiresAt!==void 0?{refreshExpiresAt:e.expiresAt-V.CLAUDE_ACCESS_TOKEN_LIFETIME_MS+V.CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS,estimated:!0}:null:null}function jc(e){let t=e?.refreshToken;return t?(0,Ic.createHash)("sha256").update(t).digest("hex").slice(0,16):null}function tt(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function Tc(e){let t=tt(tt(e)?.claudeAiOauth);return t?{claudeAiOauth:t}:null}function Lc(e,t){let n=tt(e)??{},r=tt(t)??{},i={...n,claudeAiOauth:r.claudeAiOauth},o=tt(n.mcpOAuth),a=tt(r.mcpOAuth);return(o||a)&&(i.mcpOAuth={...a,...o}),i}});var $n=b(Bn=>{"use strict";Object.defineProperty(Bn,"__esModule",{value:!0});Bn.decideLiveCredentialWrite=Hc;function Hc(e){let t=(n,r)=>({allow:!1,code:n,reason:r});return e.liveStatus==="error"||e.rejectCorrupt&&e.liveStatus==="corrupt"?t("live-unreadable",`The live ${e.provider} login could not be read, so it was left untouched.`):e.intent==="rollback"?e.matchesWritten||e.allowNonOkRollback&&e.liveStatus!=="ok"?{allow:!0}:t("live-changed",`The live ${e.provider} login changed after the switch wrote it; it was kept.`):e.candidateValid?e.intent==="switch"?e.liveAccountId!==null&&e.liveAccountId===e.candidateAccountId?t("same-account","That account is already the live login."):e.sameLink?t("same-link","The saved login is the same refresh token the live login holds; sign in to that account again."):e.liveHasCredential&&!e.capturedOutgoing?t("not-captured","The outgoing live login was not saved first, so it was left untouched."):{allow:!0}:e.liveAccountId!==null&&e.liveAccountId!==e.candidateAccountId?t("different-account",`The live ${e.provider} login belongs to another account; switch accounts instead.`):e.liveHasCredential?!e.strictlyNewer||e.requireDifferentLinkForAdvance&&e.sameLink?t("not-newer",`The live ${e.provider} login is already at least as new; it was kept.`):{allow:!0}:{allow:!0}:t("invalid-candidate",`The saved credential is not a ${e.provider} login.`)}});var Zi=b(Un=>{"use strict";Object.defineProperty(Un,"__esModule",{value:!0});Un.decideLiveClaudeWrite=Bc;var Nc=$n(),nt=Nt();function Bc(e){let t=(0,nt.parseClaudeCredentialBlob)(e.candidate),n=e.live.status==="ok"?(0,nt.parseClaudeCredentialBlob)(e.live.blob):null,r=(0,nt.claudeRefreshFingerprint)(n);return(0,Nc.decideLiveCredentialWrite)({provider:"Claude",intent:e.intent,liveStatus:e.live.status,candidateValid:t!==null,liveHasCredential:n!==null,liveAccountId:e.liveAccountUuid,candidateAccountId:e.candidateAccountUuid,sameLink:r!==null&&r===(0,nt.claudeRefreshFingerprint)(t),strictlyNewer:(0,nt.claudeCredentialFreshness)(t)>(0,nt.claudeCredentialFreshness)(n),capturedOutgoing:e.capturedOutgoing,matchesWritten:e.live.status==="ok"&&JSON.stringify(e.live.blob)===JSON.stringify(e.written),allowNonOkRollback:!0,requireDifferentLinkForAdvance:!0})}});var ro=b(G=>{"use strict";var $c=G&&G.__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]})),Uc=G&&G.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),to=G&&G.__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"&&$c(n,t,r[i]);return Uc(n,t),n}})();Object.defineProperty(G,"__esModule",{value:!0});G.ClaudeRefreshLockBusyError=G.CLAUDE_REFRESH_LOCK_STALE_MS=void 0;G.claudeRefreshLockPaths=no;G.withClaudeRefreshLocksSync=Qc;var Ue=to(g("fs")),eo=to(g("path"));G.CLAUDE_REFRESH_LOCK_STALE_MS=6e4;var qc=5e3,Kc=50,Wc=new Int32Array(new SharedArrayBuffer(4)),Bt=class extends Error{constructor(t){super(`Claude Code is refreshing a login (${t} is held); try again in a few seconds.`),this.name="ClaudeRefreshLockBusyError"}};G.ClaudeRefreshLockBusyError=Bt;function no(e){let t=eo.resolve(e);try{t=Ue.realpathSync(e)}catch{}return[eo.join(e,".oauth_refresh.lock"),`${t}.lock`]}function zc(e,t){try{return Ue.mkdirSync(e),!0}catch(n){if(n.code!=="EEXIST")throw n}try{let n=Ue.statSync(e);if(t-n.mtimeMs>G.CLAUDE_REFRESH_LOCK_STALE_MS)return Ue.rmSync(e,{recursive:!0,force:!0}),Ue.mkdirSync(e),!0}catch{}return!1}function Qc(e,t,n={}){let r=n.waitMs??qc,i=[...new Set(e.filter(a=>{try{return Ue.statSync(a).isDirectory()}catch{return!1}}).flatMap(no))],o=[];try{let a=Date.now()+r;for(let s of i){for(;!zc(s,Date.now());){if(Date.now()>=a)throw new Bt(s);Atomics.wait(Wc,0,0,Kc)}o.push(s)}return t()}finally{for(let a of o.reverse())try{Ue.rmSync(a,{recursive:!0,force:!0})}catch{}}}});var rt=b(I=>{"use strict";var Jc=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]})),Vc=I&&I.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Kn=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"&&Jc(n,t,r[i]);return Vc(n,t),n}})();Object.defineProperty(I,"__esModule",{value:!0});I.getDefaultSystemCodexHome=io;I.getExplicitCodexHome=oo;I.getSystemCodexHome=ao;I.getCodexProfilesDir=so;I.getCodexProfileDir=Qn;I.getCodexProfileHome=Jn;I.getCodexProfileStatePath=co;I.ensureCodexProfileDirs=Yc;I.readFileOrNull=Xc;I.getCodexCredentialStoreMode=Zc;I.forceFileCredentialStore=eu;I.getCodexBackupPath=tu;I.getCodexLoginsDir=uo;I.getCodexLoginDir=Vn;I.getCodexLoginHome=nu;I.getCodexLoginStatePath=ru;var Ct=Kn(g("fs")),Gc=Kn(g("os")),de=Kn(g("path")),Wn=be();function io(){return de.join(Gc.homedir(),".codex")}function oo(){let e=process.env.CODEX_HOME?.trim();return e||null}function ao(){return oo()??io()}function so(){return de.join((0,Wn.getAccountsDir)(),"codex","profiles")}function zn(e){if(!/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(e))throw new Error("Invalid Codex account id.")}function Qn(e){return zn(e),de.join(so(),e)}function Jn(e){return de.join(Qn(e),"codex-home")}function co(e){return de.join(Qn(e),"profile.json")}function Yc(e){Ct.mkdirSync(Jn(e),{recursive:!0,mode:448})}function Xc(e){try{return Ct.readFileSync(e,"utf8")}catch{return null}}var qn=/^[ \t]*cli_auth_credentials_store[ \t]*=[ \t]*["']([a-z]+)["']/m;function Zc(e=ao()){let t;try{t=Ct.readFileSync(de.join(e,"config.toml"),"utf8")}catch(o){return o.code==="ENOENT"?"unknown":"unreadable"}let n=t.split(/^[ \t]*\[/m,1)[0],r=n.match(qn);if(!r&&/^[ \t]*cli_auth_credentials_store\s*=/m.test(n))return"unreadable";let i=r?.[1];return i==="file"||i==="keyring"||i==="auto"||i==="ephemeral"?i:i===void 0?"unknown":"unreadable"}function eu(e){let t=e.search(/^[ \t]*\[/m),n=t<0?e:e.slice(0,t);if(qn.test(n))return n.replace(qn,'cli_auth_credentials_store = "file"')+(t<0?"":e.slice(t));let r='cli_auth_credentials_store = "file"',i=e.replace(/\s*$/,"");if(!i)return`${r}
|
|
6
|
+
`;let o=i.search(/^\s*\[/m);if(o===-1)return`${i}
|
|
7
|
+
${r}
|
|
8
|
+
`;let a=i.slice(0,o).replace(/\s*$/,"");return`${a?`${a}
|
|
9
|
+
`:""}${r}
|
|
10
10
|
|
|
11
|
-
${
|
|
12
|
-
`}});var nn=C($=>{"use strict";var na=$&&$.__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]})),ra=$&&$.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Tr=$&&$.__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"&&na(n,t,r[i]);return ra(n,t),n}})();Object.defineProperty($,"__esModule",{value:!0});$.getHealthSidecarPath=Zt;$.readHealthSidecar=Nr;$.claudeHealthSidecarFromBlob=Hr;$.writeClaudeHealthSidecar=Lr;$.codexHealthSidecarFromAuth=tn;$.writeCodexHealthSidecar=aa;$.getAccountHealth=$r;$.listAccountsWithHealth=ha;$.describeClaudeCredential=pa;var fe=Tr(y("fs")),ce=Tr(y("path")),Me=Ge(),Xt=Kt(),ia=Wt(),we=Vt(),Ce=Ye(),Xe=de(),oa=ie(),ca=4320*60*1e3;function Zt(e,t){let n=e==="codex"?(0,Ce.getCodexProfileDir)(t):(0,Me.getClaudeProfileDir)(t);return ce.join(n,"health.json")}function Nr(e,t){try{let n=JSON.parse(fe.readFileSync(Zt(e,t),"utf8"));return n?.version===1&&typeof n.capturedAt=="number"?n:null}catch{return null}}function en(e,t,n){try{(0,oa.atomicWriteJsonSync)(Zt(e,t),n)}catch{}}function Hr(e,t,n=Date.now()){let r=(0,Xt.parseClaudeCredentialBlob)(e);if(!r)return null;let i=(0,Xt.resolveClaudeRefreshExpiry)(r);return{version:1,capturedAt:n,accessExpiresAt:r.expiresAt,refreshExpiresAt:i?.refreshExpiresAt,refreshExpiryEstimated:i?.estimated,hasRefreshToken:!!r.refreshToken,authMode:"oauth",source:t}}function Lr(e,t,n,r=Date.now()){let i=Hr(t,n,r);return i&&en("claude-code",e,i),i}function tn(e,t,n=Date.now(),r){let i=(0,we.readAuthIdentityFromRaw)(e);if(!i)return null;let o=(0,we.readLastRefresh)(e,r)??void 0;return{version:1,capturedAt:n,accessExpiresAt:(0,we.readAccessTokenExpiry)(e)??void 0,lastRefreshAt:o,hasRefreshToken:i.authMode==="chatgpt",authMode:i.authMode,source:t}}function aa(e,t,n,r=Date.now()){let i=tn(t,n,r);return i&&en("codex",e,i),i}function sa(e,t){let n=e.accessExpiresAt!==void 0,r=n&&e.accessExpiresAt<=t;if(e.refreshExpiresAt!==void 0){if(e.refreshExpiresAt<=t)return{state:"expired",reason:e.refreshExpiryEstimated?"Refresh token has most likely expired (estimated from the snapshot age).":"Refresh token expired; sign in again."};if(e.refreshExpiresAt-t<=ca)return{state:"expiring",reason:"Refresh token expires within 3 days."}}return e.hasRefreshToken===!1&&r?{state:"expired",reason:"Access token expired and no refresh token is stored."}:r?{state:"expiring",reason:"Access token expired; the CLI refreshes it on next use."}:!n&&e.refreshExpiresAt===void 0?{state:"unknown",reason:"The stored credential carries no expiry."}:{state:"fresh"}}function ua(e,t){return e.authMode==="api-key"?{state:"unknown",reason:"API-key login; expiry is not observable locally."}:e.accessExpiresAt!==void 0&&e.accessExpiresAt>t?{state:"fresh"}:e.lastRefreshAt!==void 0&&t-e.lastRefreshAt>we.STALE_AUTH_THRESHOLD_MS?{state:"expiring",reason:`Not refreshed in ${Math.floor((t-e.lastRefreshAt)/864e5)} days; codex may ask you to log in again.`}:e.accessExpiresAt!==void 0?{state:"expiring",reason:"Access token expired; codex refreshes it on next use."}:{state:"unknown",reason:"The stored credential carries no expiry."}}function la(e){return(0,Me.readLiveClaudeIdentity)()?.uuid===e}function da(e){let t=(0,we.readAuthIdentityFromRaw)((0,Ce.readFileOrNull)(ce.join((0,Ce.getSystemCodexHome)(),"auth.json")));return t?(0,we.identitiesMatch)(t,{email:e.email??e.metadata?.email,workspaceId:e.metadata?.workspaceId}):!1}function Mr(e,t){let n=(0,ia.readActiveCredentials)((0,Me.getClaudeProfileHome)(e));return n?Lr(e,n,"switch",t):null}function Fr(e,t){let n=ce.join((0,Ce.getCodexProfileHome)(e),"auth.json"),r=(0,Ce.readFileOrNull)(n),i=tn(r,"switch",t,n);return i&&en("codex",e,i),i}function Rr(e){let t=(0,Me.getClaudeProfileHome)(e);return fe.existsSync(ce.join(t,".credentials.json"))||fe.existsSync(ce.join((0,Me.getClaudeProfileDir)(e),"health.json"))||fe.existsSync(ce.join((0,Xe.getAccountsDir)(),"credentials",`${e}.credentials.json`))||process.platform==="darwin"&&fe.existsSync(ce.join(t,".claude.json"))}function fa(e){let t=(0,Ce.getCodexProfileHome)(e);return fe.existsSync(ce.join(t,"auth.json"))||fe.existsSync(ce.join(t,".credentials.json"))}function $r(e,t,n={}){let r=n.now??Date.now(),i=n.probe??"cache",o=(0,Xe.listSavedAccountProfiles)(e).find(d=>d.id===t),a=e==="codex"?o!==void 0&&da(o):la(t),c=null;i==="store"&&(c=e==="codex"?Fr(t,r):Mr(t,r)),c??=Nr(e,t),!c&&e==="codex"&&(c=Fr(t,r)),!c&&i==="auto"&&Rr(t)&&(c=Mr(t,r));let s={providerId:e,accountId:t,checkedAt:r,isLive:a};if(!c)return(e==="codex"?fa(t):Rr(t))?{...s,state:"unknown",reason:"Credential health has not been recorded yet."}:{...s,state:"missing",reason:"No stored credentials; sign in again."};let u=e==="codex"?ua(c,r):sa(c,r);return{...s,...u,accessExpiresAt:c.accessExpiresAt,refreshExpiresAt:c.refreshExpiresAt,refreshExpiryEstimated:c.refreshExpiryEstimated,lastRefreshAt:c.lastRefreshAt}}function ha(e,t={}){let n={probe:"auto",...t},r=e?[e]:["claude-code","codex"],i=[];for(let o of r){let a=(0,Xe.getActiveSavedAccount)(o);for(let c of(0,Xe.listSavedAccountProfiles)(o))i.push({id:c.id,providerId:o,label:c.label,email:c.email??c.metadata?.email,planType:c.metadata?.planType,isActive:a?.id===c.id,health:$r(o,c.id,n),source:c.metadata?.origin==="live-sync"?"learned":"registered",addedAt:c.addedAt})}return i}function pa(e){return(0,Xt.parseClaudeCredentialBlob)(e)}});var rn=C(V=>{"use strict";var ma=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]})),ya=V&&V.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),kr=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"&&ma(n,t,r[i]);return ya(n,t),n}})();Object.defineProperty(V,"__esModule",{value:!0});V.getLastSwitchPath=Ze;V.readLastSwitch=wa;V.writeLastSwitch=Ca;V.clearLastSwitch=ba;V.switchFailure=Oa;V.finishSwitchResult=Pa;var Ur=kr(y("fs")),ga=kr(y("path")),Sa=y("crypto"),va=de(),Aa=ie();function _a(e){return e==="codex"?"codex":"claude"}function Ze(e){return ga.join((0,va.getAccountsDir)(),_a(e),"last-switch.json")}function wa(e){try{let t=JSON.parse(Ur.readFileSync(Ze(e),"utf8"));return t&&typeof t.token=="string"&&typeof t.to=="string"?t:null}catch{return null}}function Ca(e,t,n){let r={token:(0,Sa.randomUUID)(),provider:e,from:t,to:n,at:new Date().toISOString()};return(0,Aa.atomicWriteJsonSync)(Ze(e),r),r}function ba(e){try{Ur.rmSync(Ze(e),{force:!0})}catch{}}function Oa(e,t,n,r={}){return{success:!1,error:n,provider:e,accountId:t,previousAccountId:null,verified:!1,verification:"none",warnings:[],hints:[],runningConsumers:[],...r}}function Pa(e){let t=[...e.warnings,...e.runningConsumers.map(n=>n.reachability)];return{...e,warnings:t,warning:t.length?t.join(" "):void 0}}});var cn=C(on=>{"use strict";Object.defineProperty(on,"__esModule",{value:!0});on.emptyProviderSyncReport=Ia;function Ia(){return{warnings:[]}}});var sn=C(q=>{"use strict";var xa=q&&q.__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]})),Da=q&&q.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Ea=q&&q.__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"&&xa(n,t,r[i]);return Da(n,t),n}})();Object.defineProperty(q,"__esModule",{value:!0});q.ACCOUNT_CONSUMER_REACHABILITY=void 0;q.findRunningProcessesSync=Vr;q.findRunningProcesses=Gr;q.detectRunningAccountConsumers=Ra;q.detectRunningAccountConsumersSync=Ta;q.describeAccountConsumer=Na;var Br=y("child_process"),qr=Ea(y("path")),Wr=4e3,ja=/claude-code[\\/]cli\.js/;function Ma(e){let t=[];for(let n of e.split(`
|
|
13
|
-
`)){let r=n.match(/^\s*(\d+)\s+(\S+)\s*(.*)$/);r&&t.push({pid:Number(r[1]),command:r[2],args:r[3]??""})}return t}function Fa(e){let t=[];for(let n of e.split(/\r?\n/)){let r=n.match(/^"([^"]+)","(\d+)"/);r&&t.push({pid:Number(r[2]),command:r[1],args:""})}return t}function zr(e,t){let n=new Set(t),r=[];for(let i of e){if(!Number.isFinite(i.pid)||i.pid===process.pid)continue;let o=qr.basename(i.command),a=i.args.trim().split(/\s+/)[0]??"",s=[o,o.replace(/\.exe$/i,""),qr.basename(a)].find(u=>u&&n.has(u));!s&&n.has("claude")&&/^node(\.exe)?$/i.test(o)&&ja.test(i.args)&&(s="claude"),s&&r.push({pid:i.pid,name:s,command:i.command})}return r}function Kr(){return process.platform==="win32"?{command:"tasklist",args:["/FO","CSV","/NH"]}:{command:"ps",args:["-axo","pid=,comm=,args="]}}function Qr(e){return process.platform==="win32"?Fa(e):Ma(e)}function Vr(e){if(e.length===0)return[];try{let{command:t,args:n}=Kr(),r=(0,Br.spawnSync)(t,n,{encoding:"utf8",maxBuffer:16*1024*1024,timeout:Wr,killSignal:"SIGKILL",windowsHide:!0});return r.error||r.status!==0?[]:zr(Qr(String(r.stdout??"")),e)}catch{return[]}}function Gr(e){return e.length===0?Promise.resolve([]):new Promise(t=>{try{let{command:n,args:r}=Kr();(0,Br.execFile)(n,r,{encoding:"utf8",timeout:Wr,killSignal:"SIGKILL",windowsHide:!0,maxBuffer:16*1024*1024},(i,o)=>{t(i?[]:zr(Qr(String(o??"")),e))})}catch{t([])}})}var an={"claude-cli":"claude","claude-desktop":"Claude","codex-cli":"codex","codex-app":"Codex"};q.ACCOUNT_CONSUMER_REACHABILITY={"claude-cli":{switched:!0,reachability:"Running claude sessions keep the previous account until restarted; a running session can rotate the refresh token of the account you just left."},"claude-desktop":{switched:!1,reachability:"Claude Desktop is not switched by sidekick (it keeps its own web session) and its embedded engine can rotate the shared CLI token."},"codex-cli":{switched:!0,reachability:"Running codex sessions keep the previous account until restarted."},"codex-app":{switched:!0,reachability:"The Codex app shares the CLI login; restart it to pick up the switch. While running it can refresh and rotate the live token."},"vscode-extension-host":{switched:!0,reachability:"The Claude Code extension host keeps the previous account until the window reloads."}};function Jr(e,t){return{kind:e,pids:t,...q.ACCOUNT_CONSUMER_REACHABILITY[e]}}function Yr(e,t){let n=[];for(let r of t){let i=e.filter(o=>o.name===an[r]).map(o=>o.pid);i.length>0&&n.push(Jr(r,i))}return n}function Xr(e){return e==="claude-code"?["claude-cli","claude-desktop"]:e==="codex"?["codex-cli","codex-app"]:["claude-cli","claude-desktop","codex-cli","codex-app"]}async function Ra(e){let t=Xr(e),n=await Gr(t.map(r=>an[r]));return Yr(n,t)}function Ta(e){let t=Xr(e),n=Vr(t.map(r=>an[r]));return Yr(n,t)}function Na(e,t=[]){return Jr(e,t)}});var fi=C(_=>{"use strict";var Ha=_&&_.__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]})),La=_&&_.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Zr=_&&_.__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"&&Ha(n,t,r[i]);return La(n,t),n}})();Object.defineProperty(_,"__esModule",{value:!0});_.storeClaudeProfileIdentity=ri;_.storeClaudeProfileCredentials=ii;_.readStoredClaudeAccount=ct;_.readAccountRegistry=Ua;_.writeAccountRegistry=qa;_.readActiveClaudeAccount=be;_.addCurrentAccount=Wa;_.withClaudeAuthSwapLock=Re;_.syncClaudeLiveStateUnlocked=dn;_.syncClaudeLiveState=za;_.cleanupAbandonedClaudeLogins=Ka;_.switchToAccount=Qa;_.switchToAccountAsync=Va;_.applyClaudeProfileToLiveHome=Ja;_.resolveActiveClaudeHome=Ya;_.applyActiveClaudeToLiveHome=Xa;_.reconcileClaudeAuthState=es;_.removeAccount=ts;_.listAccounts=ns;_.getActiveAccount=di;_.resolveActiveClaudeAccount=rs;_.isMultiAccountEnabled=is;var W=Zr(y("fs")),H=Zr(y("path")),B=Wt(),Fe=ie(),S=de(),E=Ge(),et=Kt(),tt=nn(),ne=rn(),$a=cn(),ei=sn();function nt(){return H.join((0,S.getAccountsDir)(),"credentials")}function rt(){return H.join((0,S.getAccountsDir)(),"configs")}function ka(){return H.join((0,S.getAccountsDir)(),"claude",".profiles-migrated-v1")}function ti(){for(let e of[(0,S.getAccountsDir)(),nt(),rt()])W.mkdirSync(e,{recursive:!0,mode:448})}function it(e){try{return JSON.parse(W.readFileSync(e,"utf8"))}catch{return null}}function ni(e){return it(e)?.oauthAccount??null}function ri(e,t){(0,Fe.atomicWriteJsonSync)(H.join((0,E.getClaudeProfileHome)(e),".claude.json"),{oauthAccount:t});try{(0,Fe.atomicWriteJsonSync)(H.join(rt(),`${e}.config.json`),t)}catch{}}function ii(e,t,n){(0,B.writeActiveCredentials)(t,(0,E.getClaudeProfileHome)(e));try{(0,Fe.atomicWriteJsonSync)(H.join(nt(),`${e}.credentials.json`),t)}catch{}(0,tt.writeClaudeHealthSidecar)(e,t,n)}function ot(e,t,n,r){ri(e,n),ii(e,t,r)}function oi(e){return it(H.join(nt(),`${e}.credentials.json`))}function ci(e){return it(H.join(rt(),`${e}.config.json`))}function ai(e){return ni(H.join((0,E.getClaudeProfileHome)(e),".claude.json"))}function ct(e){let t=(0,B.readActiveCredentials)((0,E.getClaudeProfileHome)(e)),n=ai(e);if(t&&n)return{credentials:t,oauthAccount:n};let r=oi(e),i=ci(e);if(r&&i){try{ot(e,r,i,"migration")}catch{}return{credentials:r,oauthAccount:i}}return null}function si(){return ni((0,E.getClaudeConfigPath)())}function un(e){let t={},n=(0,E.getClaudeConfigPath)();try{t=JSON.parse(W.readFileSync(n,"utf8"))}catch{}t.oauthAccount=e,(0,Fe.atomicWriteJsonSync)(n,t)}function Ua(){let e=(0,S.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 qa(e){(0,S.replaceSavedAccountProfiles)("claude-code",Ba(e),e.activeAccountUuid)}function Ba(e){let t=new Map((0,S.listSavedAccountProfiles)("claude-code").map(n=>[n.providerAccountId??n.id,n]));return e.accounts.map(n=>({id:n.uuid,providerId:"claude-code",providerAccountId:n.uuid,email:n.email,label:n.label,addedAt:n.addedAt,metadata:{...t.get(n.uuid)?.metadata,email:n.email}}))}function be(){return(0,E.readLiveClaudeIdentity)()}function ln(e){return(0,S.listSavedAccountProfiles)("claude-code").find(t=>(t.providerAccountId??t.id)===e)??null}function ui(e){let t=(0,S.listSavedAccountProfiles)("claude-code");return t.find(n=>(n.providerAccountId??n.id)===e.uuid)??t.find(n=>(n.email??n.metadata?.email)===e.email)??null}function Wa(e){let t=be();if(!t)return{success:!1,error:"No active Claude account found. Sign in with `claude` first."};let n=(0,B.readActiveCredentials)();if(!n)return{success:!1,error:"Could not read Claude credentials."};let r=si();if(!r)return{success:!1,error:"Could not read Claude config file."};ti();try{ot(t.uuid,n,r,"login")}catch(i){return{success:!1,error:`Failed to back up Claude credentials: ${i}`}}return(0,S.withSavedAccountRegistryLock)(()=>{let i=ln(t.uuid),o=i?.id??t.uuid;return(0,S.upsertSavedAccountProfileUnlocked)({id:o,providerId:"claude-code",providerAccountId:t.uuid,email:t.email,label:e!==void 0?e||void 0:i?.label,addedAt:i?.addedAt??new Date().toISOString(),metadata:{...i?.metadata,email:t.email,origin:i?.metadata?.origin??"manual"}}),(0,S.setActiveSavedAccountUnlocked)("claude-code",o),{success:!0}})}function Re(e){let t=H.join((0,S.getAccountsDir)(),"claude");return W.mkdirSync(t,{recursive:!0,mode:448}),(0,Fe.withFileLockSync)(H.join(t,"auth-swap.lock"),e)}function dn(e="live-sync"){let t=(0,$a.emptyProviderSyncReport)();try{let n=be();if(!n)return t.skipped="logged-out",t;let r=ui(n);r?r.email!==n.email&&n.email&&(r={...r,email:n.email,metadata:{...r.metadata,email:n.email}},(0,S.upsertSavedAccountProfile)(r)):(r={id:n.uuid,providerId:"claude-code",providerAccountId:n.uuid,email:n.email,label:n.email,addedAt:new Date().toISOString(),metadata:{email:n.email,origin:"live-sync"}},ti(),(0,S.upsertSavedAccountProfile)(r),t.registered={id:r.id,email:n.email});let i=r.providerAccountId??r.id,o=(0,B.readActiveCredentials)(),a=(0,et.parseClaudeCredentialBlob)(o);if(a){let s=(0,tt.readHealthSidecar)("claude-code",i),u=s?.accessExpiresAt??s?.refreshExpiresAt??0,d=(0,et.claudeCredentialFreshness)(a);if(!s||d>u||d===u&&!W.existsSync(H.join((0,E.getClaudeProfileHome)(i),".claude.json")))try{ot(i,o,si()??{emailAddress:n.email,accountUuid:n.uuid},e),t.folded=r.id}catch(A){t.warnings.push(`Could not back up the live Claude credentials: ${A}`)}}else o===null&&t.warnings.push("The live Claude credential store could not be read.");let c=(0,S.getActiveSavedAccount)("claude-code");(!c||c.id!==r.id)&&((0,S.setActiveSavedAccount)("claude-code",r.id,{silent:!0}),t.repointed=r.id)}catch(n){t.warnings.push(`Claude account sync failed: ${n}`)}return t}function za(e="live-sync"){try{return Re(()=>dn(e))}catch(t){return{warnings:[`Could not acquire the account-switch lock: ${t}`]}}}function Ka(e=360*60*1e3,t=Date.now()){let n=[],r=[];try{r=W.readdirSync((0,E.getClaudeProfilesDir)())}catch{return n}let i=new Set((0,S.listSavedAccountProfiles)("claude-code").map(o=>o.id));for(let o of r){if(i.has(o))continue;let a=(0,E.getClaudeProfileDir)(o),c=H.join(a,"profile.json"),s=it(c);if(!s)continue;let u=(0,E.getClaudeProfileHome)(o);if((0,E.isClaudeProfileAuthenticated)(u))continue;let d=s.addedAt?Date.parse(s.addedAt):NaN;if(!((Number.isNaN(d)?Number.POSITIVE_INFINITY:t-d)<e))try{(0,B.deleteStoredCredentials)(u),W.rmSync(a,{recursive:!0,force:!0}),n.push(o)}catch{}}return n}function Qa(e,t={}){let n=(0,ei.detectRunningAccountConsumersSync)("claude-code");return li(e,t,n)}async function Va(e,t={}){let n=await(0,ei.detectRunningAccountConsumers)("claude-code");return li(e,t,n)}function li(e,t,n){try{return Re(()=>Ga(e,t,n))}catch(r){return(0,ne.switchFailure)("claude-code",e,`Could not acquire the account-switch lock: ${r}`)}}function Ga(e,t,n){let r=ln(e);if(!r)return(0,ne.switchFailure)("claude-code",e,`Account ${e} not found in registry.`);let i=r.label??r.email??e,o=H.resolve((0,E.getLiveClaudeHome)()),a=H.resolve((0,E.getClaudeProfilesDir)());if(o===a||o.startsWith(a+H.sep))return(0,ne.switchFailure)("claude-code",e,`CLAUDE_CONFIG_DIR points at a sidekick profile home (${o}); unset it before switching accounts.`);let c=dn("switch"),s=(0,S.getActiveSavedAccount)("claude-code")?.id??null,u={success:!0,provider:"claude-code",accountId:r.id,previousAccountId:s,verified:!1,verification:"none",warnings:[...c.warnings],hints:[],runningConsumers:n,email:r.email};if(be()?.uuid===e)return s!==r.id&&(0,S.setActiveSavedAccount)("claude-code",r.id),(0,ne.finishSwitchResult)({...u,alreadyActive:!0,verified:!0,verification:"store",health:(0,tt.getAccountHealth)("claude-code",r.id),hints:[`${i} is already the active Claude account.`]});let d=ct(e);if(!d)return(0,ne.finishSwitchResult)({...u,success:!1,needsLogin:!0,error:`Stored credentials for "${i}" not found; sign in again.`});let p=(0,tt.getAccountHealth)("claude-code",r.id,{probe:"store"});if(u.health=p,(p.state==="expired"||p.state==="missing")&&!t.force)return(0,ne.finishSwitchResult)({...u,success:!1,needsLogin:!0,error:`Stored credentials for "${i}" have ${p.state==="missing"?"not been saved":"expired"}; sign in again.`});p.state==="expiring"&&p.reason&&u.warnings.push(`"${i}": ${p.reason}`);let A=(0,B.readActiveCredentials)(),v=null;try{v=W.readFileSync((0,E.getClaudeConfigPath)(),"utf8")}catch{}let w=()=>{if(A)try{(0,B.writeActiveCredentials)(A)}catch{}if(v!==null)try{W.writeFileSync((0,E.getClaudeConfigPath)(),v)}catch{}try{(0,S.setActiveSavedAccount)("claude-code",s,{silent:!0})}catch{}};try{(0,B.writeActiveCredentials)(d.credentials),un(d.oauthAccount)}catch(xe){return w(),(0,ne.finishSwitchResult)({...u,success:!1,error:`Failed to write Claude credentials: ${xe}`})}let L=(0,et.parseClaudeCredentialBlob)((0,B.readActiveCredentials)()),ee=(0,et.parseClaudeCredentialBlob)(d.credentials),x=be();if(!(L!==null&&ee!==null&&L.accessToken===ee.accessToken&&x?.uuid===e))return w(),(0,ne.finishSwitchResult)({...u,success:!1,verification:"failed",error:`The live Claude credential store did not reflect the switch to "${i}"; the previous login was restored.`});try{(0,S.setActiveSavedAccount)("claude-code",r.id)}catch(xe){return w(),(0,ne.finishSwitchResult)({...u,success:!1,error:`Failed to update account registry: ${xe}`})}let K;try{K=(0,ne.writeLastSwitch)("claude-code",s,r.id).token}catch{u.warnings.push("The switch succeeded but could not be recorded for undo.")}return(0,ne.finishSwitchResult)({...u,verified:!0,verification:"store",undoToken:K,hints:[`New claude sessions use ${r.email??i}.`]})}function Ja(e){try{return Re(()=>{let t=ct(e);return t?((0,B.writeActiveCredentials)(t.credentials),un(t.oauthAccount),{success:!0}):{success:!1,error:`Stored credentials for ${e} not found.`}})}catch(t){return{success:!1,error:`Could not install the refreshed credentials: ${t}`}}}function Ya(){let e=(0,S.getActiveSavedAccount)("claude-code");return e?(0,E.getClaudeProfileHome)(e.providerAccountId??e.id):(0,E.getLiveClaudeHome)()}function Xa(){try{return Re(Za)}catch(e){return{success:!1,error:`Could not acquire the account-switch lock: ${e}`}}}function Za(){let e=(0,S.getActiveSavedAccount)("claude-code");if(!e)return{success:!1,error:"No active Claude account found."};let t=e.providerAccountId??e.id,n=ct(t);if(!n)return{success:!1,error:`Stored credentials for ${e.email??t} not found.`};let r=(0,B.readActiveCredentials)(),i=null;try{i=W.readFileSync((0,E.getClaudeConfigPath)(),"utf8")}catch{}try{(0,B.writeActiveCredentials)(n.credentials)}catch(o){if(r)try{(0,B.writeActiveCredentials)(r)}catch{}return{success:!1,error:`Failed to write credentials: ${o}`}}try{un(n.oauthAccount)}catch(o){if(r)try{(0,B.writeActiveCredentials)(r)}catch{}if(i)try{W.writeFileSync((0,E.getClaudeConfigPath)(),i)}catch{}return{success:!1,error:`Failed to write config: ${o}`}}return{success:!0}}function es(){try{let e=ka();if(W.existsSync(e))return;let t=(0,S.readSavedAccountRegistry)();if(t)for(let n of t.accounts.filter(r=>r.providerId==="claude-code"))try{let r=n.providerAccountId??n.id;if((0,B.readActiveCredentials)((0,E.getClaudeProfileHome)(r))&&ai(r))continue;let i=oi(r),o=ci(r);if(!i||!o)continue;ot(r,i,o,"migration")}catch{}W.mkdirSync(H.dirname(e),{recursive:!0,mode:448}),W.writeFileSync(e,new Date().toISOString()+`
|
|
14
|
-
`,{encoding:"utf8",mode:384})}catch{}}function ts(e){return(0,S.withSavedAccountRegistryLock)(()=>{let t=ln(e);if(!t)return{success:!1,error:`Account ${e} not found.`};for(let n of[H.join(nt(),`${e}.credentials.json`),H.join(rt(),`${e}.config.json`)])try{W.unlinkSync(n)}catch{}try{(0,B.deleteStoredCredentials)((0,E.getClaudeProfileHome)(e)),W.rmSync((0,E.getClaudeProfileDir)(t.id),{recursive:!0,force:!0})}catch{}return(0,S.removeSavedAccountProfileUnlocked)("claude-code",t.id),{success:!0}})}function ns(){return(0,S.listSavedAccountProfiles)("claude-code").map(e=>({uuid:e.providerAccountId??e.id,email:e.email??e.metadata?.email??"unknown",label:e.label,addedAt:e.addedAt}))}function di(){let e=(0,S.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 rs(e={}){let t=e.selfHeal??!0,n=be();if(n){let i=ui(n);if(i){let o=(0,S.getActiveSavedAccount)("claude-code");if(t&&(!o||o.id!==i.id))try{(0,S.setActiveSavedAccount)("claude-code",i.id,{silent:!0})}catch{}}return{email:n.email,label:i?.label,providerAccountId:n.uuid,registryAccountId:i?.id,source:"live"}}let r=di();return r?{email:r.email,label:r.label,providerAccountId:r.uuid,registryAccountId:r.uuid,source:"registry"}:{source:"none"}}function is(){return(0,S.listSavedAccountProfiles)("claude-code").length>=1}});var He=C(j=>{"use strict";Object.defineProperty(j,"__esModule",{value:!0});j.QUOTA_AGING_MAX_AGE_MS=j.QUOTA_FRESH_MAX_AGE_MS=j.SEVEN_DAY_WINDOW_MS=j.FIVE_HOUR_WINDOW_MS=j.QUOTA_PROVIDER_IDS=void 0;j.classifyQuotaFreshness=us;j.formatQuotaAge=ls;j.projectQuotaWindow=Ne;j.withQuotaProjections=ds;j.fetchQuota=hs;var os=Dt();Object.defineProperty(j,"QUOTA_PROVIDER_IDS",{enumerable:!0,get:function(){return os.QUOTA_PROVIDER_IDS}});var cs="https://api.anthropic.com/api/oauth/usage",as="oauth-2025-04-20",ss=1e4;j.FIVE_HOUR_WINDOW_MS=5*36e5;j.SEVEN_DAY_WINDOW_MS=7*864e5;j.QUOTA_FRESH_MAX_AGE_MS=5*6e4;j.QUOTA_AGING_MAX_AGE_MS=60*6e4;function us(e){return typeof e!="number"||!Number.isFinite(e)||e<0?"stale":e<j.QUOTA_FRESH_MAX_AGE_MS?"fresh":e<j.QUOTA_AGING_MAX_AGE_MS?"aging":"stale"}function ls(e){if(typeof e!="number"||!Number.isFinite(e)||e<0)return"age unknown";let t=Math.floor(e/6e4);if(t<1)return"just now";if(t<60)return`${t}m ago`;let n=Math.floor(t/60);return n<48?`${n}h ago`:`${Math.floor(n/24)}d ago`}function Ne(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 a=i?Date.parse(i):NaN,c=Number.isFinite(a)?a:Date.now(),s=r-(o-c);if(!(s<=0))return Math.min(Math.round(t*(r/s)),200)}function ds(e,t={}){if(!e.available)return e;let n={...e},r=t.capturedAt??e.capturedAt;if(n.projectedFiveHour==null){let i=Ne({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=Ne({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 Te(e,t={}){return{fiveHour:{utilization:0,resetsAt:""},sevenDay:{utilization:0,resetsAt:""},available:!1,error:e,...t}}function fs(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 hs(e,t={}){let n=new AbortController,r=setTimeout(()=>n.abort(),ss);r.unref();try{let o=await(t.fetchImpl??fetch)(cs,{method:"GET",signal:n.signal,headers:{Authorization:`Bearer ${e}`,"anthropic-beta":as,"Content-Type":"application/json"}});if(!o.ok)return o.status===401?Te("Sign in to Claude Code to view quota",{failureKind:"auth",httpStatus:o.status}):o.status===429?Te(`API error: ${o.status}`,{failureKind:"rate_limit",httpStatus:o.status,retryAfterMs:fs(o.headers.get("retry-after"))}):o.status>=500&&o.status<=599?Te(`API error: ${o.status}`,{failureKind:"server",httpStatus:o.status}):Te(`API error: ${o.status}`,{failureKind:"unknown",httpStatus:o.status});let a=await o.json(),c=a.five_hour?.utilization??0,s=a.seven_day?.utilization??0,u=a.five_hour?.resets_at??"",d=a.seven_day?.resets_at??"";return{fiveHour:{utilization:c,resetsAt:u},sevenDay:{utilization:s,resetsAt:d},available:!0,projectedFiveHour:Ne({utilization:c,resetsAt:u,windowMs:j.FIVE_HOUR_WINDOW_MS}),projectedSevenDay:Ne({utilization:s,resetsAt:d,windowMs:j.SEVEN_DAY_WINDOW_MS})}}catch{return Te("Network error",{failureKind:"network"})}finally{clearTimeout(r)}}});var hi=C(fn=>{"use strict";Object.defineProperty(fn,"__esModule",{value:!0});fn.isAggregateCodexLimit=ps;function ps(e){return!e||e==="codex"}});var st=C(oe=>{"use strict";var ms=oe&&oe.__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]})),ys=oe&&oe.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),mi=oe&&oe.__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"&&ms(n,t,r[i]);return ys(n,t),n}})();Object.defineProperty(oe,"__esModule",{value:!0});oe.writeQuotaSnapshot=ws;oe.readQuotaSnapshot=Cs;var yi=mi(y("fs")),gs=mi(y("path")),gi=De(),Si=ie(),Ss=He(),pi=hi();function pn(){return gs.join((0,gi.getConfigDir)(),"quota-snapshots.json")}function vi(){yi.mkdirSync((0,gi.getConfigDir)(),{recursive:!0,mode:448})}function Ai(){try{let e=JSON.parse(yi.readFileSync(pn(),"utf8"));if(e?.version===1&&Array.isArray(e.snapshots))return e}catch{}return{version:1,snapshots:[]}}function vs(e){vi(),(0,Si.atomicWriteJsonSync)(pn(),e)}function As(e){return vi(),(0,Si.withFileLockSync)(`${pn()}.lock`,e)}function hn(e){let t=e.capturedAt?Date.parse(e.capturedAt):NaN;return Number.isFinite(t)?t:0}function at(e){let t=Date.parse(e);return Number.isFinite(t)?t:0}function _s(e,t){let n=(0,pi.isAggregateCodexLimit)(e.limitId),r=(0,pi.isAggregateCodexLimit)(t.limitId);if(n!==r)return n;let i=at(e.fiveHour.resetsAt),o=at(t.fiveHour.resetsAt);if(i!==o)return i>o;let a=at(e.sevenDay.resetsAt),c=at(t.sevenDay.resetsAt);if(a!==c)return a>c;let s=e.fiveHour.utilization+e.sevenDay.utilization,u=t.fiveHour.utilization+t.sevenDay.utilization;return s!==u?s>u:hn(e)>hn(t)}function ws(e,t,n){As(()=>{let r=Ai(),i=r.snapshots.findIndex(d=>d.providerId===e&&d.accountId===t),o=i>=0?r.snapshots[i].quota:void 0,{capturedSource:a,...c}=n;delete c.ageMs,delete c.freshness;let s={...c,providerId:e,capturedAt:n.capturedAt??new Date().toISOString(),source:c.source&&c.source!=="cache"?c.source:a??"session",stale:!1,resetCredits:n.resetCredits??(e==="codex"?o?.resetCredits:void 0)};if(i>=0&&_s(r.snapshots[i].quota,s))return;let u={providerId:e,accountId:t,quota:s};i>=0?r.snapshots[i]=u:r.snapshots.push(u),vs(r)})}function Cs(e,t,n=new Date){let i=Ai().snapshots.find(u=>u.providerId===e&&u.accountId===t);if(!i)return null;let o=hn(i.quota),a=o>0?Math.max(0,n.getTime()-o):void 0,c=i.quota.capturedSource??i.quota.source,s=c&&c!=="cache"?c:void 0;return{...i.quota,providerId:e,source:"cache",...s?{capturedSource:s}:{},stale:!0,...a!==void 0?{ageMs:a}:{},freshness:(0,Ss.classifyQuotaFreshness)(a)}}});var qi=C(f=>{"use strict";var bs=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]})),Os=f&&f.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Ci=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"&&bs(n,t,r[i]);return Os(n,t),n}})();Object.defineProperty(f,"__esModule",{value:!0});f.CODEX_KEYRING_FIX_HINT=f.getCodexCredentialStoreMode=f.getSystemCodexHome=f.getCodexProfileHome=f.getCodexProfilesDir=void 0;f.getCodexMonitoringHomes=xs;f.storeCodexProfileAuth=he;f.parseCodexLoginStatusOutput=vn;f.getCodexLoginStatus=Le;f.getCodexLoginStatusAsync=Oe;f.readCodexAccountMetadata=Ei;f.readCodexAccountMetadataAsync=ji;f.isCodexProfileAuthenticated=Mi;f.isCodexProfileAuthenticatedAsync=Fi;f.listCodexAccounts=ae;f.getActiveCodexAccount=$e;f.resolveSidekickCodexHome=An;f.resolveActiveCodexAccount=Rs;f.getCodexExecutionEnv=Ts;f.prepareCodexAccount=Hs;f.prepareCodexAccountAsync=Ls;f.finalizeCodexAccount=Ti;f.finalizeCodexAccountAsync=Ni;f.withCodexAuthSwapLock=Pe;f.dedupeCodexProfiles=Li;f.syncCodexLiveStateUnlocked=_n;f.syncCodexLiveState=$s;f.cleanupAbandonedCodexLogins=ks;f.switchToCodexAccount=Bs;f.switchToCodexAccountAsync=Ws;f.reconcileCodexAuthState=zs;f.reconcileCodexAuthStateAsync=Ks;f.removeCodexAccount=Qs;var P=Ci(y("fs")),h=Ci(y("path")),bi=y("child_process"),Oi=y("crypto"),O=de(),Q=ie(),I=Vt(),l=Ye(),ut=nn(),z=rn(),Ps=cn(),Pi=sn(),mn=st(),dt=Ye();Object.defineProperty(f,"getCodexProfilesDir",{enumerable:!0,get:function(){return dt.getCodexProfilesDir}});Object.defineProperty(f,"getCodexProfileHome",{enumerable:!0,get:function(){return dt.getCodexProfileHome}});Object.defineProperty(f,"getSystemCodexHome",{enumerable:!0,get:function(){return dt.getSystemCodexHome}});Object.defineProperty(f,"getCodexCredentialStoreMode",{enumerable:!0,get:function(){return dt.getCodexCredentialStoreMode}});f.CODEX_KEYRING_FIX_HINT='Set `cli_auth_credentials_store = "file"` in ~/.codex/config.toml and run `codex login` again.';function Is(e){let t=new Set,n=[];for(let r of e){let i=h.resolve(r);t.has(i)||(t.add(i),n.push(r))}return n}function xs(){let e=(0,l.getExplicitCodexHome)();if(e)return[e];let t=[(0,l.getDefaultSystemCodexHome)()];for(let n of ae()){let r=(0,l.getCodexProfileHome)(n.id);P.existsSync(h.join(r,"sessions"))&&t.push(r)}return Is(t)}function ft(e){try{return JSON.parse(P.readFileSync((0,l.getCodexProfileStatePath)(e),"utf8"))}catch{return null}}function Ds(e,t){(0,l.ensureCodexProfileDirs)(e),(0,Q.atomicWriteJsonSync)((0,l.getCodexProfileStatePath)(e),t)}function _i(e,t){return P.existsSync(e)?(P.mkdirSync(h.dirname(t),{recursive:!0,mode:448}),P.copyFileSync(e,t),!0):!1}function Ii(e,t){let n=(0,l.readFileOrNull)(h.join(e,"config.toml"))??"";(0,Q.atomicWriteFileSync)(h.join(t,"config.toml"),(0,l.forceFileCredentialStore)(n))}function Es(e,t){let n=_i(h.join(e,"auth.json"),h.join(t,"auth.json")),r=_i(h.join(e,".credentials.json"),h.join(t,".credentials.json"));return n||r}function he(e,t,n,r){let i=(0,l.getCodexProfileHome)(e);t&&(0,Q.atomicWriteFileSync)(h.join(i,"auth.json"),t),n&&(0,Q.atomicWriteFileSync)(h.join(i,".credentials.json"),n),t&&(0,ut.writeCodexHealthSidecar)(e,t,r)}function js(e){let t=(0,I.readAuthIdentityFromRaw)((0,l.readFileOrNull)(h.join(e,"auth.json")));return t?{email:t.email,workspaceId:t.workspaceId,planType:t.planType,authMode:t.authMode}:{}}function Ms(e){let t=h.join(e,".credentials.json");if(!P.existsSync(t))return{};try{let n=JSON.parse(P.readFileSync(t,"utf8"));if(typeof n.OPENAI_API_KEY=="string"||typeof n.CODEX_API_KEY=="string")return{authMode:"api-key"}}catch{}return{}}var xi=4e3;function vn(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 Le(e){try{let t={...process.env,CODEX_HOME:e},n=(0,bi.spawnSync)("codex",["login","status"],{encoding:"utf8",env:t,timeout:xi,killSignal:"SIGKILL"});return vn(n.status,String(n.stdout??""))}catch{}return{loggedIn:!1}}function Oe(e){return new Promise(t=>{try{let n={...process.env,CODEX_HOME:e};(0,bi.execFile)("codex",["login","status"],{encoding:"utf8",env:n,timeout:xi,killSignal:"SIGKILL"},(r,i)=>{t(r?{loggedIn:!1}:vn(0,String(i??"")))})}catch{t({loggedIn:!1})}})}function ht(e){let t=js(e);if(t.email||t.workspaceId||t.planType||t.authMode)return t;let n=Ms(e);return n.authMode?n:null}function Di(e){return e.loggedIn?{authMode:e.authMode??"unknown"}:{}}function Ei(e){return ht(e)??Di(Le(e))}async function ji(e){return ht(e)??Di(await Oe(e))}function pe(e){return P.existsSync(h.join(e,"auth.json"))||P.existsSync(h.join(e,".credentials.json"))}function Mi(e){return pe(e)||Le(e).loggedIn}async function Fi(e){return pe(e)||(await Oe(e)).loggedIn}function Fs(e,t){let n=e.trim().toLowerCase();return ae().find(i=>i.id!==t&&(i.label??"").trim().toLowerCase()===n)?`A Codex account named "${e}" already exists.`:null}function ae(){return(0,O.listSavedAccountProfiles)("codex")}function $e(){return(0,O.getActiveSavedAccount)("codex")}function An(){return(0,l.getSystemCodexHome)()}function wi(e){return{email:e.email??e.metadata?.email,workspaceId:e.metadata?.workspaceId}}function Rs(e={}){let t=e.selfHeal??!0,n=(0,I.readAuthIdentityFromRaw)((0,l.readFileOrNull)(h.join(An(),"auth.json")));if(n&&(n.email||n.workspaceId)){let i=ke(n);if(i){let o=(0,O.getActiveSavedAccount)("codex");if(t&&(!o||o.id!==i.id))try{(0,O.setActiveSavedAccount)("codex",i.id,{silent:!0})}catch{}}return{email:n.email??i?.email??i?.metadata?.email,label:i?.label,providerAccountId:i?.providerAccountId??n.workspaceId,registryAccountId:i?.id,source:"live"}}let r=$e();return r?{email:r.email??r.metadata?.email,label:r.label,providerAccountId:r.providerAccountId,registryAccountId:r.id,source:"registry"}:{source:"none"}}function Ts(e=process.env){return{...e,CODEX_HOME:An()}}function Ns(e){return{success:!1,needsLogin:!1,error:`Codex stores credentials in the OS keyring (cli_auth_credentials_store = "${e}"); sidekick can only switch file-based logins. ${f.CODEX_KEYRING_FIX_HINT}`}}function Ri(e){let t=e.trim();if(!t)return{result:{success:!1,error:"Codex accounts require a non-empty label."}};let n=Fs(t);if(n)return{result:{success:!1,error:n}};let r=(0,l.getSystemCodexHome)(),i=(0,l.getCodexCredentialStoreMode)(r),o=pe(r);if(i==="keyring"||i==="auto"&&!o)return{result:Ns(i)};let a=(0,Oi.randomUUID)(),c=(0,l.getCodexProfileHome)(a);if((0,l.ensureCodexProfileDirs)(a),Ds(a,{label:t,addedAt:new Date().toISOString()}),Ii(r,c),Es(r,c)){let u=(0,I.readAuthIdentityFromRaw)((0,l.readFileOrNull)(h.join(c,"auth.json"))),d=u?ke(u,{fallbackToActive:!1}):null;if(d){try{let A=(0,I.readLastRefresh)((0,l.readFileOrNull)(h.join(c,"auth.json"))),v=(0,I.readLastRefresh)((0,l.readFileOrNull)(h.join((0,l.getCodexProfileHome)(d.id),"auth.json")));v!==null&&A!==null&&v>A||he(d.id,(0,l.readFileOrNull)(h.join(c,"auth.json")),(0,l.readFileOrNull)(h.join(c,".credentials.json")),"login")}catch{}P.rmSync((0,l.getCodexProfileDir)(a),{recursive:!0,force:!0});let p=d.metadata?.origin==="live-sync"&&d.label===d.email?{...d,label:t,metadata:{...d.metadata,origin:"manual"}}:d;return p!==d&&(0,O.upsertSavedAccountProfile)(p),{result:{success:!0,profileId:d.id,codexHome:(0,l.getCodexProfileHome)(d.id),needsLogin:!1,warning:`This Codex login is already saved as "${p.label??d.email??d.id}".`}}}return{finalize:{profileId:a,codexHome:c}}}return{result:{success:!0,profileId:a,codexHome:c,needsLogin:!0}}}function Hs(e){let t=Ri(e);return"finalize"in t?{...Ti(t.finalize.profileId),...t.finalize,needsLogin:!1}:t.result}async function Ls(e){let t=Ri(e);return"finalize"in t?{...await Ni(t.finalize.profileId),...t.finalize,needsLogin:!1}:t.result}function lt(e,t,n){let r=ft(e);if(!r){let u=ae().find(d=>d.id===e);return u?t.activate===!1?{result:{success:!0,profileId:e}}:{swap:u}:{result:{success:!1,error:`Codex profile ${e} was not prepared.`}}}let i=(0,l.getCodexProfileHome)(e);if(!n.authenticated)return{result:{success:!1,error:"Codex profile is not authenticated yet."}};let o=(0,l.readFileOrNull)(h.join(i,"auth.json")),a=(0,I.readAuthIdentityFromRaw)(o),c=a?ke(a,{fallbackToActive:!1}):null;if(c&&c.id!==e){he(c.id,o,(0,l.readFileOrNull)(h.join(i,".credentials.json")),"login"),P.rmSync((0,l.getCodexProfileDir)(e),{recursive:!0,force:!0});let u={...c,label:c.metadata?.origin==="live-sync"?r.label:c.label,email:n.metadata.email??c.email,metadata:{...c.metadata,...n.metadata,origin:"login"}};return(0,O.upsertSavedAccountProfile)(u),t.activate===!1?{result:{success:!0,profileId:c.id}}:{swap:u}}let s={id:e,providerId:"codex",label:r.label,email:n.metadata.email,addedAt:r.addedAt,metadata:{...n.metadata,origin:"login"}};(0,O.upsertSavedAccountProfile)(s),o&&(0,ut.writeCodexHealthSidecar)(e,o,"login");try{P.rmSync((0,l.getCodexProfileStatePath)(e),{force:!0})}catch{}return t.activate===!1?{result:{success:!0,profileId:e}}:pe(i)?{swap:s}:((0,O.setActiveSavedAccount)("codex",e),{result:{success:!0,profileId:e,warning:`Codex stores credentials in the OS keyring; sidekick cannot swap them per account, so \`codex\` keeps using the keyring credentials. ${f.CODEX_KEYRING_FIX_HINT}`}})}function Ti(e,t={}){if(!ft(e)){let o=lt(e,t,{authenticated:!1,metadata:{}});return"swap"in o?gn(o.swap,{}):o.result}let n=(0,l.getCodexProfileHome)(e),r=Mi(n),i=lt(e,t,{authenticated:r,metadata:r?Ei(n):{}});return"swap"in i?gn(i.swap,{}):i.result}async function Ni(e,t={}){if(!ft(e)){let o=lt(e,t,{authenticated:!1,metadata:{}});return"swap"in o?Sn(o.swap,{}):o.result}let n=(0,l.getCodexProfileHome)(e),r=await Fi(n),i=lt(e,t,{authenticated:r,metadata:r?await ji(n):{}});return"swap"in i?Sn(i.swap,{}):i.result}function yn(){return h.join((0,O.getAccountsDir)(),"codex","stash")}function Hi(e,t){try{let n=new Date().toISOString().replace(/[:.]/g,"-"),r=null;if(e&&(r=h.join(yn(),`auth-${n}.json`),(0,Q.atomicWriteFileSync)(r,e)),t){let i=h.join(yn(),`credentials-${n}.json`);(0,Q.atomicWriteFileSync)(i,t),r=r??i}return r}catch{return null}}function ke(e,t={}){let n=ae();if(e?.workspaceId){let r=n.find(i=>i.metadata?.workspaceId===e.workspaceId);if(r)return r}if(e?.email){let r=n.find(i=>(i.email??i.metadata?.email)===e.email);if(r)return r}return!e?.workspaceId&&!e?.email&&t.fallbackToActive!==!1?$e():null}function Pe(e){let t=h.join((0,O.getAccountsDir)(),"codex");return P.mkdirSync(t,{recursive:!0,mode:448}),(0,Q.withFileLockSync)(h.join(t,"auth-swap.lock"),e)}function Li(){let e=[],t=ae(),n=new Map;for(let r of t){let i=r.metadata?.workspaceId?`ws:${r.metadata.workspaceId}`:r.email??r.metadata?.email?`email:${r.email??r.metadata?.email}`:`id:${r.id}`;n.set(i,[...n.get(i)??[],r])}for(let r of n.values()){if(r.length<2)continue;let i=[...r].sort((p,A)=>Date.parse(p.addedAt)-Date.parse(A.addedAt)),o=i[0],a=h.join((0,l.getCodexProfileHome)(o.id),"auth.json"),c=(0,l.readFileOrNull)(a),s=(0,I.readLastRefresh)(c,a)??-1,u=(0,O.getActiveSavedAccount)("codex")?.id;for(let p of i.slice(1)){let A=h.join((0,l.getCodexProfileHome)(p.id),"auth.json"),v=(0,l.readFileOrNull)(A),w=(0,I.readLastRefresh)(v,A)??-1;v&&w>s&&(c=v,s=w);try{if(!(0,mn.readQuotaSnapshot)("codex",o.id)){let L=(0,mn.readQuotaSnapshot)("codex",p.id);L&&(0,mn.writeQuotaSnapshot)("codex",o.id,L)}}catch{}try{let L=h.join(yn(),`dup-${p.id}-${new Date().toISOString().replace(/[:.]/g,"-")}`);P.mkdirSync(h.dirname(L),{recursive:!0,mode:448}),P.renameSync((0,l.getCodexProfileDir)(p.id),L)}catch{P.rmSync((0,l.getCodexProfileDir)(p.id),{recursive:!0,force:!0})}(0,O.removeSavedAccountProfile)("codex",p.id),e.push(p.id),u===p.id&&(0,O.setActiveSavedAccount)("codex",o.id,{silent:!0})}c&&c!==(0,l.readFileOrNull)(a)&&he(o.id,c,null,"migration");let d=ht((0,l.getCodexProfileHome)(o.id))??{};(0,O.upsertSavedAccountProfile)({...o,email:d.email??o.email,metadata:{...o.metadata,...d}})}return e}function _n(e="live-sync",t={}){let n=(0,Ps.emptyProviderSyncReport)();try{let r=Li();r.length&&(n.merged=r);let i=(0,l.getSystemCodexHome)(),o=h.join(i,"auth.json"),a=(0,l.readFileOrNull)(o),c=(0,l.readFileOrNull)(h.join(i,".credentials.json"));if(!a&&!c){let x=(0,l.getCodexCredentialStoreMode)(i);return t.systemKeyringLoggedIn||x==="keyring"||x==="auto"?(n.skipped="keyring",n.warnings.push(`Codex keeps its login in the OS keyring; sidekick cannot switch it. ${f.CODEX_KEYRING_FIX_HINT}`)):n.skipped="logged-out",n}let s=(0,I.readAuthIdentityFromRaw)(a),u=ke(s,{fallbackToActive:!1});if(!u&&s&&(s.email||s.workspaceId)){let x=(0,Oi.randomUUID)();u={id:x,providerId:"codex",label:s.email??s.workspaceId,email:s.email,addedAt:new Date().toISOString(),metadata:{email:s.email,workspaceId:s.workspaceId,planType:s.planType,authMode:s.authMode,origin:"live-sync"}},(0,l.ensureCodexProfileDirs)(x),Ii(i,(0,l.getCodexProfileHome)(x)),(0,O.upsertSavedAccountProfile)(u),n.registered={id:x,email:s.email}}else if(!u){let x=$e();if(x&&x.metadata?.authMode==="api-key")u=x;else return n.skipped="no-identity",n}let d=h.join((0,l.getCodexProfileHome)(u.id),"auth.json"),p=(0,l.readFileOrNull)(d),A=(0,I.readLastRefresh)(p),v=(0,I.readLastRefresh)(a),w=A!==null&&v!==null&&A>v;if(a!==p&&!w)try{he(u.id,a,c,e);let x=ht((0,l.getCodexProfileHome)(u.id))??{};(0,O.upsertSavedAccountProfile)({...u,email:x.email??u.email,metadata:{...u.metadata,...x}}),n.folded=u.id}catch(x){n.warnings.push(`Could not back up the live Codex credentials: ${x}`)}let ee=(0,O.getActiveSavedAccount)("codex");(!ee||ee.id!==u.id)&&((0,O.setActiveSavedAccount)("codex",u.id,{silent:!0}),n.repointed=u.id)}catch(r){n.warnings.push(`Codex account sync failed: ${r}`)}return n}function $s(e="live-sync"){try{return Pe(()=>_n(e))}catch(t){return{warnings:[`Could not acquire the account-switch lock: ${t}`]}}}function ks(e=360*60*1e3,t=Date.now()){let n=[],r=[];try{r=P.readdirSync((0,l.getCodexProfilesDir)())}catch{return n}let i=new Set(ae().map(o=>o.id));for(let o of r){if(i.has(o))continue;let a=ft(o);if(!a||pe((0,l.getCodexProfileHome)(o)))continue;let c=Date.parse(a.addedAt);if(!((Number.isNaN(c)?Number.POSITIVE_INFINITY:t-c)<e))try{P.rmSync((0,l.getCodexProfileDir)(o),{recursive:!0,force:!0}),n.push(o)}catch{}}return n}function Us(){let e=(0,l.getSystemCodexHome)();return{consumers:(0,Pi.detectRunningAccountConsumersSync)("codex"),systemKeyringLoggedIn:pe(e)?!1:Le(e).loggedIn}}async function qs(){let e=(0,l.getSystemCodexHome)();return{consumers:await(0,Pi.detectRunningAccountConsumers)("codex"),systemKeyringLoggedIn:pe(e)?!1:(await Oe(e)).loggedIn}}function gn(e,t){let n=Us();try{return Pe(()=>$i(e,t,n))}catch(r){return(0,z.switchFailure)("codex",e.id,`Could not acquire the account-switch lock: ${r}`)}}async function Sn(e,t){let n=await qs(),r;try{r=Pe(()=>$i(e,t,n))}catch(i){return(0,z.switchFailure)("codex",e.id,`Could not acquire the account-switch lock: ${i}`)}return r.success&&t.verifyWithCli&&!r.alreadyActive&&(r=(await Oe((0,l.getSystemCodexHome)())).loggedIn?{...r,verification:"cli"}:(0,z.finishSwitchResult)({...r,warnings:[...r.warnings,'`codex login status` reports "Not logged in" after the switch; the stored token may have been revoked. Sign in again if codex prompts you.']})),r}function $i(e,t,n){let r=(0,l.getSystemCodexHome)(),i=h.join(r,"auth.json"),o=h.join(r,".credentials.json"),a=e.label??e.email??e.id,c=(0,O.getActiveSavedAccount)("codex")?.id??null,s={success:!0,provider:"codex",accountId:e.id,previousAccountId:c,verified:!1,verification:"none",warnings:[],hints:[],runningConsumers:n.consumers,email:e.email??e.metadata?.email},u=h.resolve((0,l.getCodexProfilesDir)()),d=h.resolve(r);if(d===u||d.startsWith(u+h.sep))return(0,z.finishSwitchResult)({...s,success:!1,error:`CODEX_HOME points at a sidekick profile home (${r}); unset it before switching accounts.`});let p=(0,l.readFileOrNull)(i),A=(0,l.readFileOrNull)(o);if(!p&&!A&&n.systemKeyringLoggedIn)return(0,z.finishSwitchResult)({...s,success:!1,error:`Codex stores credentials in the OS keyring; file-based account switching is not supported. ${f.CODEX_KEYRING_FIX_HINT}`});let v=_n("switch",{systemKeyringLoggedIn:n.systemKeyringLoggedIn});if(s.warnings.push(...v.warnings),c=(0,O.getActiveSavedAccount)("codex")?.id??null,s.previousAccountId=c,v.skipped==="no-identity"&&p){let ge=Hi(p,A);s.warnings.push(ge?`Live Codex credentials did not match any saved account; stashed at ${ge}.`:"Live Codex credentials did not match any saved account and could not be stashed.")}let w=(0,l.readFileOrNull)(i),L=(0,l.readFileOrNull)(o),ee=(0,l.getCodexProfileHome)(e.id),x=h.join(ee,"auth.json"),T=(0,l.readFileOrNull)(x),K=(0,l.readFileOrNull)(h.join(ee,".credentials.json"));if(!T&&!K)return(0,z.finishSwitchResult)({...s,success:!1,needsLogin:!0,error:`No stored credentials for "${a}". Sign in again to this account.`});if(T&&!(0,I.parseAuthJson)(T))return(0,z.finishSwitchResult)({...s,success:!1,needsLogin:!0,error:`Stored credentials for "${a}" are corrupted. Sign in again to this account.`});let xe=(0,I.readAuthIdentityFromRaw)(w);if(!!((0,I.identitiesMatch)(xe,{...wi(e),...(0,I.readAuthIdentityFromRaw)(T)??{}})||w!==null&&w===T||!w&&!T&&L!==null&&L===K))return c!==e.id&&(0,O.setActiveSavedAccount)("codex",e.id),(0,z.finishSwitchResult)({...s,alreadyActive:!0,verified:!0,verification:"store",health:(0,ut.getAccountHealth)("codex",e.id),hints:[`${a} is already the active Codex account.`]});let At=(0,ut.getAccountHealth)("codex",e.id,{probe:"store"});if(s.health=At,(At.state==="expired"||At.state==="missing")&&!t.force)return(0,z.finishSwitchResult)({...s,success:!1,needsLogin:!0,error:`Stored credentials for "${a}" have expired; sign in again.`});let Tn=(0,I.readLastRefresh)(T,x);Tn!==null&&Date.now()-Tn>I.STALE_AUTH_THRESHOLD_MS&&s.warnings.push(`Stored credentials for "${a}" have not been refreshed in over 8 days; codex may ask you to log in again.`);let _t=()=>{try{w?(0,Q.atomicWriteFileSync)(i,w):P.rmSync(i,{force:!0}),L?(0,Q.atomicWriteFileSync)(o,L):P.rmSync(o,{force:!0})}catch{}try{(0,O.setActiveSavedAccount)("codex",c,{silent:!0})}catch{}};try{T?((0,Q.atomicWriteFileSync)(i,T),K?(0,Q.atomicWriteFileSync)(o,K):L&&P.rmSync(o,{force:!0})):((0,Q.atomicWriteFileSync)(o,K),w&&P.rmSync(i,{force:!0}))}catch(ge){return _t(),(0,z.finishSwitchResult)({...s,success:!1,error:`Failed to write Codex credentials: ${ge}`})}let Nn=(0,l.readFileOrNull)(T?i:o),Co=T??K,Hn=T?(0,I.readAuthIdentityFromRaw)(Nn):null;if(!(Nn===Co&&(!T||(0,I.identitiesMatch)(Hn,{...wi(e),...(0,I.readAuthIdentityFromRaw)(T)??{}})||Hn?.authMode==="api-key")))return _t(),(0,z.finishSwitchResult)({...s,success:!1,verification:"failed",error:`The live Codex credential file did not reflect the switch to "${a}"; the previous login was restored.`});try{(0,O.setActiveSavedAccount)("codex",e.id)}catch(ge){return _t(),(0,z.finishSwitchResult)({...s,success:!1,error:`Failed to update account registry: ${ge}`})}let Ln;try{Ln=(0,z.writeLastSwitch)("codex",c,e.id).token}catch{s.warnings.push("The switch succeeded but could not be recorded for undo.")}return(0,z.finishSwitchResult)({...s,verified:!0,verification:"store",undoToken:Ln,hints:[`New codex sessions use ${e.email??a}.`]})}function Bs(e,t={}){let n=ae().find(r=>r.id===e);return n?gn(n,t):(0,z.switchFailure)("codex",e,`Codex account ${e} not found.`)}async function Ws(e,t={}){let n=ae().find(r=>r.id===e);return n?Sn(n,t):(0,z.switchFailure)("codex",e,`Codex account ${e} not found.`)}function ki(){let e=h.join((0,O.getAccountsDir)(),"codex",".live-auth-migrated-v1");return P.existsSync(e)?!1:!P.existsSync(h.join((0,l.getSystemCodexHome)(),"auth.json"))}function zs(){try{let e=ki()?Le((0,l.getSystemCodexHome)()).loggedIn:!1;Pe(()=>Ui({systemKeyringLoggedIn:e}))}catch{}}async function Ks(){try{let e=ki()?(await Oe((0,l.getSystemCodexHome)())).loggedIn:!1;Pe(()=>Ui({systemKeyringLoggedIn:e}))}catch{}}function Ui(e){try{let t=h.join((0,O.getAccountsDir)(),"codex",".live-auth-migrated-v1");if(P.existsSync(t))return;let n=()=>(0,Q.atomicWriteFileSync)(t,new Date().toISOString()+`
|
|
15
|
-
|
|
16
|
-
`);if(d>=0){let p=u.slice(d+1),A=mt(p);return A&&Date.parse(A.timestamp)||null}if(i===0){let p=mt(u);return p&&Date.parse(p.timestamp)||null}}return null}catch(n){return n?.code==="ENOENT",null}finally{if(t!==void 0)try{re.closeSync(t)}catch{}}}function lu(e,t){return(0,Gi.withFileLockSync)(`${e}.lock`,t)}function du(e,t){(0,Gi.atomicWriteFileSync)(e,t,384)}function Yi(e,t){let n;try{n=re.statSync(e)}catch{return{kept:0,pruned:0}}if(n.size===0)return{kept:0,pruned:0};let r=Date.now()-t*Ji,o=re.readFileSync(e,"utf8").split(`
|
|
17
|
-
`)
|
|
11
|
+
${i.slice(o).replace(/^\s*/,"")}
|
|
12
|
+
`}function tu(e,t=!1){return zn(e),de.join((0,Wn.getAccountsDir)(),"codex","backups",`${e}.${t?"credentials":"auth"}.json`)}function uo(){return de.join((0,Wn.getAccountsDir)(),"codex","logins")}function Vn(e){return zn(e),de.join(uo(),e)}function nu(e){let t=Vn(e);return Ct.existsSync(t)?de.join(t,"codex-home"):Jn(e)}function ru(e){let t=Vn(e);return Ct.existsSync(t)?de.join(t,"profile.json"):co(e)}});var Xn=b(le=>{"use strict";var iu=le&&le.__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]})),ou=le&&le.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),lo=le&&le.__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"&&iu(n,t,r[i]);return ou(n,t),n}})();Object.defineProperty(le,"__esModule",{value:!0});le.isAccountLeaseHeld=ho;le.acquireAccountLease=du;le.releaseAccountLease=lu;var Gn=lo(g("fs")),fo=lo(g("path")),au=et(),su=rt(),cu=ie();function Yn(e,t){let n=e==="codex"?(0,su.getCodexProfileDir)(t):(0,au.getClaudeProfileDir)(t);return fo.join(n,"keepalive.lease")}function uu(e){if(e===process.pid)return!0;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}function ho(e,t,n=Date.now()){try{let r=JSON.parse(Gn.readFileSync(Yn(e,t),"utf8"));return typeof r.pid=="number"&&typeof r.expiresAt=="number"&&r.expiresAt>n&&uu(r.pid)}catch{return!1}}function du(e,t,n,r=Date.now()){if(ho(e,t,r))return!1;let i=Yn(e,t);return Gn.mkdirSync(fo.dirname(i),{recursive:!0,mode:448}),(0,cu.atomicWriteJsonSync)(i,{pid:process.pid,expiresAt:r+n}),!0}function lu(e,t){try{Gn.rmSync(Yn(e,t),{force:!0})}catch{}}});var $t=b(U=>{"use strict";var fu=U&&U.__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]})),hu=U&&U.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),pu=U&&U.__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"&&fu(n,t,r[i]);return hu(n,t),n}})();Object.defineProperty(U,"__esModule",{value:!0});U.STALE_AUTH_THRESHOLD_MS=void 0;U.parseJwtPayload=tr;U.parseAuthJson=vt;U.readAuthIdentityFromRaw=mu;U.readLastRefresh=Zn;U.readAccessTokenExpiry=er;U.identitiesMatch=Cu;U.codexRefreshFingerprint=vu;U.compareCodexAuthFreshness=Su;var gu=pu(g("fs")),yu=g("crypto");U.STALE_AUTH_THRESHOLD_MS=11520*60*1e3;function tr(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 vt(e){if(!e)return null;try{let t=JSON.parse(e);return t&&typeof t=="object"?t:null}catch{return null}}function mu(e){let t=vt(e);if(!t)return null;let n=t.tokens?.id_token,r=n?tr(n):null,i=r?.["https://api.openai.com/profile"],o=r?.["https://api.openai.com/auth"],a=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,u=t.OPENAI_API_KEY||t.auth_mode==="api_key"?"api-key":"chatgpt";return{email:a,workspaceId:s,planType:c,authMode:u}}function Zn(e,t){let n=vt(e);if(n?.last_refresh){let r=Date.parse(n.last_refresh);if(!Number.isNaN(r))return r}if(t)try{return gu.statSync(t).mtimeMs}catch{}return null}function er(e){let n=vt(e)?.tokens?.access_token;if(!n)return null;let r=tr(n);return typeof r?.exp=="number"&&Number.isFinite(r.exp)?r.exp*1e3:null}function Cu(e,t){return!e||!t?!1:e.workspaceId&&t.workspaceId?e.workspaceId===t.workspaceId:!!(e.email&&t.email&&e.email===t.email)}function vu(e){let t=vt(e)?.tokens?.refresh_token;return typeof t=="string"&&t?(0,yu.createHash)("sha256").update(t).digest("hex").slice(0,16):null}function Su(e,t){let n=Zn(e),r=Zn(t);if(n!==null&&r!==null&&n!==r)return n>r?1:-1;let i=er(e),o=er(t);return i!==null&&o!==null&&i!==o?i>o?1:-1:0}});var ar=b(j=>{"use strict";var wu=j&&j.__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]})),_u=j&&j.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),po=j&&j.__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"&&wu(n,t,r[i]);return _u(n,t),n}})();Object.defineProperty(j,"__esModule",{value:!0});j.isLegacyCodexLogin=qe;j.isCodexLogin=ir;j.codexLoginOnly=or;j.readCodexCredentialStore=St;j.readCodexBackup=Co;j.codexSnapshotFingerprint=rr;j.codexStoreMatches=Ut;j.writeCodexBackup=xu;j.canonicalCodexPath=Fe;j.isSidekickCodexHome=vo;j.codexInstalledSnapshot=So;j.writeInactiveCodexCredentialStore=Ou;j.writeLiveCodexCredentialStoreUnguarded=Pu;j.removeCodexProfileCredentials=Eu;var it=po(g("fs")),fe=po(g("path")),Au=g("crypto"),bu=be(),Me=rt(),go=$t(),yo=ie();function qe(e){let t=(0,go.parseAuthJson)(e);return!!(t&&["OPENAI_API_KEY","CODEX_API_KEY"].some(n=>typeof t[n]=="string"&&t[n].length>0))}function ir(e){let t=(0,go.parseAuthJson)(e);return!t||Array.isArray(t)?!1:typeof t.OPENAI_API_KEY=="string"&&t.OPENAI_API_KEY?!0:!!(typeof t.tokens?.access_token=="string"&&t.tokens.access_token&&typeof t.tokens.refresh_token=="string"&&t.tokens.refresh_token)}function or(e){return{authRaw:e.authRaw,legacyRaw:qe(e.legacyRaw)?e.legacyRaw:null}}function nr(e){try{return it.readFileSync(e,"utf8")}catch(t){if(t.code==="ENOENT")return null;throw t}}function mo(e,t){try{let n={authRaw:nr(e),legacyRaw:nr(t)};return{status:n.authRaw!==null?ir(n.authRaw)?"ok":"corrupt":qe(n.legacyRaw)?"ok":"absent",snapshot:n}}catch{return{status:"error"}}}function St(e=(0,Me.getSystemCodexHome)()){return mo(fe.join(e,"auth.json"),fe.join(e,".credentials.json"))}function Co(e){return mo((0,Me.getCodexBackupPath)(e),(0,Me.getCodexBackupPath)(e,!0))}function rr(e){return(0,Au.createHash)("sha256").update(JSON.stringify(e)).digest("hex")}function Ut(e,t){return e.status!=="error"&&rr(e.snapshot)===rr(t)}function xu(e,t){let n=or(t);if(!ir(n.authRaw)&&!qe(n.legacyRaw))throw new Error("Refusing to back up an invalid Codex login.");for(let[r,i]of[[(0,Me.getCodexBackupPath)(e),n.authRaw],[(0,Me.getCodexBackupPath)(e,!0),n.legacyRaw]])i!==null?(0,yo.atomicWriteFileSync)(r,i):it.rmSync(r,{force:!0});if(!Ut(Co(e),n))throw new Error("The private Codex backup did not verify.")}function Fe(e){let t=fe.resolve(e);try{return it.realpathSync(t)}catch{let n=fe.dirname(t);return n===t?t:fe.join(Fe(n),fe.basename(t))}}function vo(e){let t=Fe(fe.join((0,bu.getAccountsDir)(),"codex")),n=Fe(e);return n===t||n.startsWith(t+fe.sep)}function So(e,t){let n=or(t);if(n.legacyRaw&&e.legacyRaw&&!qe(e.legacyRaw))throw new Error("Legacy Codex credentials would replace MCP data; sign in with Codex again.");return{authRaw:n.authRaw,legacyRaw:e.legacyRaw&&!qe(e.legacyRaw)?e.legacyRaw:n.legacyRaw}}function wo(e,t){for(let[n,r]of[["auth.json",t.authRaw],[".credentials.json",t.legacyRaw]]){let i=fe.join(e,n);nr(i)!==r&&(r===null?it.rmSync(i,{force:!0}):(0,yo.atomicWriteFileSync)(i,r))}}function Ou(e,t){if(Fe(e)===Fe((0,Me.getSystemCodexHome)()))throw new Error("A profile credential writer cannot write the live Codex home.");let n=St(e);if(n.status==="error")throw new Error("The Codex profile could not be read.");let r=So(n.snapshot,t);if(wo(e,r),!Ut(St(e),r))throw new Error("The Codex profile write did not verify.")}function Pu(e){let t=(0,Me.getSystemCodexHome)();if(vo(t))throw new Error("Unset CODEX_HOME before changing the live login; it names a Sidekick-owned home.");wo(t,e)}function Eu(e,t){if(Fe(e)===Fe((0,Me.getSystemCodexHome)()))throw new Error("Refusing to remove live Codex credentials.");if(!Ut(St(e),t))throw new Error("The Codex profile changed; its credential was kept.");if(t.authRaw!==null&&it.rmSync(fe.join(e,"auth.json"),{force:!0}),qe(t.legacyRaw)&&it.rmSync(fe.join(e,".credentials.json"),{force:!0}),St(e).status!=="absent")throw new Error("The Codex profile credential could not be removed.")}});var fr=b(q=>{"use strict";var ku=q&&q.__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]})),Ru=q&&q.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Po=q&&q.__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"&&ku(n,t,r[i]);return Ru(n,t),n}})();Object.defineProperty(q,"__esModule",{value:!0});q.getHealthSidecarPath=sr;q.readHealthSidecar=Kt;q.claudeHealthSidecarFromBlob=ur;q.writeClaudeHealthSidecar=Eo;q.codexHealthSidecarFromAuth=dr;q.writeCodexHealthSidecar=Mu;q.readEffectiveClaudeCredential=Ro;q.getAccountHealth=Io;q.listAccountsWithHealth=Hu;q.describeClaudeCredential=Nu;var me=Po(g("fs")),Ke=Po(g("path")),We=et(),ye=Nt(),_o=Hn(),Oe=$t(),je=rt(),qt=be(),Ao=ar(),Iu=ie(),Du=4320*60*1e3;function sr(e,t){let n=e==="codex"?(0,je.getCodexProfileDir)(t):(0,We.getClaudeProfileDir)(t);return Ke.join(n,"health.json")}function Kt(e,t){try{let n=JSON.parse(me.readFileSync(sr(e,t),"utf8"));return n?.version===1&&typeof n.capturedAt=="number"?n:null}catch{return null}}function cr(e,t,n){try{(0,Iu.atomicWriteJsonSync)(sr(e,t),n)}catch{}}function ur(e,t,n=Date.now()){let r=(0,ye.parseClaudeCredentialBlob)(e);if(!r)return null;let i=(0,ye.resolveClaudeRefreshExpiry)(r);return{version:1,capturedAt:n,accessExpiresAt:r.expiresAt,refreshExpiresAt:i?.refreshExpiresAt,refreshExpiryEstimated:i?.estimated,hasRefreshToken:!!r.refreshToken,authMode:"oauth",refreshFp:(0,ye.claudeRefreshFingerprint)(r)??void 0,source:t}}function Eo(e,t,n,r=Date.now()){let i=ur(t,n,r);return i&&cr("claude-code",e,i),i}function dr(e,t,n=Date.now(),r){let i=(0,Oe.readAuthIdentityFromRaw)(e);if(!i)return null;let o=(0,Oe.readLastRefresh)(e,r)??void 0;return{version:1,capturedAt:n,accessExpiresAt:(0,Oe.readAccessTokenExpiry)(e)??void 0,lastRefreshAt:o,hasRefreshToken:(0,Oe.codexRefreshFingerprint)(e)!==null,refreshFp:(0,Oe.codexRefreshFingerprint)(e)??void 0,authMode:i.authMode,source:t}}function Mu(e,t,n,r=Date.now()){let i=dr(t,n,r);return i&&cr("codex",e,i),i}function Fu(e,t){let n=e.accessExpiresAt!==void 0,r=n&&e.accessExpiresAt<=t;if(e.refreshExpiresAt!==void 0){if(e.refreshExpiresAt<=t)return{state:"expired",reason:e.refreshExpiryEstimated?"Refresh token has most likely expired (estimated from the snapshot age).":"Refresh token expired; sign in again."};if(e.refreshExpiresAt-t<=Du)return{state:"expiring",reason:"Refresh token expires within 3 days."}}return e.hasRefreshToken===!1&&r?{state:"expired",reason:"Access token expired and no refresh token is stored."}:r?{state:"expiring",reason:"Access token expired; the CLI refreshes it on next use."}:!n&&e.refreshExpiresAt===void 0?{state:"unknown",reason:"The stored credential carries no expiry."}:{state:"fresh"}}function ju(e,t){return e.authMode==="api-key"?{state:"unknown",reason:"API-key login; expiry is not observable locally."}:e.accessExpiresAt!==void 0&&e.accessExpiresAt>t?{state:"fresh"}:e.lastRefreshAt!==void 0&&t-e.lastRefreshAt>Oe.STALE_AUTH_THRESHOLD_MS?{state:"expiring",reason:`Not refreshed in ${Math.floor((t-e.lastRefreshAt)/864e5)} days; codex may ask you to log in again.`}:e.accessExpiresAt!==void 0?{state:"expiring",reason:"Access token expired; codex refreshes it on next use."}:{state:"unknown",reason:"The stored credential carries no expiry."}}function lr(e){return(0,We.readLiveClaudeIdentity)()?.uuid===e}function ko(e){let t=(0,Oe.readAuthIdentityFromRaw)((0,je.readFileOrNull)(Ke.join((0,je.getSystemCodexHome)(),"auth.json")));return t?(0,Oe.identitiesMatch)(t,{email:e.email??e.metadata?.email,workspaceId:e.metadata?.workspaceId}):!1}function Tu(e){try{return JSON.parse(me.readFileSync((0,We.getClaudeCredentialBackupPath)(e),"utf8"))}catch{return null}}function Ro(e){if(lr(e))return(0,_o.readActiveCredentials)();let t=(0,_o.readClaudeCredentialStore)((0,We.getClaudeProfileHome)(e)),n=t.status==="ok"?t.blob:null,r=Tu(e),i=(0,ye.claudeCredentialFreshness)((0,ye.parseClaudeCredentialBlob)(n)),o=(0,ye.claudeCredentialFreshness)((0,ye.parseClaudeCredentialBlob)(r));return(0,ye.parseClaudeCredentialBlob)(r)&&o>i?r:(0,ye.parseClaudeCredentialBlob)(n)?n:null}function bo(e,t,n=!0){let r=Ro(e);if(!r)return null;let i=Kt("claude-code",e)?.source??(lr(e)?"live-sync":"migration");return n?Eo(e,r,i,t):ur(r,i,t)}function xo(e,t,n=!0){let r=(0,qt.listSavedAccountProfiles)("codex").find(l=>l.id===e),i=r!==void 0&&ko(r),o=(0,Ao.readCodexCredentialStore)(i?(0,je.getSystemCodexHome)():(0,je.getCodexProfileHome)(e)),a=i?null:(0,Ao.readCodexBackup)(e),s=o.status==="ok"?o.snapshot.authRaw:null;a?.status==="ok"&&(!s||(0,Oe.compareCodexAuthFreshness)(a.snapshot.authRaw,s)>0)&&(s=a.snapshot.authRaw);let c=Kt("codex",e)?.source??(i?"live-sync":"migration"),u=dr(s,c,t);return u&&n&&cr("codex",e,u),u}function Oo(e){let t=(0,We.getClaudeProfileHome)(e);return me.existsSync(Ke.join(t,".credentials.json"))||me.existsSync(Ke.join((0,We.getClaudeProfileDir)(e),"health.json"))||me.existsSync((0,We.getClaudeCredentialBackupPath)(e))||process.platform==="darwin"&&me.existsSync(Ke.join(t,".claude.json"))}function Lu(e){let t=(0,je.getCodexProfileHome)(e);return me.existsSync((0,je.getCodexBackupPath)(e))||me.existsSync((0,je.getCodexBackupPath)(e,!0))||me.existsSync(Ke.join(t,"auth.json"))||me.existsSync(Ke.join(t,".credentials.json"))}function Io(e,t,n={}){let r=n.now??Date.now(),i=n.probe??"cache",o=(0,qt.listSavedAccountProfiles)(e).find(l=>l.id===t),a=e==="codex"?o!==void 0&&ko(o):lr(t),s=null;i==="store"&&(s=e==="codex"?xo(t,r,n.persist):bo(t,r,n.persist)),s??=Kt(e,t),!s&&e==="codex"&&(s=xo(t,r,n.persist)),!s&&i==="auto"&&Oo(t)&&(s=bo(t,r,n.persist));let c={providerId:e,accountId:t,checkedAt:r,isLive:a};if(!s)return(e==="codex"?Lu(t):Oo(t))?{...c,state:"unknown",reason:"Credential health has not been recorded yet."}:{...c,state:"missing",reason:"No stored credentials; sign in again."};let u=e==="codex"?ju(s,r):Fu(s,r);return{...c,...u,accessExpiresAt:s.accessExpiresAt,refreshExpiresAt:s.refreshExpiresAt,refreshExpiryEstimated:s.refreshExpiryEstimated,lastRefreshAt:s.lastRefreshAt}}function Hu(e,t={}){let n={probe:"auto",...t},r=e?[e]:["claude-code","codex"],i=[];for(let o of r){let a=(0,qt.getActiveSavedAccount)(o);for(let s of(0,qt.listSavedAccountProfiles)(o))i.push({id:s.id,providerId:o,label:s.label,email:s.email??s.metadata?.email,planType:s.metadata?.planType,isActive:a?.id===s.id,health:Io(o,s.id,n),source:s.metadata?.origin==="live-sync"?"learned":"registered",addedAt:s.addedAt})}return i}function Nu(e){return(0,ye.parseClaudeCredentialBlob)(e)}});var hr=b(Z=>{"use strict";var Bu=Z&&Z.__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]})),$u=Z&&Z.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Do=Z&&Z.__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"&&Bu(n,t,r[i]);return $u(n,t),n}})();Object.defineProperty(Z,"__esModule",{value:!0});Z.getLastSwitchPath=Wt;Z.readLastSwitch=Qu;Z.writeLastSwitch=Ju;Z.clearLastSwitch=Vu;Z.switchFailure=Gu;Z.finishSwitchResult=Yu;var Mo=Do(g("fs")),Uu=Do(g("path")),qu=g("crypto"),Ku=be(),Wu=ie();function zu(e){return e==="codex"?"codex":"claude"}function Wt(e){return Uu.join((0,Ku.getAccountsDir)(),zu(e),"last-switch.json")}function Qu(e){try{let t=JSON.parse(Mo.readFileSync(Wt(e),"utf8"));return t&&typeof t.token=="string"&&typeof t.to=="string"?t:null}catch{return null}}function Ju(e,t,n){let r={token:(0,qu.randomUUID)(),provider:e,from:t,to:n,at:new Date().toISOString()};return(0,Wu.atomicWriteJsonSync)(Wt(e),r),r}function Vu(e){try{Mo.rmSync(Wt(e),{force:!0})}catch{}}function Gu(e,t,n,r={}){return{success:!1,error:n,provider:e,accountId:t,previousAccountId:null,verified:!1,verification:"none",warnings:[],hints:[],runningConsumers:[],...r}}function Yu(e){let t=[...e.warnings,...e.runningConsumers.map(n=>n.reachability)];return{...e,warnings:t,warning:t.length?t.join(" "):void 0}}});var gr=b(pr=>{"use strict";Object.defineProperty(pr,"__esModule",{value:!0});pr.emptyProviderSyncReport=Xu;function Xu(){return{warnings:[]}}});var yr=b(K=>{"use strict";var Zu=K&&K.__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]})),ed=K&&K.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),td=K&&K.__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"&&Zu(n,t,r[i]);return ed(n,t),n}})();Object.defineProperty(K,"__esModule",{value:!0});K.ACCOUNT_CONSUMER_REACHABILITY=void 0;K.detectRunningAccountConsumers=ad;K.detectRunningAccountConsumersSync=sd;K.describeAccountConsumer=cd;K.findRunningProcessesSync=qo;K.findRunningProcesses=Ko;K.inspectRunningAccountConsumersSync=ud;K.inspectRunningAccountConsumers=dd;var jo=g("child_process"),Fo=td(g("path")),To=4e3,nd=/claude-code[\\/]cli\.js/,rd=/(?:@openai[\\/]codex|codex[\\/]bin)[\\/].*codex\.js/;function id(e){let t=[];for(let n of e.split(`
|
|
13
|
+
`)){let r=n.match(/^\s*(\d+)\s+(\S+)\s*(.*)$/);r&&t.push({pid:Number(r[1]),command:r[2],args:r[3]??""})}return t}function od(e){let t=[];for(let n of e.split(/\r?\n/)){let r=n.match(/^"([^"]+)","(\d+)"/);r&&t.push({pid:Number(r[2]),command:r[1],args:""})}return t}function Lo(e,t){let n=new Set(t),r=[];for(let i of e){if(!Number.isFinite(i.pid)||i.pid===process.pid)continue;let o=Fo.basename(i.command),a=i.args.trim().split(/\s+/)[0]??"",c=[o,o.replace(/\.exe$/i,""),Fo.basename(a)].find(u=>u&&n.has(u));!c&&n.has("claude")&&/^node(\.exe)?$/i.test(o)&&nd.test(i.args)&&(c="claude"),!c&&n.has("codex")&&/^node(\.exe)?$/i.test(o)&&rd.test(i.args)&&(c="codex"),!c&&n.has("Codex")&&/(?:^|[\\/])Codex\.app[\\/]/.test(i.command+" "+i.args)&&(c="Codex"),c&&r.push({pid:i.pid,name:c,command:i.command})}return r}function Ho(){return process.platform==="win32"?{command:"tasklist",args:["/FO","CSV","/NH"]}:{command:"ps",args:["-axo","pid=,comm=,args="]}}function No(e){return process.platform==="win32"?od(e):id(e)}function Bo(e){if(e.length===0)return{ok:!0,processes:[]};try{let{command:t,args:n}=Ho(),r=(0,jo.spawnSync)(t,n,{encoding:"utf8",maxBuffer:16*1024*1024,timeout:To,killSignal:"SIGKILL",windowsHide:!0});return r.error||r.status!==0?{ok:!1,processes:[]}:{ok:!0,processes:Lo(No(String(r.stdout??"")),e)}}catch{return{ok:!1,processes:[]}}}function $o(e){return e.length===0?Promise.resolve({ok:!0,processes:[]}):new Promise(t=>{try{let{command:n,args:r}=Ho();(0,jo.execFile)(n,r,{encoding:"utf8",timeout:To,killSignal:"SIGKILL",windowsHide:!0,maxBuffer:16*1024*1024},(i,o)=>{t({ok:!i,processes:i?[]:Lo(No(String(o??"")),e)})})}catch{t({ok:!1,processes:[]})}})}var wt={"claude-cli":"claude","claude-desktop":"Claude","codex-cli":"codex","codex-app":"Codex"};K.ACCOUNT_CONSUMER_REACHABILITY={"claude-cli":{switched:!0,reachability:"Running claude sessions keep the previous account until restarted; a running session can rotate the refresh token of the account you just left."},"claude-desktop":{switched:!1,reachability:"Claude Desktop is not switched by sidekick (it keeps its own web session) and its embedded engine can rotate the shared CLI token."},"codex-cli":{switched:!0,reachability:"Running codex sessions keep the previous account until restarted."},"codex-app":{switched:!0,reachability:"The Codex app shares the CLI login; restart it to pick up the switch. While running it can refresh and rotate the live token."},"vscode-extension-host":{switched:!0,reachability:"The Claude Code extension host keeps the previous account until the window reloads."}};function Uo(e,t){return{kind:e,pids:t,...K.ACCOUNT_CONSUMER_REACHABILITY[e]}}function zt(e,t){let n=[];for(let r of t){let i=e.filter(o=>o.name===wt[r]).map(o=>o.pid);i.length>0&&n.push(Uo(r,i))}return n}function Qt(e){return e==="claude-code"?["claude-cli","claude-desktop"]:e==="codex"?["codex-cli","codex-app"]:["claude-cli","claude-desktop","codex-cli","codex-app"]}async function ad(e){let t=Qt(e),n=await Ko(t.map(r=>wt[r]));return zt(n,t)}function sd(e){let t=Qt(e),n=qo(t.map(r=>wt[r]));return zt(n,t)}function cd(e,t=[]){return Uo(e,t)}function qo(e){return Bo(e).processes}async function Ko(e){return(await $o(e)).processes}function ud(e){let t=Qt(e),n=Bo(t.map(r=>wt[r]));return{ok:n.ok,consumers:zt(n.processes,t)}}async function dd(e){let t=Qt(e),n=await $o(t.map(r=>wt[r]));return{ok:n.ok,consumers:zt(n.processes,t)}}});var ra=b(A=>{"use strict";var ld=A&&A.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),fd=A&&A.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),zo=A&&A.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&ld(n,t,r[i]);return fd(n,t),n}})();Object.defineProperty(A,"__esModule",{value:!0});A.storeClaudeProfileIdentity=Go;A.storeClaudeProfileCredentialsUnlocked=Sr;A.storeClaudeProfileCredentials=md;A.readStoredClaudeAccount=At;A.readAccountRegistry=vd;A.writeAccountRegistry=Sd;A.readActiveClaudeAccount=Ce;A.addCurrentAccount=_d;A.withClaudeAuthSwapLock=pe;A.syncClaudeLiveStateUnlocked=Pr;A.syncClaudeLiveState=Od;A.cleanupAbandonedClaudeLogins=Ed;A.getClaudeKeepAliveBlocker=kd;A.beginClaudeKeepAlive=Rd;A.finishClaudeKeepAlive=Id;A.restoreClaudeProfileFromBackup=Dd;A.switchToAccount=Md;A.switchToAccountAsync=Fd;A.applyClaudeProfileToLiveHome=ta;A.resolveActiveClaudeHome=Ld;A.applyActiveClaudeToLiveHome=Hd;A.reconcileClaudeAuthState=Nd;A.removeAccount=Bd;A.listAccounts=$d;A.getActiveAccount=na;A.resolveActiveClaudeAccount=Ud;A.isMultiAccountEnabled=qd;var Y=zo(g("fs")),z=zo(g("path")),P=Hn(),at=ie(),_=be(),C=et(),m=Nt(),hd=Zi(),_t=ro(),Cr=Xn(),he=fr(),se=hr(),pd=gr(),Qo=yr();function gd(){return z.join((0,_.getAccountsDir)(),"credentials")}function Vt(){return z.join((0,_.getAccountsDir)(),"configs")}function yd(){return z.join((0,_.getAccountsDir)(),"claude",".profiles-migrated-v1")}function vr(){return z.join((0,_.getAccountsDir)(),"claude","switch-journal.json")}function Jo(){for(let e of[(0,_.getAccountsDir)(),gd(),Vt()])Y.mkdirSync(e,{recursive:!0,mode:448})}function st(e){try{return JSON.parse(Y.readFileSync(e,"utf8"))}catch{return null}}function Vo(e){return st(e)?.oauthAccount??null}function Qe(e){return(0,C.readLiveClaudeIdentity)()?.uuid===e}function Go(e,t){(0,at.atomicWriteJsonSync)(z.join((0,C.getClaudeProfileHome)(e),".claude.json"),{oauthAccount:t});try{(0,at.atomicWriteJsonSync)(z.join(Vt(),`${e}.config.json`),t)}catch{}}function Pe(e){return st((0,C.getClaudeCredentialBackupPath)(e))}function Te(e,t){let n=(0,C.getClaudeCredentialBackupPath)(e);if((0,at.atomicWriteJsonSync)(n,t),JSON.stringify(st(n))!==JSON.stringify(t))throw new Error(`The credential backup for ${e} did not verify after writing.`)}function mr(e,t){let n=(0,m.parseClaudeCredentialBlob)(e),r=(0,m.parseClaudeCredentialBlob)(t);return n?r&&(0,m.claudeCredentialFreshness)(r)>(0,m.claudeCredentialFreshness)(n)?t:e:r?t:null}function Sr(e,t,n){let r=(0,m.claudeLoginOnly)(t);if(!r||!(0,m.parseClaudeCredentialBlob)(r))throw new Error("Refusing to store something that is not a Claude login.");Te(e,t),Qe(e)||(0,P.writeActiveCredentials)(r,(0,C.getClaudeProfileHome)(e)),(0,he.writeClaudeHealthSidecar)(e,t,n)}function md(e,t,n){pe(()=>Sr(e,t,n))}function wr(e,t,n,r){Go(e,n),Sr(e,t,r)}function _r(e){return st(z.join(Vt(),`${e}.config.json`))}function Ar(e){return Vo(z.join((0,C.getClaudeProfileHome)(e),".claude.json"))}function At(e){let t=(0,P.readClaudeCredentialStore)((0,C.getClaudeProfileHome)(e)),n=mr(t.status==="ok"?t.blob:null,Pe(e)),r=Ar(e)??_r(e);return n&&r?{credentials:n,oauthAccount:r}:null}function Yo(){return Vo((0,C.getClaudeConfigPath)())}function br(e){let t={},n=(0,C.getClaudeConfigPath)();try{t=JSON.parse(Y.readFileSync(n,"utf8"))}catch{}t.oauthAccount=e,(0,at.atomicWriteJsonSync)(n,t)}function Cd(e){return e.status==="ok"?{status:"ok",blob:e.blob}:{status:e.status}}function Jt(e,t,n,r){let i=Cd(r.live),o=(0,hd.decideLiveClaudeWrite)({intent:n,live:i,liveAccountUuid:r.liveAccountUuid,candidate:e,candidateAccountUuid:t,capturedOutgoing:r.capturedOutgoing,written:r.written});if(!o.allow)return{ok:!1,code:o.code,reason:o.reason,wrote:!1};let a=n==="rollback"?e:(0,m.mergeClaudeLoginIntoLive)(i.status==="ok"?i.blob:null,e);try{(0,P.writeLiveClaudeCredentialStoreUnguarded)(a)}catch(s){return{ok:!1,code:"write-failed",reason:`${s}`,wrote:!0,attempted:a}}return{ok:!0,installed:a}}function vd(){let e=(0,_.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 Sd(e){(0,_.replaceSavedAccountProfiles)("claude-code",wd(e),e.activeAccountUuid)}function wd(e){let t=new Map((0,_.listSavedAccountProfiles)("claude-code").map(n=>[n.providerAccountId??n.id,n]));return e.accounts.map(n=>({id:n.uuid,providerId:"claude-code",providerAccountId:n.uuid,email:n.email,label:n.label,addedAt:n.addedAt,metadata:{...t.get(n.uuid)?.metadata,email:n.email}}))}function Ce(){return(0,C.readLiveClaudeIdentity)()}function Gt(e){return(0,_.listSavedAccountProfiles)("claude-code").find(t=>(t.providerAccountId??t.id)===e)??null}function xr(e){let t=(0,_.listSavedAccountProfiles)("claude-code");return t.find(n=>(n.providerAccountId??n.id)===e.uuid)??t.find(n=>(n.email??n.metadata?.email)===e.email)??null}function ze(e){return e.providerAccountId??e.id}function _d(e){let t=Ce();if(!t)return{success:!1,error:"No active Claude account found. Sign in with `claude` first."};let n=(0,P.readActiveCredentials)();if(!n)return{success:!1,error:"Could not read Claude credentials."};let r=Yo();if(!r)return{success:!1,error:"Could not read Claude config file."};Jo();try{pe(()=>wr(t.uuid,n,r,"login"))}catch(i){return{success:!1,error:`Failed to back up Claude credentials: ${i}`}}return(0,_.withSavedAccountRegistryLock)(()=>{let i=Gt(t.uuid),o=i?.id??t.uuid;return(0,_.upsertSavedAccountProfileUnlocked)({id:o,providerId:"claude-code",providerAccountId:t.uuid,email:t.email,label:e!==void 0?e||void 0:i?.label,addedAt:i?.addedAt??new Date().toISOString(),metadata:{...i?.metadata,email:t.email,origin:i?.metadata?.origin??"manual"}}),(0,_.setActiveSavedAccountUnlocked)("claude-code",o),{success:!0}})}function pe(e){let t=z.join((0,_.getAccountsDir)(),"claude");return Y.mkdirSync(t,{recursive:!0,mode:448}),(0,at.withFileLockSync)(z.join(t,"auth-swap.lock"),e)}function Ad(){let e=st(vr());return e&&typeof e.to=="string"?e:null}function Wo(e){(0,at.atomicWriteJsonSync)(vr(),e)}function ot(){try{Y.rmSync(vr(),{force:!0})}catch{}}function Or(e,t){let n=(0,m.claudeLoginOnly)(t);!n||Qe(e)||(0,P.writeActiveCredentials)(n,(0,C.getClaudeProfileHome)(e))}function bd(e){let t=Ad();if(!t)return;let n=(0,P.readClaudeCredentialStore)();if(n.status==="error"){e.warnings.push("An interrupted account switch is pending; the live login could not be read yet.");return}let r=n.status==="ok"?(0,m.claudeRefreshFingerprint)((0,m.parseClaudeCredentialBlob)(n.blob)):null;if(r!==null&&r===t.toFp){let i=Ar(t.to)??_r(t.to);try{if(i&&(0,C.readLiveClaudeIdentity)()?.uuid!==t.to&&br(i),t.from){let a=Pe(t.from);(0,m.claudeRefreshFingerprint)((0,m.parseClaudeCredentialBlob)(a))===t.fromFp&&Or(t.from,a)}(0,P.deleteStoredCredentials)((0,C.getClaudeProfileHome)(t.to));let o=Gt(t.to);o&&(0,_.setActiveSavedAccount)("claude-code",o.id,{silent:!0}),e.journal="finished"}catch(o){e.warnings.push(`Could not finish an interrupted account switch: ${o}`);return}}else r===t.fromFp?e.journal="rolled-back":(e.journal="cleared",e.warnings.push("An interrupted account switch was found, but the live login matches neither side; it was left as is."));ot()}function Xo(e,t){return(0,_.listSavedAccountProfiles)("claude-code").find(n=>ze(n)!==t&&(0,he.readHealthSidecar)("claude-code",n.id)?.refreshFp===e)??null}function xd(e,t){let n=(0,C.getClaudeProfileHome)(e),r=(0,P.readClaudeCredentialStore)(n);if(r.status!=="absent"){if(r.status==="error"){t.warnings.push("The live account's profile copy could not be read; it was left in place.");return}try{(0,_t.withClaudeRefreshLocksSync)([(0,C.getLiveClaudeHome)(),n],()=>{let i=(0,P.readClaudeCredentialStore)(),o=(0,P.readClaudeCredentialStore)(n);if(i.status==="error"||o.status==="error"){t.warnings.push("A credential store could not be read; the profile copy was left in place.");return}if(o.status==="absent")return;let a=i.status==="ok"?(0,m.parseClaudeCredentialBlob)(i.blob):null,s=o.status==="ok"?o.blob:null,c=(0,m.parseClaudeCredentialBlob)(s);if(c&&(0,m.claudeRefreshFingerprint)(c)!==(0,m.claudeRefreshFingerprint)(a)&&(0,m.claudeCredentialFreshness)(c)>(0,m.claudeCredentialFreshness)(a)){let u=Jt(s,e,"repair",{live:i,liveAccountUuid:e});if(u.ok)Te(e,u.installed),(0,he.writeClaudeHealthSidecar)(e,u.installed,"live-sync"),t.repaired=e;else if(Te(e,mr(Pe(e),s)),t.warnings.push(`The live Claude login looks older than its saved copy and could not be repaired (${u.reason}).`),u.wrote)return}else a&&i.status==="ok"&&Te(e,mr(Pe(e),i.blob));(0,P.deleteStoredCredentials)(n)?t.demoted=e:t.warnings.push("The live account's profile copy could not be removed.")})}catch(i){i instanceof _t.ClaudeRefreshLockBusyError?t.warnings.push("Claude Code was refreshing; the live account's profile copy is removed on the next sync."):t.warnings.push(`Could not remove the live account's profile copy: ${i}`)}}}function Pr(e="live-sync"){let t=(0,pd.emptyProviderSyncReport)();if((0,C.isLiveClaudeHomeSidekickProfile)())return t.skipped="managed-home",t.warnings.push("Unset CLAUDE_CONFIG_DIR before syncing; it points at a sidekick profile home."),t;try{bd(t);let n=Ce();if(!n)return t.skipped="logged-out",t;let r=xr(n);r?r.email!==n.email&&n.email&&(r={...r,email:n.email,metadata:{...r.metadata,email:n.email}},(0,_.upsertSavedAccountProfile)(r)):(r={id:n.uuid,providerId:"claude-code",providerAccountId:n.uuid,email:n.email,label:n.email,addedAt:new Date().toISOString(),metadata:{email:n.email,origin:"live-sync"}},Jo(),(0,_.upsertSavedAccountProfile)(r),t.registered={id:r.id,email:n.email});let i=ze(r),o=(0,P.readClaudeCredentialStore)();if(o.status==="error")t.warnings.push("The live Claude credential store could not be read.");else if(o.status==="corrupt")t.warnings.push("The live Claude credential store is unreadable (not valid JSON); sign in again with `claude`.");else if(o.status==="ok"){let s=(0,m.parseClaudeCredentialBlob)(o.blob),c=(0,m.claudeRefreshFingerprint)(s),u=c?Xo(c,i):null;if(u)t.warnings.push(`The live credential belongs to ${u.label??u.email??u.id}, not ${n.email}; nothing was folded.`);else if(s){let l=(0,m.parseClaudeCredentialBlob)(Pe(i)),p=(0,m.claudeCredentialFreshness)(s),S=(0,m.claudeCredentialFreshness)(l);if(!l||p>S||p===S&&((0,m.claudeRefreshFingerprint)(l)!==c||!Y.existsSync(z.join((0,C.getClaudeProfileHome)(i),".claude.json"))))try{wr(i,o.blob,Yo()??{emailAddress:n.email,accountUuid:n.uuid},e),t.folded=r.id}catch(k){t.warnings.push(`Could not back up the live Claude credentials: ${k}`)}xd(i,t)}}let a=(0,_.getActiveSavedAccount)("claude-code");(!a||a.id!==r.id)&&((0,_.setActiveSavedAccount)("claude-code",r.id,{silent:!0}),t.repointed=r.id)}catch(n){t.warnings.push(`Claude account sync failed: ${n}`)}return t}function Od(e="live-sync"){try{return pe(()=>Pr(e))}catch(t){return{warnings:[`Could not acquire the account-switch lock: ${t}`]}}}var Pd=1440*60*1e3;function Ed(e=360*60*1e3,t=Date.now()){let n=[],r=[];try{r=Y.readdirSync((0,C.getClaudeProfilesDir)())}catch{return n}let i=new Set((0,_.listSavedAccountProfiles)("claude-code").map(o=>o.id));for(let o of r){if(i.has(o))continue;let a=(0,C.getClaudeProfileDir)(o),s=z.join(a,"profile.json"),c=st(s);if(!c)continue;let u=(0,C.getClaudeProfileHome)(o),l=(0,C.isClaudeProfileAuthenticated)(u)?Math.max(e,Pd):e,p=c.addedAt?Date.parse(c.addedAt):NaN;if(!((Number.isNaN(p)?Number.POSITIVE_INFINITY:t-p)<l))try{(0,P.deleteStoredCredentials)(u),Y.rmSync(a,{recursive:!0,force:!0}),n.push(o)}catch{}}return n}function Zo(e){let t=ze(e);if(Qe(t))return"live account; the CLI refreshes it in normal use";let n=(0,P.readClaudeCredentialStore)((0,C.getClaudeProfileHome)(t));if(n.status==="error")return"its saved login could not be read";let r=n.status==="ok"?(0,m.parseClaudeCredentialBlob)(n.blob):null;if(!r)return"no profile copy to refresh (keep-alive never restores backups)";let i=(0,P.readClaudeCredentialStore)();if(i.status==="error")return"the live login could not be read";let o=i.status==="ok"?(0,m.parseClaudeCredentialBlob)(i.blob):null;if(o&&(0,m.claudeRefreshFingerprint)(o)===(0,m.claudeRefreshFingerprint)(r))return"same refresh token as the live login";if((0,he.readHealthSidecar)("claude-code",e.id)?.source==="live-sync")return"copied from the live login; waits for a switch away from it";let a=(0,m.parseClaudeCredentialBlob)(Pe(t));return(0,m.claudeCredentialFreshness)(a)>(0,m.claudeCredentialFreshness)(r)?"its saved backup is newer than the profile copy":null}function Yt(e){return(0,_.listSavedAccountProfiles)("claude-code").find(t=>t.id===e)??null}function kd(e){try{return pe(()=>{let t=Yt(e);return t?Zo(t):"account not found"})}catch(t){return`could not acquire the account-switch lock: ${t}`}}function Rd(e,t){try{return pe(()=>{let n=Yt(e);if(!n)return{ok:!1,reason:"account not found"};let r=Zo(n);return r?{ok:!1,reason:r}:(0,Cr.acquireAccountLease)("claude-code",e,t)?{ok:!0}:{ok:!1,reason:"another keep-alive run holds this account"}})}catch(n){return{ok:!1,reason:`could not acquire the account-switch lock: ${n}`}}}function Id(e){try{pe(()=>{let t=Yt(e);if(!t)return;let n=ze(t);if(Qe(n))return;let r=(0,P.readClaudeCredentialStore)((0,C.getClaudeProfileHome)(n));if(r.status!=="ok")return;let i=Pe(n),o=(0,m.parseClaudeCredentialBlob)(r.blob);if(o&&(0,m.claudeCredentialFreshness)(o)>(0,m.claudeCredentialFreshness)((0,m.parseClaudeCredentialBlob)(i))){let a=(0,m.mergeClaudeLoginIntoLive)(i,r.blob);Te(n,a),(0,he.writeClaudeHealthSidecar)(t.id,a,"keepalive")}})}catch{}finally{(0,Cr.releaseAccountLease)("claude-code",e)}}function Dd(e){try{return pe(()=>{let t=Yt(e);if(!t)return"none";let n=ze(t);if(Qe(n))return"live";let r=(0,P.readClaudeCredentialStore)((0,C.getClaudeProfileHome)(n));if(r.status!=="absent")return r.status==="ok"?"present":"none";let i=Pe(n);return(0,m.parseClaudeCredentialBlob)(i)?(Or(n,i),"restored"):"none"})}catch{return"none"}}function Md(e,t={}){let n=(0,Qo.detectRunningAccountConsumersSync)("claude-code");return ea(e,t,n)}async function Fd(e,t={}){let n=await(0,Qo.detectRunningAccountConsumers)("claude-code");return ea(e,t,n)}function ea(e,t,n){try{return pe(()=>jd(e,t,n))}catch(r){return(0,se.switchFailure)("claude-code",e,`Could not acquire the account-switch lock: ${r}`)}}function jd(e,t,n){let r=Gt(e);if(!r)return(0,se.switchFailure)("claude-code",e,`Account ${e} not found in registry.`);let i=r.label??r.email??e;if((0,C.isLiveClaudeHomeSidekickProfile)())return(0,se.switchFailure)("claude-code",e,`CLAUDE_CONFIG_DIR points at a sidekick profile home (${z.resolve((0,C.getLiveClaudeHome)())}); unset it before switching accounts.`);let o=Pr("live-sync"),a=(0,_.getActiveSavedAccount)("claude-code")?.id??null,s={success:!0,provider:"claude-code",accountId:r.id,previousAccountId:a,verified:!1,verification:"none",warnings:[...o.warnings],hints:[],runningConsumers:n,email:r.email};if(Ce()?.uuid===e)return a!==r.id&&(0,_.setActiveSavedAccount)("claude-code",r.id),(0,se.finishSwitchResult)({...s,alreadyActive:!0,verified:!0,verification:"store",health:(0,he.getAccountHealth)("claude-code",r.id),hints:[`${i} is already the active Claude account.`]});if(!At(e))return(0,se.finishSwitchResult)({...s,success:!1,needsLogin:!0,error:`Stored credentials for "${i}" not found; sign in again.`});let u=(0,he.getAccountHealth)("claude-code",r.id,{probe:"store"});if(s.health=u,(u.state==="expired"||u.state==="missing")&&!t.force)return(0,se.finishSwitchResult)({...s,success:!1,needsLogin:!0,error:`Stored credentials for "${i}" have ${u.state==="missing"?"not been saved":"expired"}; sign in again.`});if(u.state==="expiring"&&u.reason&&s.warnings.push(`"${i}": ${u.reason}`),!t.force&&(0,Cr.isAccountLeaseHeld)("claude-code",r.id))return(0,se.finishSwitchResult)({...s,success:!1,error:`Keep-alive is refreshing "${i}" right now; try again in a few seconds.`});try{return(0,_t.withClaudeRefreshLocksSync)([(0,C.getLiveClaudeHome)(),(0,C.getClaudeProfileHome)(e)],()=>Td(r,i,s,a))}catch(l){return(0,se.finishSwitchResult)({...s,success:!1,error:l instanceof _t.ClaudeRefreshLockBusyError?`${l.message} Nothing was changed.`:`The switch failed before anything was changed: ${l}`})}}function Td(e,t,n,r){let i=ze(e),o=(D,ue={})=>(0,se.finishSwitchResult)({...n,success:!1,error:D,...ue}),a=At(i),s=(0,m.parseClaudeCredentialBlob)(a?.credentials);if(!a||!s)return o(`Stored credentials for "${t}" not found; sign in again.`,{needsLogin:!0});let c=(0,P.readClaudeCredentialStore)();if(c.status==="error")return o("The live Claude login could not be read, so nothing was changed. Try again.");let u=Ce(),l=u?xr(u):null,p=l?ze(l):null,S=c.status==="ok"?(0,m.parseClaudeCredentialBlob)(c.blob):null;if(p===i)return(0,se.finishSwitchResult)({...n,alreadyActive:!0,verified:!0,verification:"store",health:(0,he.getAccountHealth)("claude-code",e.id),hints:[`${t} is already the active Claude account.`]});let x=(0,m.claudeRefreshFingerprint)(S),k=x&&p?Xo(x,p):null;if(k)return o(`The live credential belongs to ${k.label??k.email??k.id}, but the live identity says ${u?.email}; run \`claude\` once (or sign in again) and retry. Nothing was changed.`);let ce=!1,Re=D=>{if(!p)return"The live login has no account identity to save it under; run `claude` once and retry.";try{return Te(p,D),null}catch(ue){return`The outgoing login could not be saved, so nothing was changed: ${ue}`}};if(S&&c.status==="ok"){let D=Re(c.blob);if(D)return o(D);ce=!0}let we=(0,m.claudeRefreshFingerprint)(S),_e=(0,m.claudeRefreshFingerprint)(s);Wo({from:p,to:i,fromFp:we,toFp:_e,at:new Date().toISOString()});let $=(0,P.readClaudeCredentialStore)();if($.status==="error")return ot(),o("The live Claude login could not be re-read, so nothing was changed. Try again.");let Ie=$.status==="ok"?(0,m.parseClaudeCredentialBlob)($.blob):null;if((0,m.claudeRefreshFingerprint)(Ie)!==we&&$.status==="ok"&&Ie){let D=Re($.blob);if(D)return ot(),o(D);ce=!0,c=$,S=Ie,Wo({from:p,to:i,fromFp:(0,m.claudeRefreshFingerprint)(S),toFp:_e,at:new Date().toISOString()})}let Ge=null;try{Ge=Y.readFileSync((0,C.getClaudeConfigPath)(),"utf8")}catch{}let ne=Jt(a.credentials,i,"switch",{live:c,liveAccountUuid:u?.uuid??null,capturedOutgoing:ce}),re=D=>{let ue=c.status==="ok";if(c.status==="ok"){let fn=(0,P.readClaudeCredentialStore)();fn.status==="ok"&&JSON.stringify(fn.blob)===JSON.stringify(c.blob)||(ue=Jt(c.blob,p??i,"rollback",{live:fn,liveAccountUuid:Ce()?.uuid??null,written:D}).ok)}if(Ge!==null)try{Y.writeFileSync((0,C.getClaudeConfigPath)(),Ge)}catch{ue=!1}try{(0,_.setActiveSavedAccount)("claude-code",r,{silent:!0})}catch{}return ot(),ue},Ae=D=>D?"the previous login was restored.":ce?"the previous login could not be restored automatically; it is saved, run `sidekick accounts doctor`.":"the live store held no usable login before the switch; run `sidekick accounts doctor`.";if(!ne.ok){if(!ne.wrote)return ot(),o(ne.reason);let D=re(ne.attempted);return o(`Failed to write Claude credentials (${ne.reason}); ${Ae(D)}`)}try{br(a.oauthAccount)}catch(D){let ue=re(ne.installed);return o(`Failed to write the Claude identity (${D}); ${Ae(ue)}`)}let ei=(0,P.readClaudeCredentialStore)(void 0,{keychainOnly:!0}),ti=ei.status==="ok"?(0,m.parseClaudeCredentialBlob)(ei.blob):null;if(!(ti!==null&&ti.accessToken===s.accessToken&&Ce()?.uuid===i)){let D=re(ne.installed);return o(`The live Claude credential store did not reflect the switch to "${t}"; ${Ae(D)}`,{verification:"failed"})}try{(0,_.setActiveSavedAccount)("claude-code",e.id)}catch(D){let ue=re(ne.installed);return o(`Failed to update account registry (${D}); ${Ae(ue)}`)}if(p&&ce&&c.status==="ok")try{Or(p,c.blob),(0,he.writeClaudeHealthSidecar)(p,c.blob,"switch")}catch(D){n.warnings.push(`The previous login is saved, but its profile copy could not be written yet (${D}).`)}try{Te(i,ne.installed),(0,he.writeClaudeHealthSidecar)(i,ne.installed,"switch")}catch{}(0,P.deleteStoredCredentials)((0,C.getClaudeProfileHome)(i))||n.warnings.push(`"${t}"'s profile copy could not be removed; the next sync retries.`),ot();let ni;try{ni=(0,se.writeLastSwitch)("claude-code",r,e.id).token}catch{n.warnings.push("The switch succeeded but could not be recorded for undo.")}return(0,se.finishSwitchResult)({...n,verified:!0,verification:"store",undoToken:ni,hints:[`New claude sessions use ${e.email??t}.`]})}function ta(e){if((0,C.isLiveClaudeHomeSidekickProfile)())return{success:!1,error:`CLAUDE_CONFIG_DIR points at a sidekick profile home (${z.resolve((0,C.getLiveClaudeHome)())}); the login was saved, but unset it before making the account live.`};try{return pe(()=>{let t=At(e);if(!t)return{success:!1,error:`Stored credentials for ${e} not found.`};let n=(0,C.getClaudeProfileHome)(e);return(0,_t.withClaudeRefreshLocksSync)([(0,C.getLiveClaudeHome)(),n],()=>{let r=(0,P.readClaudeCredentialStore)(),i=Ce()?.uuid??null,o=Jt(t.credentials,e,"relogin",{live:r,liveAccountUuid:i});return o.ok?(br(t.oauthAccount),Te(e,o.installed),(0,he.writeClaudeHealthSidecar)(e,o.installed,"login"),(0,P.deleteStoredCredentials)(n),{success:!0}):o.code==="not-newer"?{success:!0,warning:o.reason}:{success:!1,error:`Could not install the refreshed credentials: ${o.reason}`}})})}catch(t){return{success:!1,error:`Could not install the refreshed credentials: ${t}`}}}function Ld(){let e=(0,_.getActiveSavedAccount)("claude-code");if(!e)return(0,C.getLiveClaudeHome)();let t=e.providerAccountId??e.id;return Qe(t)?(0,C.getLiveClaudeHome)():(0,C.getClaudeProfileHome)(t)}function Hd(){let e=(0,_.getActiveSavedAccount)("claude-code");if(!e)return{success:!1,error:"No active Claude account found."};let t=e.providerAccountId??e.id,n=Ce()?.uuid;return n&&n!==t?{success:!1,error:"The live Claude login belongs to another account; use switchToAccount() to change accounts."}:At(t)?ta(t):{success:!1,error:`Stored credentials for ${e.email??t} not found.`}}function Nd(){try{let e=yd();if(Y.existsSync(e))return;let t=(0,_.readSavedAccountRegistry)();if(t)for(let n of t.accounts.filter(r=>r.providerId==="claude-code"))try{let r=n.providerAccountId??n.id;if(Qe(r)||(0,P.readActiveCredentials)((0,C.getClaudeProfileHome)(r))&&Ar(r))continue;let i=Pe(r),o=_r(r);if(!i||!o)continue;pe(()=>wr(r,i,o,"migration"))}catch{}Y.mkdirSync(z.dirname(e),{recursive:!0,mode:448}),Y.writeFileSync(e,new Date().toISOString()+`
|
|
14
|
+
`,{encoding:"utf8",mode:384})}catch{}}function Bd(e){return(0,_.withSavedAccountRegistryLock)(()=>{let t=Gt(e);if(!t)return{success:!1,error:`Account ${e} not found.`};for(let n of[(0,C.getClaudeCredentialBackupPath)(e),z.join(Vt(),`${e}.config.json`)])try{Y.unlinkSync(n)}catch{}try{(0,P.deleteStoredCredentials)((0,C.getClaudeProfileHome)(e)),Y.rmSync((0,C.getClaudeProfileDir)(t.id),{recursive:!0,force:!0})}catch{}return(0,_.removeSavedAccountProfileUnlocked)("claude-code",t.id),{success:!0}})}function $d(){return(0,_.listSavedAccountProfiles)("claude-code").map(e=>({uuid:e.providerAccountId??e.id,email:e.email??e.metadata?.email??"unknown",label:e.label,addedAt:e.addedAt}))}function na(){let e=(0,_.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 Ud(e={}){let t=e.selfHeal??!0,n=Ce();if(n){let i=xr(n);if(i){let o=(0,_.getActiveSavedAccount)("claude-code");if(t&&(!o||o.id!==i.id))try{(0,_.setActiveSavedAccount)("claude-code",i.id,{silent:!0})}catch{}}return{email:n.email,label:i?.label,providerAccountId:n.uuid,registryAccountId:i?.id,source:"live"}}let r=na();return r?{email:r.email,label:r.label,providerAccountId:r.uuid,registryAccountId:r.uuid,source:"registry"}:{source:"none"}}function qd(){return(0,_.listSavedAccountProfiles)("claude-code").length>=1}});var Ot=b(F=>{"use strict";Object.defineProperty(F,"__esModule",{value:!0});F.QUOTA_AGING_MAX_AGE_MS=F.QUOTA_FRESH_MAX_AGE_MS=F.SEVEN_DAY_WINDOW_MS=F.FIVE_HOUR_WINDOW_MS=F.QUOTA_PROVIDER_IDS=void 0;F.classifyQuotaFreshness=Jd;F.formatQuotaAge=Vd;F.projectQuotaWindow=xt;F.withQuotaProjections=Gd;F.fetchQuota=Xd;var Kd=Sn();Object.defineProperty(F,"QUOTA_PROVIDER_IDS",{enumerable:!0,get:function(){return Kd.QUOTA_PROVIDER_IDS}});var Wd="https://api.anthropic.com/api/oauth/usage",zd="oauth-2025-04-20",Qd=1e4;F.FIVE_HOUR_WINDOW_MS=5*36e5;F.SEVEN_DAY_WINDOW_MS=7*864e5;F.QUOTA_FRESH_MAX_AGE_MS=5*6e4;F.QUOTA_AGING_MAX_AGE_MS=60*6e4;function Jd(e){return typeof e!="number"||!Number.isFinite(e)||e<0?"stale":e<F.QUOTA_FRESH_MAX_AGE_MS?"fresh":e<F.QUOTA_AGING_MAX_AGE_MS?"aging":"stale"}function Vd(e){if(typeof e!="number"||!Number.isFinite(e)||e<0)return"age unknown";let t=Math.floor(e/6e4);if(t<1)return"just now";if(t<60)return`${t}m ago`;let n=Math.floor(t/60);return n<48?`${n}h ago`:`${Math.floor(n/24)}d ago`}function xt(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 a=i?Date.parse(i):NaN,s=Number.isFinite(a)?a:Date.now(),c=r-(o-s);if(!(c<=0))return Math.min(Math.round(t*(r/c)),200)}function Gd(e,t={}){if(!e.available)return e;let n={...e},r=t.capturedAt??e.capturedAt;if(n.projectedFiveHour==null){let i=xt({utilization:n.fiveHour.utilization,resetsAt:n.fiveHour.resetsAt,windowMs:t.fiveHourWindowMs??F.FIVE_HOUR_WINDOW_MS,capturedAt:r});i!==void 0&&(n.projectedFiveHour=i)}if(n.projectedSevenDay==null){let i=xt({utilization:n.sevenDay.utilization,resetsAt:n.sevenDay.resetsAt,windowMs:t.sevenDayWindowMs??F.SEVEN_DAY_WINDOW_MS,capturedAt:r});i!==void 0&&(n.projectedSevenDay=i)}return n}function bt(e,t={}){return{fiveHour:{utilization:0,resetsAt:""},sevenDay:{utilization:0,resetsAt:""},available:!1,error:e,...t}}function Yd(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 Xd(e,t={}){let n=new AbortController,r=setTimeout(()=>n.abort(),Qd);r.unref();try{let o=await(t.fetchImpl??fetch)(Wd,{method:"GET",signal:n.signal,headers:{Authorization:`Bearer ${e}`,"anthropic-beta":zd,"Content-Type":"application/json"}});if(!o.ok)return o.status===401?bt("Sign in to Claude Code to view quota",{failureKind:"auth",httpStatus:o.status}):o.status===429?bt(`API error: ${o.status}`,{failureKind:"rate_limit",httpStatus:o.status,retryAfterMs:Yd(o.headers.get("retry-after"))}):o.status>=500&&o.status<=599?bt(`API error: ${o.status}`,{failureKind:"server",httpStatus:o.status}):bt(`API error: ${o.status}`,{failureKind:"unknown",httpStatus:o.status});let a=await o.json(),s=a.five_hour?.utilization??0,c=a.seven_day?.utilization??0,u=a.five_hour?.resets_at??"",l=a.seven_day?.resets_at??"";return{fiveHour:{utilization:s,resetsAt:u},sevenDay:{utilization:c,resetsAt:l},available:!0,projectedFiveHour:xt({utilization:s,resetsAt:u,windowMs:F.FIVE_HOUR_WINDOW_MS}),projectedSevenDay:xt({utilization:c,resetsAt:l,windowMs:F.SEVEN_DAY_WINDOW_MS})}}catch{return bt("Network error",{failureKind:"network"})}finally{clearTimeout(r)}}});var ia=b(Er=>{"use strict";Object.defineProperty(Er,"__esModule",{value:!0});Er.isAggregateCodexLimit=Zd;function Zd(e){return!e||e==="codex"}});var Zt=b(ve=>{"use strict";var el=ve&&ve.__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]})),tl=ve&&ve.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),aa=ve&&ve.__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"&&el(n,t,r[i]);return tl(n,t),n}})();Object.defineProperty(ve,"__esModule",{value:!0});ve.writeQuotaSnapshot=sl;ve.readQuotaSnapshot=cl;var sa=aa(g("fs")),nl=aa(g("path")),ca=pt(),ua=ie(),rl=Ot(),oa=ia();function Rr(){return nl.join((0,ca.getConfigDir)(),"quota-snapshots.json")}function da(){sa.mkdirSync((0,ca.getConfigDir)(),{recursive:!0,mode:448})}function la(){try{let e=JSON.parse(sa.readFileSync(Rr(),"utf8"));if(e?.version===1&&Array.isArray(e.snapshots))return e}catch{}return{version:1,snapshots:[]}}function il(e){da(),(0,ua.atomicWriteJsonSync)(Rr(),e)}function ol(e){return da(),(0,ua.withFileLockSync)(`${Rr()}.lock`,e)}function kr(e){let t=e.capturedAt?Date.parse(e.capturedAt):NaN;return Number.isFinite(t)?t:0}function Xt(e){let t=Date.parse(e);return Number.isFinite(t)?t:0}function al(e,t){let n=(0,oa.isAggregateCodexLimit)(e.limitId),r=(0,oa.isAggregateCodexLimit)(t.limitId);if(n!==r)return n;let i=Xt(e.fiveHour.resetsAt),o=Xt(t.fiveHour.resetsAt);if(i!==o)return i>o;let a=Xt(e.sevenDay.resetsAt),s=Xt(t.sevenDay.resetsAt);if(a!==s)return a>s;let c=e.fiveHour.utilization+e.sevenDay.utilization,u=t.fiveHour.utilization+t.sevenDay.utilization;return c!==u?c>u:kr(e)>kr(t)}function sl(e,t,n){ol(()=>{let r=la(),i=r.snapshots.findIndex(l=>l.providerId===e&&l.accountId===t),o=i>=0?r.snapshots[i].quota:void 0,{capturedSource:a,...s}=n;delete s.ageMs,delete s.freshness;let c={...s,providerId:e,capturedAt:n.capturedAt??new Date().toISOString(),source:s.source&&s.source!=="cache"?s.source:a??"session",stale:!1,resetCredits:n.resetCredits??(e==="codex"?o?.resetCredits:void 0)};if(i>=0&&al(r.snapshots[i].quota,c))return;let u={providerId:e,accountId:t,quota:c};i>=0?r.snapshots[i]=u:r.snapshots.push(u),il(r)})}function cl(e,t,n=new Date){let i=la().snapshots.find(u=>u.providerId===e&&u.accountId===t);if(!i)return null;let o=kr(i.quota),a=o>0?Math.max(0,n.getTime()-o):void 0,s=i.quota.capturedSource??i.quota.source,c=s&&s!=="cache"?s:void 0;return{...i.quota,providerId:e,source:"cache",...c?{capturedSource:c}:{},stale:!0,...a!==void 0?{ageMs:a}:{},freshness:(0,rl.classifyQuotaFreshness)(a)}}});var ka=b(h=>{"use strict";var ul=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]})),dl=h&&h.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),fa=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"&&ul(n,t,r[i]);return dl(n,t),n}})();Object.defineProperty(h,"__esModule",{value:!0});h.CODEX_KEYRING_FIX_HINT=h.getCodexCredentialStoreMode=h.getSystemCodexHome=h.getCodexProfileHome=h.getCodexProfilesDir=void 0;h.getCodexMonitoringHomes=hl;h.readStoredCodexAccount=He;h.isLiveCodexProfile=Fr;h.storeCodexProfileAuthUnlocked=Et;h.storeCodexProfileAuth=gl;h.parseCodexLoginStatusOutput=jr;h.getCodexLoginStatus=ma;h.getCodexLoginStatusAsync=Tr;h.readCodexAccountMetadata=Cl;h.readCodexAccountMetadataAsync=vl;h.isCodexProfileAuthenticated=va;h.isCodexProfileAuthenticatedAsync=wl;h.listCodexAccounts=N;h.getActiveCodexAccount=Hr;h.resolveSidekickCodexHome=Nr;h.resolveActiveCodexAccount=Al;h.getCodexExecutionEnv=bl;h.prepareCodexAccount=Ol;h.prepareCodexAccountAsync=Pl;h.discardCodexLogin=on;h.finalizeCodexAccount=El;h.finalizeCodexAccountAsync=kl;h.withCodexAuthSwapLock=X;h.dedupeCodexProfiles=_a;h.hasPendingCodexRepair=Il;h.syncCodexLiveStateUnlocked=ut;h.syncCodexLiveState=xa;h.syncCodexLiveStateAsync=Oa;h.cleanupAbandonedCodexLogins=Pa;h.switchToCodexAccount=Dl;h.switchToCodexAccountAsync=Ml;h.reconcileCodexAuthState=Fl;h.reconcileCodexAuthStateAsync=jl;h.getCodexKeepAliveBlocker=Tl;h.beginCodexKeepAlive=Ll;h.finishCodexKeepAlive=Hl;h.restoreCodexProfileFromBackup=Nl;h.removeCodexAccount=Bl;h.cleanupAbandonedCodexLoginsAsync=$l;var E=fa(g("fs")),Q=fa(g("path")),ha=g("child_process"),Dr=g("crypto"),H=be(),nn=ie(),y=$t(),f=rt(),Le=fr(),Ee=hr(),pa=gr(),Se=yr(),Ir=Zt(),dt=Xn(),ll=$n(),d=ar(),rn=rt();Object.defineProperty(h,"getCodexProfilesDir",{enumerable:!0,get:function(){return rn.getCodexProfilesDir}});Object.defineProperty(h,"getCodexProfileHome",{enumerable:!0,get:function(){return rn.getCodexProfileHome}});Object.defineProperty(h,"getSystemCodexHome",{enumerable:!0,get:function(){return rn.getSystemCodexHome}});Object.defineProperty(h,"getCodexCredentialStoreMode",{enumerable:!0,get:function(){return rn.getCodexCredentialStoreMode}});h.CODEX_KEYRING_FIX_HINT='Set `cli_auth_credentials_store = "file"` in ~/.codex/config.toml and run `codex login` again.';function fl(e){let t=new Set,n=[];for(let r of e){let i=Q.resolve(r);t.has(i)||(t.add(i),n.push(r))}return n}function hl(){let e=(0,f.getExplicitCodexHome)();if(e)return[e];let t=[(0,f.getDefaultSystemCodexHome)()];for(let n of N()){let r=(0,f.getCodexProfileHome)(n.id);E.existsSync(Q.join(r,"sessions"))&&t.push(r)}return fl(t)}function ga(e){try{return JSON.parse(E.readFileSync((0,f.getCodexLoginStatePath)(e),"utf8"))}catch{return null}}function pl(e,t){let n=(0,f.getCodexLoginDir)(e);E.mkdirSync(Q.join(n,"codex-home"),{recursive:!0,mode:448}),(0,nn.atomicWriteJsonSync)(Q.join(n,"profile.json"),t)}function Mr(e,t){let n=(0,f.readFileOrNull)(Q.join(e,"config.toml"))??"";(0,nn.atomicWriteFileSync)(Q.join(t,"config.toml"),(0,f.forceFileCredentialStore)(n))}function He(e){let t=(0,d.readCodexCredentialStore)((0,f.getCodexProfileHome)(e)),n=(0,d.readCodexBackup)(e);return t.status==="ok"&&n.status==="ok"?(0,d.codexLoginOnly)((0,y.compareCodexAuthFreshness)(n.snapshot.authRaw,t.snapshot.authRaw)>0?n.snapshot:t.snapshot):t.status==="ok"?(0,d.codexLoginOnly)(t.snapshot):n.status==="ok"?n.snapshot:null}function ke(e,t){let n=(0,y.readAuthIdentityFromRaw)(t.authRaw);if((0,y.identitiesMatch)(n,ft(e)))return!0;if(n?.authMode==="api-key"||!t.authRaw&&(0,d.isLegacyCodexLogin)(t.legacyRaw)){let r=He(e.id);return r!==null&&(0,d.codexSnapshotFingerprint)((0,d.codexLoginOnly)(t))===(0,d.codexSnapshotFingerprint)(r)}return!1}function Fr(e){let t=(0,d.readCodexCredentialStore)();return t.status==="ok"&&ke(e,t.snapshot)}function Et(e,t,n,r){let i=(0,d.codexLoginOnly)({authRaw:t,legacyRaw:n}),o=N().find(S=>S.id===e),a=(0,y.readAuthIdentityFromRaw)(t);if(o&&a?.authMode==="chatgpt"&&(a.email||a.workspaceId)&&(o.email||o.metadata?.workspaceId)&&!(0,y.identitiesMatch)(a,ft(o)))throw new Error("The Codex credential belongs to a different saved account.");let s=(0,d.readCodexBackup)(e),c=s.status==="ok"&&(0,y.compareCodexAuthFreshness)(s.snapshot.authRaw,t)>0?s.snapshot:i;(0,d.writeCodexBackup)(e,c);let u=(0,d.readCodexCredentialStore)(),l=u.status==="ok"&&(0,y.codexRefreshFingerprint)(c.authRaw)!==null&&(0,y.codexRefreshFingerprint)(c.authRaw)===(0,y.codexRefreshFingerprint)(u.snapshot.authRaw),p=u.status==="ok"&&(o?ke(o,u.snapshot):(0,y.identitiesMatch)((0,y.readAuthIdentityFromRaw)(c.authRaw),(0,y.readAuthIdentityFromRaw)(u.snapshot.authRaw)));!(0,d.isSidekickCodexHome)((0,f.getSystemCodexHome)())&&u.status!=="error"&&u.status!=="corrupt"&&!p&&!l&&(0,d.writeInactiveCodexCredentialStore)((0,f.getCodexProfileHome)(e),c),c.authRaw&&(0,Le.writeCodexHealthSidecar)(e,c.authRaw,r)}function gl(e,t,n,r){X(()=>Et(e,t,n,r))}function lt(e){return e?.ok?e.consumers.length?"Close running Codex CLI, app, and IDE sessions before changing credentials. --force cannot bypass this check.":null:"Could not verify that Codex consumers are stopped; retry after closing Codex."}function en(e,t,n,r){if((0,dt.isAccountLeaseHeld)("codex",t))return{ok:!1,reason:"Keep-alive holds this account; retry when it finishes."};let i=lt(r.scan);if(i)return{ok:!1,reason:i};let o=(0,f.getCodexCredentialStoreMode)();if(o!=="file"&&o!=="unknown")return{ok:!1,reason:h.CODEX_KEYRING_FIX_HINT};if((0,d.isSidekickCodexHome)((0,f.getSystemCodexHome)()))return{ok:!1,reason:"Unset CODEX_HOME; it points at a Sidekick-owned home."};let a=(0,d.readCodexCredentialStore)();if(r.before.status==="error"||!(0,d.codexStoreMatches)(a,r.before.snapshot))return{ok:!1,reason:"The live Codex credential changed; nothing was overwritten."};let s=a.status==="ok"?a.snapshot.authRaw:null,c=(0,y.codexRefreshFingerprint)(s),u=(0,y.readAuthIdentityFromRaw)(e.authRaw),l=N().find(k=>k.id===t),p=u?.authMode!=="chatgpt"||l!==void 0&&(0,y.identitiesMatch)(u,ft(l)),S=(0,ll.decideLiveCredentialWrite)({provider:"Codex",intent:n,liveStatus:a.status,candidateValid:p&&((0,d.isCodexLogin)(e.authRaw)||(0,d.isLegacyCodexLogin)(e.legacyRaw)),liveHasCredential:a.status==="ok",liveAccountId:r.liveAccountId,candidateAccountId:t,sameLink:c!==null&&c===(0,y.codexRefreshFingerprint)(e.authRaw),strictlyNewer:(0,y.compareCodexAuthFreshness)(e.authRaw,s)>0,capturedOutgoing:r.capturedOutgoing,matchesWritten:r.written!==void 0&&(0,d.codexStoreMatches)(a,r.written),rejectCorrupt:!0});if(!S.allow)return{ok:!1,reason:S.reason};if(a.status==="error")return{ok:!1,reason:"The live Codex login could not be read."};let x;try{x=(0,d.codexInstalledSnapshot)(a.snapshot,e)}catch{return{ok:!1,reason:"Legacy credentials would replace unrelated MCP data; sign in again."}}try{if((0,d.writeLiveCodexCredentialStoreUnguarded)(x),!(0,d.codexStoreMatches)((0,d.readCodexCredentialStore)(),x))throw new Error("verification failed");return{ok:!0,installed:x}}catch{return{ok:!1,reason:"The live Codex write did not verify.",attempted:x}}}function yl(e){let t=(0,y.readAuthIdentityFromRaw)((0,f.readFileOrNull)(Q.join(e,"auth.json")));return t?{email:t.email,workspaceId:t.workspaceId,planType:t.planType,authMode:t.authMode}:{}}function ml(e){let t=Q.join(e,".credentials.json");if(!E.existsSync(t))return{};try{let n=JSON.parse(E.readFileSync(t,"utf8"));if(typeof n.OPENAI_API_KEY=="string"||typeof n.CODEX_API_KEY=="string")return{authMode:"api-key"}}catch{}return{}}var ya=4e3;function jr(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 ma(e){try{let t={...process.env,CODEX_HOME:e},n=(0,ha.spawnSync)("codex",["login","status"],{encoding:"utf8",env:t,timeout:ya,killSignal:"SIGKILL"});return jr(n.status,`${String(n.stdout??"")}
|
|
15
|
+
${String(n.stderr??"")}`)}catch{}return{loggedIn:!1}}function Tr(e){return new Promise(t=>{try{let n={...process.env,CODEX_HOME:e};(0,ha.execFile)("codex",["login","status"],{encoding:"utf8",env:n,timeout:ya,killSignal:"SIGKILL"},(r,i,o)=>{t(r?{loggedIn:!1}:jr(0,`${String(i??"")}
|
|
16
|
+
${String(o??"")}`))})}catch{t({loggedIn:!1})}})}function Lr(e){let t=yl(e);if(t.email||t.workspaceId||t.planType||t.authMode)return t;let n=ml(e);return n.authMode?n:null}function Ca(e){return e.loggedIn?{authMode:e.authMode??"unknown"}:{}}function Cl(e){return Lr(e)??Ca(ma(e))}async function vl(e){return Lr(e)??Ca(await Tr(e))}function Sl(e){return(0,d.readCodexCredentialStore)(e).status==="ok"}function va(e){return Sl(e)}async function wl(e){return va(e)}function _l(e,t){let n=e.trim().toLowerCase();return N().find(i=>i.id!==t&&(i.label??"").trim().toLowerCase()===n)?`A Codex account named "${e}" already exists.`:null}function N(){return(0,H.listSavedAccountProfiles)("codex")}function Hr(){return(0,H.getActiveSavedAccount)("codex")}function Nr(){return(0,f.getSystemCodexHome)()}function ft(e){return{email:e.email??e.metadata?.email,workspaceId:e.metadata?.workspaceId}}function Al(e={}){let t=e.selfHeal??!0,n=(0,y.readAuthIdentityFromRaw)((0,f.readFileOrNull)(Q.join(Nr(),"auth.json")));if(n&&(n.email||n.workspaceId)){let i=Br(n);if(i){let o=(0,H.getActiveSavedAccount)("codex");if(t&&(!o||o.id!==i.id))try{(0,H.setActiveSavedAccount)("codex",i.id,{silent:!0})}catch{}}return{email:n.email??i?.email??i?.metadata?.email,label:i?.label,providerAccountId:i?.providerAccountId??n.workspaceId,registryAccountId:i?.id,source:"live"}}let r=Hr();return r?{email:r.email??r.metadata?.email,label:r.label,providerAccountId:r.providerAccountId,registryAccountId:r.id,source:"registry"}:{source:"none"}}function bl(e=process.env){return{...e,CODEX_HOME:Nr()}}function xl(e){return{success:!1,needsLogin:!1,error:`Codex credential storage (${e}) is not file-based. ${h.CODEX_KEYRING_FIX_HINT}`}}function Sa(e,t,n){let r=e.trim();if(!r)return{success:!1,error:"Codex accounts require a non-empty label."};let i=_l(r);if(i)return{success:!1,error:i};let o=(0,f.getSystemCodexHome)(),a=(0,f.getCodexCredentialStoreMode)(o);if(a!=="file"&&a!=="unknown")return xl(a);if((0,d.isSidekickCodexHome)(o))return{success:!1,error:"Unset CODEX_HOME before adding an account; it names a Sidekick-owned home."};let s=(0,d.readCodexCredentialStore)();if(t&&s.status==="ok"){let u=ut("live-sync",{scan:n}),l=N().find(S=>ke(S,s.snapshot));return l?((l.metadata?.origin==="live-sync"||l.label===l.email)&&(0,H.upsertSavedAccountProfile)({...l,label:r,metadata:{...l.metadata,origin:"manual"}}),{success:!0,profileId:l.id,codexHome:o,needsLogin:!1,warning:u.warnings.join(" ")||(u.registered?void 0:`This Codex login is already saved as ${l.label??l.id}.`)}):{success:!1,error:u.warnings[0]??"The live Codex login has no identifiable account."}}if(t&&(s.status==="corrupt"||s.status==="error"))return{success:!1,error:"The live Codex credential could not be read; retry after Codex finishes writing it."};let c=(0,Dr.randomUUID)();try{pl(c,{label:r,addedAt:new Date().toISOString()});let u=(0,f.getCodexLoginHome)(c);return Mr(o,u),{success:!0,profileId:c,codexHome:u,needsLogin:!0}}catch{return on(c),{success:!1,error:"Could not prepare the isolated Codex login."}}}function Ol(e,t={}){let n=t.importCurrent===!1?void 0:(0,Se.inspectRunningAccountConsumersSync)("codex");try{return X(()=>Sa(e,t.importCurrent??!0,n))}catch{return{success:!1,error:"Could not acquire the Codex account-switch lock."}}}async function Pl(e,t={}){let n=t.importCurrent===!1?void 0:await(0,Se.inspectRunningAccountConsumers)("codex");try{return X(()=>Sa(e,t.importCurrent??!0,n))}catch{return{success:!1,error:"Could not acquire the Codex account-switch lock."}}}function on(e){E.rmSync((0,f.getCodexLoginDir)(e),{recursive:!0,force:!0}),!N().some(t=>t.id===e)&&E.existsSync((0,f.getCodexProfileStatePath)(e))&&E.rmSync((0,f.getCodexProfileDir)(e),{recursive:!0,force:!0})}function wa(e,t,n){let r=ga(e);if(!r){let S=N().find(x=>x.id===e);return S?t.activate===!1?{success:!0,profileId:e}:tn(S,{},{scan:n}):{success:!1,error:`Codex profile ${e} was not prepared.`}}let i=(0,f.getCodexLoginHome)(e),o=(0,d.readCodexCredentialStore)(i);if(o.status!=="ok")return{success:!1,error:"Codex profile is not authenticated with readable file credentials yet."};let a=(0,y.readAuthIdentityFromRaw)(o.snapshot.authRaw),s=Lr(i)??{},c=a?Br(a,{fallbackToActive:!1}):null,u=c?.id??(i===(0,f.getCodexProfileHome)(e)?(0,Dr.randomUUID)():e),l={...c,id:u,providerId:"codex",label:c?.label??r.label,email:s.email??c?.email,addedAt:c?.addedAt??r.addedAt,metadata:{...c?.metadata,...s,origin:"login"}};try{let S=(0,d.readCodexBackup)(u);(0,d.writeCodexBackup)(u,S.status==="ok"&&(0,y.compareCodexAuthFreshness)(S.snapshot.authRaw,o.snapshot.authRaw)>0?S.snapshot:o.snapshot),(0,d.removeCodexProfileCredentials)(i,o.snapshot),(0,H.upsertSavedAccountProfile)(l),(0,f.ensureCodexProfileDirs)(u),Mr(i,(0,f.getCodexProfileHome)(u)),Et(u,o.snapshot.authRaw,o.snapshot.legacyRaw,"login")}catch{return{success:!1,profileId:u,error:"Could not finish saving the Codex login; any verified private backup was kept."}}finally{on(e)}if(t.activate===!1)return{success:!0,profileId:u};let p=tn(l,{},{scan:n});return p.success?{...p,profileId:u}:{...p,profileId:u,needsLogin:!1,error:`The login was saved, but could not be activated: ${p.error}`}}function El(e,t={}){let n=(0,Se.inspectRunningAccountConsumersSync)("codex");try{return X(()=>wa(e,t,n))}catch{return{success:!1,error:"Could not finalize the Codex login."}}}async function kl(e,t={}){let n=await(0,Se.inspectRunningAccountConsumers)("codex");try{return X(()=>wa(e,t,n))}catch{return{success:!1,error:"Could not finalize the Codex login."}}}function Rl(){return Q.join((0,H.getAccountsDir)(),"codex","stash")}function Br(e,t={}){let n=N();if(e?.workspaceId){let r=n.find(i=>i.metadata?.workspaceId===e.workspaceId);if(r)return r}if(e?.email){let r=n.find(i=>(i.email??i.metadata?.email)===e.email&&(!e.workspaceId||!i.metadata?.workspaceId));if(r)return r}return!e?.workspaceId&&!e?.email&&t.fallbackToActive!==!1?Hr():null}function X(e){let t=Q.join((0,H.getAccountsDir)(),"codex");return E.mkdirSync(t,{recursive:!0,mode:448}),(0,nn.withFileLockSync)(Q.join(t,"auth-swap.lock"),e)}function _a(e){if(lt(e))return[];let t=[],n=new Map;for(let r of N()){let i=r.metadata?.workspaceId?`ws:${r.metadata.workspaceId}`:r.email?`email:${r.email}`:`id:${r.id}`;n.set(i,[...n.get(i)??[],r])}for(let r of n.values()){if(r.length<2||r.some(s=>(0,dt.isAccountLeaseHeld)("codex",s.id)))continue;let i=[...r].sort((s,c)=>Date.parse(s.addedAt)-Date.parse(c.addedAt)),o=i[0],a=He(o.id);for(let s of i.slice(1)){let c=He(s.id);c&&(!a||(0,y.compareCodexAuthFreshness)(c.authRaw,a.authRaw)>0)&&(a=c)}if(a){(0,d.writeCodexBackup)(o.id,a);for(let s of i.slice(1)){let c=(0,d.readCodexCredentialStore)((0,f.getCodexProfileHome)(s.id));if(c.status==="error"||c.status==="corrupt")continue;c.status==="ok"&&(0,d.removeCodexProfileCredentials)((0,f.getCodexProfileHome)(s.id),c.snapshot);let u=(0,Ir.readQuotaSnapshot)("codex",s.id);u&&!(0,Ir.readQuotaSnapshot)("codex",o.id)&&(0,Ir.writeQuotaSnapshot)("codex",o.id,u);let l=Q.join(Rl(),`dup-${s.id}`);E.mkdirSync(Q.dirname(l),{recursive:!0,mode:448}),E.existsSync((0,f.getCodexProfileDir)(s.id))&&E.renameSync((0,f.getCodexProfileDir)(s.id),l),(0,H.getActiveSavedAccount)("codex")?.id===s.id&&(0,H.setActiveSavedAccount)("codex",o.id,{silent:!0}),(0,H.removeSavedAccountProfile)("codex",s.id),E.rmSync((0,f.getCodexBackupPath)(s.id),{force:!0}),E.rmSync((0,f.getCodexBackupPath)(s.id,!0),{force:!0}),t.push(s.id)}Et(o.id,a.authRaw,a.legacyRaw,"migration")}}return t}function ct(){return Q.join((0,H.getAccountsDir)(),"codex","switch-journal.json")}function Pt(e){return(0,d.codexSnapshotFingerprint)((0,d.codexLoginOnly)(e))}function Aa(){E.rmSync(ct(),{force:!0})}function Il(){if(E.existsSync(ct()))return!0;let e=(0,d.readCodexCredentialStore)();return e.status==="error"||e.status==="corrupt"?!0:e.status!=="ok"?!1:N().some(t=>{if(!ke(t,e.snapshot))return!1;let n=(0,d.readCodexCredentialStore)((0,f.getCodexProfileHome)(t.id)),r=(0,d.readCodexBackup)(t.id);return n.status!=="absent"||r.status==="ok"&&(0,y.compareCodexAuthFreshness)(r.snapshot.authRaw,e.snapshot.authRaw)>0})}function ba(e,t){if(!E.existsSync(ct()))return;let n;try{if(n=JSON.parse(E.readFileSync(ct(),"utf8")),!n.to||!n.fromHash||!n.toHash)throw new Error}catch{e.warnings.push("The Codex switch journal is unreadable; run accounts doctor.");return}let r=(0,d.readCodexCredentialStore)();if(r.status==="error"||r.status==="corrupt"){e.warnings.push("An interrupted Codex switch is pending; the live login could not be read.");return}let i=lt(t);if(i){e.warnings.push(i);return}let o=Pt(r.snapshot),a=N().find(s=>s.id===n.to);if(o===n.toHash||r.status==="ok"&&a&&ke(a,r.snapshot)){if(r.status!=="ok")return;(0,d.writeCodexBackup)(n.to,r.snapshot);let s=(0,d.readCodexCredentialStore)((0,f.getCodexProfileHome)(n.to));if(s.status==="error"||s.status==="corrupt")throw new Error("The interrupted switch target is unreadable.");if(s.status==="ok"&&(0,d.removeCodexProfileCredentials)((0,f.getCodexProfileHome)(n.to),s.snapshot),n.from){let c=(0,d.readCodexBackup)(n.from);c.status==="ok"&&Pt(c.snapshot)===n.fromHash&&((0,d.readCodexCredentialStore)((0,f.getCodexProfileHome)(n.from)).status==="absent"&&(0,d.writeInactiveCodexCredentialStore)((0,f.getCodexProfileHome)(n.from),c.snapshot),(0,Le.writeCodexHealthSidecar)(n.from,c.snapshot.authRaw,"switch"))}(0,H.setActiveSavedAccount)("codex",n.to,{silent:!0}),e.journal="finished"}else if(o===n.fromHash){let s=(0,d.readCodexBackup)(n.to);if(s.status==="ok"&&Pt(s.snapshot)===n.toHash&&(0,d.readCodexCredentialStore)((0,f.getCodexProfileHome)(n.to)).status==="absent"&&(0,d.writeInactiveCodexCredentialStore)((0,f.getCodexProfileHome)(n.to),s.snapshot),n.from){let c=(0,d.readCodexCredentialStore)((0,f.getCodexProfileHome)(n.from));c.status==="ok"&&(0,d.removeCodexProfileCredentials)((0,f.getCodexProfileHome)(n.from),c.snapshot)}(0,H.setActiveSavedAccount)("codex",n.from,{silent:!0}),e.journal="rolled-back"}else e.journal="cleared",e.warnings.push("The live Codex login matches neither side of the interrupted switch; it was kept. Private backups are available for inspection.");Aa()}function ut(e="live-sync",t={}){let n=(0,pa.emptyProviderSyncReport)();try{let r=(0,f.getCodexCredentialStoreMode)();if(r!=="file"&&r!=="unknown")return n.skipped="keyring",n.warnings.push(h.CODEX_KEYRING_FIX_HINT),n;if((0,d.isSidekickCodexHome)((0,f.getSystemCodexHome)()))return n.skipped="managed-home",n.warnings.push("Unset CODEX_HOME before syncing; it points at a Sidekick-owned home."),n;ba(n,t.scan);let i=(0,d.readCodexCredentialStore)();if(i.status==="error"||i.status==="corrupt")return n.skipped="unreadable",n.warnings.push("The live Codex login could not be read; nothing was replaced."),n;if(i.status==="absent")return n.skipped="logged-out",n;let o=_a(t.scan);o.length&&(n.merged=o);let a=(0,y.readAuthIdentityFromRaw)(i.snapshot.authRaw),s=i.snapshot,c=N().find(x=>ke(x,s));if(!c){if(!a?.email&&!a?.workspaceId&&a?.authMode!=="api-key"&&!(0,d.isLegacyCodexLogin)(i.snapshot.legacyRaw))return n.skipped="no-identity",n;c={id:(0,Dr.randomUUID)(),providerId:"codex",label:a?.email??a?.workspaceId??"Codex API key",email:a?.email,addedAt:new Date().toISOString(),metadata:{...a,authMode:a?.authMode??"api-key",origin:"live-sync"}},(0,d.writeCodexBackup)(c.id,i.snapshot),(0,H.upsertSavedAccountProfile)(c),n.registered={id:c.id,email:c.email}}let u=(0,f.getCodexProfileHome)(c.id);(0,f.ensureCodexProfileDirs)(c.id),E.existsSync(Q.join(u,"config.toml"))||Mr((0,f.getSystemCodexHome)(),u);let l=(0,d.readCodexCredentialStore)(u),p=He(c.id);if(p&&(0,y.compareCodexAuthFreshness)(p.authRaw,i.snapshot.authRaw)>0){let x=en(p,c.id,"repair",{before:i,liveAccountId:c.id,scan:t.scan});x.ok?(i={status:"ok",snapshot:x.installed},n.repaired=c.id):n.warnings.push(`A newer Codex login is saved privately; repair is pending. ${x.reason}`)}let S=(0,d.readCodexBackup)(c.id);if((S.status!=="ok"||(0,y.compareCodexAuthFreshness)(S.snapshot.authRaw,i.snapshot.authRaw)<=0)&&((0,d.writeCodexBackup)(c.id,i.snapshot),n.folded=c.id),(0,Le.writeCodexHealthSidecar)(c.id,i.snapshot.authRaw,e),l.status==="ok"){let x=lt(t.scan);(0,y.compareCodexAuthFreshness)(l.snapshot.authRaw,i.snapshot.authRaw)>0&&(0,d.writeCodexBackup)(c.id,l.snapshot),x||(0,dt.isAccountLeaseHeld)("codex",c.id)?n.warnings.push(x??"The profile is leased; duplicate cleanup is pending."):((0,d.removeCodexProfileCredentials)(u,l.snapshot),n.demoted=c.id)}else(l.status==="corrupt"||l.status==="error")&&n.warnings.push("The live account has an unreadable profile credential; run accounts doctor.");(0,H.getActiveSavedAccount)("codex")?.id!==c.id&&((0,H.setActiveSavedAccount)("codex",c.id,{silent:!0}),n.repointed=c.id)}catch{n.warnings.push("Codex account sync could not finish; verified credentials were preserved for the next retry.")}return n}function xa(e="live-sync"){let t=(0,Se.inspectRunningAccountConsumersSync)("codex");try{return X(()=>ut(e,{scan:t}))}catch{return{warnings:["Could not acquire the Codex account-switch lock."]}}}async function Oa(e="live-sync"){let t=await(0,Se.inspectRunningAccountConsumers)("codex");try{return X(()=>ut(e,{scan:t}))}catch{return{warnings:["Could not acquire the Codex account-switch lock."]}}}function Pa(e=1440*60*1e3,t=Date.now(),n){let r=[];return lt(n??(0,Se.inspectRunningAccountConsumersSync)("codex"))||X(()=>{for(let i of[(0,f.getCodexLoginsDir)(),(0,f.getCodexProfilesDir)()])if(E.existsSync(i))for(let o of E.readdirSync(i)){if(N().some(u=>u.id===o))continue;let a=ga(o);if(!a||t-Date.parse(a.addedAt)<e)continue;let s=(0,f.getCodexLoginHome)(o),c=(0,d.readCodexCredentialStore)(s);if(!(c.status==="error"||c.status==="corrupt")){if(c.status==="ok"){let u=(0,y.readAuthIdentityFromRaw)(c.snapshot.authRaw),l=u?Br(u,{fallbackToActive:!1}):null;if(!l)continue;let p=He(l.id);(0,d.writeCodexBackup)(l.id,p&&(0,y.compareCodexAuthFreshness)(p.authRaw,c.snapshot.authRaw)>=0?p:c.snapshot)}on(o),r.push(o)}}}),r}function tn(e,t,n){let r={success:!0,provider:"codex",accountId:e.id,previousAccountId:(0,H.getActiveSavedAccount)("codex")?.id??null,verified:!1,verification:"none",warnings:[],hints:[],runningConsumers:n.scan.consumers,email:e.email??e.metadata?.email},i=(re,Ae={})=>(0,Ee.finishSwitchResult)({...r,success:!1,error:re,...Ae}),o=(0,f.getCodexCredentialStoreMode)();if(o!=="file"&&o!=="unknown")return i(h.CODEX_KEYRING_FIX_HINT);if((0,d.isSidekickCodexHome)((0,f.getSystemCodexHome)()))return i("CODEX_HOME points at a Sidekick-owned home; unset it before switching.");let a=(0,d.readCodexCredentialStore)();if(a.status==="error"||a.status==="corrupt")return i("The live Codex login could not be read; it was left untouched.");let s=He(e.id);if(a.status==="ok"&&ke(e,a.snapshot)){if(s&&(0,y.compareCodexAuthFreshness)(s.authRaw,a.snapshot.authRaw)>0){let Ae=en(s,e.id,"relogin",{before:a,liveAccountId:e.id,scan:n.scan});if(!Ae.ok)return i(Ae.reason)}let re=ut("switch",n);return(0,Ee.finishSwitchResult)({...r,alreadyActive:!0,verified:!0,verification:"store",warnings:re.warnings,health:(0,Le.getAccountHealth)("codex",e.id),hints:["That account is already the live Codex login."]})}let c=lt(n.scan);if(c)return i(c);if((0,dt.isAccountLeaseHeld)("codex",e.id))return i("Keep-alive is refreshing this account; retry after it finishes.");let u=ut("switch",n);if(r.warnings.push(...u.warnings),E.existsSync(ct()))return i("An interrupted Codex switch still needs recovery; run accounts doctor.");if(a=(0,d.readCodexCredentialStore)(),a.status==="error"||a.status==="corrupt")return i("The live Codex credential could not be read.");let l=a.snapshot,p=a.status==="ok"?N().find(re=>ke(re,l)):null;if(a.status==="ok"&&!p)return i("The live login has no unambiguous account identity to save it under; sign in with Codex and retry.");if(r.previousAccountId=p?.id??null,p?.id===e.id)return i("The live account changed during the switch; retry.");let S=(0,f.getCodexProfileHome)(e.id),x=(0,d.readCodexCredentialStore)(S);if(x.status==="error"||x.status==="corrupt")return i("The target profile is unreadable; the switch was deferred.");let k=He(e.id);if(!k)return i("No readable stored credentials for this account; sign in again.",{needsLogin:!0});let ce=(0,y.readAuthIdentityFromRaw)(k.authRaw);if(ce?.authMode==="chatgpt"&&!(0,y.identitiesMatch)(ce,ft(e)))return i("The saved Codex credential does not belong to the selected account.");let Re=(0,y.codexRefreshFingerprint)(l.authRaw);if(Re&&Re===(0,y.codexRefreshFingerprint)(k.authRaw))return i("The target is another copy of the live refresh token; sign in again.");let we=(0,Le.getAccountHealth)("codex",e.id,{probe:"store"});if(r.health=we,(we.state==="expired"||we.state==="missing")&&!t.force)return i("Stored credentials have expired or are missing; sign in again.",{needsLogin:!0});let _e=(0,y.readLastRefresh)(k.authRaw);_e!==null&&Date.now()-_e>y.STALE_AUTH_THRESHOLD_MS&&r.warnings.push("The stored Codex login has not been refreshed in over 8 days.");try{p&&(0,d.writeCodexBackup)(p.id,l),(0,d.writeCodexBackup)(e.id,k),(0,nn.atomicWriteJsonSync)(ct(),{from:p?.id??null,to:e.id,fromHash:Pt(l),toHash:Pt(k),at:new Date().toISOString()})}catch{return i("The outgoing login or switch journal could not be saved and verified; live was left untouched.")}if(!(0,d.codexStoreMatches)((0,d.readCodexCredentialStore)(),l))return i("The live login changed after capture; the switch was deferred.");let $=(0,d.readCodexCredentialStore)(S);if(!(0,d.codexStoreMatches)($,x.snapshot))return i("The target credential changed after selection; the switch was deferred.");if($.status==="error"||$.status==="corrupt")return i("The target profile is unreadable; the switch was deferred.");try{$.status==="ok"&&(0,d.removeCodexProfileCredentials)(S,$.snapshot)}catch{return i("The target copy could not be removed safely; the switch was deferred.")}let Ie=en(k,e.id,"switch",{before:a,liveAccountId:p?.id??null,capturedOutgoing:!!p,scan:n.scan}),Ge=re=>{re&&en(l,p?.id??e.id,"rollback",{before:(0,d.readCodexCredentialStore)(),liveAccountId:e.id,written:re,scan:n.scan}),ba((0,pa.emptyProviderSyncReport)(),n.scan)};if(!Ie.ok){try{Ge(Ie.attempted)}catch{}return i(`${Ie.reason} Verified private backups were kept; run accounts doctor if recovery is pending.`,{verification:"failed"})}try{(0,H.setActiveSavedAccount)("codex",e.id)}catch{try{Ge(Ie.installed)}catch{}return i("The account registry could not be updated; recovery retained the verified backups.")}try{p&&Et(p.id,l.authRaw,l.legacyRaw,"switch"),(0,Le.writeCodexHealthSidecar)(e.id,k.authRaw,"switch"),Aa()}catch{r.warnings.push("The live switch succeeded; profile cleanup is pending and will retry on sync.")}let ne;try{ne=(0,Ee.writeLastSwitch)("codex",p?.id??null,e.id).token}catch{r.warnings.push("The switch succeeded but could not be recorded for undo.")}return(0,Ee.finishSwitchResult)({...r,verified:!0,verification:"store",undoToken:ne,hints:[`New Codex sessions use ${e.label??e.email??e.id}.`]})}function Dl(e,t={}){let n=N().find(i=>i.id===e);if(!n)return(0,Ee.switchFailure)("codex",e,`Codex account ${e} not found.`);let r=(0,Se.inspectRunningAccountConsumersSync)("codex");try{return X(()=>tn(n,t,{scan:r}))}catch{return(0,Ee.switchFailure)("codex",e,"The Codex switch could not finish; private backups and any pending journal were kept.")}}async function Ml(e,t={}){let n=N().find(o=>o.id===e);if(!n)return(0,Ee.switchFailure)("codex",e,`Codex account ${e} not found.`);let r=await(0,Se.inspectRunningAccountConsumers)("codex"),i;try{i=X(()=>tn(n,t,{scan:r}))}catch{return(0,Ee.switchFailure)("codex",e,"The Codex switch could not finish; private backups and any pending journal were kept.")}return i.success&&t.verifyWithCli&&!i.alreadyActive&&((await Tr((0,f.getSystemCodexHome)())).loggedIn?i.verification="cli":i=(0,Ee.finishSwitchResult)({...i,warnings:[...i.warnings,"Codex could not read the installed login; sign in again if prompted."]})),i}function Fl(){xa("migration")}async function jl(){await Oa("migration")}function Ea(e){if((0,d.isSidekickCodexHome)((0,f.getSystemCodexHome)()))return"unset CODEX_HOME before managing accounts; it names a Sidekick-owned home";let t=(0,f.getCodexCredentialStoreMode)();if(t!=="file"&&t!=="unknown")return"live credential storage is not readable file mode";let n=N().find(s=>s.id===e);if(!n)return"account not found";let r=(0,d.readCodexCredentialStore)();if(r.status==="error"||r.status==="corrupt")return"the live login could not be read";if(r.status==="ok"&&ke(n,r.snapshot))return"live account; the CLI refreshes it in normal use";let i=(0,d.readCodexCredentialStore)((0,f.getCodexProfileHome)(e));if(i.status!=="ok")return"no readable profile copy to refresh (keep-alive never restores backups)";let o=(0,y.codexRefreshFingerprint)(i.snapshot.authRaw);if(!o)return"no refreshable ChatGPT login";if(r.status==="ok"&&o===(0,y.codexRefreshFingerprint)(r.snapshot.authRaw))return"same refresh token as the live login";if((0,Le.readHealthSidecar)("codex",e)?.source==="live-sync")return"copied from the live login; waits for a switch away from it";let a=(0,d.readCodexBackup)(e);return a.status==="error"||a.status==="corrupt"?"its private backup could not be read":a.status==="ok"&&(0,y.compareCodexAuthFreshness)(a.snapshot.authRaw,i.snapshot.authRaw)>0?"its saved backup is newer than the profile copy":null}function Tl(e){try{return X(()=>Ea(e))}catch{return"could not acquire the account-switch lock"}}function Ll(e,t){try{return X(()=>{let n=Ea(e);return n?{ok:!1,reason:n}:(0,dt.acquireAccountLease)("codex",e,t)?{ok:!0}:{ok:!1,reason:"another keep-alive run holds this account"}})}catch{return{ok:!1,reason:"could not acquire the account-switch lock"}}}function Hl(e){try{X(()=>{let t=N().find(i=>i.id===e),n=(0,d.readCodexCredentialStore)((0,f.getCodexProfileHome)(e));if(!t||Fr(t)||n.status!=="ok"||!(0,y.identitiesMatch)((0,y.readAuthIdentityFromRaw)(n.snapshot.authRaw),ft(t)))return;let r=(0,d.readCodexBackup)(e);r.status==="ok"&&(0,y.compareCodexAuthFreshness)(r.snapshot.authRaw,n.snapshot.authRaw)>0||((0,d.writeCodexBackup)(e,n.snapshot),(0,Le.writeCodexHealthSidecar)(e,n.snapshot.authRaw,"keepalive"))})}finally{(0,dt.releaseAccountLease)("codex",e)}}function Nl(e,t={}){try{return X(()=>{if((0,d.isSidekickCodexHome)((0,f.getSystemCodexHome)()))return"none";let n=N().find(c=>c.id===e);if(!n)return"none";let r=(0,d.readCodexCredentialStore)();if(r.status==="error"||r.status==="corrupt")return"none";if(Fr(n))return"live";let i=(0,f.getCodexProfileHome)(e),o=(0,d.readCodexCredentialStore)(i);if(o.status==="ok"){let c=(0,y.codexRefreshFingerprint)(o.snapshot.authRaw);if(c&&r.status==="ok"&&c===(0,y.codexRefreshFingerprint)(r.snapshot.authRaw)||!(0,y.identitiesMatch)((0,y.readAuthIdentityFromRaw)(o.snapshot.authRaw),ft(n))&&(0,y.readAuthIdentityFromRaw)(o.snapshot.authRaw)?.authMode!=="api-key"&&!(0,d.isLegacyCodexLogin)(o.snapshot.legacyRaw))return"none";let u=(0,d.readCodexBackup)(e);return u.status==="ok"&&(0,y.compareCodexAuthFreshness)(u.snapshot.authRaw,o.snapshot.authRaw)>0?"none":"present"}if(o.status!=="absent"||t.restore===!1)return"none";let a=(0,d.readCodexBackup)(e);if(a.status!=="ok")return"none";let s=(0,y.codexRefreshFingerprint)(a.snapshot.authRaw);return s&&r.status==="ok"&&s===(0,y.codexRefreshFingerprint)(r.snapshot.authRaw)?"none":((0,d.writeInactiveCodexCredentialStore)(i,a.snapshot),"restored")})}catch{return"none"}}function Bl(e){return(0,H.removeSavedAccountProfile)("codex",e)?(E.rmSync((0,f.getCodexProfileDir)(e),{recursive:!0,force:!0}),E.rmSync((0,f.getCodexBackupPath)(e),{force:!0}),E.rmSync((0,f.getCodexBackupPath)(e,!0),{force:!0}),{success:!0}):{success:!1,error:`Codex account ${e} not found.`}}async function $l(e=1440*60*1e3,t=Date.now()){return Pa(e,t,await(0,Se.inspectRunningAccountConsumers)("codex"))}});var Ra=b($r=>{"use strict";Object.defineProperty($r,"__esModule",{value:!0});$r.getActiveAccountStatus=Wl;var Ul=ra(),ql=ka();function Kl(e){return e instanceof Error?e.message:String(e)}function Wl(e,t={}){try{let n=(0,Ul.resolveActiveClaudeAccount)(t),r=(0,ql.resolveActiveCodexAccount)(t),i=n.source!=="none"?{present:!0,...n.registryAccountId?{accountId:n.registryAccountId}:{},email:n.email,label:n.label??n.email}:{present:!1},o=r.source!=="none"?{present:!0,...r.registryAccountId?{accountId:r.registryAccountId}:{},email:r.email,label:r.label??r.email??r.providerAccountId}:{present:!1};return{ok:i.present||o.present,claude:i,codex:o,error:e}}catch(n){return{ok:!1,claude:{present:!1},codex:{present:!1},error:e??Kl(n)}}}});var Ma=b(Je=>{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});Je.formatTokenCount=zl;Je.formatDurationMs=Ql;Je.formatLocalDateKey=Ia;Je.parseLocalDateKey=Da;Je.addLocalDays=Jl;function zl(e,t={}){if(!Number.isFinite(e))return"0";let n=Math.trunc(e),r=n<0?"-":"",i=Math.abs(n),o=t.suffixCase==="upper"?"K":"k";return i>=1e6?`${r}${(i/1e6).toFixed(1)}M`:i>=1e3?`${r}${(i/1e3).toFixed(1)}${o}`:`${n}`}function Ql(e,t={}){let n=t.invalid??"N/A";if(!Number.isFinite(e)||e<0)return n;let i=(t.style??"spaced")==="compact"?"":" ",o=t.secondsFractionDigits??0;if(e<1e3)return t.includeMilliseconds?`${Math.round(e)}ms`:`${(e/1e3).toFixed(Math.max(1,o))}s`;let a=e/1e3;if(a<60)return o>0?`${a.toFixed(o)}s`:`${Math.floor(a)}s`;let s=Math.floor(a),c=Math.floor(s/3600),u=Math.floor(s%3600/60),l=s%60;return c>0?`${c}h${i}${u}m${i}${l}s`:`${u}m${i}${l}s`}function Ia(e=new Date){let t=typeof e=="number"?new Date(e):e;if(Number.isNaN(t.getTime()))return"";let n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0");return`${n}-${r}-${i}`}function Da(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!t)return null;let n=new Date(Number(t[1]),Number(t[2])-1,Number(t[3]));return Number.isNaN(n.getTime())?null:n}function Jl(e,t){let n=Da(e);return n?Ia(new Date(n.getFullYear(),n.getMonth(),n.getDate()+t)):e}});var Ua=b(ee=>{"use strict";var Vl=ee&&ee.__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]})),Gl=ee&&ee.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),qr=ee&&ee.__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"&&Vl(n,t,r[i]);return Gl(n,t),n}})();Object.defineProperty(ee,"__esModule",{value:!0});ee.getWorkspaceIdFromPath=tf;ee.appendQuotaHistorySample=uf;ee.readQuotaHistoryRange=$a;ee.readQuotaHistoryDailyBuckets=df;ee.pruneQuotaHistory=lf;ee._resetQuotaHistoryInMemoryStateForTests=ff;var Yl=qr(g("crypto")),ge=qr(g("fs")),Kr=qr(g("path")),Fa=Ma(),ja=pt(),Xl=Zt(),Ta=ie(),Zl=6e4,Wr=91,ef=16*1024,La=864e5,kt=new Map,an=new Map;function tf(e){let t;try{t=ge.realpathSync(e)}catch{t=Kr.resolve(e)}return Yl.createHash("sha256").update(t).digest("hex").slice(0,16)}function zr(e,t){return Kr.join((0,ja.getConfigDir)(),"quota-history",e,`${t}.jsonl`)}function nf(e){ge.mkdirSync(Kr.join((0,ja.getConfigDir)(),"quota-history",e),{recursive:!0,mode:448})}function sn(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return n&&typeof n=="object"&&typeof n.timestamp=="string"&&n.fiveHour&&n.sevenDay?n:null}catch{return null}}function rf(e){let t;try{t=ge.openSync(e,"r");let n=ge.fstatSync(t);if(n.size===0)return null;let r=4096,i=n.size,o=Buffer.alloc(0);for(;i>0;){let a=Math.min(r,i),s=Buffer.alloc(a);ge.readSync(t,s,0,a,i-a),o=Buffer.concat([s,o]),i-=a;let u=o.toString("utf8").replace(/\n+$/,""),l=u.lastIndexOf(`
|
|
17
|
+
`);if(l>=0){let p=u.slice(l+1),S=sn(p);return S&&Date.parse(S.timestamp)||null}if(i===0){let p=sn(u);return p&&Date.parse(p.timestamp)||null}}return null}catch(n){return n?.code==="ENOENT",null}finally{if(t!==void 0)try{ge.closeSync(t)}catch{}}}function of(e,t){return(0,Ta.withFileLockSync)(`${e}.lock`,t)}function af(e,t){(0,Ta.atomicWriteFileSync)(e,t,384)}function Ha(e,t){let n;try{n=ge.statSync(e)}catch{return{kept:0,pruned:0}}if(n.size===0)return{kept:0,pruned:0};let r=Date.now()-t*La,o=ge.readFileSync(e,"utf8").split(`
|
|
18
|
+
`),a=[],s=0;for(let c of o){if(!c.trim())continue;let u=sn(c);if(!u){s+=1;continue}let l=Date.parse(u.timestamp);Number.isFinite(l)&&l>=r?a.push(c):s+=1}return s>0&&af(e,a.length>0?a.join(`
|
|
18
19
|
`)+`
|
|
19
|
-
`:""),{kept:a.length,pruned:
|
|
20
|
-
`;
|
|
21
|
-
`)){let u=mt(s);if(!u)continue;let d=Date.parse(u.timestamp);Number.isFinite(d)&&(d<o||d>a||c.push(u))}return c.sort((s,u)=>Date.parse(s.timestamp)-Date.parse(u.timestamp)),c}function Cn(e){return(0,Qi.formatLocalDateKey)(e)}async function mu(e){let t=await eo(e),{fromMs:n,toMs:r}=Zi(),i=e.from?Date.parse(e.from):n,o=e.to?Date.parse(e.to):r,a=Cn(i),c=Cn(o),s=new Map;for(let p of t){let A=Date.parse(p.timestamp);if(!Number.isFinite(A))continue;let v=Cn(A),w=s.get(v);w?w.push(p):s.set(v,[p])}let u=[],d=a;for(let p=0;p<=366&&d<=c;p+=1){let A=s.get(d);if(!A||A.length===0)u.push({date:d,samples:0,maxUtilizationFiveHour:0,maxUtilizationSevenDay:0,avgUtilizationFiveHour:0,avgUtilizationSevenDay:0,anyUnavailable:!1});else{let v=0,w=0,L=0,ee=0,x=!1;for(let K of A)v=Math.max(v,K.fiveHour.utilization),w=Math.max(w,K.sevenDay.utilization),L+=K.fiveHour.utilization,ee+=K.sevenDay.utilization,K.available||(x=!0);let T=A.length;u.push({date:d,samples:T,maxUtilizationFiveHour:v,maxUtilizationSevenDay:w,avgUtilizationFiveHour:Math.round(L/T*100)/100,avgUtilizationSevenDay:Math.round(ee/T*100)/100,anyUnavailable:x})}d=(0,Qi.addLocalDays)(d,1)}return u}async function yu(e,t,n=Pn){let r=In(e,t);return Yi(r,n)}function gu(){Ue.clear(),pt.clear()}});var Dn=C(qe=>{"use strict";Object.defineProperty(qe,"__esModule",{value:!0});qe.BurnRateCalculator=void 0;qe.estimateTimeToQuota=no;var xn=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 no(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)}};qe.BurnRateCalculator=xn;function no(e,t,n){if(n<=0)return null;let r=t-e;return r<=0?0:r/n}});var oo=C(gt=>{"use strict";Object.defineProperty(gt,"__esModule",{value:!0});gt.selectStatuslineAccount=io;gt.formatStatusline=vu;var ro=He(),Su=Dn();function io(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 vu(e){let t=io(e),n=e.now??new Date,r=Au(e.live);if(!t)return En(["acct:none","quota unavailable",...r]);let i=Cu(t.accountLabel),o=t.quota;if(!o?.available)return En([`acct:${i}`,"quota unavailable",...r]);let a=yt(o.fiveHour.utilization),c=bu(o.fiveHour.resetsAt,n),s=wu(o,n),u=[`acct:${i}`,`5h ${Math.round(a)}% resets ${c}`];return s!=null&&u.push(`~${Ou(s)} left`),o.sevenDay.resetsAt&&o.sevenDay.utilization>0&&u.push(`7d ${Math.round(yt(o.sevenDay.utilization))}%`),o.freshness&&o.freshness!=="fresh"&&u.push(`(${(0,ro.formatQuotaAge)(o.ageMs)})`),En([...u,...r])}function Au(e){if(!e)return[];let t=[],n=e.contextWindow?.usedPercentage;typeof n=="number"&&t.push(`ctx ${Math.round(yt(n))}%`);let r=e.cost?.totalCostUsd;typeof r=="number"&&r>0&&t.push(`$${_u(r)}`);let i=e.promptCache?.hitRatio;return typeof i=="number"&&t.push(`cache ${Math.round(yt(i*100))}%`),t}function En(e){return e.join(" \xB7 ")}function _u(e){return e>=100?e.toFixed(0):e>=10?e.toFixed(1):e.toFixed(2)}function wu(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 a=(o-(n-ro.FIVE_HOUR_WINDOW_MS))/6e4;if(a<=0||e.fiveHour.utilization<=0)return null;let c=e.fiveHour.utilization/a,s=(0,Su.estimateTimeToQuota)(e.fiveHour.utilization,100,c),u=(n-r)/6e4;return s!==null&&s<u?s:null}function Cu(e){let t=e.trim();return(t.includes("@")?t.split("@")[0]:t).replace(/\s+/g,"-").slice(0,24)||"unknown"}function yt(e){return Number.isFinite(e)?Math.min(100,Math.max(0,e)):0}function bu(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 Ou(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 so=C(St=>{"use strict";Object.defineProperty(St,"__esModule",{value:!0});St.parseClaudeStatuslinePayload=Pu;St.quotaFromStatuslinePayload=Iu;function ue(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function J(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function jn(e){return e===null?null:J(e)}function se(e){return typeof e=="string"&&e.length>0?e:void 0}function co(e){return typeof e=="boolean"?e:void 0}function Mn(e){if(!ue(e))return;let t=J(e.used_percentage),n=J(e.resets_at);if(!(t===void 0||n===void 0))return{usedPercentage:t,resetsAt:n}}function Ie(e){return Object.values(e).some(t=>t!==void 0)?e:void 0}function Pu(e){if(typeof e!="string"||!e.trim())return null;let t;try{t=JSON.parse(e)}catch{return null}if(!ue(t))return null;let n=ue(t.model)?t.model:void 0,r=ue(t.workspace)?t.workspace:void 0,i=ue(t.context_window)?t.context_window:void 0,o=ue(t.cost)?t.cost:void 0,a=ue(t.rate_limits)?t.rate_limits:void 0,c=ue(t.prompt_cache)?t.prompt_cache:void 0;return{sessionId:se(t.session_id),transcriptPath:se(t.transcript_path),cwd:se(t.cwd),model:n?Ie({id:se(n.id),displayName:se(n.display_name)}):void 0,workspace:r?Ie({currentDir:se(r.current_dir),projectDir:se(r.project_dir),gitWorktree:se(r.git_worktree)}):void 0,contextWindow:i?Ie({usedPercentage:jn(i.used_percentage),remainingPercentage:jn(i.remaining_percentage),contextWindowSize:J(i.context_window_size),totalInputTokens:J(i.total_input_tokens),totalOutputTokens:J(i.total_output_tokens)}):void 0,cost:o?Ie({totalCostUsd:J(o.total_cost_usd),totalDurationMs:J(o.total_duration_ms),totalApiDurationMs:J(o.total_api_duration_ms),totalLinesAdded:J(o.total_lines_added),totalLinesRemoved:J(o.total_lines_removed)}):void 0,rateLimits:a?Ie({fiveHour:Mn(a.five_hour),sevenDay:Mn(a.seven_day),spendLimit:Mn(a.spend_limit)}):void 0,promptCache:c?Ie({warm:co(c.warm),cachingObserved:co(c.caching_observed),hitRatio:jn(c.hit_ratio),requests:J(c.requests),misses:J(c.misses),expectedRebuilds:J(c.expected_rebuilds)}):void 0,raw:t}}function ao(e,t){return e?{utilization:Math.max(0,e.usedPercentage),resetsAt:new Date(e.resetsAt*1e3).toISOString()}:t??{utilization:0,resetsAt:""}}function Iu(e,t={}){let n=e.rateLimits;if(!n?.fiveHour&&!n?.sevenDay)return null;let r=t.now??new Date,i=t.fallback??void 0;return{fiveHour:ao(n.fiveHour,i?.fiveHour),sevenDay:ao(n.sevenDay,i?.sevenDay),available:!0,providerId:"claude-code",source:"statusline",capturedAt:r.toISOString(),stale:!1}}});var fo=C(R=>{"use strict";var xu=R&&R.__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]})),Du=R&&R.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),Eu=R&&R.__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"&&xu(n,t,r[i]);return Du(n,t),n}})();Object.defineProperty(R,"__esModule",{value:!0});R.STATE_FILE_NAME=R.STATE_FILE_SCHEMA_VERSION=void 0;R.getStateFilePath=Rn;R.readStateFile=lo;R.writeStateFile=Tu;R.quotaToStateFile=Nu;R.billingBlockToStateFile=Hu;var ju=Eu(y("fs")),Mu=De(),Fu=He(),Ru=ie();R.STATE_FILE_SCHEMA_VERSION=1;R.STATE_FILE_NAME="state.json";function Rn(){return(0,Mu.getGlobalDataPath)(R.STATE_FILE_NAME)}function lo(e=Rn()){try{let t=JSON.parse(ju.readFileSync(e,"utf8"));return t&&t.schemaVersion===R.STATE_FILE_SCHEMA_VERSION?t:null}catch{return null}}function Fn(e){if(Array.isArray(e))return`[${e.map(Fn).join(",")}]`;if(e&&typeof e=="object"){let t=e;return`{${Object.keys(t).sort().filter(r=>t[r]!==void 0).map(r=>`${JSON.stringify(r)}:${Fn(t[r])}`).join(",")}}`}return JSON.stringify(e)??"null"}function uo(e){return Fn({...e,schemaVersion:void 0,writtenAt:void 0})}function Tu(e,t={}){let n=t.filePath??Rn();try{let r=lo(n);if(r&&uo(r)===uo(e))return!1;let i={schemaVersion:R.STATE_FILE_SCHEMA_VERSION,writtenAt:(t.now??new Date).toISOString(),...e};return(0,Ru.atomicWriteJsonSync)(n,i),!0}catch{return!1}}function Nu(e,t=Date.now()){if(!e||!e.available)return null;let n=typeof e.ageMs=="number"?e.ageMs:null,r=e.freshness??null;if(n===null&&e.capturedAt){let i=Date.parse(e.capturedAt);Number.isFinite(i)&&(n=Math.max(0,t-i),r??=(0,Fu.classifyQuotaFreshness)(n))}return{fiveHour:{utilization:e.fiveHour.utilization,resetsAt:e.fiveHour.resetsAt},sevenDay:{utilization:e.sevenDay.utilization,resetsAt:e.sevenDay.resetsAt},source:e.source??null,capturedSource:e.capturedSource??null,capturedAt:e.capturedAt??null,ageMs:n,freshness:r}}function Hu(e){return e?{start:e.start,end:e.end,isActive:e.isActive,tokens:e.tokens.total,costUsd:e.costUsd,costProvenance:e.costProvenance,burnRatePerMinute:e.burnRatePerMinute,projectedTokens:e.projectedTokens,projectedCostUsd:e.projectedCostUsd,remainingMs:e.remainingMs}:null}});var vo=C(m=>{"use strict";Object.defineProperty(m,"__esModule",{value:!0});m.writeStateFile=m.readStateFile=m.quotaToStateFile=m.getStateFilePath=m.billingBlockToStateFile=m.STATE_FILE_SCHEMA_VERSION=m.STATE_FILE_NAME=m.quotaFromStatuslinePayload=m.parseClaudeStatuslinePayload=m.selectStatuslineAccount=m.formatStatusline=m.estimateTimeToQuota=m.BurnRateCalculator=m.formatQuotaAge=m.classifyQuotaFreshness=m.getWorkspaceIdFromPath=m.appendQuotaHistorySample=m.writeQuotaSnapshot=m.readQuotaSnapshot=m.getActiveAccountStatus=void 0;var Lu=Bi();Object.defineProperty(m,"getActiveAccountStatus",{enumerable:!0,get:function(){return Lu.getActiveAccountStatus}});var ho=st();Object.defineProperty(m,"readQuotaSnapshot",{enumerable:!0,get:function(){return ho.readQuotaSnapshot}});Object.defineProperty(m,"writeQuotaSnapshot",{enumerable:!0,get:function(){return ho.writeQuotaSnapshot}});var po=to();Object.defineProperty(m,"appendQuotaHistorySample",{enumerable:!0,get:function(){return po.appendQuotaHistorySample}});Object.defineProperty(m,"getWorkspaceIdFromPath",{enumerable:!0,get:function(){return po.getWorkspaceIdFromPath}});var mo=He();Object.defineProperty(m,"classifyQuotaFreshness",{enumerable:!0,get:function(){return mo.classifyQuotaFreshness}});Object.defineProperty(m,"formatQuotaAge",{enumerable:!0,get:function(){return mo.formatQuotaAge}});var yo=Dn();Object.defineProperty(m,"BurnRateCalculator",{enumerable:!0,get:function(){return yo.BurnRateCalculator}});Object.defineProperty(m,"estimateTimeToQuota",{enumerable:!0,get:function(){return yo.estimateTimeToQuota}});var go=oo();Object.defineProperty(m,"formatStatusline",{enumerable:!0,get:function(){return go.formatStatusline}});Object.defineProperty(m,"selectStatuslineAccount",{enumerable:!0,get:function(){return go.selectStatuslineAccount}});var So=so();Object.defineProperty(m,"parseClaudeStatuslinePayload",{enumerable:!0,get:function(){return So.parseClaudeStatuslinePayload}});Object.defineProperty(m,"quotaFromStatuslinePayload",{enumerable:!0,get:function(){return So.quotaFromStatuslinePayload}});var ye=fo();Object.defineProperty(m,"STATE_FILE_NAME",{enumerable:!0,get:function(){return ye.STATE_FILE_NAME}});Object.defineProperty(m,"STATE_FILE_SCHEMA_VERSION",{enumerable:!0,get:function(){return ye.STATE_FILE_SCHEMA_VERSION}});Object.defineProperty(m,"billingBlockToStateFile",{enumerable:!0,get:function(){return ye.billingBlockToStateFile}});Object.defineProperty(m,"getStateFilePath",{enumerable:!0,get:function(){return ye.getStateFilePath}});Object.defineProperty(m,"quotaToStateFile",{enumerable:!0,get:function(){return ye.quotaToStateFile}});Object.defineProperty(m,"readStateFile",{enumerable:!0,get:function(){return ye.readStateFile}});Object.defineProperty(m,"writeStateFile",{enumerable:!0,get:function(){return ye.writeStateFile}})});var M=Eo(vo(),1);import*as vt from"fs";function $u(e=process.env){if(e.SIDEKICK_STATUSLINE_STDIN==="0")return null;try{if(process.stdin.isTTY)return null;let t=vt.fstatSync(0);return t.isFIFO()||t.isFile()||t.isSocket()?(0,M.parseClaudeStatuslinePayload)(vt.readFileSync(0,"utf8")):null}catch{return null}}function ku(e,t){return e?e.fiveHour.utilization===t.fiveHour.utilization&&e.fiveHour.resetsAt===t.fiveHour.resetsAt&&e.sevenDay.utilization===t.sevenDay.utilization&&e.sevenDay.resetsAt===t.sevenDay.resetsAt:!1}async function Uu(e,t,n,r){if(!ku(n,t)){try{(0,M.writeQuotaSnapshot)("claude-code",e,t)}catch{}try{let i=r.workspace?.currentDir??r.cwd??process.cwd();await(0,M.appendQuotaHistorySample)({timestamp:t.capturedAt??new Date().toISOString(),runtimeProvider:"claude",providerId:e,workspaceId:(0,M.getWorkspaceIdFromPath)(i),fiveHour:t.fiveHour,sevenDay:t.sevenDay,available:!0,source:"statusline",stale:!1})}catch{}}}function qu(e,t,n,r){let i=e.claude.present?{providerId:"claude-code",id:e.claude.accountId??null,label:e.claude.label??null}:e.codex.present?{providerId:"codex",id:e.codex.accountId??null,label:e.codex.label??null}:null,o=r?.contextWindow?{usedPercentage:r.contextWindow.usedPercentage??null,contextWindowSize:r.contextWindow.contextWindowSize??null,totalInputTokens:r.contextWindow.totalInputTokens??null,totalOutputTokens:r.contextWindow.totalOutputTokens??null}:null,a=r?{sessionId:r.sessionId??null,cwd:r.workspace?.currentDir??r.cwd??null,model:r.model?.id??null,costUsd:r.cost?.totalCostUsd??null,durationMs:r.cost?.totalDurationMs??null,linesAdded:r.cost?.totalLinesAdded??null,linesRemoved:r.cost?.totalLinesRemoved??null,promptCacheHitRatio:r.promptCache?.hitRatio??null}:null;return{writer:"statusline",account:i,quota:{claude:(0,M.quotaToStateFile)(t),codex:(0,M.quotaToStateFile)(n)},context:o,session:a,billingBlock:null}}async function Ao(){let e=$u(),t=(0,M.getActiveAccountStatus)(void 0,{selfHeal:!1}),n=t.claude.accountId,r=n?(0,M.readQuotaSnapshot)("claude-code",n):null,i=r,o=t.codex.accountId?(0,M.readQuotaSnapshot)("codex",t.codex.accountId):null,a=null;if(e){let c=(0,M.quotaFromStatuslinePayload)(e,{fallback:r});c&&(i=c,n&&(a=Uu(n,c,r,e)))}process.stdout.write(`${(0,M.formatStatusline)({accounts:t,claudeQuota:i,codexQuota:o,live:e})}
|
|
22
|
-
`),(0,
|
|
20
|
+
`:""),{kept:a.length,pruned:s}}function sf(e){let t=Na(e.runtimeProvider);return{fiveHour:{utilization:e.fiveHour.utilization,resetsAt:e.fiveHour.resetsAt},sevenDay:{utilization:e.sevenDay.utilization,resetsAt:e.sevenDay.resetsAt},available:e.available,error:e.error,providerId:t,source:e.source??"session",capturedAt:e.timestamp,stale:e.stale}}function Na(e){return e==="claude"?"claude-code":e==="zai"?"zai":"codex"}async function cf(e,t,n){let r=an.get(t);if(r===void 0){let a=rf(t);a!==null&&(r=a,an.set(t,a))}let i=Date.parse(e.timestamp);if(r!==void 0&&Number.isFinite(i)&&i-r<n.minIntervalMs)return;nf(e.workspaceId);let o=JSON.stringify(e)+`
|
|
21
|
+
`;of(t,()=>{ge.appendFileSync(t,o,{encoding:"utf8",mode:384});try{ge.statSync(t).size>=ef&&Ha(t,n.retentionDays)}catch{}}),an.set(t,Number.isFinite(i)?i:Date.now());try{let a=Na(e.runtimeProvider);(0,Xl.writeQuotaSnapshot)(a,e.providerId,sf(e))}catch{}}async function uf(e,t={}){let n={minIntervalMs:t.minIntervalMs??Zl,retentionDays:t.retentionDays??Wr},r=zr(e.workspaceId,e.runtimeProvider),o=(kt.get(r)??Promise.resolve()).then(()=>cf(e,r,n)).catch(()=>{});kt.set(r,o);try{await o}finally{kt.get(r)===o&&kt.delete(r)}}function Ba(){let e=Date.now();return{fromMs:e-Wr*La,toMs:e}}async function $a(e){let t=zr(e.workspaceId,e.provider),n;try{n=await ge.promises.readFile(t,"utf8")}catch(c){if(c?.code==="ENOENT")return[];throw c}let{fromMs:r,toMs:i}=Ba(),o=e.from?Date.parse(e.from):r,a=e.to?Date.parse(e.to):i,s=[];for(let c of n.split(`
|
|
22
|
+
`)){let u=sn(c);if(!u)continue;let l=Date.parse(u.timestamp);Number.isFinite(l)&&(l<o||l>a||s.push(u))}return s.sort((c,u)=>Date.parse(c.timestamp)-Date.parse(u.timestamp)),s}function Ur(e){return(0,Fa.formatLocalDateKey)(e)}async function df(e){let t=await $a(e),{fromMs:n,toMs:r}=Ba(),i=e.from?Date.parse(e.from):n,o=e.to?Date.parse(e.to):r,a=Ur(i),s=Ur(o),c=new Map;for(let p of t){let S=Date.parse(p.timestamp);if(!Number.isFinite(S))continue;let x=Ur(S),k=c.get(x);k?k.push(p):c.set(x,[p])}let u=[],l=a;for(let p=0;p<=366&&l<=s;p+=1){let S=c.get(l);if(!S||S.length===0)u.push({date:l,samples:0,maxUtilizationFiveHour:0,maxUtilizationSevenDay:0,avgUtilizationFiveHour:0,avgUtilizationSevenDay:0,anyUnavailable:!1});else{let x=0,k=0,ce=0,Re=0,we=!1;for(let $ of S)x=Math.max(x,$.fiveHour.utilization),k=Math.max(k,$.sevenDay.utilization),ce+=$.fiveHour.utilization,Re+=$.sevenDay.utilization,$.available||(we=!0);let _e=S.length;u.push({date:l,samples:_e,maxUtilizationFiveHour:x,maxUtilizationSevenDay:k,avgUtilizationFiveHour:Math.round(ce/_e*100)/100,avgUtilizationSevenDay:Math.round(Re/_e*100)/100,anyUnavailable:we})}l=(0,Fa.addLocalDays)(l,1)}return u}async function lf(e,t,n=Wr){let r=zr(e,t);return Ha(r,n)}function ff(){kt.clear(),an.clear()}});var Jr=b(Rt=>{"use strict";Object.defineProperty(Rt,"__esModule",{value:!0});Rt.BurnRateCalculator=void 0;Rt.estimateTimeToQuota=qa;var Qr=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 qa(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)}};Rt.BurnRateCalculator=Qr;function qa(e,t,n){if(n<=0)return null;let r=t-e;return r<=0?0:r/n}});var za=b(un=>{"use strict";Object.defineProperty(un,"__esModule",{value:!0});un.selectStatuslineAccount=Wa;un.formatStatusline=pf;var Ka=Ot(),hf=Jr();function Wa(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 pf(e){let t=Wa(e),n=e.now??new Date,r=gf(e.live);if(!t)return Vr(["acct:none","quota unavailable",...r]);let i=Cf(t.accountLabel),o=t.quota;if(!o?.available)return Vr([`acct:${i}`,"quota unavailable",...r]);let a=cn(o.fiveHour.utilization),s=vf(o.fiveHour.resetsAt,n),c=mf(o,n),u=[`acct:${i}`,`5h ${Math.round(a)}% resets ${s}`];return c!=null&&u.push(`~${Sf(c)} left`),o.sevenDay.resetsAt&&o.sevenDay.utilization>0&&u.push(`7d ${Math.round(cn(o.sevenDay.utilization))}%`),o.freshness&&o.freshness!=="fresh"&&u.push(`(${(0,Ka.formatQuotaAge)(o.ageMs)})`),Vr([...u,...r])}function gf(e){if(!e)return[];let t=[],n=e.contextWindow?.usedPercentage;typeof n=="number"&&t.push(`ctx ${Math.round(cn(n))}%`);let r=e.cost?.totalCostUsd;typeof r=="number"&&r>0&&t.push(`$${yf(r)}`);let i=e.promptCache?.hitRatio;return typeof i=="number"&&t.push(`cache ${Math.round(cn(i*100))}%`),t}function Vr(e){return e.join(" \xB7 ")}function yf(e){return e>=100?e.toFixed(0):e>=10?e.toFixed(1):e.toFixed(2)}function mf(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 a=(o-(n-Ka.FIVE_HOUR_WINDOW_MS))/6e4;if(a<=0||e.fiveHour.utilization<=0)return null;let s=e.fiveHour.utilization/a,c=(0,hf.estimateTimeToQuota)(e.fiveHour.utilization,100,s),u=(n-r)/6e4;return c!==null&&c<u?c:null}function Cf(e){let t=e.trim();return(t.includes("@")?t.split("@")[0]:t).replace(/\s+/g,"-").slice(0,24)||"unknown"}function cn(e){return Number.isFinite(e)?Math.min(100,Math.max(0,e)):0}function vf(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 Sf(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 Va=b(dn=>{"use strict";Object.defineProperty(dn,"__esModule",{value:!0});dn.parseClaudeStatuslinePayload=wf;dn.quotaFromStatuslinePayload=_f;function Be(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function te(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function Gr(e){return e===null?null:te(e)}function Ne(e){return typeof e=="string"&&e.length>0?e:void 0}function Qa(e){return typeof e=="boolean"?e:void 0}function Yr(e){if(!Be(e))return;let t=te(e.used_percentage),n=te(e.resets_at);if(!(t===void 0||n===void 0))return{usedPercentage:t,resetsAt:n}}function ht(e){return Object.values(e).some(t=>t!==void 0)?e:void 0}function wf(e){if(typeof e!="string"||!e.trim())return null;let t;try{t=JSON.parse(e)}catch{return null}if(!Be(t))return null;let n=Be(t.model)?t.model:void 0,r=Be(t.workspace)?t.workspace:void 0,i=Be(t.context_window)?t.context_window:void 0,o=Be(t.cost)?t.cost:void 0,a=Be(t.rate_limits)?t.rate_limits:void 0,s=Be(t.prompt_cache)?t.prompt_cache:void 0;return{sessionId:Ne(t.session_id),transcriptPath:Ne(t.transcript_path),cwd:Ne(t.cwd),model:n?ht({id:Ne(n.id),displayName:Ne(n.display_name)}):void 0,workspace:r?ht({currentDir:Ne(r.current_dir),projectDir:Ne(r.project_dir),gitWorktree:Ne(r.git_worktree)}):void 0,contextWindow:i?ht({usedPercentage:Gr(i.used_percentage),remainingPercentage:Gr(i.remaining_percentage),contextWindowSize:te(i.context_window_size),totalInputTokens:te(i.total_input_tokens),totalOutputTokens:te(i.total_output_tokens)}):void 0,cost:o?ht({totalCostUsd:te(o.total_cost_usd),totalDurationMs:te(o.total_duration_ms),totalApiDurationMs:te(o.total_api_duration_ms),totalLinesAdded:te(o.total_lines_added),totalLinesRemoved:te(o.total_lines_removed)}):void 0,rateLimits:a?ht({fiveHour:Yr(a.five_hour),sevenDay:Yr(a.seven_day),spendLimit:Yr(a.spend_limit)}):void 0,promptCache:s?ht({warm:Qa(s.warm),cachingObserved:Qa(s.caching_observed),hitRatio:Gr(s.hit_ratio),requests:te(s.requests),misses:te(s.misses),expectedRebuilds:te(s.expected_rebuilds)}):void 0,raw:t}}function Ja(e,t){return e?{utilization:Math.max(0,e.usedPercentage),resetsAt:new Date(e.resetsAt*1e3).toISOString()}:t??{utilization:0,resetsAt:""}}function _f(e,t={}){let n=e.rateLimits;if(!n?.fiveHour&&!n?.sevenDay)return null;let r=t.now??new Date,i=t.fallback??void 0;return{fiveHour:Ja(n.fiveHour,i?.fiveHour),sevenDay:Ja(n.sevenDay,i?.sevenDay),available:!0,providerId:"claude-code",source:"statusline",capturedAt:r.toISOString(),stale:!1}}});var Xa=b(B=>{"use strict";var Af=B&&B.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),bf=B&&B.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),xf=B&&B.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&Af(n,t,r[i]);return bf(n,t),n}})();Object.defineProperty(B,"__esModule",{value:!0});B.STATE_FILE_NAME=B.STATE_FILE_SCHEMA_VERSION=void 0;B.getStateFilePath=Zr;B.readStateFile=Ya;B.writeStateFile=Rf;B.quotaToStateFile=If;B.billingBlockToStateFile=Df;var Of=xf(g("fs")),Pf=pt(),Ef=Ot(),kf=ie();B.STATE_FILE_SCHEMA_VERSION=1;B.STATE_FILE_NAME="state.json";function Zr(){return(0,Pf.getGlobalDataPath)(B.STATE_FILE_NAME)}function Ya(e=Zr()){try{let t=JSON.parse(Of.readFileSync(e,"utf8"));return t&&t.schemaVersion===B.STATE_FILE_SCHEMA_VERSION?t:null}catch{return null}}function Xr(e){if(Array.isArray(e))return`[${e.map(Xr).join(",")}]`;if(e&&typeof e=="object"){let t=e;return`{${Object.keys(t).sort().filter(r=>t[r]!==void 0).map(r=>`${JSON.stringify(r)}:${Xr(t[r])}`).join(",")}}`}return JSON.stringify(e)??"null"}function Ga(e){return Xr({...e,schemaVersion:void 0,writtenAt:void 0})}function Rf(e,t={}){let n=t.filePath??Zr();try{let r=Ya(n);if(r&&Ga(r)===Ga(e))return!1;let i={schemaVersion:B.STATE_FILE_SCHEMA_VERSION,writtenAt:(t.now??new Date).toISOString(),...e};return(0,kf.atomicWriteJsonSync)(n,i),!0}catch{return!1}}function If(e,t=Date.now()){if(!e||!e.available)return null;let n=typeof e.ageMs=="number"?e.ageMs:null,r=e.freshness??null;if(n===null&&e.capturedAt){let i=Date.parse(e.capturedAt);Number.isFinite(i)&&(n=Math.max(0,t-i),r??=(0,Ef.classifyQuotaFreshness)(n))}return{fiveHour:{utilization:e.fiveHour.utilization,resetsAt:e.fiveHour.resetsAt},sevenDay:{utilization:e.sevenDay.utilization,resetsAt:e.sevenDay.resetsAt},source:e.source??null,capturedSource:e.capturedSource??null,capturedAt:e.capturedAt??null,ageMs:n,freshness:r}}function Df(e){return e?{start:e.start,end:e.end,isActive:e.isActive,tokens:e.tokens.total,costUsd:e.costUsd,costProvenance:e.costProvenance,burnRatePerMinute:e.burnRatePerMinute,projectedTokens:e.projectedTokens,projectedCostUsd:e.projectedCostUsd,remainingMs:e.remainingMs}:null}});var os=b(v=>{"use strict";Object.defineProperty(v,"__esModule",{value:!0});v.writeStateFile=v.readStateFile=v.quotaToStateFile=v.getStateFilePath=v.billingBlockToStateFile=v.STATE_FILE_SCHEMA_VERSION=v.STATE_FILE_NAME=v.quotaFromStatuslinePayload=v.parseClaudeStatuslinePayload=v.selectStatuslineAccount=v.formatStatusline=v.estimateTimeToQuota=v.BurnRateCalculator=v.formatQuotaAge=v.classifyQuotaFreshness=v.getWorkspaceIdFromPath=v.appendQuotaHistorySample=v.writeQuotaSnapshot=v.readQuotaSnapshot=v.getActiveAccountStatus=void 0;var Mf=Ra();Object.defineProperty(v,"getActiveAccountStatus",{enumerable:!0,get:function(){return Mf.getActiveAccountStatus}});var Za=Zt();Object.defineProperty(v,"readQuotaSnapshot",{enumerable:!0,get:function(){return Za.readQuotaSnapshot}});Object.defineProperty(v,"writeQuotaSnapshot",{enumerable:!0,get:function(){return Za.writeQuotaSnapshot}});var es=Ua();Object.defineProperty(v,"appendQuotaHistorySample",{enumerable:!0,get:function(){return es.appendQuotaHistorySample}});Object.defineProperty(v,"getWorkspaceIdFromPath",{enumerable:!0,get:function(){return es.getWorkspaceIdFromPath}});var ts=Ot();Object.defineProperty(v,"classifyQuotaFreshness",{enumerable:!0,get:function(){return ts.classifyQuotaFreshness}});Object.defineProperty(v,"formatQuotaAge",{enumerable:!0,get:function(){return ts.formatQuotaAge}});var ns=Jr();Object.defineProperty(v,"BurnRateCalculator",{enumerable:!0,get:function(){return ns.BurnRateCalculator}});Object.defineProperty(v,"estimateTimeToQuota",{enumerable:!0,get:function(){return ns.estimateTimeToQuota}});var rs=za();Object.defineProperty(v,"formatStatusline",{enumerable:!0,get:function(){return rs.formatStatusline}});Object.defineProperty(v,"selectStatuslineAccount",{enumerable:!0,get:function(){return rs.selectStatuslineAccount}});var is=Va();Object.defineProperty(v,"parseClaudeStatuslinePayload",{enumerable:!0,get:function(){return is.parseClaudeStatuslinePayload}});Object.defineProperty(v,"quotaFromStatuslinePayload",{enumerable:!0,get:function(){return is.quotaFromStatuslinePayload}});var Ve=Xa();Object.defineProperty(v,"STATE_FILE_NAME",{enumerable:!0,get:function(){return Ve.STATE_FILE_NAME}});Object.defineProperty(v,"STATE_FILE_SCHEMA_VERSION",{enumerable:!0,get:function(){return Ve.STATE_FILE_SCHEMA_VERSION}});Object.defineProperty(v,"billingBlockToStateFile",{enumerable:!0,get:function(){return Ve.billingBlockToStateFile}});Object.defineProperty(v,"getStateFilePath",{enumerable:!0,get:function(){return Ve.getStateFilePath}});Object.defineProperty(v,"quotaToStateFile",{enumerable:!0,get:function(){return Ve.quotaToStateFile}});Object.defineProperty(v,"readStateFile",{enumerable:!0,get:function(){return Ve.readStateFile}});Object.defineProperty(v,"writeStateFile",{enumerable:!0,get:function(){return Ve.writeStateFile}})});var T=gs(os(),1);import*as ln from"fs";function Ff(e=process.env){if(e.SIDEKICK_STATUSLINE_STDIN==="0")return null;try{if(process.stdin.isTTY)return null;let t=ln.fstatSync(0);return t.isFIFO()||t.isFile()||t.isSocket()?(0,T.parseClaudeStatuslinePayload)(ln.readFileSync(0,"utf8")):null}catch{return null}}function jf(e,t){return e?e.fiveHour.utilization===t.fiveHour.utilization&&e.fiveHour.resetsAt===t.fiveHour.resetsAt&&e.sevenDay.utilization===t.sevenDay.utilization&&e.sevenDay.resetsAt===t.sevenDay.resetsAt:!1}async function Tf(e,t,n,r){if(!jf(n,t)){try{(0,T.writeQuotaSnapshot)("claude-code",e,t)}catch{}try{let i=r.workspace?.currentDir??r.cwd??process.cwd();await(0,T.appendQuotaHistorySample)({timestamp:t.capturedAt??new Date().toISOString(),runtimeProvider:"claude",providerId:e,workspaceId:(0,T.getWorkspaceIdFromPath)(i),fiveHour:t.fiveHour,sevenDay:t.sevenDay,available:!0,source:"statusline",stale:!1})}catch{}}}function Lf(e,t,n,r){let i=e.claude.present?{providerId:"claude-code",id:e.claude.accountId??null,label:e.claude.label??null}:e.codex.present?{providerId:"codex",id:e.codex.accountId??null,label:e.codex.label??null}:null,o=r?.contextWindow?{usedPercentage:r.contextWindow.usedPercentage??null,contextWindowSize:r.contextWindow.contextWindowSize??null,totalInputTokens:r.contextWindow.totalInputTokens??null,totalOutputTokens:r.contextWindow.totalOutputTokens??null}:null,a=r?{sessionId:r.sessionId??null,cwd:r.workspace?.currentDir??r.cwd??null,model:r.model?.id??null,costUsd:r.cost?.totalCostUsd??null,durationMs:r.cost?.totalDurationMs??null,linesAdded:r.cost?.totalLinesAdded??null,linesRemoved:r.cost?.totalLinesRemoved??null,promptCacheHitRatio:r.promptCache?.hitRatio??null}:null;return{writer:"statusline",account:i,quota:{claude:(0,T.quotaToStateFile)(t),codex:(0,T.quotaToStateFile)(n)},context:o,session:a,billingBlock:null}}async function as(){let e=Ff(),t=(0,T.getActiveAccountStatus)(void 0,{selfHeal:!1}),n=t.claude.accountId,r=n?(0,T.readQuotaSnapshot)("claude-code",n):null,i=r,o=t.codex.accountId?(0,T.readQuotaSnapshot)("codex",t.codex.accountId):null,a=null;if(e){let s=(0,T.quotaFromStatuslinePayload)(e,{fallback:r});s&&(i=s,n&&(a=Tf(n,s,r,e)))}process.stdout.write(`${(0,T.formatStatusline)({accounts:t,claudeQuota:i,codexQuota:o,live:e})}
|
|
23
|
+
`),(0,T.writeStateFile)(Lf(t,i,o,e)),a&&await a}var ss=["--project","--provider","--output-file"],Hf=["--json","--no-color","--offline"];function Nf(e){for(let t=0;t<e.length;t++){let n=e[t];if(!Hf.includes(n)){if(ss.includes(n)){t++;continue}if(!ss.some(r=>n.startsWith(`${r}=`)))return n}}}function cs(e){return Nf(e)==="statusline"}cs(process.argv.slice(2))?as():await import("./sidekick-main.mjs");
|