opencode-enhancer 1.0.8 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # opencode-enhancer
2
2
 
3
- OpenCode enhancer for Codex accounts, usage tracking, plugin updates, and future automation.
3
+ OpenCode enhancer for Codex accounts, usage tracking, plugin updates.
4
4
 
5
5
  ## What It Does
6
6
 
@@ -1,5 +1,5 @@
1
1
  interface OAuthCredential {
2
- type: 'oauth';
2
+ type: "oauth";
3
3
  access: string;
4
4
  refresh?: string;
5
5
  expires?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/providers/auth.ts"],"names":[],"mappings":"AAUA,UAAU,eAAe;IACvB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAwID,kGAAkG;AAClG,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK7D;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKpE;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAK3E;AAED,2FAA2F;AAC3F,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQzD;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOlD;AAED,6DAA6D;AAC7D,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAGD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,GAAG,SAAS,CA6ClE"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/providers/auth.ts"],"names":[],"mappings":"AAUA,UAAU,eAAe;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8ID,kGAAkG;AAClG,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK7D;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKpE;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAK3E;AAED,2FAA2F;AAC3F,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQzD;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOlD;AAED,6DAA6D;AAC7D,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAGD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAyBD,wBAAgB,mBAAmB,IAAI,gBAAgB,GAAG,SAAS,CAqClE"}
@@ -1,35 +1,35 @@
1
1
  // Read auth tokens from OpenCode's auth.json file
2
2
  // Located at ~/.local/share/opencode/auth.json (XDG_DATA_HOME/opencode/auth.json)
3
- import { readFileSync, existsSync } from 'node:fs';
4
- import { createRequire } from 'node:module';
5
- import { join } from 'node:path';
6
- import { homedir } from 'node:os';
3
+ import { readFileSync, existsSync } from "node:fs";
4
+ import { createRequire } from "node:module";
5
+ import { join } from "node:path";
6
+ import { homedir } from "node:os";
7
7
  const require = createRequire(import.meta.url);
8
8
  let cachedAuth = null;
9
9
  let cacheTimestamp = 0;
10
10
  const CACHE_TTL_MS = 10_000; // 10 seconds
11
11
  const AUTH_KEY_ALIASES = {
12
- opencode: ['opencode-go'],
13
- 'opencode-go': ['opencode'],
14
- google: ['google.oauth'],
15
- 'google.oauth': ['google'],
12
+ opencode: ["opencode-go"],
13
+ "opencode-go": ["opencode"],
14
+ google: ["google.oauth"],
15
+ "google.oauth": ["google"],
16
16
  };
17
17
  function getAuthFileCandidates() {
18
- const xdgData = process.env.XDG_DATA_HOME || join(homedir(), '.local', 'share');
19
- const xdgConfig = process.env.XDG_CONFIG_HOME || join(homedir(), '.config');
18
+ const xdgData = process.env.XDG_DATA_HOME || join(homedir(), ".local", "share");
19
+ const xdgConfig = process.env.XDG_CONFIG_HOME || join(homedir(), ".config");
20
20
  const candidates = [
21
- join(xdgData, 'opencode', 'auth.json'),
22
- join(xdgData, 'opencode', 'auth.js'),
23
- join(xdgConfig, 'opencode', 'auth.json'),
24
- join(xdgConfig, 'opencode', 'auth.js'),
21
+ join(xdgData, "opencode", "auth.json"),
22
+ join(xdgData, "opencode", "auth.js"),
23
+ join(xdgConfig, "opencode", "auth.json"),
24
+ join(xdgConfig, "opencode", "auth.js"),
25
25
  ];
26
26
  return [...new Set(candidates)];
27
27
  }
28
28
  function getAuthFilePath() {
29
- return getAuthFileCandidates().find((filePath) => existsSync(filePath)) || getAuthFileCandidates()[0];
29
+ return (getAuthFileCandidates().find((filePath) => existsSync(filePath)) || getAuthFileCandidates()[0]);
30
30
  }
31
31
  function parseAuthObject(value) {
32
- if (!value || typeof value !== 'object' || Array.isArray(value))
32
+ if (!value || typeof value !== "object" || Array.isArray(value))
33
33
  return undefined;
34
34
  return value;
35
35
  }
