oc-codex-multi-auth 6.24.0 → 6.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +795 -793
  3. package/assets/icon.svg +7 -7
  4. package/assets/opencode-logo-ornate-dark.svg +18 -18
  5. package/assets/readme-hero.svg +31 -31
  6. package/config/README.md +197 -197
  7. package/config/minimal-opencode.json +14 -14
  8. package/config/opencode-legacy.json +1346 -1346
  9. package/config/opencode-modern.json +466 -466
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +26 -42
  12. package/dist/index.js.map +1 -1
  13. package/dist/lib/accounts/persistence.d.ts +6 -6
  14. package/dist/lib/accounts/persistence.d.ts.map +1 -1
  15. package/dist/lib/accounts/persistence.js +60 -6
  16. package/dist/lib/accounts/persistence.js.map +1 -1
  17. package/dist/lib/accounts/recovery.d.ts +5 -1
  18. package/dist/lib/accounts/recovery.d.ts.map +1 -1
  19. package/dist/lib/accounts/recovery.js +26 -1
  20. package/dist/lib/accounts/recovery.js.map +1 -1
  21. package/dist/lib/accounts/state.d.ts +18 -0
  22. package/dist/lib/accounts/state.d.ts.map +1 -1
  23. package/dist/lib/accounts/state.js +26 -2
  24. package/dist/lib/accounts/state.js.map +1 -1
  25. package/dist/lib/accounts.d.ts +2 -0
  26. package/dist/lib/accounts.d.ts.map +1 -1
  27. package/dist/lib/accounts.js +7 -1
  28. package/dist/lib/accounts.js.map +1 -1
  29. package/dist/lib/auth/login-runner.d.ts.map +1 -1
  30. package/dist/lib/auth/login-runner.js +8 -0
  31. package/dist/lib/auth/login-runner.js.map +1 -1
  32. package/dist/lib/auth/plan-tier.d.ts.map +1 -1
  33. package/dist/lib/auth/plan-tier.js +2 -1
  34. package/dist/lib/auth/plan-tier.js.map +1 -1
  35. package/dist/lib/codex-usage.d.ts +49 -0
  36. package/dist/lib/codex-usage.d.ts.map +1 -1
  37. package/dist/lib/codex-usage.js +135 -5
  38. package/dist/lib/codex-usage.js.map +1 -1
  39. package/dist/lib/config.d.ts +11 -0
  40. package/dist/lib/config.d.ts.map +1 -1
  41. package/dist/lib/config.js +12 -0
  42. package/dist/lib/config.js.map +1 -1
  43. package/dist/lib/context-overflow.js +10 -10
  44. package/dist/lib/desktop-notifications.js +6 -6
  45. package/dist/lib/oauth-success.js +202 -202
  46. package/dist/lib/opencode-v2-rpc.d.ts +4 -0
  47. package/dist/lib/opencode-v2-rpc.d.ts.map +1 -1
  48. package/dist/lib/opencode-v2-rpc.js +1 -0
  49. package/dist/lib/opencode-v2-rpc.js.map +1 -1
  50. package/dist/lib/opencode-v2-status.d.ts +1 -0
  51. package/dist/lib/opencode-v2-status.d.ts.map +1 -1
  52. package/dist/lib/opencode-v2-status.js +8 -1
  53. package/dist/lib/opencode-v2-status.js.map +1 -1
  54. package/dist/lib/opencode-v2-tui.d.ts.map +1 -1
  55. package/dist/lib/opencode-v2-tui.js +8 -1
  56. package/dist/lib/opencode-v2-tui.js.map +1 -1
  57. package/dist/lib/prompts/codex-opencode-bridge.js +67 -67
  58. package/dist/lib/prompts/codex.js +75 -75
  59. package/dist/lib/schemas.d.ts +11 -0
  60. package/dist/lib/schemas.d.ts.map +1 -1
  61. package/dist/lib/schemas.js +4 -0
  62. package/dist/lib/schemas.js.map +1 -1
  63. package/dist/lib/storage/load-save.d.ts.map +1 -1
  64. package/dist/lib/storage/load-save.js +22 -20
  65. package/dist/lib/storage/load-save.js.map +1 -1
  66. package/dist/lib/tui-quota-cache.d.ts +7 -0
  67. package/dist/lib/tui-quota-cache.d.ts.map +1 -1
  68. package/dist/lib/tui-quota-cache.js +2 -1
  69. package/dist/lib/tui-quota-cache.js.map +1 -1
  70. package/dist/lib/tui-quota-overview.d.ts.map +1 -1
  71. package/dist/lib/tui-quota-overview.js +11 -2
  72. package/dist/lib/tui-quota-overview.js.map +1 -1
  73. package/package.json +157 -157
  74. package/scripts/audit-dev-allowlist.js +114 -114
  75. package/scripts/clean-dist.js +27 -27
  76. package/scripts/copy-oauth-success.js +47 -47
  77. package/scripts/install-oc-codex-multi-auth-core.js +2661 -2092
  78. package/scripts/install-oc-codex-multi-auth.js +37 -37
  79. package/scripts/test-all-models.sh +260 -260
  80. package/scripts/validate-model-map.sh +97 -97
