opencode-enhancer 1.0.6 → 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.
Files changed (39) hide show
  1. package/README.md +2 -2
  2. package/dist/cli.js +85 -5
  3. package/dist/cli.js.map +1 -1
  4. package/dist/providers/auth.d.ts +1 -1
  5. package/dist/providers/auth.d.ts.map +1 -1
  6. package/dist/providers/auth.js +142 -48
  7. package/dist/providers/auth.js.map +1 -1
  8. package/dist/providers/chutes.d.ts +1 -1
  9. package/dist/providers/chutes.d.ts.map +1 -1
  10. package/dist/providers/chutes.js +19 -16
  11. package/dist/providers/chutes.js.map +1 -1
  12. package/dist/providers/codex.d.ts +1 -1
  13. package/dist/providers/codex.d.ts.map +1 -1
  14. package/dist/providers/codex.js +60 -35
  15. package/dist/providers/codex.js.map +1 -1
  16. package/dist/providers/copilot.d.ts +1 -1
  17. package/dist/providers/copilot.d.ts.map +1 -1
  18. package/dist/providers/copilot.js +96 -60
  19. package/dist/providers/copilot.js.map +1 -1
  20. package/dist/providers/gemini.d.ts.map +1 -1
  21. package/dist/providers/gemini.js +23 -0
  22. package/dist/providers/gemini.js.map +1 -1
  23. package/dist/providers/opencode.d.ts.map +1 -1
  24. package/dist/providers/opencode.js +23 -10
  25. package/dist/providers/opencode.js.map +1 -1
  26. package/dist/providers/types.d.ts +10 -4
  27. package/dist/providers/types.d.ts.map +1 -1
  28. package/dist/providers/types.js.map +1 -1
  29. package/dist/providers/zai.d.ts +1 -1
  30. package/dist/providers/zai.d.ts.map +1 -1
  31. package/dist/providers/zai.js +41 -14
  32. package/dist/providers/zai.js.map +1 -1
  33. package/dist/rotation.d.ts.map +1 -1
  34. package/dist/rotation.js +13 -3
  35. package/dist/rotation.js.map +1 -1
  36. package/dist/usage-command.d.ts.map +1 -1
  37. package/dist/usage-command.js +589 -85
  38. package/dist/usage-command.js.map +1 -1
  39. package/package.json +1 -1
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
 
@@ -57,7 +57,7 @@ Other registry plugins are still updated with `@latest`.
57
57
 