@@ -37,11 +37,13 @@ function parseAuthJsSource(raw) {
37
37
  const trimmed = raw.trim();
38
38
  const candidates = [
39
39
  trimmed,
40
- trimmed.replace(/^export\s+default\s+/, '').replace(/;\s*$/, ''),
41
- trimmed.replace(/^module\.exports\s*=\s*/, '').replace(/;\s*$/, ''),
40
+ trimmed.replace(/^export\s+default\s+/, "").replace(/;\s*$/, ""),
41
+ trimmed.replace(/^module\.exports\s*=\s*/, "").replace(/;\s*$/, ""),
42
42
  ];
43
43
  for (const candidate of candidates) {
44
- if (!candidate || candidate === trimmed && (trimmed.startsWith('export ') || trimmed.startsWith('module.exports'))) {
44
+ if (!candidate ||
45
+ (candidate === trimmed &&
46
+ (trimmed.startsWith("export ") || trimmed.startsWith("module.exports")))) {
45
47
  continue;
46
48
  }
47
49
  try {
@@ -58,7 +60,7 @@ function parseAuthJsSource(raw) {
58
60
  }
59
61
  function loadAuthFromPath(filePath) {
60
62
  try {
61
- const raw = readFileSync(filePath, 'utf-8');
63
+ const raw = readFileSync(filePath, "utf-8");
62
64
  const fromJson = parseAuthObject(JSON.parse(raw));
63
65
  if (fromJson)
64
66
  return fromJson;
@@ -66,7 +68,7 @@ function loadAuthFromPath(filePath) {
66
68
  catch {
67
69
  // Fall through to .js parsing / require below.
68
70
  }
69
- if (!filePath.endsWith('.js'))
71
+ if (!filePath.endsWith(".js"))
70
72
  return undefined;
71
73
  try {
72
74
  const resolved = require.resolve(filePath);
@@ -80,7 +82,7 @@ function loadAuthFromPath(filePath) {
80
82
  // Fall through to raw object-literal parsing.
81
83
  }
82
84
  try {
83
- const raw = readFileSync(filePath, 'utf-8');
85
+ const raw = readFileSync(filePath, "utf-8");
84
86
  return parseAuthJsSource(raw);
85
87
  }
86
88
  catch {
@@ -123,7 +125,7 @@ function loadAuthFile() {
123
125
  export function getOAuthToken(key) {
124
126
  const auth = loadAuthFile();
125
127
  const cred = getCredential(auth, key);
126
- if (!cred || cred.type !== 'oauth')
128
+ if (!cred || cred.type !== "oauth")
127
129
  return undefined;
128
130
  return cred.access || undefined;
129
131
  }
@@ -131,7 +133,7 @@ export function getOAuthToken(key) {
131
133
  export function getOAuthRefreshToken(key) {
132
134
  const auth = loadAuthFile();
133
135
  const cred = getCredential(auth, key);
134
- if (!cred || cred.type !== 'oauth')
136
+ if (!cred || cred.type !== "oauth")
135
137
  return undefined;
136
138
  return cred.refresh || undefined;
137
139
  }
@@ -139,7 +141,7 @@ export function getOAuthRefreshToken(key) {
139
141
  export function getOAuthCredential(key) {
140
142
  const auth = loadAuthFile();
141
143
  const cred = getCredential(auth, key);
142
- if (!cred || cred.type !== 'oauth')
144
+ if (!cred || cred.type !== "oauth")
143
145
  return undefined;
144
146
  return cred;
145
147
  }
@@ -149,10 +151,10 @@ export function getApiKey(key) {
149
151
  const cred = getCredential(auth, key);
150
152
  if (!cred)
151
153
  return undefined;
152
- if (cred.type === 'apikey' || cred.type === 'api')
154
+ if (cred.type === "apikey" || cred.type === "api")
153
155
  return cred.key || undefined;
154
156
  // Some providers may store key in access field with oauth type
155
- if (cred.type === 'oauth')
157
+ if (cred.type === "oauth")
156
158
  return cred.access || undefined;
157
159
  return undefined;
158
160
  }
@@ -162,9 +164,9 @@ export function hasCredential(key) {
162
164
  const cred = getCredential(auth, key);
163
165
  if (!cred)
164
166
  return false;
165
- if (cred.type === 'apikey' || cred.type === 'api')
167
+ if (cred.type === "apikey" || cred.type === "api")
166
168
  return !!cred.key;
167
- if (cred.type === 'oauth')
169
+ if (cred.type === "oauth")
168
170
  return !!cred.access;
169
171
  return false;
170
172
  }
@@ -177,27 +179,41 @@ export function invalidateAuthCache() {
177
179
  export function getAuthPath() {
178
180
  return getAuthFilePath();
179
181
  }
182
+ function buildGeminiOAuthCreds(refreshToken, clientId, clientSecret) {
183
+ const resolvedClientId = clientId ||
184
+ process.env.OPENCODE_ENHANCER_GOOGLE_CLIENT_ID ||
185
+ process.env.OPENCODE_MULTI_AUTH_GOOGLE_CLIENT_ID;
186
+ const resolvedClientSecret = clientSecret ||
187
+ process.env.OPENCODE_ENHANCER_GOOGLE_CLIENT_SECRET ||
188
+ process.env.OPENCODE_MULTI_AUTH_GOOGLE_CLIENT_SECRET;
189
+ if (!resolvedClientId || !resolvedClientSecret)
190
+ return undefined;
191
+ return {
192
+ client_id: resolvedClientId,
193
+ client_secret: resolvedClientSecret,
194
+ refresh_token: refreshToken,
195
+ };
196
+ }
180
197
  export function getGeminiOAuthCreds() {
181
198
  // Try multiple locations
182
199
  const paths = [
183
- join(homedir(), '.gemini', 'oauth_creds.json'),
184
- join(homedir(), '.config', 'opencode', 'antigravity-accounts.json'),
200
+ join(homedir(), ".gemini", "oauth_creds.json"),
201
+ join(homedir(), ".config", "opencode", "antigravity-accounts.json"),
185
202
  ];
186
203
  for (const p of paths) {
187
204
  if (!existsSync(p))
188
205
  continue;
189
206
  try {
190
- const raw = readFileSync(p, 'utf-8');
207
+ const raw = readFileSync(p, "utf-8");
191
208
  const parsed = JSON.parse(raw);
192
- // Direct oauth_creds.json format
193
- if (parsed.client_id && parsed.refresh_token) {
194
- return parsed;
209
+ if (parsed.refresh_token) {
210
+ return buildGeminiOAuthCreds(parsed.refresh_token, parsed.client_id, parsed.client_secret);
195
211
  }
196
212
  // Antigravity accounts format — take first account
197
213
  if (Array.isArray(parsed)) {
198
214
  const first = parsed[0];
199
- if (first?.client_id && first?.refresh_token) {
200
- return first;
215
+ if (first?.refresh_token) {
216
+ return buildGeminiOAuthCreds(first.refresh_token, first.client_id, first.client_secret);
201
217
  }
202
218
  }
203
219
  }
@@ -207,17 +223,9 @@ export function getGeminiOAuthCreds() {
207
223
  }
208
224
  // Also check opencode auth.json for google.oauth
209
225
  const auth = loadAuthFile();
210
- const googleOAuth = auth['google.oauth'] || auth['google'];
211
- if (googleOAuth && googleOAuth.type === 'oauth' && googleOAuth.refresh) {
212
- const clientId = process.env.OPENCODE_ENHANCER_GOOGLE_CLIENT_ID || process.env.OPENCODE_MULTI_AUTH_GOOGLE_CLIENT_ID || '';
213
- const clientSecret = process.env.OPENCODE_ENHANCER_GOOGLE_CLIENT_SECRET || process.env.OPENCODE_MULTI_AUTH_GOOGLE_CLIENT_SECRET || '';
214
- if (!clientId || !clientSecret)
215
- return undefined;
216
- return {
217
- client_id: clientId,
218
- client_secret: clientSecret,
219
- refresh_token: googleOAuth.refresh,
220
- };
226
+ const googleOAuth = auth["google.oauth"] || auth["google"];
227
+ if (googleOAuth && googleOAuth.type === "oauth" && googleOAuth.refresh) {
228
+ return buildGeminiOAuthCreds(googleOAuth.refresh);
221
229
  }
222
230
  return undefined;
223
231
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/providers/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/providers/auth.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { UsageProvider } from './types.js';
1
+ import type { UsageProvider } from "./types.js";
2
2
  export declare const chutesProvider: UsageProvider;
3
3
  //# sourceMappingURL=chutes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chutes.d.ts","sourceRoot":"","sources":["../../src/providers/chutes.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAkB,aAAa,EAAe,MAAM,YAAY,CAAA;AAiB5E,eAAO,MAAM,cAAc,EAAE,aAqG5B,CAAA"}
1
+ {"version":3,"file":"chutes.d.ts","sourceRoot":"","sources":["../../src/providers/chutes.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAkB,aAAa,EAAe,MAAM,YAAY,CAAC;AAiB7E,eAAO,MAAM,cAAc,EAAE,aAwG5B,CAAC"}
@@ -3,14 +3,14 @@
3
3
  // Quotas: GET https://api.chutes.ai/users/me/quotas
4
4
  // Usage: GET https://api.chutes.ai/users/me/quota_usage/{chute_id}
5
5
  // Auth: raw key in Authorization header (no Bearer prefix)
6
- import { getApiKey, hasCredential } from './auth.js';
7
- import { fetchWithTimeout } from './types.js';
8
- const AUTH_KEY = 'chutes';
9
- const BASE_URL = 'https://api.chutes.ai';
6
+ import { getApiKey, hasCredential } from "./auth.js";
7
+ import { fetchWithTimeout } from "./types.js";
8
+ const AUTH_KEY = "chutes";
9
+ const BASE_URL = "https://api.chutes.ai";
10
10
  export const chutesProvider = {
11
- id: 'chutes',
12
- name: 'Chutes AI',
13
- billingType: 'quotaBased',
11
+ id: "chutes",
12
+ name: "Chutes AI",
13
+ billingType: "quotaBased",
14
14
  async isConfigured() {
15
15
  return hasCredential(AUTH_KEY);
16
16
  },
@@ -21,7 +21,7 @@ export const chutesProvider = {
21
21
  providerId: this.id,
22
22
  providerName: this.name,
23
23
  billingType: this.billingType,
24
- status: 'not_configured',
24
+ status: "not_configured",
25
25
  fetchedAt: Date.now(),
26
26
  };
27
27
  }
@@ -30,12 +30,12 @@ export const chutesProvider = {
30
30
  // Fetch quotas
31
31
  const quotasRes = await fetchWithTimeout(`${BASE_URL}/users/me/quotas`, { headers });
32
32
  if (!quotasRes.ok) {
33
- const text = await quotasRes.text().catch(() => '');
33
+ const text = await quotasRes.text().catch(() => "");
34
34
  return {
35
35
  providerId: this.id,
36
36
  providerName: this.name,
37
37
  billingType: this.billingType,
38
- status: quotasRes.status === 401 || quotasRes.status === 403 ? 'auth_expired' : 'error',
38
+ status: quotasRes.status === 401 || quotasRes.status === 403 ? "auth_expired" : "error",
39
39
  error: `HTTP ${quotasRes.status}: ${text.slice(0, 200)}`,
40
40
  fetchedAt: Date.now(),
41
41
  };
@@ -47,8 +47,8 @@ export const chutesProvider = {
47
47
  providerId: this.id,
48
48
  providerName: this.name,
49
49
  billingType: this.billingType,
50
- status: 'ok',
51
- usage: { type: 'quotaBased', utilization: 0, windows: [] },
50
+ status: "ok",
51
+ usage: { type: "quotaBased", utilization: 0, windows: [] },
52
52
  fetchedAt: Date.now(),
53
53
  };
54
54
  }
@@ -59,21 +59,24 @@ export const chutesProvider = {
59
59
  if (usageRes.ok) {
60
60
  const usage = (await usageRes.json());
61
61
  utilization = usage.quota > 0 ? (usage.used / usage.quota) * 100 : 0;
62
+ const remaining = usage.quota > 0 ? Math.max(0, usage.quota - usage.used) : undefined;
62
63
  windows.push({
63
64
  utilization,
64
65
  resetsAt: defaultQuota.payment_refresh_date
65
66
  ? new Date(defaultQuota.payment_refresh_date).getTime()
66
67
  : undefined,
67
- label: 'monthly',
68
+ label: "monthly",
69
+ remaining,
70
+ entitlement: usage.quota,
68
71
  });
69
72
  }
70
73
  return {
71
74
  providerId: this.id,
72
75
  providerName: this.name,
73
76
  billingType: this.billingType,
74
- status: 'ok',
77
+ status: "ok",
75
78
  usage: {
76
- type: 'quotaBased',
79
+ type: "quotaBased",
77
80
  utilization,
78
81
  remaining: defaultQuota.quota
79
82
  ? Math.max(0, defaultQuota.quota - (utilization * defaultQuota.quota) / 100)
@@ -89,7 +92,7 @@ export const chutesProvider = {
89
92
  providerId: this.id,
90
93
  providerName: this.name,
91
94
  billingType: this.billingType,
92
- status: 'error',
95
+ status: "error",
93
96
  error: `${err}`,
94
97
  fetchedAt: Date.now(),
95
98
  };
@@ -1 +1 @@
1
- {"version":3,"file":"chutes.js","sourceRoot":"","sources":["../../src/providers/chutes.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,8CAA8C;AAC9C,oDAAoD;AACpD,mEAAmE;AACnE,2DAA2D;AAE3D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAG7C,MAAM,QAAQ,GAAG,QAAQ,CAAA;AACzB,MAAM,QAAQ,GAAG,uBAAuB,CAAA;AAcxC,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,YAAY;IAEzB,KAAK,CAAC,YAAY;QAChB,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,EAAE;gBACnB,YAAY,EAAE,IAAI,CAAC,IAAI;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,MAAM,EAAE,gBAAgB;gBACxB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAA;QACH,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,CAAA,CAAC,mBAAmB;QAE7D,IAAI,CAAC;YACH,eAAe;YACf,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,GAAG,QAAQ,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;YAEpF,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;gBAClB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;gBACnD,OAAO;oBACL,UAAU,EAAE,IAAI,CAAC,EAAE;oBACnB,YAAY,EAAE,IAAI,CAAC,IAAI;oBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,MAAM,EAAE,SAAS,CAAC,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO;oBACvF,KAAK,EAAE,QAAQ,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;oBACxD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB,CAAA;YACH,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAAkB,CAAA;YACxD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;YAElE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO;oBACL,UAAU,EAAE,IAAI,CAAC,EAAE;oBACnB,YAAY,EAAE,IAAI,CAAC,IAAI;oBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;oBAC1D,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB,CAAA;YACH,CAAC;YAED,oCAAoC;YACpC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,GAAG,QAAQ,yBAAyB,YAAY,CAAC,QAAQ,EAAE,EAC3D,EAAE,OAAO,EAAE,CACZ,CAAA;YAED,MAAM,OAAO,GAAkB,EAAE,CAAA;YACjC,IAAI,WAAW,GAAG,CAAC,CAAA;YAEnB,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAqB,CAAA;gBACzD,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;gBACpE,OAAO,CAAC,IAAI,CAAC;oBACX,WAAW;oBACX,QAAQ,EAAE,YAAY,CAAC,oBAAoB;wBACzC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE;wBACvD,CAAC,CAAC,SAAS;oBACb,KAAK,EAAE,SAAS;iBACjB,CAAC,CAAA;YACJ,CAAC;YAED,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,EAAE;gBACnB,YAAY,EAAE,IAAI,CAAC,IAAI;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE;oBACL,IAAI,EAAE,YAAY;oBAClB,WAAW;oBACX,SAAS,EAAE,YAAY,CAAC,KAAK;wBAC3B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;wBAC5E,CAAC,CAAC,SAAS;oBACb,WAAW,EAAE,YAAY,CAAC,KAAK;oBAC/B,OAAO;iBACR;gBACD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,EAAE;gBACnB,YAAY,EAAE,IAAI,CAAC,IAAI;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,GAAG,GAAG,EAAE;gBACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAA;QACH,CAAC;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"chutes.js","sourceRoot":"","sources":["../../src/providers/chutes.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { UsageProvider } from './types.js';
1
+ import type { UsageProvider } from "./types.js";
2
2
  export declare const codexProvider: UsageProvider;
3
3
  //# sourceMappingURL=codex.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/providers/codex.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAyC,aAAa,EAAe,MAAM,YAAY,CAAA;AAEnG,eAAO,MAAM,aAAa,EAAE,aAsK3B,CAAA"}
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/providers/codex.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAyC,aAAa,EAAe,MAAM,YAAY,CAAC;AAEpG,eAAO,MAAM,aAAa,EAAE,aA2L3B,CAAC"}
@@ -1,12 +1,12 @@
1
1
  // ChatGPT / Codex usage provider
2
2
  // Uses the existing multi-account store and wham/usage API
3
3
  // Endpoint: GET https://chatgpt.com/backend-api/wham/usage
4
- import { loadStore, listAccounts } from '../store.js';
5
- import { fetchUsageRateLimitsForAccount } from '../usage-limits.js';
4
+ import { loadStore, listAccounts } from "../store.js";
5
+ import { fetchUsageRateLimitsForAccount } from "../usage-limits.js";
6
6
  export const codexProvider = {
7
- id: 'codex',
8
- name: 'Codex',
9
- billingType: 'quotaBased',
7
+ id: "codex",
8
+ name: "Codex",
9
+ billingType: "quotaBased",
10
10
  async isConfigured() {
11
11
  const accounts = listAccounts();
12
12
  return accounts.length > 0;
@@ -19,7 +19,7 @@ export const codexProvider = {
19
19
  providerId: this.id,
20
20
  providerName: this.name,
21
21
  billingType: this.billingType,
22
- status: 'not_configured',
22
+ status: "not_configured",
23
23
  fetchedAt: Date.now(),
24
24
  };
25
25
  }
@@ -31,9 +31,9 @@ export const codexProvider = {
31
31
  label: acc.alias,
32
32
  email: acc.email,
33
33
  plan: acc.planType,
34
- status: 'error',
35
- error: 'Account disabled',
36
- usage: { type: 'quotaBased', utilization: 0, windows: [] },
34
+ status: "error",
35
+ error: "Account disabled",
36
+ usage: { type: "quotaBased", utilization: 0, windows: [] },
37
37
  };
38
38
  }
39
39
  // Skip auth-invalid accounts
@@ -42,9 +42,9 @@ export const codexProvider = {
42
42
  label: acc.alias,
43
43
  email: acc.email,
44
44
  plan: acc.planType,
45
- status: 'auth_expired',
46
- error: 'Auth invalid',
47
- usage: { type: 'quotaBased', utilization: 0, windows: [] },
45
+ status: "auth_expired",
46
+ error: "Auth invalid",
47
+ usage: { type: "quotaBased", utilization: 0, windows: [] },
48
48
  };
49
49
  }
50
50
  try {
@@ -54,9 +54,9 @@ export const codexProvider = {
54
54
  label: acc.alias,
55
55
  email: acc.email,
56
56
  plan: acc.planType,
57
- status: 'auth_expired',
57
+ status: "auth_expired",
58
58
  error: result.error,
59
- usage: { type: 'quotaBased', utilization: 0, windows: [] },
59
+ usage: { type: "quotaBased", utilization: 0, windows: [] },
60
60
  };
61
61
  }
62
62
  if (result.error && !result.rateLimits) {
@@ -64,9 +64,9 @@ export const codexProvider = {
64
64
  label: acc.alias,
65
65
  email: acc.email,
66
66
  plan: acc.planType,
67
- status: 'error',
67
+ status: "error",
68
68
  error: result.error,
69
- usage: { type: 'quotaBased', utilization: 0, windows: [] },
69
+ usage: { type: "quotaBased", utilization: 0, windows: [] },
70
70
  };
71
71
  }
72
72
  const windows = [];
@@ -74,36 +74,50 @@ export const codexProvider = {
74
74
  const wk = result.rateLimits?.weekly;
75
75
  if (fh?.remaining !== undefined) {
76
76
  const fhLimit = fh.limit ?? 100;
77
+ const hasAbsoluteFiveHourLimit = typeof fh.limit === "number" && fh.limit !== 100;
77
78
  windows.push({
78
- utilization: fhLimit === 100 ? Math.max(0, 100 - fh.remaining) : Math.max(0, Math.round(((fhLimit - fh.remaining) / fhLimit) * 100)),
79
+ utilization: fhLimit === 100
80
+ ? Math.max(0, 100 - fh.remaining)
81
+ : Math.max(0, Math.round(((fhLimit - fh.remaining) / fhLimit) * 100)),
79
82
  resetsAt: fh.resetAt,
80
- label: '5h',
83
+ label: "5h",
84
+ remaining: hasAbsoluteFiveHourLimit ? fh.remaining : undefined,
85
+ entitlement: hasAbsoluteFiveHourLimit ? fh.limit : undefined,
81
86
  });
82
87
  }
83
88
  if (wk?.remaining !== undefined) {
84
89
  const wkLimit = wk.limit ?? 100;
90
+ const hasAbsoluteWeeklyLimit = typeof wk.limit === "number" && wk.limit !== 100;
85
91
  windows.push({
86
- utilization: wkLimit === 100 ? Math.max(0, 100 - wk.remaining) : Math.max(0, Math.round(((wkLimit - wk.remaining) / wkLimit) * 100)),
92
+ utilization: wkLimit === 100
93
+ ? Math.max(0, 100 - wk.remaining)
94
+ : Math.max(0, Math.round(((wkLimit - wk.remaining) / wkLimit) * 100)),
87
95
  resetsAt: wk.resetAt,
88
- label: 'weekly',
96
+ label: "weekly",
97
+ remaining: hasAbsoluteWeeklyLimit ? wk.remaining : undefined,
98
+ entitlement: hasAbsoluteWeeklyLimit ? wk.limit : undefined,
89
99
  });
90
100
  }
91
101
  const fhLimit = fh?.limit ?? 100;
92
102
  const wkLimit = wk?.limit ?? 100;
93
103
  const fhUtil = fh?.remaining !== undefined
94
- ? (fhLimit === 100 ? 100 - fh.remaining : ((fhLimit - fh.remaining) / fhLimit) * 100)
104
+ ? fhLimit === 100
105
+ ? 100 - fh.remaining
106
+ : ((fhLimit - fh.remaining) / fhLimit) * 100
95
107
  : 0;
96
108
  const wkUtil = wk?.remaining !== undefined
97
- ? (wkLimit === 100 ? 100 - wk.remaining : ((wkLimit - wk.remaining) / wkLimit) * 100)
109
+ ? wkLimit === 100
110
+ ? 100 - wk.remaining
111
+ : ((wkLimit - wk.remaining) / wkLimit) * 100
98
112
  : 0;
99
113
  const primaryUtil = Math.max(0, fhUtil, wkUtil);
100
114
  return {
101
115
  label: acc.alias,
102
116
  email: acc.email,
103
117
  plan: acc.planType,
104
- status: 'ok',
118
+ status: "ok",
105
119
  usage: {
106
- type: 'quotaBased',
120
+ type: "quotaBased",
107
121
  utilization: primaryUtil,
108
122
  windows,
109
123
  },
@@ -114,37 +128,42 @@ export const codexProvider = {
114
128
  label: acc.alias,
115
129
  email: acc.email,
116
130
  plan: acc.planType,
117
- status: 'error',
131
+ status: "error",
118
132
  error: `${err}`,
119
- usage: { type: 'quotaBased', utilization: 0, windows: [] },
133
+ usage: { type: "quotaBased", utilization: 0, windows: [] },
120
134
  };
121
135
  }
122
136
  }));
123
- const accountResults = results.map((r) => r.status === 'fulfilled'
137
+ const accountResults = results.map((r) => r.status === "fulfilled"
124
138
  ? r.value
125
139
  : {
126
- label: '?',
127
- status: 'error',
140
+ label: "?",
141
+ status: "error",
128
142
  error: `${r.reason}`,
129
- usage: { type: 'quotaBased', utilization: 0, windows: [] },
143
+ usage: { type: "quotaBased", utilization: 0, windows: [] },
130
144
  });
131
145
  // Overall status: ok if any account succeeded
132
- const anyOk = accountResults.some((a) => a.status === 'ok');
133
- const okAccounts = accountResults.filter((a) => a.status === 'ok');
146
+ const anyOk = accountResults.some((a) => a.status === "ok");
147
+ const okAccounts = accountResults.filter((a) => a.status === "ok");
134
148
  // Aggregate usage: take the best (lowest utilization) account
135
149
  let aggregateUsage = undefined;
136
150
  if (okAccounts.length > 0) {
137
- const best = okAccounts.reduce((a, b) => a.usage.utilization < b.usage.utilization ? a : b);
151
+ const best = okAccounts.reduce((a, b) => (a.usage.utilization < b.usage.utilization ? a : b));
138
152
  aggregateUsage = best.usage;
139
153
  }
140
154
  return {
141
155
  providerId: this.id,
142
156
  providerName: this.name,
143
157
  billingType: this.billingType,
144
- status: anyOk ? 'ok' : 'error',
158
+ status: anyOk ? "ok" : "error",
145
159
  usage: aggregateUsage,
146
160
  accounts: accountResults,
147
- error: anyOk ? undefined : accountResults.map((a) => a.error).filter(Boolean).join('; '),
161
+ error: anyOk
162
+ ? undefined
163
+ : accountResults
164
+ .map((a) => a.error)
165
+ .filter(Boolean)
166
+ .join("; "),
148
167
  fetchedAt: Date.now(),
149
168
  };
150
169
  },