@@ -1,206 +1,206 @@
1
1
  export function renderOAuthSuccessHtml(styleNonce) {
2
- return `<!doctype html>
3
- <html lang="en">
4
- <head>
5
- <meta charset="utf-8">
6
- <meta name="viewport" content="width=device-width, initial-scale=1">
7
- <meta name="color-scheme" content="dark">
8
- <title>OpenCode - Authentication complete</title>
9
- <style nonce="${styleNonce}">
10
- :root {
11
- color-scheme: dark;
12
- font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
13
- font-synthesis: none;
14
- }
15
-
16
- * {
17
- box-sizing: border-box;
18
- }
19
-
20
- body {
21
- min-width: 320px;
22
- min-height: 100vh;
23
- margin: 0;
24
- display: grid;
25
- place-items: center;
26
- padding: 32px 20px;
27
- background:
28
- radial-gradient(circle at 50% 0%, rgba(42, 195, 126, 0.12), transparent 38rem),
29
- #080b0a;
30
- color: #f2f5f3;
31
- }
32
-
33
- main {
34
- width: min(100%, 540px);
35
- }
36
-
37
- .brand {
38
- display: flex;
39
- margin: 0 0 24px 0;
40
- justify-content: center;
41
- }
42
-
43
- .brand svg {
44
- height: 22px;
45
- width: auto;
46
- }
47
-
48
- .card {
49
- position: relative;
50
- overflow: hidden;
51
- padding: 44px;
52
- border: 1px solid #26312c;
53
- border-radius: 20px;
54
- background: linear-gradient(145deg, rgba(22, 28, 25, 0.98), rgba(13, 17, 15, 0.98));
55
- box-shadow: 0 24px 80px rgba(0, 0, 0, 0.45);
56
- }
57
-
58
- .card::before {
59
- content: "";
60
- position: absolute;
61
- inset: 0 0 auto;
62
- height: 1px;
63
- background: linear-gradient(90deg, transparent, rgba(86, 224, 157, 0.7), transparent);
64
- }
65
-
66
- .success-icon {
67
- width: 58px;
68
- height: 58px;
69
- display: grid;
70
- place-items: center;
71
- margin-bottom: 28px;
72
- border: 1px solid rgba(86, 224, 157, 0.45);
73
- border-radius: 16px;
74
- background: rgba(42, 195, 126, 0.1);
75
- color: #56e09d;
76
- box-shadow: inset 0 0 28px rgba(42, 195, 126, 0.08);
77
- }
78
-
79
- .success-icon svg {
80
- width: 28px;
81
- height: 28px;
82
- }
83
-
84
- h1 {
85
- margin: 0;
86
- font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
87
- font-size: clamp(28px, 6vw, 38px);
88
- font-weight: 650;
89
- letter-spacing: -0.035em;
90
- line-height: 1.12;
91
- }
92
-
93
- .lead {
94
- margin: 16px 0 0;
95
- color: #aeb8b3;
96
- font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
97
- font-size: 17px;
98
- line-height: 1.6;
99
- }
100
-
101
- .status {
102
- display: flex;
103
- align-items: center;
104
- gap: 12px;
105
- margin-top: 30px;
106
- padding: 15px 16px;
107
- border: 1px solid #29362f;
108
- border-radius: 12px;
109
- background: #0b100d;
110
- color: #c9d2cd;
111
- font-size: 13px;
112
- line-height: 1.5;
113
- }
114
-
115
- .status-dot {
116
- width: 8px;
117
- height: 8px;
118
- flex: 0 0 auto;
119
- border-radius: 50%;
120
- background: #56e09d;
121
- box-shadow: 0 0 0 4px rgba(86, 224, 157, 0.1);
122
- }
123
-
124
- .next-step {
125
- margin: 24px 0 0;
126
- color: #7f8c85;
127
- font-size: 13px;
128
- line-height: 1.6;
129
- }
130
-
131
- .next-step strong {
132
- color: #b9c3be;
133
- font-weight: 600;
134
- }
135
-
136
- @media (max-width: 520px) {
137
- body {
138
- padding: 24px 16px;
139
- }
140
-
141
- .card {
142
- padding: 32px 24px;
143
- border-radius: 16px;
144
- }
145
-
146
- .success-icon {
147
- width: 52px;
148
- height: 52px;
149
- margin-bottom: 24px;
150
- }
151
- }
152
-
153
- @media (prefers-reduced-motion: reduce) {
154
- *, *::before, *::after {
155
- scroll-behavior: auto !important;
156
- animation-duration: 0.01ms !important;
157
- animation-iteration-count: 1 !important;
158
- }
159
- }
160
- </style>
161
- </head>
162
- <body>
163
- <main>
164
- <div class="brand" aria-label="OpenCode">
165
- <svg width="234" height="42" viewBox="0 0 234 42" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
166
- <path d="M18 30H6V18H18V30Z" fill="#4B4646"/>
167
- <path d="M18 12H6V30H18V12ZM24 36H0V6H24V36Z" fill="#B7B1B1"/>
168
- <path d="M48 30H36V18H48V30Z" fill="#4B4646"/>
169
- <path d="M36 30H48V12H36V30ZM54 36H36V42H30V6H54V36Z" fill="#B7B1B1"/>
170
- <path d="M84 24V30H66V24H84Z" fill="#4B4646"/>
171
- <path d="M84 24H66V30H84V36H60V6H84V24ZM66 18H78V12H66V18Z" fill="#B7B1B1"/>
172
- <path d="M108 36H96V18H108V36Z" fill="#4B4646"/>
173
- <path d="M108 12H96V36H90V6H108V12ZM114 36H108V12H114V36Z" fill="#B7B1B1"/>
174
- <path d="M144 30H126V18H144V30Z" fill="#4B4646"/>
175
- <path d="M144 12H126V30H144V36H120V6H144V12Z" fill="#F1ECEC"/>
176
- <path d="M168 30H156V18H168V30Z" fill="#4B4646"/>
177
- <path d="M168 12H156V30H168V12ZM174 36H150V6H174V36Z" fill="#F1ECEC"/>
178
- <path d="M198 30H186V18H198V30Z" fill="#4B4646"/>
179
- <path d="M198 12H186V30H198V12ZM204 36H180V6H198V0H204V36Z" fill="#F1ECEC"/>
180
- <path d="M234 24V30H216V24H234Z" fill="#4B4646"/>
181
- <path d="M216 12V18H228V12H216ZM234 24H216V30H234V36H210V6H234V24Z" fill="#F1ECEC"/>
182
- </svg>
183
- </div>
184
-
185
- <section class="card" aria-labelledby="success-title">
186
- <div class="success-icon" aria-hidden="true">
187
- <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
188
- <path d="M5 12.5 9.25 17 19 7" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/>
189
- </svg>
190
- </div>
191
-
192
- <h1 id="success-title">Authentication complete</h1>
193
- <p class="lead">Your OpenAI account is connected securely and ready to use with OpenCode.</p>
194
-
195
- <div class="status" role="status">
196
- <span class="status-dot" aria-hidden="true"></span>
197
- <span>Credentials encrypted and stored</span>
198
- </div>
199
-
200
- <p class="next-step"><strong>You can close this tab.</strong> Return to your terminal to continue.</p>
201
- </section>
202
- </main>
203
- </body>
2
+ return `<!doctype html>
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <meta name="color-scheme" content="dark">
8
+ <title>OpenCode - Authentication complete</title>
9
+ <style nonce="${styleNonce}">
10
+ :root {
11
+ color-scheme: dark;
12
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
13
+ font-synthesis: none;
14
+ }
15
+
16
+ * {
17
+ box-sizing: border-box;
18
+ }
19
+
20
+ body {
21
+ min-width: 320px;
22
+ min-height: 100vh;
23
+ margin: 0;
24
+ display: grid;
25
+ place-items: center;
26
+ padding: 32px 20px;
27
+ background:
28
+ radial-gradient(circle at 50% 0%, rgba(42, 195, 126, 0.12), transparent 38rem),
29
+ #080b0a;
30
+ color: #f2f5f3;
31
+ }
32
+
33
+ main {
34
+ width: min(100%, 540px);
35
+ }
36
+
37
+ .brand {
38
+ display: flex;
39
+ margin: 0 0 24px 0;
40
+ justify-content: center;
41
+ }
42
+
43
+ .brand svg {
44
+ height: 22px;
45
+ width: auto;
46
+ }
47
+
48
+ .card {
49
+ position: relative;
50
+ overflow: hidden;
51
+ padding: 44px;
52
+ border: 1px solid #26312c;
53
+ border-radius: 20px;
54
+ background: linear-gradient(145deg, rgba(22, 28, 25, 0.98), rgba(13, 17, 15, 0.98));
55
+ box-shadow: 0 24px 80px rgba(0, 0, 0, 0.45);
56
+ }
57
+
58
+ .card::before {
59
+ content: "";
60
+ position: absolute;
61
+ inset: 0 0 auto;
62
+ height: 1px;
63
+ background: linear-gradient(90deg, transparent, rgba(86, 224, 157, 0.7), transparent);
64
+ }
65
+
66
+ .success-icon {
67
+ width: 58px;
68
+ height: 58px;
69
+ display: grid;
70
+ place-items: center;
71
+ margin-bottom: 28px;
72
+ border: 1px solid rgba(86, 224, 157, 0.45);
73
+ border-radius: 16px;
74
+ background: rgba(42, 195, 126, 0.1);
75
+ color: #56e09d;
76
+ box-shadow: inset 0 0 28px rgba(42, 195, 126, 0.08);
77
+ }
78
+
79
+ .success-icon svg {
80
+ width: 28px;
81
+ height: 28px;
82
+ }
83
+
84
+ h1 {
85
+ margin: 0;
86
+ font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
87
+ font-size: clamp(28px, 6vw, 38px);
88
+ font-weight: 650;
89
+ letter-spacing: -0.035em;
90
+ line-height: 1.12;
91
+ }
92
+
93
+ .lead {
94
+ margin: 16px 0 0;
95
+ color: #aeb8b3;
96
+ font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
97
+ font-size: 17px;
98
+ line-height: 1.6;
99
+ }
100
+
101
+ .status {
102
+ display: flex;
103
+ align-items: center;
104
+ gap: 12px;
105
+ margin-top: 30px;
106
+ padding: 15px 16px;
107
+ border: 1px solid #29362f;
108
+ border-radius: 12px;
109
+ background: #0b100d;
110
+ color: #c9d2cd;
111
+ font-size: 13px;
112
+ line-height: 1.5;
113
+ }
114
+
115
+ .status-dot {
116
+ width: 8px;
117
+ height: 8px;
118
+ flex: 0 0 auto;
119
+ border-radius: 50%;
120
+ background: #56e09d;
121
+ box-shadow: 0 0 0 4px rgba(86, 224, 157, 0.1);
122
+ }
123
+
124
+ .next-step {
125
+ margin: 24px 0 0;
126
+ color: #7f8c85;
127
+ font-size: 13px;
128
+ line-height: 1.6;
129
+ }
130
+
131
+ .next-step strong {
132
+ color: #b9c3be;
133
+ font-weight: 600;
134
+ }
135
+
136
+ @media (max-width: 520px) {
137
+ body {
138
+ padding: 24px 16px;
139
+ }
140
+
141
+ .card {
142
+ padding: 32px 24px;
143
+ border-radius: 16px;
144
+ }
145
+
146
+ .success-icon {
147
+ width: 52px;
148
+ height: 52px;
149
+ margin-bottom: 24px;
150
+ }
151
+ }
152
+
153
+ @media (prefers-reduced-motion: reduce) {
154
+ *, *::before, *::after {
155
+ scroll-behavior: auto !important;
156
+ animation-duration: 0.01ms !important;
157
+ animation-iteration-count: 1 !important;
158
+ }
159
+ }
160
+ </style>
161
+ </head>
162
+ <body>
163
+ <main>
164
+ <div class="brand" aria-label="OpenCode">
165
+ <svg width="234" height="42" viewBox="0 0 234 42" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
166
+ <path d="M18 30H6V18H18V30Z" fill="#4B4646"/>
167
+ <path d="M18 12H6V30H18V12ZM24 36H0V6H24V36Z" fill="#B7B1B1"/>
168
+ <path d="M48 30H36V18H48V30Z" fill="#4B4646"/>
169
+ <path d="M36 30H48V12H36V30ZM54 36H36V42H30V6H54V36Z" fill="#B7B1B1"/>
170
+ <path d="M84 24V30H66V24H84Z" fill="#4B4646"/>
171
+ <path d="M84 24H66V30H84V36H60V6H84V24ZM66 18H78V12H66V18Z" fill="#B7B1B1"/>
172
+ <path d="M108 36H96V18H108V36Z" fill="#4B4646"/>
173
+ <path d="M108 12H96V36H90V6H108V12ZM114 36H108V12H114V36Z" fill="#B7B1B1"/>
174
+ <path d="M144 30H126V18H144V30Z" fill="#4B4646"/>
175
+ <path d="M144 12H126V30H144V36H120V6H144V12Z" fill="#F1ECEC"/>
176
+ <path d="M168 30H156V18H168V30Z" fill="#4B4646"/>
177
+ <path d="M168 12H156V30H168V12ZM174 36H150V6H174V36Z" fill="#F1ECEC"/>
178
+ <path d="M198 30H186V18H198V30Z" fill="#4B4646"/>
179
+ <path d="M198 12H186V30H198V12ZM204 36H180V6H198V0H204V36Z" fill="#F1ECEC"/>
180
+ <path d="M234 24V30H216V24H234Z" fill="#4B4646"/>
181
+ <path d="M216 12V18H228V12H216ZM234 24H216V30H234V36H210V6H234V24Z" fill="#F1ECEC"/>
182
+ </svg>
183
+ </div>
184
+
185
+ <section class="card" aria-labelledby="success-title">
186
+ <div class="success-icon" aria-hidden="true">
187
+ <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
188
+ <path d="M5 12.5 9.25 17 19 7" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/>
189
+ </svg>
190
+ </div>
191
+
192
+ <h1 id="success-title">Authentication complete</h1>
193
+ <p class="lead">Your OpenAI account is connected securely and ready to use with OpenCode.</p>
194
+
195
+ <div class="status" role="status">
196
+ <span class="status-dot" aria-hidden="true"></span>
197
+ <span>Credentials encrypted and stored</span>
198
+ </div>
199
+
200
+ <p class="next-step"><strong>You can close this tab.</strong> Return to your terminal to continue.</p>
201
+ </section>
202
+ </main>
203
+ </body>
204
204
  </html>`;
205
205
  }
206
206
  // Retained for the standalone HTML artifact generated by the package build.
@@ -13,6 +13,10 @@ export declare const CodexStatusRpc: {
13
13
  always: "always";
14
14
  "codex-models": "codex-models";
15
15
  }>;
16
+ accountStorage: z.ZodEnum<{
17
+ global: "global";
18
+ project: "project";
19
+ }>;
16
20
  accounts: z.ZodArray<z.ZodObject<{
17
21
  index: z.ZodNumber;
18
22
  label: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-v2-rpc.d.ts","sourceRoot":"","sources":["../../lib/opencode-v2-rpc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;CAYzB,CAAC"}
1
+ {"version":3,"file":"opencode-v2-rpc.d.ts","sourceRoot":"","sources":["../../lib/opencode-v2-rpc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAazB,CAAC"}
@@ -7,6 +7,7 @@ export const CodexStatusRpc = Rpc.define({
7
7
  input: z.object({ width: z.number().int().min(1).max(1000) }),
8
8
  output: z.object({
9
9
  text: z.string(), details: z.string(), showFor: z.enum(["always", "codex-models"]),
10
+ accountStorage: z.enum(["project", "global"]),
10
11
  accounts: z.array(z.object({ index: z.number().int(), label: z.string(), active: z.boolean(), enabled: z.boolean() })),
11
12
  }),
12
13
  },
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-v2-rpc.js","sourceRoot":"","sources":["../../lib/opencode-v2-rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,qBAAqB;IACzB,OAAO,EAAE;QACR,MAAM,EAAE;YACP,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBAClF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aACtH,CAAC;SACF;KACD;IACD,MAAM,EAAE,EAAE;CACV,CAAC,CAAC"}
1
+ {"version":3,"file":"opencode-v2-rpc.js","sourceRoot":"","sources":["../../lib/opencode-v2-rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,qBAAqB;IACzB,OAAO,EAAE;QACR,MAAM,EAAE;YACP,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBAClF,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC7C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aACtH,CAAC;SACF;KACD;IACD,MAAM,EAAE,EAAE;CACV,CAAC,CAAC"}
@@ -5,6 +5,7 @@ export declare function readV2Status({ width }: {
5
5
  width: number;
6
6
  }): Promise<{
7
7
  text: string;
8
+ accountStorage: "global" | "project";
8
9
  accounts: {
9
10
  index: number;
10
11
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-v2-status.d.ts","sourceRoot":"","sources":["../../lib/opencode-v2-status.ts"],"names":[],"mappings":"AAcA,yDAAyD;AACzD,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAwBD,4EAA4E;AAC5E,wBAAsB,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;GAkD9D"}
1
+ {"version":3,"file":"opencode-v2-status.d.ts","sourceRoot":"","sources":["../../lib/opencode-v2-status.ts"],"names":[],"mappings":"AAeA,yDAAyD;AACzD,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAwBD,4EAA4E;AAC5E,wBAAsB,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;GAwD9D"}
@@ -4,6 +4,7 @@ import { readTuiQuotaSnapshot, readTuiQuotaOverviewSnapshot, isFreshTuiQuotaSnap
4
4
  import { formatPromptStatusText, formatQuotaDetailsText, formatQuotaOverviewStatusLines, formatQuotaResetsStatusLines } from "./tui-status.js";
5
5
  import { dirname, join } from "node:path";
6
6
  import { getStoragePath, loadAccounts } from "./storage.js";
7
+ import { getCurrentProjectRoot } from "./storage/state.js";
7
8
  import { createUsageAccountFingerprint } from "./codex-usage.js";
8
9
  import { resolveDisplayEmail } from "./account-display.js";
9
10
  /** Same cadence as the V1 prompt status poll. */
@@ -43,6 +44,11 @@ export async function readV2Status({ width }) {
43
44
  const maskEmail = getCodexTuiMaskEmail(config);
44
45
  const snapshot = await readTuiQuotaSnapshot();
45
46
  const pool = await loadAccounts();
47
+ // The headers cache is global: project pools seeded from the same accounts
48
+ // share fingerprints, so it cannot attribute a request to this project.
49
+ const servingIndex = !getCurrentProjectRoot() && snapshot?.source === "headers" && isFreshTuiQuotaSnapshot(snapshot)
50
+ ? pool?.accounts.findIndex((account) => createUsageAccountFingerprint(account) === snapshot.fingerprint)
51
+ : undefined;
46
52
  const owned = snapshot && pool?.accounts.some((account) => createUsageAccountFingerprint(account) === snapshot.fingerprint);
47
53
  let quota = snapshot && owned
48
54
  ? { ...snapshot, type: "ready", stale: !isFreshTuiQuotaSnapshot(snapshot) }
@@ -78,10 +84,11 @@ export async function readV2Status({ width }) {
78
84
  : "";
79
85
  return {
80
86
  text,
87
+ accountStorage: getCurrentProjectRoot() ? "project" : "global",
81
88
  accounts: (pool?.accounts ?? []).map((account, index) => ({
82
89
  index: index + 1,
83
90
  label: account.accountLabel?.trim() || resolveDisplayEmail(account.email, maskEmail) || `Account ${index + 1}`,
84
- active: index === pool?.activeIndex,
91
+ active: index === (servingIndex !== undefined && servingIndex >= 0 ? servingIndex : pool?.activeIndex),
85
92
  enabled: account.enabled !== false,
86
93
  })),
87
94
  details: formatQuotaDetailsText(quota, Date.now(), { quotaDisplay, maskEmail: getCodexTuiMaskEmailInQuotaDetails(config) }),
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-v2-status.js","sourceRoot":"","sources":["../../lib/opencode-v2-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,kCAAkC,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1I,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAClJ,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,4BAA4B,EAA2B,MAAM,iBAAiB,CAAC;AACxK,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,iDAAiD;AACjD,MAAM,4BAA4B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkD,CAAC;AAEtF,yDAAyD;AACzD,MAAM,UAAU,qBAAqB;IACpC,mBAAmB,CAAC,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,4BAA4B,EAAE,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,4BAA4B,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAC;QAClC,OAAO,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACvF,CAAC;IACD,MAAM,KAAK,GAA2C,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACvF,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1C,KAAK,CAAC,QAAQ,GAAG,MAAM,qBAAqB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC,QAAQ,CAAC;AACvB,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAE,KAAK,EAAqB;IAC9D,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,QAAQ,IAAI,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,6BAA6B,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5H,IAAI,KAAK,GAAuB,QAAQ,IAAI,KAAK;QAChD,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE;QAC3E,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC;QAC7F,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAC;QACxF,CAAC,CAAC,IAAI,CAAC;IACR,MAAM,MAAM,GAAG,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,MAAM,IAAI,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,KAAK,6BAA6B,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5H,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;QACvB,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,uBAAuB,CAAC,QAAQ,CAAC;YACvF,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YACrG,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY;YAClG,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;IACD,MAAM,UAAU,GAAG,sBAAsB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;IACrF,MAAM,YAAY,GAAG,CAAC,MAAuC,EAAU,EAAE;QACxE,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,QAAQ;YAAE,OAAO,UAAU,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,8BAA8B,CAAC;QACnG,OAAO,MAAM,CAAC;YACb,QAAQ,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI;YAC/F,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;YACjD,OAAO,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE;SACjF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC;IACF,uEAAuE;IACvE,uEAAuE;IACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE;QAC5E,CAAC,CAAC,EAAE,CAAC;IACN,OAAO;QACN,IAAI;QACJ,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACzD,KAAK,EAAE,KAAK,GAAG,CAAC;YAChB,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,WAAW,KAAK,GAAG,CAAC,EAAE;YAC9G,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,WAAW;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,KAAK;SAClC,CAAC,CAAC;QACH,OAAO,EAAE,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,kCAAkC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3H,OAAO,EAAE,MAAM,CAAC,OAAO;KACvB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"opencode-v2-status.js","sourceRoot":"","sources":["../../lib/opencode-v2-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,kCAAkC,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1I,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAClJ,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,4BAA4B,EAA2B,MAAM,iBAAiB,CAAC;AACxK,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,iDAAiD;AACjD,MAAM,4BAA4B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkD,CAAC;AAEtF,yDAAyD;AACzD,MAAM,UAAU,qBAAqB;IACpC,mBAAmB,CAAC,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,4BAA4B,EAAE,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,4BAA4B,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAC;QAClC,OAAO,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACvF,CAAC;IACD,MAAM,KAAK,GAA2C,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACvF,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1C,KAAK,CAAC,QAAQ,GAAG,MAAM,qBAAqB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC,QAAQ,CAAC;AACvB,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAE,KAAK,EAAqB;IAC9D,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;IAClC,2EAA2E;IAC3E,wEAAwE;IACxE,MAAM,YAAY,GAAG,CAAC,qBAAqB,EAAE,IAAI,QAAQ,EAAE,MAAM,KAAK,SAAS,IAAI,uBAAuB,CAAC,QAAQ,CAAC;QACnH,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,6BAA6B,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,WAAW,CAAC;QACxG,CAAC,CAAC,SAAS,CAAC;IACb,MAAM,KAAK,GAAG,QAAQ,IAAI,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,6BAA6B,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5H,IAAI,KAAK,GAAuB,QAAQ,IAAI,KAAK;QAChD,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE;QAC3E,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC;QAC7F,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAC;QACxF,CAAC,CAAC,IAAI,CAAC;IACR,MAAM,MAAM,GAAG,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,MAAM,IAAI,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,KAAK,6BAA6B,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5H,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;QACvB,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,uBAAuB,CAAC,QAAQ,CAAC;YACvF,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YACrG,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY;YAClG,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;IACD,MAAM,UAAU,GAAG,sBAAsB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;IACrF,MAAM,YAAY,GAAG,CAAC,MAAuC,EAAU,EAAE;QACxE,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,QAAQ;YAAE,OAAO,UAAU,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,8BAA8B,CAAC;QACnG,OAAO,MAAM,CAAC;YACb,QAAQ,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI;YAC/F,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;YACjD,OAAO,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE;SACjF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC;IACF,uEAAuE;IACvE,uEAAuE;IACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE;QAC5E,CAAC,CAAC,EAAE,CAAC;IACN,OAAO;QACN,IAAI;QACJ,cAAc,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,SAAkB,CAAC,CAAC,CAAC,QAAiB;QAChF,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACzD,KAAK,EAAE,KAAK,GAAG,CAAC;YAChB,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,WAAW,KAAK,GAAG,CAAC,EAAE;YAC9G,MAAM,EAAE,KAAK,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC;YACtG,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,KAAK;SAClC,CAAC,CAAC;QACH,OAAO,EAAE,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,kCAAkC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3H,OAAO,EAAE,MAAM,CAAC,OAAO;KACvB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-v2-tui.d.ts","sourceRoot":"","sources":["../../lib/opencode-v2-tui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAKnD,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,cA+FjD"}
1
+ {"version":3,"file":"opencode-v2-tui.d.ts","sourceRoot":"","sources":["../../lib/opencode-v2-tui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAKnD,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,cAsGjD"}
@@ -5,6 +5,7 @@ import { CodexStatusRpc } from "./opencode-v2-rpc.js";
5
5
  export function setupV2Tui(context) {
6
6
  const [text, setText] = createSignal("");
7
7
  const [accounts, setAccounts] = createSignal("Loading accounts…");
8
+ const [accountStorage, setAccountStorage] = createSignal("unknown");
8
9
  const [showFor, setShowFor] = createSignal("always");
9
10
  const disposers = [context.ui.slot({
10
11
  append: "app",
@@ -26,12 +27,14 @@ export function setupV2Tui(context) {
26
27
  return;
27
28
  setText(result.text);
28
29
  setShowFor(result.showFor);
30
+ setAccountStorage(result.accountStorage);
29
31
  setAccounts(result.accounts.length ? result.accounts.map((account) => `${account.active ? "●" : "○"} ${account.index}. ${account.label}${account.enabled ? "" : " (disabled)"}`).join("\n") : "No Codex accounts in this pool.");
30
32
  details = result.details;
31
33
  }
32
34
  catch {
33
35
  if (!disposed) {
34
36
  setText("limits ?");
37
+ setAccountStorage("unknown");
35
38
  setAccounts("Accounts unavailable — retry shortly.");
36
39
  details = "Quota unavailable — retry shortly.";
37
40
  }
@@ -57,7 +60,11 @@ export function setupV2Tui(context) {
57
60
  await refresh();
58
61
  await context.ui.dialog.alert({
59
62
  title: "Codex accounts",
60
- message: `${accounts()}\n\nAdd an account: run opencode auth login from this project directory, then select OpenAI → Codex OAuth (Add account — ChatGPT Plus/Pro). Repeat for each account, using a private browser window to choose a different login.`,
63
+ message: `${accounts()}\n\n${accountStorage() === "project"
64
+ ? "Account storage: this project uses its own pool. If it has no account file yet, an existing global pool is used to seed it; later changes stay in this project."
65
+ : accountStorage() === "global"
66
+ ? "Account storage: the global pool is shared across projects."
67
+ : "Account storage: unavailable — retry shortly to check which pool is in use."}\nTo change this, set "perProjectAccounts" to true (per-project) or false (global) in ~/.opencode/openai-codex-auth-config.json, then restart the OpenCode service and TUI. CODEX_AUTH_PER_PROJECT_ACCOUNTS overrides this setting: 1 enables per-project storage; 0 disables it.\n\nAdd an account: run opencode auth login${accountStorage() === "project" ? " from this project directory" : ""}, then select OpenAI → Codex OAuth (Add account — ChatGPT Plus/Pro). Repeat for each account, using a private browser window to choose a different login.`,
61
68
  });
62
69
  },
63
70
  }],
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-v2-tui.js","sourceRoot":"","sources":["../../lib/opencode-v2-tui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode-v2-tui.js","sourceRoot":"","sources":["../../lib/opencode-v2-tui.ts"],"names":[],"mappings":"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"}