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