@slkiser/opencode-quota 2.12.0 → 2.14.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 +35 -9
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/minimax-auth.d.ts +29 -0
- package/dist/lib/minimax-auth.d.ts.map +1 -0
- package/dist/lib/minimax-auth.js +61 -0
- package/dist/lib/minimax-auth.js.map +1 -0
- package/dist/lib/opencode-storage.d.ts +8 -0
- package/dist/lib/opencode-storage.d.ts.map +1 -1
- package/dist/lib/opencode-storage.js +86 -19
- package/dist/lib/opencode-storage.js.map +1 -1
- package/dist/lib/provider-metadata.d.ts.map +1 -1
- package/dist/lib/provider-metadata.js +2 -0
- package/dist/lib/provider-metadata.js.map +1 -1
- package/dist/lib/quota-stats-format.d.ts +8 -1
- package/dist/lib/quota-stats-format.d.ts.map +1 -1
- package/dist/lib/quota-stats-format.js +64 -6
- package/dist/lib/quota-stats-format.js.map +1 -1
- package/dist/lib/quota-stats.d.ts +8 -0
- package/dist/lib/quota-stats.d.ts.map +1 -1
- package/dist/lib/quota-stats.js +84 -16
- package/dist/lib/quota-stats.js.map +1 -1
- package/dist/lib/quota-status.d.ts.map +1 -1
- package/dist/lib/quota-status.js +35 -0
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/types.d.ts +20 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +93 -42
- package/dist/plugin.js.map +1 -1
- package/dist/providers/minimax-coding-plan.d.ts +19 -0
- package/dist/providers/minimax-coding-plan.d.ts.map +1 -0
- package/dist/providers/minimax-coding-plan.js +219 -0
- package/dist/providers/minimax-coding-plan.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
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MiniMax Coding Plan provider wrapper.
|
|
3
|
+
*
|
|
4
|
+
* Fetches quota data from MiniMax API for coding plan users.
|
|
5
|
+
*/
|
|
6
|
+
import { DEFAULT_MINIMAX_AUTH_CACHE_MAX_AGE_MS, resolveMiniMaxAuthCached, } from "../lib/minimax-auth.js";
|
|
7
|
+
import { sanitizeDisplayText } from "../lib/display-sanitize.js";
|
|
8
|
+
import { fetchWithTimeout } from "../lib/http.js";
|
|
9
|
+
import { isAnyProviderIdAvailable } from "../lib/provider-availability.js";
|
|
10
|
+
import { normalizeQuotaProviderId } from "../lib/provider-metadata.js";
|
|
11
|
+
const MINIMAX_API_URL = "https://api.minimax.io/v1/api/openplatform/coding_plan/remains";
|
|
12
|
+
const MINIMAX_PROVIDER_LABEL = "MiniMax Coding Plan";
|
|
13
|
+
const USER_AGENT = "OpenCode-Quota-Toast/1.0";
|
|
14
|
+
const MINIMAX_WINDOW_SPECS = [
|
|
15
|
+
{
|
|
16
|
+
window: "five_hour",
|
|
17
|
+
name: "MiniMax Coding Plan 5h",
|
|
18
|
+
label: "5h:",
|
|
19
|
+
getTotal: (model) => model.current_interval_total_count,
|
|
20
|
+
getRemaining: (model) => model.current_interval_usage_count,
|
|
21
|
+
getResetOffsetMs: (model) => model.remains_time,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
window: "weekly",
|
|
25
|
+
name: "MiniMax Coding Plan Weekly",
|
|
26
|
+
label: "Weekly:",
|
|
27
|
+
getTotal: (model) => model.current_weekly_total_count,
|
|
28
|
+
getRemaining: (model) => model.current_weekly_usage_count,
|
|
29
|
+
getResetOffsetMs: (model) => model.weekly_remains_time,
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
function isFiniteNumber(value) {
|
|
33
|
+
return typeof value === "number" && Number.isFinite(value);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Type guard that validates a value is a well-formed MiniMax model record.
|
|
37
|
+
*
|
|
38
|
+
* Checks for `model_name` (string) and all required numeric fields to prevent
|
|
39
|
+
* `NaN` arithmetic when the API response shape is unexpected.
|
|
40
|
+
*/
|
|
41
|
+
function isMiniMaxModelRecord(value) {
|
|
42
|
+
if (value === null || typeof value !== "object" || !("model_name" in value))
|
|
43
|
+
return false;
|
|
44
|
+
const v = value;
|
|
45
|
+
return (typeof v.model_name === "string" &&
|
|
46
|
+
isFiniteNumber(v.current_interval_total_count) &&
|
|
47
|
+
isFiniteNumber(v.current_interval_usage_count) &&
|
|
48
|
+
isFiniteNumber(v.remains_time) &&
|
|
49
|
+
isFiniteNumber(v.current_weekly_total_count) &&
|
|
50
|
+
isFiniteNumber(v.current_weekly_usage_count) &&
|
|
51
|
+
isFiniteNumber(v.weekly_remains_time));
|
|
52
|
+
}
|
|
53
|
+
function roundPercent(value) {
|
|
54
|
+
return Math.max(0, Math.min(100, Math.round(value)));
|
|
55
|
+
}
|
|
56
|
+
function sanitizeMiniMaxMessage(text, maxLength = 120) {
|
|
57
|
+
const sanitized = sanitizeDisplayText(text).replace(/\s+/g, " ").trim();
|
|
58
|
+
return (sanitized || "unknown").slice(0, maxLength);
|
|
59
|
+
}
|
|
60
|
+
function clampRemaining(total, remaining) {
|
|
61
|
+
return Math.max(0, Math.min(total, remaining));
|
|
62
|
+
}
|
|
63
|
+
function isMiniMaxCodingModelName(modelName) {
|
|
64
|
+
const normalized = modelName.trim().toLowerCase();
|
|
65
|
+
return normalized === "minimax-m*" || normalized.startsWith("minimax-m");
|
|
66
|
+
}
|
|
67
|
+
function buildMiniMaxEntry(model, spec) {
|
|
68
|
+
const total = spec.getTotal(model);
|
|
69
|
+
if (total <= 0)
|
|
70
|
+
return null;
|
|
71
|
+
const remaining = clampRemaining(total, spec.getRemaining(model));
|
|
72
|
+
const used = total - remaining;
|
|
73
|
+
const percentRemaining = roundPercent((remaining / total) * 100);
|
|
74
|
+
return {
|
|
75
|
+
window: spec.window,
|
|
76
|
+
name: spec.name,
|
|
77
|
+
group: MINIMAX_PROVIDER_LABEL,
|
|
78
|
+
label: spec.label,
|
|
79
|
+
right: `${used}/${total}`,
|
|
80
|
+
percentRemaining,
|
|
81
|
+
resetTimeIso: new Date(Date.now() + Math.max(0, spec.getResetOffsetMs(model))).toISOString(),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function buildMiniMaxEntries(model) {
|
|
85
|
+
return MINIMAX_WINDOW_SPECS.flatMap((spec) => {
|
|
86
|
+
const entry = buildMiniMaxEntry(model, spec);
|
|
87
|
+
return entry ? [entry] : [];
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function getWorstPercent(model) {
|
|
91
|
+
const percents = buildMiniMaxEntries(model).map((entry) => entry.percentRemaining);
|
|
92
|
+
return percents.length > 0 ? Math.min(...percents) : Number.POSITIVE_INFINITY;
|
|
93
|
+
}
|
|
94
|
+
function selectCanonicalMiniMaxModel(models) {
|
|
95
|
+
if (models.length === 0)
|
|
96
|
+
return null;
|
|
97
|
+
const wildcardModel = models.find((model) => model.model_name.trim().toLowerCase() === "minimax-m*") ?? null;
|
|
98
|
+
if (wildcardModel && Number.isFinite(getWorstPercent(wildcardModel))) {
|
|
99
|
+
return wildcardModel;
|
|
100
|
+
}
|
|
101
|
+
return [...models].sort((left, right) => {
|
|
102
|
+
const percentDiff = getWorstPercent(left) - getWorstPercent(right);
|
|
103
|
+
if (percentDiff !== 0)
|
|
104
|
+
return percentDiff;
|
|
105
|
+
return left.model_name.localeCompare(right.model_name);
|
|
106
|
+
})[0] ?? null;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Fetch MiniMax coding plan quota from the API.
|
|
110
|
+
*
|
|
111
|
+
* Parses usage specifically for `MiniMax-M*` text models.
|
|
112
|
+
*
|
|
113
|
+
* @param apiKey - MiniMax API key
|
|
114
|
+
* @returns Quota entries on success, error on failure, or empty entries when
|
|
115
|
+
* the API returns successfully but no models have reportable quota.
|
|
116
|
+
*/
|
|
117
|
+
export async function queryMiniMaxQuota(apiKey) {
|
|
118
|
+
try {
|
|
119
|
+
const response = await fetchWithTimeout(MINIMAX_API_URL, {
|
|
120
|
+
method: "GET",
|
|
121
|
+
headers: {
|
|
122
|
+
Authorization: `Bearer ${apiKey}`,
|
|
123
|
+
"User-Agent": USER_AGENT,
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
if (!response.ok) {
|
|
127
|
+
const text = await response.text();
|
|
128
|
+
return {
|
|
129
|
+
success: false,
|
|
130
|
+
error: `MiniMax API error ${response.status}: ${sanitizeMiniMaxMessage(text, 120)}`,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const payload = (await response.json());
|
|
134
|
+
if (payload.base_resp?.status_code !== 0) {
|
|
135
|
+
return {
|
|
136
|
+
success: false,
|
|
137
|
+
error: `MiniMax API error: ${sanitizeMiniMaxMessage(payload.base_resp?.status_msg ?? "unknown")}`,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
const matchingModels = (payload.model_remains ?? []).filter((model) => isMiniMaxModelRecord(model) && isMiniMaxCodingModelName(model.model_name));
|
|
141
|
+
const canonicalModel = selectCanonicalMiniMaxModel(matchingModels);
|
|
142
|
+
const entries = canonicalModel ? buildMiniMaxEntries(canonicalModel) : [];
|
|
143
|
+
return { success: true, entries };
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
return {
|
|
147
|
+
success: false,
|
|
148
|
+
error: sanitizeMiniMaxMessage(err instanceof Error ? err.message : String(err)),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
export const minimaxCodingPlanProvider = {
|
|
153
|
+
id: "minimax-coding-plan",
|
|
154
|
+
async isAvailable(ctx) {
|
|
155
|
+
const providerAvailable = await isAnyProviderIdAvailable({
|
|
156
|
+
ctx,
|
|
157
|
+
candidateIds: ["minimax-coding-plan", "minimax"],
|
|
158
|
+
fallbackOnError: false,
|
|
159
|
+
});
|
|
160
|
+
if (!providerAvailable) {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
const auth = await resolveMiniMaxAuthCached({
|
|
164
|
+
maxAgeMs: DEFAULT_MINIMAX_AUTH_CACHE_MAX_AGE_MS,
|
|
165
|
+
});
|
|
166
|
+
return auth.state === "configured" || auth.state === "invalid";
|
|
167
|
+
},
|
|
168
|
+
matchesCurrentModel(model) {
|
|
169
|
+
const [provider, modelId] = model.toLowerCase().split("/", 2);
|
|
170
|
+
return normalizeQuotaProviderId(provider) === "minimax-coding-plan" && Boolean(modelId) && isMiniMaxCodingModelName(modelId);
|
|
171
|
+
},
|
|
172
|
+
async fetch(ctx) {
|
|
173
|
+
const auth = await resolveMiniMaxAuthCached({
|
|
174
|
+
maxAgeMs: DEFAULT_MINIMAX_AUTH_CACHE_MAX_AGE_MS,
|
|
175
|
+
});
|
|
176
|
+
if (auth.state === "none") {
|
|
177
|
+
return { attempted: false, entries: [], errors: [] };
|
|
178
|
+
}
|
|
179
|
+
if (auth.state === "invalid") {
|
|
180
|
+
return {
|
|
181
|
+
attempted: true,
|
|
182
|
+
entries: [],
|
|
183
|
+
errors: [{ label: MINIMAX_PROVIDER_LABEL, message: auth.error }],
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
const result = await queryMiniMaxQuota(auth.apiKey);
|
|
187
|
+
if (!result.success) {
|
|
188
|
+
return {
|
|
189
|
+
attempted: true,
|
|
190
|
+
entries: [],
|
|
191
|
+
errors: [{ label: MINIMAX_PROVIDER_LABEL, message: result.error }],
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
const style = ctx.config.toastStyle ?? "classic";
|
|
195
|
+
if (style === "classic") {
|
|
196
|
+
const worst = [...result.entries].sort((a, b) => a.percentRemaining - b.percentRemaining)[0];
|
|
197
|
+
if (!worst) {
|
|
198
|
+
return { attempted: true, entries: [], errors: [] };
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
attempted: true,
|
|
202
|
+
entries: [
|
|
203
|
+
{
|
|
204
|
+
name: worst.name,
|
|
205
|
+
percentRemaining: worst.percentRemaining,
|
|
206
|
+
resetTimeIso: worst.resetTimeIso,
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
errors: [],
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
attempted: true,
|
|
214
|
+
entries: result.entries,
|
|
215
|
+
errors: [],
|
|
216
|
+
};
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
//# sourceMappingURL=minimax-coding-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimax-coding-plan.js","sourceRoot":"","sources":["../../src/providers/minimax-coding-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAcvD,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAgB9C"}
|
|
@@ -14,6 +14,7 @@ import { qwenCodeProvider } from "./qwen-code.js";
|
|
|
14
14
|
import { alibabaCodingPlanProvider } from "./alibaba-coding-plan.js";
|
|
15
15
|
import { zaiProvider } from "./zai.js";
|
|
16
16
|
import { nanoGptProvider } from "./nanogpt.js";
|
|
17
|
+
import { minimaxCodingPlanProvider } from "./minimax-coding-plan.js";
|
|
17
18
|
export function getProviders() {
|
|
18
19
|
// Order here defines display ordering in the toast.
|
|
19
20
|
return [
|
|
@@ -28,6 +29,7 @@ export function getProviders() {
|
|
|
28
29
|
googleAntigravityProvider,
|
|
29
30
|
zaiProvider,
|
|
30
31
|
nanoGptProvider,
|
|
32
|
+
minimaxCodingPlanProvider,
|
|
31
33
|
];
|
|
32
34
|
}
|
|
33
35
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,UAAU,YAAY;IAC1B,oDAAoD;IACpD,OAAO;QACL,iBAAiB;QACjB,eAAe;QACf,cAAc;QACd,cAAc;QACd,gBAAgB;QAChB,yBAAyB;QACzB,gBAAgB;QAChB,cAAc;QACd,yBAAyB;QACzB,WAAW;QACX,eAAe;QACf,yBAAyB;KAC1B,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slkiser/opencode-quota",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.14.0",
|
|
4
4
|
"description": "OpenCode quota & tokens usage with zero context window pollution. Supports GitHub Copilot, OpenAI (Plus/Pro), Qwen Code, Chutes AI, Firmware AI, Google Antigravity, Z.ai coding plan and more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|