@slkiser/opencode-quota 2.6.2 → 2.7.1
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 +84 -6
- package/dist/data/modelsdev-pricing.min.json +51 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +18 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/cursor-detection.d.ts +17 -0
- package/dist/lib/cursor-detection.d.ts.map +1 -0
- package/dist/lib/cursor-detection.js +125 -0
- package/dist/lib/cursor-detection.js.map +1 -0
- package/dist/lib/cursor-pricing.d.ts +33 -0
- package/dist/lib/cursor-pricing.d.ts.map +1 -0
- package/dist/lib/cursor-pricing.js +131 -0
- package/dist/lib/cursor-pricing.js.map +1 -0
- package/dist/lib/cursor-usage.d.ts +32 -0
- package/dist/lib/cursor-usage.d.ts.map +1 -0
- package/dist/lib/cursor-usage.js +127 -0
- package/dist/lib/cursor-usage.js.map +1 -0
- package/dist/lib/entries.d.ts +4 -0
- package/dist/lib/entries.d.ts.map +1 -1
- package/dist/lib/entries.js +0 -6
- package/dist/lib/entries.js.map +1 -1
- package/dist/lib/provider-metadata.d.ts.map +1 -1
- package/dist/lib/provider-metadata.js +4 -0
- package/dist/lib/provider-metadata.js.map +1 -1
- package/dist/lib/quota-stats.d.ts +1 -1
- package/dist/lib/quota-stats.d.ts.map +1 -1
- package/dist/lib/quota-stats.js +26 -14
- package/dist/lib/quota-stats.js.map +1 -1
- package/dist/lib/quota-status.d.ts +4 -0
- package/dist/lib/quota-status.d.ts.map +1 -1
- package/dist/lib/quota-status.js +49 -1
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/token-cost.d.ts +10 -0
- package/dist/lib/token-cost.d.ts.map +1 -0
- package/dist/lib/token-cost.js +16 -0
- package/dist/lib/token-cost.js.map +1 -0
- package/dist/lib/types.d.ts +4 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +1 -0
- package/dist/lib/types.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +95 -26
- package/dist/plugin.js.map +1 -1
- package/dist/providers/cursor.d.ts +3 -0
- package/dist/providers/cursor.d.ts.map +1 -0
- package/dist/providers/cursor.js +136 -0
- package/dist/providers/cursor.js.map +1 -0
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +2 -0
- package/dist/providers/registry.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
- Automatic quota toasts after assistant responses
|
|
6
6
|
- Manual `/quota` and `/tokens_*` commands for deeper local reporting with zero context window pollution
|
|
7
7
|
|
|
8
|
-
**Quota provider supports**: GitHub Copilot, OpenAI (Plus/Pro), Qwen Code, Alibaba Coding Plan, Chutes AI, Firmware AI, Google Antigravity, and Z.ai coding plan.
|
|
8
|
+
**Quota provider supports**: GitHub Copilot, OpenAI (Plus/Pro), Cursor (ACP), Qwen Code, Alibaba Coding Plan, Chutes AI, Firmware AI, Google Antigravity, and Z.ai coding plan.
|
|
9
9
|
|
|
10
|
-
**Token provider supports**: All models and providers in [models.dev](https://models.dev).
|
|
10
|
+
**Token provider supports**: All models and providers in [models.dev](https://models.dev), plus deterministic local pricing for Cursor Auto/Composer and Cursor model aliases that are not on models.dev.
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|

|
|
@@ -53,9 +53,19 @@ If you already use Copilot, OpenAI, Firmware, Chutes, or Z.ai in OpenCode, start
|
|
|
53
53
|
}
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
+
### Cursor
|
|
57
|
+
|
|
58
|
+
Cursor model support requires the `opencode-cursor` [companion ACP plugin](https://github.com/Nomadcxx/opencode-cursor):
|
|
59
|
+
|
|
60
|
+
```jsonc
|
|
61
|
+
{
|
|
62
|
+
"plugin": ["@rama_nigg/open-cursor", "@slkiser/opencode-quota"]
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
56
66
|
### Google Antigravity
|
|
57
67
|
|
|
58
|
-
Google quota support
|
|
68
|
+
Google quota support requires the `opencode-antigravity-auth` [companion auth plugin](https://github.com/NoeFabris/opencode-antigravity-auth):
|
|
59
69
|
|
|
60
70
|
```jsonc
|
|
61
71
|
{
|
|
@@ -65,7 +75,7 @@ Google quota support depends on the companion auth plugin:
|
|
|
65
75
|
|
|
66
76
|
### Qwen Code
|
|
67
77
|
|
|
68
|
-
Qwen quota support
|
|
78
|
+
Qwen quota support requires the `opencode-qwencode-auth` [companion auth plugin](https://github.com/gustavodiasdev/opencode-qwencode-auth):
|
|
69
79
|
|
|
70
80
|
```jsonc
|
|
71
81
|
{
|
|
@@ -73,6 +83,8 @@ Qwen quota support depends on the companion auth plugin:
|
|
|
73
83
|
}
|
|
74
84
|
```
|
|
75
85
|
|
|
86
|
+
Quota and `/tokens_*` output are computed from local OpenCode session history.
|
|
87
|
+
|
|
76
88
|
## Commands
|
|
77
89
|
|
|
78
90
|
| Command | What it shows |
|
|
@@ -135,6 +147,7 @@ If Alibaba Coding Plan auth does not include a `tier`, you can set the fallback
|
|
|
135
147
|
| --- | --- | --- |
|
|
136
148
|
| GitHub Copilot | Usually yes | Add `copilot-quota-token.json` only for managed org or enterprise billing |
|
|
137
149
|
| OpenAI | Yes | None |
|
|
150
|
+
| Cursor | Needs `opencode-cursor` | Optional `cursorPlan`, `cursorIncludedApiUsd`, and `cursorBillingCycleStartDay` for monthly API budget tracking |
|
|
138
151
|
| Qwen Code | Needs `opencode-qwencode-auth` | Local free-tier request estimation |
|
|
139
152
|
| Alibaba Coding Plan | Yes | Local request-count estimation |
|
|
140
153
|
| Firmware AI | Usually yes | Optional API key |
|
|
@@ -198,6 +211,57 @@ No extra setup is required if OpenCode already has OpenAI or ChatGPT auth config
|
|
|
198
211
|
|
|
199
212
|
</details>
|
|
200
213
|
|
|
214
|
+
<details>
|
|
215
|
+
<summary><strong>Cursor</strong></summary>
|
|
216
|
+
|
|
217
|
+
Cursor support requires the `opencode-cursor` plugin and stays local-only and deterministic once `@rama_nigg/open-cursor` is installed in OpenCode.
|
|
218
|
+
|
|
219
|
+
Recommended install path:
|
|
220
|
+
|
|
221
|
+
- Follow Option B from the upstream [`opencode-cursor` README](https://github.com/Nomadcxx/opencode-cursor).
|
|
222
|
+
- Keep the Cursor model list in sync with `cursor-agent models`.
|
|
223
|
+
|
|
224
|
+
Current behavior:
|
|
225
|
+
|
|
226
|
+
- Detects Cursor usage from OpenCode history when the current model or stored message model is `cursor-acp/*`
|
|
227
|
+
- `/tokens_*` maps Cursor API-pool models into official pricing and uses bundled static rates for `auto` and `composer*`
|
|
228
|
+
- `/quota` and toasts estimate the current billing-cycle spend from local OpenCode history
|
|
229
|
+
- Percentage remaining is shown only when you configure `cursorPlan` or `cursorIncludedApiUsd`
|
|
230
|
+
- Billing cycle defaults to the local calendar month unless you set `cursorBillingCycleStartDay`
|
|
231
|
+
|
|
232
|
+
Notes:
|
|
233
|
+
|
|
234
|
+
- Session cookies and Cursor team APIs are not required for this local reporting path
|
|
235
|
+
- Unknown future Cursor model ids are surfaced in `/quota_status` under Cursor diagnostics and `unknown_pricing`
|
|
236
|
+
|
|
237
|
+
Example config for a personal Pro account:
|
|
238
|
+
|
|
239
|
+
```jsonc
|
|
240
|
+
{
|
|
241
|
+
"experimental": {
|
|
242
|
+
"quotaToast": {
|
|
243
|
+
"cursorPlan": "pro",
|
|
244
|
+
"cursorBillingCycleStartDay": 7
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
If you need a custom included API budget, override it directly:
|
|
251
|
+
|
|
252
|
+
```jsonc
|
|
253
|
+
{
|
|
254
|
+
"experimental": {
|
|
255
|
+
"quotaToast": {
|
|
256
|
+
"cursorPlan": "none",
|
|
257
|
+
"cursorIncludedApiUsd": 120
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
</details>
|
|
264
|
+
|
|
201
265
|
<details>
|
|
202
266
|
<summary><strong>Qwen Code</strong></summary>
|
|
203
267
|
|
|
@@ -326,17 +390,21 @@ All plugin settings live under `experimental.quotaToast`.
|
|
|
326
390
|
| `layout.tinyAt` | `32` | Tiny layout breakpoint |
|
|
327
391
|
| `googleModels` | `["CLAUDE"]` | Google model keys: `CLAUDE`, `G3PRO`, `G3FLASH`, `G3IMAGE` |
|
|
328
392
|
| `alibabaCodingPlanTier` | `"lite"` | Fallback Alibaba Coding Plan tier when auth does not include `tier` |
|
|
393
|
+
| `cursorPlan` | `"none"` | Cursor included API budget preset: `none`, `pro`, `pro-plus`, `ultra` |
|
|
394
|
+
| `cursorIncludedApiUsd` | unset | Override Cursor monthly included API budget in USD |
|
|
395
|
+
| `cursorBillingCycleStartDay` | unset | Local billing-cycle anchor day `1..28`; when unset, Cursor usage resets on the local calendar month |
|
|
329
396
|
| `debug` | `false` | Include debug context in toast output |
|
|
330
397
|
|
|
331
398
|
## Token Pricing Snapshot
|
|
332
399
|
|
|
333
|
-
`/tokens_*` uses a local `models.dev` pricing snapshot.
|
|
400
|
+
`/tokens_*` uses a local `models.dev` pricing snapshot plus bundled static Cursor pricing for Cursor-only pool models.
|
|
334
401
|
|
|
335
402
|
Behavior:
|
|
336
403
|
|
|
337
404
|
- A bundled snapshot ships with the plugin for offline use.
|
|
338
405
|
- The plugin can refresh the local runtime snapshot when the data is stale.
|
|
339
406
|
- Reports continue to work if refresh fails.
|
|
407
|
+
- Cursor `auto` and `composer*` pricing is bundled in the plugin because those ids are not on `models.dev`.
|
|
340
408
|
|
|
341
409
|
Useful environment variables:
|
|
342
410
|
|
|
@@ -388,7 +456,7 @@ If you are using an agent to install the plugin for you, the safe default is:
|
|
|
388
456
|
|
|
389
457
|
Then verify with `/quota_status`.
|
|
390
458
|
|
|
391
|
-
Only add explicit `enabledProviders` if you want to limit which providers are queried. Only add companion plugins when the user actually uses Google Antigravity or Qwen Code.
|
|
459
|
+
Only add explicit `enabledProviders` if you want to limit which providers are queried. Only add companion plugins when the user actually uses Google Antigravity or Qwen Code, and only add `@rama_nigg/open-cursor` when the user actually uses Cursor models in OpenCode.
|
|
392
460
|
|
|
393
461
|
## License
|
|
394
462
|
|
|
@@ -397,3 +465,13 @@ MIT
|
|
|
397
465
|
## Remarks
|
|
398
466
|
|
|
399
467
|
Opencode Quota is not built by the OpenCode team and is not affiliated with OpenCode or any provider listed above.
|
|
468
|
+
|
|
469
|
+
## Star History
|
|
470
|
+
|
|
471
|
+
<a href="https://www.star-history.com/?repos=slkiser%2Fopencode-quota&type=date&legend=bottom-right">
|
|
472
|
+
<picture>
|
|
473
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/image?repos=slkiser/opencode-quota&type=date&theme=dark&legend=bottom-right" />
|
|
474
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/image?repos=slkiser/opencode-quota&type=date&legend=bottom-right" />
|
|
475
|
+
<img alt="Star History Chart" src="https://api.star-history.com/image?repos=slkiser/opencode-quota&type=date&legend=bottom-right" />
|
|
476
|
+
</picture>
|
|
477
|
+
</a>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_meta": {
|
|
3
|
-
"generatedAt":
|
|
3
|
+
"generatedAt": 1773949200336,
|
|
4
4
|
"providers": [
|
|
5
5
|
"anthropic",
|
|
6
6
|
"google",
|
|
@@ -256,6 +256,16 @@
|
|
|
256
256
|
"output": 12,
|
|
257
257
|
"cache_read": 0.2
|
|
258
258
|
},
|
|
259
|
+
"gemini-3.1-flash-image-preview": {
|
|
260
|
+
"input": 0.25,
|
|
261
|
+
"output": 60
|
|
262
|
+
},
|
|
263
|
+
"gemini-3.1-flash-lite-preview": {
|
|
264
|
+
"input": 0.25,
|
|
265
|
+
"output": 1.5,
|
|
266
|
+
"cache_read": 0.025,
|
|
267
|
+
"cache_write": 1
|
|
268
|
+
},
|
|
259
269
|
"gemini-3.1-pro-preview": {
|
|
260
270
|
"input": 2,
|
|
261
271
|
"output": 12,
|
|
@@ -461,6 +471,25 @@
|
|
|
461
471
|
"output": 14,
|
|
462
472
|
"cache_read": 0.175
|
|
463
473
|
},
|
|
474
|
+
"gpt-5.4": {
|
|
475
|
+
"input": 2.5,
|
|
476
|
+
"output": 15,
|
|
477
|
+
"cache_read": 0.25
|
|
478
|
+
},
|
|
479
|
+
"gpt-5.4-mini": {
|
|
480
|
+
"input": 0.75,
|
|
481
|
+
"output": 4.5,
|
|
482
|
+
"cache_read": 0.075
|
|
483
|
+
},
|
|
484
|
+
"gpt-5.4-nano": {
|
|
485
|
+
"input": 0.2,
|
|
486
|
+
"output": 1.25,
|
|
487
|
+
"cache_read": 0.02
|
|
488
|
+
},
|
|
489
|
+
"gpt-5.4-pro": {
|
|
490
|
+
"input": 30,
|
|
491
|
+
"output": 180
|
|
492
|
+
},
|
|
464
493
|
"o1": {
|
|
465
494
|
"input": 15,
|
|
466
495
|
"output": 60,
|
|
@@ -618,6 +647,21 @@
|
|
|
618
647
|
"output": 0.5,
|
|
619
648
|
"cache_read": 0.05
|
|
620
649
|
},
|
|
650
|
+
"grok-4.20-beta-latest-non-reasoning": {
|
|
651
|
+
"input": 2,
|
|
652
|
+
"output": 6,
|
|
653
|
+
"cache_read": 0.2
|
|
654
|
+
},
|
|
655
|
+
"grok-4.20-beta-latest-reasoning": {
|
|
656
|
+
"input": 2,
|
|
657
|
+
"output": 6,
|
|
658
|
+
"cache_read": 0.2
|
|
659
|
+
},
|
|
660
|
+
"grok-4.20-multi-agent-beta-latest": {
|
|
661
|
+
"input": 2,
|
|
662
|
+
"output": 6,
|
|
663
|
+
"cache_read": 0.2
|
|
664
|
+
},
|
|
621
665
|
"grok-beta": {
|
|
622
666
|
"input": 5,
|
|
623
667
|
"output": 15,
|
|
@@ -684,6 +728,12 @@
|
|
|
684
728
|
"output": 3.2,
|
|
685
729
|
"cache_read": 0.2,
|
|
686
730
|
"cache_write": 0
|
|
731
|
+
},
|
|
732
|
+
"glm-5-turbo": {
|
|
733
|
+
"input": 1.2,
|
|
734
|
+
"output": 4,
|
|
735
|
+
"cache_read": 0.24,
|
|
736
|
+
"cache_write": 0
|
|
687
737
|
}
|
|
688
738
|
}
|
|
689
739
|
}
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAmB,gBAAgB,EAAiB,MAAM,YAAY,CAAC;AAWnF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;IACrC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAErD;AAuBD;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE;IACN,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE;gBAAE,YAAY,CAAC,EAAE;oBAAE,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;iBAAE,CAAA;aAAE,CAAA;SAAE,CAAC,CAAC;KAC9F,CAAC;CACH,EACD,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAoM3B"}
|
package/dist/lib/config.js
CHANGED
|
@@ -20,6 +20,10 @@ export function createLoadConfigMeta() {
|
|
|
20
20
|
function isValidGoogleModelId(id) {
|
|
21
21
|
return typeof id === "string" && ["G3PRO", "G3FLASH", "CLAUDE", "G3IMAGE"].includes(id);
|
|
22
22
|
}
|
|
23
|
+
function isValidCursorQuotaPlan(plan) {
|
|
24
|
+
return (typeof plan === "string" &&
|
|
25
|
+
["none", "pro", "pro-plus", "ultra"].includes(plan));
|
|
26
|
+
}
|
|
23
27
|
/**
|
|
24
28
|
* Remove duplicates from an array while preserving order
|
|
25
29
|
*/
|
|
@@ -65,6 +69,20 @@ export async function loadConfig(client, meta) {
|
|
|
65
69
|
quotaToastConfig.alibabaCodingPlanTier === "pro"
|
|
66
70
|
? quotaToastConfig.alibabaCodingPlanTier
|
|
67
71
|
: DEFAULT_CONFIG.alibabaCodingPlanTier,
|
|
72
|
+
cursorPlan: isValidCursorQuotaPlan(quotaToastConfig.cursorPlan)
|
|
73
|
+
? quotaToastConfig.cursorPlan
|
|
74
|
+
: DEFAULT_CONFIG.cursorPlan,
|
|
75
|
+
cursorIncludedApiUsd: typeof quotaToastConfig.cursorIncludedApiUsd === "number" &&
|
|
76
|
+
Number.isFinite(quotaToastConfig.cursorIncludedApiUsd) &&
|
|
77
|
+
quotaToastConfig.cursorIncludedApiUsd > 0
|
|
78
|
+
? quotaToastConfig.cursorIncludedApiUsd
|
|
79
|
+
: undefined,
|
|
80
|
+
cursorBillingCycleStartDay: typeof quotaToastConfig.cursorBillingCycleStartDay === "number" &&
|
|
81
|
+
Number.isInteger(quotaToastConfig.cursorBillingCycleStartDay) &&
|
|
82
|
+
quotaToastConfig.cursorBillingCycleStartDay >= 1 &&
|
|
83
|
+
quotaToastConfig.cursorBillingCycleStartDay <= 28
|
|
84
|
+
? quotaToastConfig.cursorBillingCycleStartDay
|
|
85
|
+
: undefined,
|
|
68
86
|
showOnIdle: typeof quotaToastConfig.showOnIdle === "boolean"
|
|
69
87
|
? quotaToastConfig.showOnIdle
|
|
70
88
|
: DEFAULT_CONFIG.showOnIdle,
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface CursorAuthPresence {
|
|
2
|
+
state: "missing" | "present" | "invalid";
|
|
3
|
+
selectedPath?: string;
|
|
4
|
+
presentPaths: string[];
|
|
5
|
+
candidatePaths: string[];
|
|
6
|
+
error?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface CursorOpenCodeIntegration {
|
|
9
|
+
pluginEnabled: boolean;
|
|
10
|
+
providerConfigured: boolean;
|
|
11
|
+
matchedPaths: string[];
|
|
12
|
+
checkedPaths: string[];
|
|
13
|
+
}
|
|
14
|
+
export declare function getCursorAuthCandidatePaths(): string[];
|
|
15
|
+
export declare function inspectCursorAuthPresence(): Promise<CursorAuthPresence>;
|
|
16
|
+
export declare function inspectCursorOpenCodeIntegration(): Promise<CursorOpenCodeIntegration>;
|
|
17
|
+
//# sourceMappingURL=cursor-detection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-detection.d.ts","sourceRoot":"","sources":["../../src/lib/cursor-detection.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAUD,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAoBtD;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAuC7E;AAkBD,wBAAsB,gCAAgC,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAwC3F"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { existsSync } from "fs";
|
|
2
|
+
import { readFile } from "fs/promises";
|
|
3
|
+
import { homedir, platform } from "os";
|
|
4
|
+
import { join } from "path";
|
|
5
|
+
import { parseJsonOrJsonc } from "./jsonc.js";
|
|
6
|
+
import { getOpencodeRuntimeDirCandidates } from "./opencode-runtime-paths.js";
|
|
7
|
+
import { CURSOR_OPENCODE_PROVIDER_ID } from "./cursor-pricing.js";
|
|
8
|
+
function dedupe(list) {
|
|
9
|
+
return [...new Set(list.filter(Boolean))];
|
|
10
|
+
}
|
|
11
|
+
function getCursorHomeDir() {
|
|
12
|
+
return process.env.CURSOR_ACP_HOME_DIR?.trim() || homedir();
|
|
13
|
+
}
|
|
14
|
+
export function getCursorAuthCandidatePaths() {
|
|
15
|
+
const home = getCursorHomeDir();
|
|
16
|
+
const authFiles = ["cli-config.json", "auth.json"];
|
|
17
|
+
const paths = [];
|
|
18
|
+
if (platform() === "darwin") {
|
|
19
|
+
for (const file of authFiles)
|
|
20
|
+
paths.push(join(home, ".cursor", file));
|
|
21
|
+
for (const file of authFiles)
|
|
22
|
+
paths.push(join(home, ".config", "cursor", file));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
for (const file of authFiles)
|
|
26
|
+
paths.push(join(home, ".config", "cursor", file));
|
|
27
|
+
const xdgConfigHome = process.env.XDG_CONFIG_HOME?.trim();
|
|
28
|
+
if (xdgConfigHome && xdgConfigHome !== join(home, ".config")) {
|
|
29
|
+
for (const file of authFiles)
|
|
30
|
+
paths.push(join(xdgConfigHome, "cursor", file));
|
|
31
|
+
}
|
|
32
|
+
for (const file of authFiles)
|
|
33
|
+
paths.push(join(home, ".cursor", file));
|
|
34
|
+
}
|
|
35
|
+
return dedupe(paths);
|
|
36
|
+
}
|
|
37
|
+
export async function inspectCursorAuthPresence() {
|
|
38
|
+
const candidatePaths = getCursorAuthCandidatePaths();
|
|
39
|
+
const presentPaths = candidatePaths.filter((path) => existsSync(path));
|
|
40
|
+
let invalidPath;
|
|
41
|
+
let invalidError;
|
|
42
|
+
for (const path of presentPaths) {
|
|
43
|
+
try {
|
|
44
|
+
const raw = await readFile(path, "utf8");
|
|
45
|
+
const parsed = JSON.parse(raw);
|
|
46
|
+
if (parsed && typeof parsed === "object") {
|
|
47
|
+
return {
|
|
48
|
+
state: "present",
|
|
49
|
+
selectedPath: path,
|
|
50
|
+
presentPaths,
|
|
51
|
+
candidatePaths,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
invalidPath ??= path;
|
|
57
|
+
invalidError ??= error instanceof Error ? error.message : String(error);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (invalidPath) {
|
|
61
|
+
return {
|
|
62
|
+
state: "invalid",
|
|
63
|
+
selectedPath: invalidPath,
|
|
64
|
+
presentPaths,
|
|
65
|
+
candidatePaths,
|
|
66
|
+
error: invalidError,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
state: "missing",
|
|
71
|
+
presentPaths,
|
|
72
|
+
candidatePaths,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function pluginIncludesCursor(value) {
|
|
76
|
+
if (typeof value !== "string")
|
|
77
|
+
return false;
|
|
78
|
+
const normalized = value.trim().toLowerCase();
|
|
79
|
+
return (normalized === CURSOR_OPENCODE_PROVIDER_ID ||
|
|
80
|
+
normalized === "open-cursor" ||
|
|
81
|
+
normalized === "@rama_nigg/open-cursor" ||
|
|
82
|
+
normalized.endsWith("/open-cursor"));
|
|
83
|
+
}
|
|
84
|
+
function providerConfigIncludesCursor(value) {
|
|
85
|
+
if (!value || typeof value !== "object")
|
|
86
|
+
return false;
|
|
87
|
+
return Object.prototype.hasOwnProperty.call(value, CURSOR_OPENCODE_PROVIDER_ID);
|
|
88
|
+
}
|
|
89
|
+
export async function inspectCursorOpenCodeIntegration() {
|
|
90
|
+
const { configDirs } = getOpencodeRuntimeDirCandidates();
|
|
91
|
+
const checkedPaths = dedupe([...configDirs, process.cwd()].flatMap((dir) => [
|
|
92
|
+
join(dir, "opencode.json"),
|
|
93
|
+
join(dir, "opencode.jsonc"),
|
|
94
|
+
]));
|
|
95
|
+
const matchedPaths = [];
|
|
96
|
+
let pluginEnabled = false;
|
|
97
|
+
let providerConfigured = false;
|
|
98
|
+
for (const path of checkedPaths) {
|
|
99
|
+
if (!existsSync(path))
|
|
100
|
+
continue;
|
|
101
|
+
try {
|
|
102
|
+
const raw = await readFile(path, "utf8");
|
|
103
|
+
const parsed = parseJsonOrJsonc(raw, path.endsWith(".jsonc"));
|
|
104
|
+
const plugin = Array.isArray(parsed?.plugin) ? parsed.plugin : [];
|
|
105
|
+
const provider = parsed?.provider;
|
|
106
|
+
const matchedPlugin = plugin.some(pluginIncludesCursor);
|
|
107
|
+
const matchedProvider = providerConfigIncludesCursor(provider);
|
|
108
|
+
if (matchedPlugin || matchedProvider) {
|
|
109
|
+
matchedPaths.push(path);
|
|
110
|
+
}
|
|
111
|
+
pluginEnabled ||= matchedPlugin;
|
|
112
|
+
providerConfigured ||= matchedProvider;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Ignore invalid user configs here and let status output show missing matches.
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
pluginEnabled,
|
|
120
|
+
providerConfigured,
|
|
121
|
+
matchedPaths,
|
|
122
|
+
checkedPaths,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=cursor-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-detection.js","sourceRoot":"","sources":["../../src/lib/cursor-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { CursorQuotaPlan } from "./types.js";
|
|
2
|
+
import type { CostBuckets } from "./modelsdev-pricing.js";
|
|
3
|
+
export type CursorLocalPricingModel = "auto" | "composer-1" | "composer-1.5" | "composer-2" | "composer-2-fast";
|
|
4
|
+
export type CursorResolvedModel = {
|
|
5
|
+
kind: "local";
|
|
6
|
+
model: CursorLocalPricingModel;
|
|
7
|
+
pool: "auto_composer";
|
|
8
|
+
} | {
|
|
9
|
+
kind: "official";
|
|
10
|
+
providerHint: string;
|
|
11
|
+
modelHint: string;
|
|
12
|
+
pool: "api";
|
|
13
|
+
} | {
|
|
14
|
+
kind: "unknown";
|
|
15
|
+
};
|
|
16
|
+
export declare const CURSOR_PROVIDER_ID = "cursor";
|
|
17
|
+
export declare const CURSOR_OPENCODE_PROVIDER_ID = "cursor-acp";
|
|
18
|
+
export declare const CURSOR_INCLUDED_API_USD_BY_PLAN: Readonly<Record<Exclude<CursorQuotaPlan, "none">, number>>;
|
|
19
|
+
export declare const CURSOR_OFFICIAL_MODEL_ALIASES: Readonly<Record<string, {
|
|
20
|
+
providerHint: string;
|
|
21
|
+
modelHint: string;
|
|
22
|
+
}>>;
|
|
23
|
+
export declare function isCursorProviderId(raw?: string): boolean;
|
|
24
|
+
export declare function isCursorModelId(raw?: string): boolean;
|
|
25
|
+
export declare function extractCursorModelPart(rawModelId: string): string;
|
|
26
|
+
export declare function getCursorPlanDisplayName(plan: CursorQuotaPlan): string | null;
|
|
27
|
+
export declare function getEffectiveCursorIncludedApiUsd(params: {
|
|
28
|
+
plan: CursorQuotaPlan;
|
|
29
|
+
overrideUsd?: number;
|
|
30
|
+
}): number | undefined;
|
|
31
|
+
export declare function lookupCursorLocalCost(model: string): CostBuckets | null;
|
|
32
|
+
export declare function resolveCursorModel(rawModelId?: string): CursorResolvedModel;
|
|
33
|
+
//# sourceMappingURL=cursor-pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-pricing.d.ts","sourceRoot":"","sources":["../../src/lib/cursor-pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,MAAM,uBAAuB,GAC/B,MAAM,GACN,YAAY,GACZ,cAAc,GACd,YAAY,GACZ,iBAAiB,CAAC;AAEtB,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,uBAAuB,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAExB,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAC3C,eAAO,MAAM,2BAA2B,eAAe,CAAC;AAExD,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAItG,CAAC;AA8CF,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAClD,MAAM,CAAC,MAAM,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB5D,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAGxD;AAED,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAIrD;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAW7E;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE;IACvD,IAAI,EAAE,eAAe,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,GAAG,SAAS,CAMrB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAEvE;AAED,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAqB3E"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
export const CURSOR_PROVIDER_ID = "cursor";
|
|
2
|
+
export const CURSOR_OPENCODE_PROVIDER_ID = "cursor-acp";
|
|
3
|
+
export const CURSOR_INCLUDED_API_USD_BY_PLAN = {
|
|
4
|
+
pro: 20,
|
|
5
|
+
"pro-plus": 70,
|
|
6
|
+
ultra: 400,
|
|
7
|
+
};
|
|
8
|
+
const CURSOR_PROVIDER_IDS = new Set([
|
|
9
|
+
CURSOR_PROVIDER_ID,
|
|
10
|
+
CURSOR_OPENCODE_PROVIDER_ID,
|
|
11
|
+
"open-cursor",
|
|
12
|
+
"@rama_nigg/open-cursor",
|
|
13
|
+
]);
|
|
14
|
+
const CURSOR_LOCAL_PRICING = {
|
|
15
|
+
auto: {
|
|
16
|
+
input: 1.25,
|
|
17
|
+
output: 6,
|
|
18
|
+
cache_read: 0.25,
|
|
19
|
+
},
|
|
20
|
+
"composer-1": {
|
|
21
|
+
input: 1.25,
|
|
22
|
+
output: 10,
|
|
23
|
+
cache_read: 0.125,
|
|
24
|
+
},
|
|
25
|
+
"composer-1.5": {
|
|
26
|
+
input: 3.5,
|
|
27
|
+
output: 17.5,
|
|
28
|
+
cache_read: 0.35,
|
|
29
|
+
},
|
|
30
|
+
"composer-2": {
|
|
31
|
+
input: 0.5,
|
|
32
|
+
output: 2.5,
|
|
33
|
+
cache_read: 0.2,
|
|
34
|
+
},
|
|
35
|
+
"composer-2-fast": {
|
|
36
|
+
input: 1.5,
|
|
37
|
+
output: 7.5,
|
|
38
|
+
cache_read: 0.35,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
const CURSOR_LOCAL_MODEL_ALIASES = {
|
|
42
|
+
auto: "auto",
|
|
43
|
+
"default[]": "auto",
|
|
44
|
+
"composer-1": "composer-1",
|
|
45
|
+
"composer-1.5": "composer-1.5",
|
|
46
|
+
"composer-2": "composer-2",
|
|
47
|
+
"composer-2-fast": "composer-2-fast",
|
|
48
|
+
};
|
|
49
|
+
export const CURSOR_OFFICIAL_MODEL_ALIASES = {
|
|
50
|
+
"gemini-3-flash": { providerHint: "google", modelHint: "gemini-3-flash-preview" },
|
|
51
|
+
"gemini-3-pro": { providerHint: "google", modelHint: "gemini-3-pro-preview" },
|
|
52
|
+
"gemini-3.1-pro": { providerHint: "google", modelHint: "gemini-3.1-pro-preview" },
|
|
53
|
+
"gpt-5.2": { providerHint: "openai", modelHint: "gpt-5.2" },
|
|
54
|
+
"gpt-5.3-codex": { providerHint: "openai", modelHint: "gpt-5.3-codex" },
|
|
55
|
+
"gpt-5.4": { providerHint: "openai", modelHint: "gpt-5.4" },
|
|
56
|
+
"gpt-5.4-high": { providerHint: "openai", modelHint: "gpt-5.4" },
|
|
57
|
+
"gpt-5.4-medium": { providerHint: "openai", modelHint: "gpt-5.4" },
|
|
58
|
+
grok: { providerHint: "xai", modelHint: "grok-code-fast-1" },
|
|
59
|
+
"kimi-k2.5": { providerHint: "moonshotai", modelHint: "kimi-k2.5" },
|
|
60
|
+
"opus-4.5": { providerHint: "anthropic", modelHint: "claude-opus-4-5" },
|
|
61
|
+
"opus-4.5-thinking": { providerHint: "anthropic", modelHint: "claude-opus-4-5" },
|
|
62
|
+
"opus-4.6": { providerHint: "anthropic", modelHint: "claude-opus-4-6" },
|
|
63
|
+
"opus-4.6-thinking": { providerHint: "anthropic", modelHint: "claude-opus-4-6" },
|
|
64
|
+
"premium-routing": { providerHint: "cursor", modelHint: "premium-routing" },
|
|
65
|
+
"sonnet-4.5": { providerHint: "anthropic", modelHint: "claude-sonnet-4-5" },
|
|
66
|
+
"sonnet-4.5-thinking": { providerHint: "anthropic", modelHint: "claude-sonnet-4-5" },
|
|
67
|
+
"sonnet-4.6": { providerHint: "anthropic", modelHint: "claude-sonnet-4-6" },
|
|
68
|
+
"sonnet-4.6-thinking": { providerHint: "anthropic", modelHint: "claude-sonnet-4-6" },
|
|
69
|
+
};
|
|
70
|
+
export function isCursorProviderId(raw) {
|
|
71
|
+
if (!raw || typeof raw !== "string")
|
|
72
|
+
return false;
|
|
73
|
+
return CURSOR_PROVIDER_IDS.has(raw.trim().toLowerCase());
|
|
74
|
+
}
|
|
75
|
+
export function isCursorModelId(raw) {
|
|
76
|
+
if (!raw || typeof raw !== "string")
|
|
77
|
+
return false;
|
|
78
|
+
const normalized = raw.trim().toLowerCase();
|
|
79
|
+
return normalized.startsWith(`${CURSOR_OPENCODE_PROVIDER_ID}/`) || normalized.startsWith("cursor/");
|
|
80
|
+
}
|
|
81
|
+
export function extractCursorModelPart(rawModelId) {
|
|
82
|
+
const trimmed = rawModelId.trim();
|
|
83
|
+
const lastSlash = trimmed.lastIndexOf("/");
|
|
84
|
+
if (lastSlash === -1)
|
|
85
|
+
return trimmed.toLowerCase();
|
|
86
|
+
return trimmed.slice(lastSlash + 1).trim().toLowerCase();
|
|
87
|
+
}
|
|
88
|
+
export function getCursorPlanDisplayName(plan) {
|
|
89
|
+
switch (plan) {
|
|
90
|
+
case "pro":
|
|
91
|
+
return "Pro";
|
|
92
|
+
case "pro-plus":
|
|
93
|
+
return "Pro Plus";
|
|
94
|
+
case "ultra":
|
|
95
|
+
return "Ultra";
|
|
96
|
+
default:
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export function getEffectiveCursorIncludedApiUsd(params) {
|
|
101
|
+
if (typeof params.overrideUsd === "number" && Number.isFinite(params.overrideUsd) && params.overrideUsd > 0) {
|
|
102
|
+
return params.overrideUsd;
|
|
103
|
+
}
|
|
104
|
+
if (params.plan === "none")
|
|
105
|
+
return undefined;
|
|
106
|
+
return CURSOR_INCLUDED_API_USD_BY_PLAN[params.plan];
|
|
107
|
+
}
|
|
108
|
+
export function lookupCursorLocalCost(model) {
|
|
109
|
+
return CURSOR_LOCAL_PRICING[model] ?? null;
|
|
110
|
+
}
|
|
111
|
+
export function resolveCursorModel(rawModelId) {
|
|
112
|
+
if (!rawModelId || typeof rawModelId !== "string")
|
|
113
|
+
return { kind: "unknown" };
|
|
114
|
+
const model = extractCursorModelPart(rawModelId);
|
|
115
|
+
if (!model)
|
|
116
|
+
return { kind: "unknown" };
|
|
117
|
+
const localModel = CURSOR_LOCAL_MODEL_ALIASES[model];
|
|
118
|
+
if (localModel) {
|
|
119
|
+
return {
|
|
120
|
+
kind: "local",
|
|
121
|
+
model: localModel,
|
|
122
|
+
pool: "auto_composer",
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
const official = CURSOR_OFFICIAL_MODEL_ALIASES[model];
|
|
126
|
+
if (!official || official.providerHint === "cursor") {
|
|
127
|
+
return { kind: "unknown" };
|
|
128
|
+
}
|
|
129
|
+
return { kind: "official", ...official, pool: "api" };
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=cursor-pricing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-pricing.js","sourceRoot":"","sources":["../../src/lib/cursor-pricing.ts"],"names":[],"mappings":"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"}
|