58
58
  ```bash
59
59
  opencode-enhancer add <alias>
60
- opencode-enhancer remove <alias>
60
+ opencode-enhancer remove
61
61
  opencode-enhancer list
62
62
  opencode-enhancer status
63
63
  opencode-enhancer usage
package/dist/cli.js CHANGED
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env node
2
+ import { createInterface } from 'node:readline/promises';
3
+ import { stdin as input, stdout as output } from 'node:process';
2
4
  import { loginAccount } from './auth.js';
3
5
  import { removeAccount, listAccounts, getStorePath, loadStore } from './store.js';
4
6
  import { runPluginsUpdateCommand } from './plugin-updates.js';
@@ -15,6 +17,74 @@ function getFlagValue(flag) {
15
17
  function hasFlag(flag) {
16
18
  return args.includes(flag);
17
19
  }
20
+ function formatAccountUsageHint(account) {
21
+ const parts = [];
22
+ const fiveHour = account.rateLimits?.fiveHour;
23
+ if (typeof fiveHour?.remaining === 'number') {
24
+ if (typeof fiveHour.limit === 'number' && fiveHour.limit !== 100) {
25
+ parts.push(`5h ${fiveHour.remaining}/${fiveHour.limit} left`);
26
+ }
27
+ else {
28
+ parts.push(`5h ${fiveHour.remaining}% left`);
29
+ }
30
+ }
31
+ const weekly = account.rateLimits?.weekly;
32
+ if (typeof weekly?.remaining === 'number') {
33
+ if (typeof weekly.limit === 'number' && weekly.limit !== 100) {
34
+ parts.push(`weekly ${weekly.remaining}/${weekly.limit} left`);
35
+ }
36
+ else {
37
+ parts.push(`weekly ${weekly.remaining}% left`);
38
+ }
39
+ }
40
+ return parts.join(' · ');
41
+ }
42
+ function formatAccountOption(account, activeAlias) {
43
+ const primary = account.email?.trim() || account.alias;
44
+ const secondary = primary === account.alias ? '' : ` (${account.alias})`;
45
+ const active = account.alias === activeAlias ? ' [active]' : '';
46
+ const usage = formatAccountUsageHint(account);
47
+ return usage ? `${primary}${secondary}${active} - ${usage}` : `${primary}${secondary}${active}`;
48
+ }
49
+ async function selectAccountAliasForRemoval() {
50
+ const accounts = listAccounts();
51
+ if (accounts.length === 0) {
52
+ console.log('No accounts configured.');
53
+ return null;
54
+ }
55
+ if (!input.isTTY || !output.isTTY) {
56
+ throw new Error('Interactive account selection requires a TTY.');
57
+ }
58
+ const store = loadStore();
59
+ console.log('\nSelect account to remove:\n');
60
+ for (const [index, account] of accounts.entries()) {
61
+ console.log(` ${index + 1}. ${formatAccountOption(account, store.activeAlias)}`);
62
+ }
63
+ console.log(' 0. Cancel\n');
64
+ const rl = createInterface({ input, output });
65
+ try {
66
+ while (true) {
67
+ const answer = (await rl.question('Choose account: ')).trim();
68
+ const choice = Number.parseInt(answer, 10);
69
+ if (Number.isNaN(choice)) {
70
+ console.log('Enter a number from the list.');
71
+ continue;
72
+ }
73
+ if (choice === 0) {
74
+ console.log('Removal cancelled.');
75
+ return null;
76
+ }
77
+ const selected = accounts[choice - 1];
78
+ if (selected) {
79
+ return selected.alias;
80
+ }
81
+ console.log(`Choose a number between 0 and ${accounts.length}.`);
82
+ }
83
+ }
84
+ finally {
85
+ rl.close();
86
+ }
87
+ }
18
88
  async function main() {
19
89
  switch (command) {
20
90
  case 'add':
@@ -37,12 +107,22 @@ async function main() {
37
107
  }
38
108
  case 'remove':
39
109
  case 'rm': {
40
- if (!alias) {
41
- console.error('Usage: opencode-enhancer remove <alias>');
110
+ if (alias) {
111
+ console.error('Usage: opencode-enhancer remove');
112
+ process.exit(1);
113
+ }
114
+ try {
115
+ const selectedAlias = await selectAccountAliasForRemoval();
116
+ if (!selectedAlias) {
117
+ break;
118
+ }
119
+ removeAccount(selectedAlias);
120
+ console.log(`Account "${selectedAlias}" removed.`);
121
+ }
122
+ catch (err) {
123
+ console.error(`Failed to remove account: ${err}`);
42
124
  process.exit(1);
43
125
  }
44
- removeAccount(alias);
45
- console.log(`Account "${alias}" removed.`);
46
126
  break;
47
127
  }
48
128
  case 'list':
@@ -124,7 +204,7 @@ opencode-enhancer - OpenCode enhancer for Codex accounts, usage, plugin updates,
124
204
 
125
205
  Commands:
126
206
  add <alias> Add a new account (opens browser for OAuth)
127
- remove <alias> Remove an account
207
+ remove Remove an account (opens selector)
128
208
  list List all configured accounts
129
209
  status Show detailed account status
130
210
  usage Check usage/quota across all connected providers
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAClC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AACvB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AAErB,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAA;IAChC,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;AACtB,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAgD;IAC9E,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAA;IAC7C,IAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC5C,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAA;QAC/D,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,SAAS,QAAQ,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,CAAA;IACzC,IAAI,OAAO,MAAM,EAAE,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC1C,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;YAC7D,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,OAAO,CAAC,CAAA;QAC/D,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,SAAS,QAAQ,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgD,EAAE,WAA0B;IACvG,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,KAAK,CAAA;IACtD,MAAM,SAAS,GAAG,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,GAAG,CAAA;IACxE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;IAC/D,MAAM,KAAK,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,EAAE,CAAA;AACjG,CAAC;AAED,KAAK,UAAU,4BAA4B;IACzC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAA;IAC/B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;QACtC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,EAAE,CAAA;IACzB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;IAC5C,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACnF,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAE5B,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7C,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAE1C,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;gBAC5C,SAAQ;YACV,CAAC;YAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;gBACjC,OAAO,IAAI,CAAA;YACb,CAAC;YAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YACrC,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,QAAQ,CAAC,KAAK,CAAA;YACvB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,iCAAiC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;gBACrD,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;gBACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAA;gBACzC,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,uBAAuB,CAAC,CAAA;gBACvD,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC,CAAA;YACrD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAA;gBAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,MAAK;QACP,CAAC;QAED,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;gBAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,4BAA4B,EAAE,CAAA;gBAC1D,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,MAAK;gBACP,CAAC;gBACD,aAAa,CAAC,aAAa,CAAC,CAAA;gBAC5B,OAAO,CAAC,GAAG,CAAC,YAAY,aAAa,YAAY,CAAC,CAAA;YACpD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAA;gBACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,MAAK;QACP,CAAC;QAED,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAA;YAC/B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;gBACtC,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAA;YAC5D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;gBACvC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,eAAe,WAAW,GAAG,CAAC,UAAU,GAAG,CAAC,CAAA;gBAC1F,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,CAAA;YACf,CAAC;YACD,MAAK;QACP,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,SAAS,EAAE,CAAA;YACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAE9C,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;YAC5C,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;YACpC,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;YAC3C,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,WAAW,IAAI,MAAM,IAAI,CAAC,CAAA;YAEvD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;gBAC3E,OAAM;YACR,CAAC;YAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;gBACnE,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE;oBAC7E,CAAC,CAAC,wBAAwB,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,kBAAkB,EAAE,GAAG;oBAChF,CAAC,CAAC,EAAE,CAAA;gBACN,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAA;gBAEvD,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,QAAQ,GAAG,aAAa,EAAE,CAAC,CAAA;gBACxD,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC,CAAA;gBACnD,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;gBAC1C,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAA;gBAC3C,OAAO,CAAC,GAAG,EAAE,CAAA;YACf,CAAC;YACD,MAAK;QACP,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAA;YAC3B,MAAK;QACP,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC,CAAA;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YACrE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;YAC/C,MAAM,eAAe,CAAC,EAAE,QAAQ,EAAE,WAAW,IAAI,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAA;YACzH,MAAK;QACP,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAA;YAChC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,gGAAgG,CAAC,CAAA;gBAC/G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;iBAC9C,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBAC1B,MAAM,CAAC,OAAO,CAAC,CAAA;YAElB,MAAM,uBAAuB,CAAC;gBAC5B,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC;gBAC5B,aAAa,EAAE,OAAO,CAAC,kBAAkB,CAAC;gBAC1C,OAAO;aACR,CAAC,CAAA;YACF,MAAK;QACP,CAAC;QAED,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCjB,CAAC,CAAA;YACI,MAAK;QACP,CAAC;IACH,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
@@ -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":"AAOA,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;AA+CD,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,84 +1,172 @@
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 { join } from 'node:path';
5
- 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
+ const require = createRequire(import.meta.url);
6
8
  let cachedAuth = null;
7
9
  let cacheTimestamp = 0;
8
10
  const CACHE_TTL_MS = 10_000; // 10 seconds
11
+ const AUTH_KEY_ALIASES = {
12
+ opencode: ["opencode-go"],
13
+ "opencode-go": ["opencode"],
14
+ google: ["google.oauth"],
15
+ "google.oauth": ["google"],
16
+ };
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");
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"),
25
+ ];
26
+ return [...new Set(candidates)];
27
+ }
9
28
  function getAuthFilePath() {
10
- const xdgData = process.env.XDG_DATA_HOME || join(homedir(), '.local', 'share');
11
- return join(xdgData, 'opencode', 'auth.json');
29
+ return (getAuthFileCandidates().find((filePath) => existsSync(filePath)) || getAuthFileCandidates()[0]);
30
+ }
31
+ function parseAuthObject(value) {
32
+ if (!value || typeof value !== "object" || Array.isArray(value))
33
+ return undefined;
34
+ return value;
35
+ }
36
+ function parseAuthJsSource(raw) {
37
+ const trimmed = raw.trim();
38
+ const candidates = [
39
+ trimmed,
40
+ trimmed.replace(/^export\s+default\s+/, "").replace(/;\s*$/, ""),
41
+ trimmed.replace(/^module\.exports\s*=\s*/, "").replace(/;\s*$/, ""),
42
+ ];
43
+ for (const candidate of candidates) {
44
+ if (!candidate ||
45
+ (candidate === trimmed &&
46
+ (trimmed.startsWith("export ") || trimmed.startsWith("module.exports")))) {
47
+ continue;
48
+ }
49
+ try {
50
+ const parsed = Function(`"use strict"; return (${candidate})`)();
51
+ const auth = parseAuthObject(parsed);
52
+ if (auth)
53
+ return auth;
54
+ }
55
+ catch {
56
+ continue;
57
+ }
58
+ }
59
+ return undefined;
60
+ }
61
+ function loadAuthFromPath(filePath) {
62
+ try {
63
+ const raw = readFileSync(filePath, "utf-8");
64
+ const fromJson = parseAuthObject(JSON.parse(raw));
65
+ if (fromJson)
66
+ return fromJson;
67
+ }
68
+ catch {
69
+ // Fall through to .js parsing / require below.
70
+ }
71
+ if (!filePath.endsWith(".js"))
72
+ return undefined;
73
+ try {
74
+ const resolved = require.resolve(filePath);
75
+ delete require.cache[resolved];
76
+ const loaded = require(filePath);
77
+ const auth = parseAuthObject(loaded?.default ?? loaded);
78
+ if (auth)
79
+ return auth;
80
+ }
81
+ catch {
82
+ // Fall through to raw object-literal parsing.
83
+ }
84
+ try {
85
+ const raw = readFileSync(filePath, "utf-8");
86
+ return parseAuthJsSource(raw);
87
+ }
88
+ catch {
89
+ return undefined;
90
+ }
91
+ }
92
+ function getCredential(auth, key) {
93
+ const keys = [key, ...(AUTH_KEY_ALIASES[key] || [])];
94
+ for (const candidate of keys) {
95
+ const credential = auth[candidate];
96
+ if (credential)
97
+ return credential;
98
+ }
99
+ return undefined;
12
100
  }
13
101
  function loadAuthFile() {
14
102
  const now = Date.now();
15
103
  if (cachedAuth && now - cacheTimestamp < CACHE_TTL_MS) {
16
104
  return cachedAuth;
17
105
  }
18
- const filePath = getAuthFilePath();
19
- if (!existsSync(filePath)) {
106
+ const filePaths = getAuthFileCandidates();
107
+ const existingPaths = filePaths.filter((filePath) => existsSync(filePath));
108
+ if (existingPaths.length === 0) {
20
109
  cachedAuth = {};
21
110
  cacheTimestamp = now;
22
111
  return cachedAuth;
23
112
  }
24
- try {
25
- const raw = readFileSync(filePath, 'utf-8');
26
- cachedAuth = JSON.parse(raw);
27
- cacheTimestamp = now;
28
- return cachedAuth;
29
- }
30
- catch {
31
- cachedAuth = {};
32
- cacheTimestamp = now;
33
- return cachedAuth;
113
+ const mergedAuth = {};
114
+ for (const filePath of existingPaths) {
115
+ const parsed = loadAuthFromPath(filePath);
116
+ if (parsed) {
117
+ Object.assign(mergedAuth, parsed);
118
+ }
34
119
  }
120
+ cachedAuth = mergedAuth;
121
+ cacheTimestamp = now;
122
+ return cachedAuth;
35
123
  }
36
124
  /** Get an OAuth access token for a provider key (e.g. 'anthropic', 'openai', 'github-copilot') */
37
125
  export function getOAuthToken(key) {
38
126
  const auth = loadAuthFile();
39
- const cred = auth[key];
40
- if (!cred || cred.type !== 'oauth')
127
+ const cred = getCredential(auth, key);
128
+ if (!cred || cred.type !== "oauth")
41
129
  return undefined;
42
130
  return cred.access || undefined;
43
131
  }
44
132
  /** Get an OAuth refresh token for a provider key */
45
133
  export function getOAuthRefreshToken(key) {
46
134
  const auth = loadAuthFile();
47
- const cred = auth[key];
48
- if (!cred || cred.type !== 'oauth')
135
+ const cred = getCredential(auth, key);
136
+ if (!cred || cred.type !== "oauth")
49
137
  return undefined;
50
138
  return cred.refresh || undefined;
51
139
  }
52
140
  /** Get an OAuth credential object for a provider key */
53
141
  export function getOAuthCredential(key) {
54
142
  const auth = loadAuthFile();
55
- const cred = auth[key];
56
- if (!cred || cred.type !== 'oauth')
143
+ const cred = getCredential(auth, key);
144
+ if (!cred || cred.type !== "oauth")
57
145
  return undefined;
58
146
  return cred;
59
147
  }
60
148
  /** Get an API key for a provider key (e.g. 'openrouter', 'opencode', 'kimi-for-coding') */
61
149
  export function getApiKey(key) {
62
150
  const auth = loadAuthFile();
63
- const cred = auth[key];
151
+ const cred = getCredential(auth, key);
64
152
  if (!cred)
65
153
  return undefined;
66
- if (cred.type === 'apikey')
154
+ if (cred.type === "apikey" || cred.type === "api")
67
155
  return cred.key || undefined;
68
156
  // Some providers may store key in access field with oauth type
69
- if (cred.type === 'oauth')
157
+ if (cred.type === "oauth")
70
158
  return cred.access || undefined;
71
159
  return undefined;
72
160
  }
73
161
  /** Check if a provider key has any credential configured */
74
162
  export function hasCredential(key) {
75
163
  const auth = loadAuthFile();
76
- const cred = auth[key];
164
+ const cred = getCredential(auth, key);
77
165
  if (!cred)
78
166
  return false;
79
- if (cred.type === 'apikey')
167
+ if (cred.type === "apikey" || cred.type === "api")
80
168
  return !!cred.key;
81
- if (cred.type === 'oauth')
169
+ if (cred.type === "oauth")
82
170
  return !!cred.access;
83
171
  return false;
84
172
  }
@@ -91,27 +179,41 @@ export function invalidateAuthCache() {
91
179
  export function getAuthPath() {
92
180
  return getAuthFilePath();
93
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
+ }
94
197
  export function getGeminiOAuthCreds() {
95
198
  // Try multiple locations
96
199
  const paths = [
97
- join(homedir(), '.gemini', 'oauth_creds.json'),
98
- join(homedir(), '.config', 'opencode', 'antigravity-accounts.json'),
200
+ join(homedir(), ".gemini", "oauth_creds.json"),
201
+ join(homedir(), ".config", "opencode", "antigravity-accounts.json"),
99
202
  ];
100
203
  for (const p of paths) {
101
204
  if (!existsSync(p))
102
205
  continue;
103
206
  try {
104
- const raw = readFileSync(p, 'utf-8');
207
+ const raw = readFileSync(p, "utf-8");
105
208
  const parsed = JSON.parse(raw);
106
- // Direct oauth_creds.json format
107
- if (parsed.client_id && parsed.refresh_token) {
108
- return parsed;
209
+ if (parsed.refresh_token) {
210
+ return buildGeminiOAuthCreds(parsed.refresh_token, parsed.client_id, parsed.client_secret);
109
211
  }
110
212
  // Antigravity accounts format — take first account
111
213
  if (Array.isArray(parsed)) {
112
214
  const first = parsed[0];
113
- if (first?.client_id && first?.refresh_token) {
114
- return first;
215
+ if (first?.refresh_token) {
216
+ return buildGeminiOAuthCreds(first.refresh_token, first.client_id, first.client_secret);
115
217
  }
116
218
  }
117
219
  }
@@ -121,17 +223,9 @@ export function getGeminiOAuthCreds() {
121
223
  }
122
224
  // Also check opencode auth.json for google.oauth
123
225
  const auth = loadAuthFile();
124
- const googleOAuth = auth['google.oauth'] || auth['google'];
125
- if (googleOAuth && googleOAuth.type === 'oauth' && googleOAuth.refresh) {
126
- const clientId = process.env.OPENCODE_ENHANCER_GOOGLE_CLIENT_ID || process.env.OPENCODE_MULTI_AUTH_GOOGLE_CLIENT_ID || '';
127
- const clientSecret = process.env.OPENCODE_ENHANCER_GOOGLE_CLIENT_SECRET || process.env.OPENCODE_MULTI_AUTH_GOOGLE_CLIENT_SECRET || '';
128
- if (!clientId || !clientSecret)
129
- return undefined;
130
- return {
131
- client_id: clientId,
132
- client_secret: clientSecret,
133
- refresh_token: googleOAuth.refresh,
134
- };
226
+ const googleOAuth = auth["google.oauth"] || auth["google"];
227
+ if (googleOAuth && googleOAuth.type === "oauth" && googleOAuth.refresh) {
228
+ return buildGeminiOAuthCreds(googleOAuth.refresh);
135
229
  }
136
230
  return undefined;
137
231
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/providers/auth.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,kFAAkF;AAElF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAqBjC,IAAI,UAAU,GAAwB,IAAI,CAAA;AAC1C,IAAI,cAAc,GAAG,CAAC,CAAA;AACtB,MAAM,YAAY,GAAG,MAAM,CAAA,CAAC,aAAa;AAEzC,SAAS,eAAe;IACtB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC/E,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;AAC/C,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,IAAI,UAAU,IAAI,GAAG,GAAG,cAAc,GAAG,YAAY,EAAE,CAAC;QACtD,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAA;IAClC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,UAAU,GAAG,EAAE,CAAA;QACf,cAAc,GAAG,GAAG,CAAA;QACpB,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC3C,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAA;QAC5C,cAAc,GAAG,GAAG,CAAA;QACpB,OAAO,UAAU,CAAA;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,GAAG,EAAE,CAAA;QACf,cAAc,GAAG,GAAG,CAAA;QACpB,OAAO,UAAU,CAAA;IACnB,CAAC;AACH,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAA;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;IACtB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAA;IACpD,OAAO,IAAI,CAAC,MAAM,IAAI,SAAS,CAAA;AACjC,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,IAAI,GAAG,YAAY,EAAE,CAAA;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;IACtB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAA;IACpD,OAAO,IAAI,CAAC,OAAO,IAAI,SAAS,CAAA;AAClC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,IAAI,GAAG,YAAY,EAAE,CAAA;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;IACtB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAA;IACpD,OAAO,IAAuB,CAAA;AAChC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAA;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;IACtB,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAA;IAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,GAAG,IAAI,SAAS,CAAA;IACxD,+DAA+D;IAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,MAAM,IAAI,SAAS,CAAA;IAC1D,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAA;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;IACtB,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAA;IACvB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA;IAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;IAC/C,OAAO,KAAK,CAAA;AACd,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,mBAAmB;IACjC,UAAU,GAAG,IAAI,CAAA;IACjB,cAAc,GAAG,CAAC,CAAA;AACpB,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,WAAW;IACzB,OAAO,eAAe,EAAE,CAAA;AAC1B,CAAC;AASD,MAAM,UAAU,mBAAmB;IACjC,yBAAyB;IACzB,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC;QAC9C,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,2BAA2B,CAAC;KACpE,CAAA;IAED,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,SAAQ;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAE9B,iCAAiC;YACjC,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBAC7C,OAAO,MAA0B,CAAA;YACnC,CAAC;YAED,mDAAmD;YACnD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;gBACvB,IAAI,KAAK,EAAE,SAAS,IAAI,KAAK,EAAE,aAAa,EAAE,CAAC;oBAC7C,OAAO,KAAyB,CAAA;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ;QACV,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,MAAM,IAAI,GAAG,YAAY,EAAE,CAAA;IAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1D,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,EAAE,CAAA;QACzH,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,EAAE,CAAA;QACrI,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAA;QAChD,OAAO;YACL,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,YAAY;YAC3B,aAAa,EAAE,WAAW,CAAC,OAAO;SACnC,CAAA;IACH,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/providers/auth.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,kFAAkF;AAElF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAqB/C,IAAI,UAAU,GAAwB,IAAI,CAAC;AAC3C,IAAI,cAAc,GAAG,CAAC,CAAC;AACvB,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,aAAa;AAE1C,MAAM,gBAAgB,GAA6B;IACjD,QAAQ,EAAE,CAAC,aAAa,CAAC;IACzB,aAAa,EAAE,CAAC,UAAU,CAAC;IAC3B,MAAM,EAAE,CAAC,cAAc,CAAC;IACxB,cAAc,EAAE,CAAC,QAAQ,CAAC;CAC3B,CAAC;AAEF,SAAS,qBAAqB;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC;QACtC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC;QACpC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC;QACxC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;KACvC,CAAC;IAEF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,CACL,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAC/F,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAClF,OAAO,KAAqB,CAAC;AAC/B,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG;QACjB,OAAO;QACP,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAChE,OAAO,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;KACpE,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IACE,CAAC,SAAS;YACV,CAAC,SAAS,KAAK,OAAO;gBACpB,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAC1E,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,yBAAyB,SAAS,GAAG,CAAC,EAAa,CAAC;YAC5E,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAY,CAAC;QAC5C,MAAM,IAAI,GAAG,eAAe,CAAE,MAAgC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC;QACnF,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAkB,EAAE,GAAW;IACpD,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrD,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,UAAU;YAAE,OAAO,UAAU,CAAC;IACpC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,UAAU,IAAI,GAAG,GAAG,cAAc,GAAG,YAAY,EAAE,CAAC;QACtD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC;IAC1C,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3E,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,UAAU,GAAG,EAAE,CAAC;QAChB,cAAc,GAAG,GAAG,CAAC;QACrB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAiB,EAAE,CAAC;IACpC,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,UAAU,GAAG,UAAU,CAAC;IACxB,cAAc,GAAG,GAAG,CAAC;IACrB,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IACrD,OAAO,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;AAClC,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IACrD,OAAO,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC;AACnC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IACrD,OAAO,IAAuB,CAAC;AACjC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC;IAChF,+DAA+D;IAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;IAC3D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACrE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAChD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,mBAAmB;IACjC,UAAU,GAAG,IAAI,CAAC;IAClB,cAAc,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,WAAW;IACzB,OAAO,eAAe,EAAE,CAAC;AAC3B,CAAC;AASD,SAAS,qBAAqB,CAC5B,YAAoB,EACpB,QAAiB,EACjB,YAAqB;IAErB,MAAM,gBAAgB,GACpB,QAAQ;QACR,OAAO,CAAC,GAAG,CAAC,kCAAkC;QAC9C,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC;IACnD,MAAM,oBAAoB,GACxB,YAAY;QACZ,OAAO,CAAC,GAAG,CAAC,sCAAsC;QAClD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC;IAEvD,IAAI,CAAC,gBAAgB,IAAI,CAAC,oBAAoB;QAAE,OAAO,SAAS,CAAC;IAEjE,OAAO;QACL,SAAS,EAAE,gBAAgB;QAC3B,aAAa,EAAE,oBAAoB;QACnC,aAAa,EAAE,YAAY;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,yBAAyB;IACzB,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC;QAC9C,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,2BAA2B,CAAC;KACpE,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,SAAS;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE/B,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACzB,OAAO,qBAAqB,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YAC7F,CAAC;YAED,mDAAmD;YACnD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,KAAK,EAAE,aAAa,EAAE,CAAC;oBACzB,OAAO,qBAAqB,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC1F,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACvE,OAAO,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -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":"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"}
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,aAgK3B,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"}