@slkiser/opencode-quota 3.7.1 → 3.8.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 +7 -3
- package/dist/lib/entries.d.ts +9 -1
- package/dist/lib/entries.d.ts.map +1 -1
- package/dist/lib/google-antigravity-companion.d.ts.map +1 -1
- package/dist/lib/google-antigravity-companion.js +218 -66
- package/dist/lib/google-antigravity-companion.js.map +1 -1
- package/dist/lib/google-gemini-cli-companion.d.ts.map +1 -1
- package/dist/lib/google-gemini-cli-companion.js +45 -10
- package/dist/lib/google-gemini-cli-companion.js.map +1 -1
- package/dist/lib/jsonc.d.ts.map +1 -1
- package/dist/lib/jsonc.js +2 -1
- package/dist/lib/jsonc.js.map +1 -1
- package/dist/lib/minimax-auth.d.ts +18 -8
- package/dist/lib/minimax-auth.d.ts.map +1 -1
- package/dist/lib/minimax-auth.js +124 -45
- package/dist/lib/minimax-auth.js.map +1 -1
- package/dist/lib/minimax-endpoints.d.ts +10 -0
- package/dist/lib/minimax-endpoints.d.ts.map +1 -0
- package/dist/lib/minimax-endpoints.js +19 -0
- package/dist/lib/minimax-endpoints.js.map +1 -0
- package/dist/lib/provider-metadata.d.ts +1 -1
- package/dist/lib/provider-metadata.d.ts.map +1 -1
- package/dist/lib/provider-metadata.js +29 -0
- package/dist/lib/provider-metadata.js.map +1 -1
- package/dist/lib/quota-render-data.d.ts +1 -0
- package/dist/lib/quota-render-data.d.ts.map +1 -1
- package/dist/lib/quota-render-data.js +13 -4
- package/dist/lib/quota-render-data.js.map +1 -1
- package/dist/lib/quota-runtime-context.d.ts.map +1 -1
- package/dist/lib/quota-runtime-context.js +3 -0
- package/dist/lib/quota-runtime-context.js.map +1 -1
- package/dist/lib/quota-stats.d.ts +4 -0
- package/dist/lib/quota-stats.d.ts.map +1 -1
- package/dist/lib/quota-stats.js +21 -5
- 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 +124 -45
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/session-tokens-format.d.ts.map +1 -1
- package/dist/lib/session-tokens-format.js +19 -5
- package/dist/lib/session-tokens-format.js.map +1 -1
- package/dist/lib/session-tokens.d.ts.map +1 -1
- package/dist/lib/session-tokens.js +2 -0
- package/dist/lib/session-tokens.js.map +1 -1
- package/dist/lib/tui-compact-format.d.ts.map +1 -1
- package/dist/lib/tui-compact-format.js +6 -1
- package/dist/lib/tui-compact-format.js.map +1 -1
- package/dist/lib/types.d.ts +6 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/zhipu-auth.d.ts +38 -0
- package/dist/lib/zhipu-auth.d.ts.map +1 -0
- package/dist/lib/zhipu-auth.js +107 -0
- package/dist/lib/zhipu-auth.js.map +1 -0
- package/dist/lib/zhipu.d.ts +11 -0
- package/dist/lib/zhipu.d.ts.map +1 -0
- package/dist/lib/zhipu.js +87 -0
- package/dist/lib/zhipu.js.map +1 -0
- package/dist/providers/minimax-coding-plan.d.ts +4 -0
- package/dist/providers/minimax-coding-plan.d.ts.map +1 -1
- package/dist/providers/minimax-coding-plan.js +106 -56
- package/dist/providers/minimax-coding-plan.js.map +1 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +4 -1
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/zhipu.d.ts +8 -0
- package/dist/providers/zhipu.d.ts.map +1 -0
- package/dist/providers/zhipu.js +79 -0
- package/dist/providers/zhipu.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { extractProviderOptionsApiKey, getApiKeyCheckedPaths, getFirstAuthEntryValue, getGlobalOpencodeConfigCandidatePaths, resolveApiKeyFromEnvAndConfig, } from "./api-key-resolver.js";
|
|
2
|
+
import { sanitizeDisplayText } from "./display-sanitize.js";
|
|
3
|
+
import { getAuthPaths, readAuthFileCached } from "./opencode-auth.js";
|
|
4
|
+
export const DEFAULT_ZHIPU_AUTH_CACHE_MAX_AGE_MS = 5_000;
|
|
5
|
+
const ZHIPU_AUTH_KEYS = ["zhipu-coding-plan"];
|
|
6
|
+
const ZHIPU_PROVIDER_KEYS = ["zhipu", "zhipu-coding-plan", "glm-coding-plan"];
|
|
7
|
+
const ALLOWED_ZHIPU_ENV_VARS = ["ZHIPU_API_KEY", "ZHIPU_CODING_PLAN_API_KEY"];
|
|
8
|
+
export { getGlobalOpencodeConfigCandidatePaths as getOpencodeConfigCandidatePaths } from "./api-key-resolver.js";
|
|
9
|
+
function getZhipuAuthEntry(auth) {
|
|
10
|
+
return getFirstAuthEntryValue(auth, ZHIPU_AUTH_KEYS);
|
|
11
|
+
}
|
|
12
|
+
function isZhipuAuthData(value) {
|
|
13
|
+
return value !== null && typeof value === "object";
|
|
14
|
+
}
|
|
15
|
+
function sanitizeZhipuAuthValue(value) {
|
|
16
|
+
const sanitized = sanitizeDisplayText(value).replace(/\s+/g, " ").trim();
|
|
17
|
+
return (sanitized || "unknown").slice(0, 120);
|
|
18
|
+
}
|
|
19
|
+
export function resolveZhipuAuth(auth) {
|
|
20
|
+
const zhipu = getZhipuAuthEntry(auth);
|
|
21
|
+
if (zhipu === null || zhipu === undefined) {
|
|
22
|
+
return { state: "none" };
|
|
23
|
+
}
|
|
24
|
+
if (!isZhipuAuthData(zhipu)) {
|
|
25
|
+
return { state: "invalid", error: "Zhipu auth entry has invalid shape" };
|
|
26
|
+
}
|
|
27
|
+
if (typeof zhipu.type !== "string") {
|
|
28
|
+
return { state: "invalid", error: "Zhipu auth entry present but type is missing or invalid" };
|
|
29
|
+
}
|
|
30
|
+
if (zhipu.type !== "api") {
|
|
31
|
+
return {
|
|
32
|
+
state: "invalid",
|
|
33
|
+
error: `Unsupported Zhipu auth type: "${sanitizeZhipuAuthValue(zhipu.type)}"`,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const key = typeof zhipu.key === "string" ? zhipu.key.trim() : "";
|
|
37
|
+
if (!key) {
|
|
38
|
+
return { state: "invalid", error: "Zhipu auth entry present but key is empty" };
|
|
39
|
+
}
|
|
40
|
+
return { state: "configured", apiKey: key };
|
|
41
|
+
}
|
|
42
|
+
async function resolveZhipuAuthWithSource(params) {
|
|
43
|
+
const resolvedFromEnvOrConfig = await resolveApiKeyFromEnvAndConfig({
|
|
44
|
+
envVars: [
|
|
45
|
+
{ name: "ZHIPU_API_KEY", source: "env:ZHIPU_API_KEY" },
|
|
46
|
+
{
|
|
47
|
+
name: "ZHIPU_CODING_PLAN_API_KEY",
|
|
48
|
+
source: "env:ZHIPU_CODING_PLAN_API_KEY",
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
extractFromConfig: (config) => extractProviderOptionsApiKey(config, {
|
|
52
|
+
providerKeys: ZHIPU_PROVIDER_KEYS,
|
|
53
|
+
allowedEnvVars: ALLOWED_ZHIPU_ENV_VARS,
|
|
54
|
+
}),
|
|
55
|
+
configJsonSource: "opencode.json",
|
|
56
|
+
configJsoncSource: "opencode.jsonc",
|
|
57
|
+
getConfigCandidates: getGlobalOpencodeConfigCandidatePaths,
|
|
58
|
+
});
|
|
59
|
+
if (resolvedFromEnvOrConfig) {
|
|
60
|
+
return {
|
|
61
|
+
auth: { state: "configured", apiKey: resolvedFromEnvOrConfig.key },
|
|
62
|
+
source: resolvedFromEnvOrConfig.source,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const maxAgeMs = Math.max(0, params?.maxAgeMs ?? DEFAULT_ZHIPU_AUTH_CACHE_MAX_AGE_MS);
|
|
66
|
+
const authData = await readAuthFileCached({ maxAgeMs });
|
|
67
|
+
const auth = resolveZhipuAuth(authData);
|
|
68
|
+
return {
|
|
69
|
+
auth,
|
|
70
|
+
source: auth.state === "none" ? null : "auth.json",
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export async function resolveZhipuAuthCached(params) {
|
|
74
|
+
return (await resolveZhipuAuthWithSource(params)).auth;
|
|
75
|
+
}
|
|
76
|
+
export async function getZhipuAuthDiagnostics(params) {
|
|
77
|
+
const { auth, source } = await resolveZhipuAuthWithSource(params);
|
|
78
|
+
const checkedPaths = getApiKeyCheckedPaths({
|
|
79
|
+
envVarNames: [...ALLOWED_ZHIPU_ENV_VARS],
|
|
80
|
+
getConfigCandidates: getGlobalOpencodeConfigCandidatePaths,
|
|
81
|
+
});
|
|
82
|
+
const authPaths = getAuthPaths();
|
|
83
|
+
if (auth.state === "none") {
|
|
84
|
+
return {
|
|
85
|
+
state: "none",
|
|
86
|
+
source: null,
|
|
87
|
+
checkedPaths,
|
|
88
|
+
authPaths,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (auth.state === "invalid") {
|
|
92
|
+
return {
|
|
93
|
+
state: "invalid",
|
|
94
|
+
source: "auth.json",
|
|
95
|
+
checkedPaths,
|
|
96
|
+
authPaths,
|
|
97
|
+
error: auth.error,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
state: "configured",
|
|
102
|
+
source: source ?? "auth.json",
|
|
103
|
+
checkedPaths,
|
|
104
|
+
authPaths,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=zhipu-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zhipu-auth.js","sourceRoot":"","sources":["../../src/lib/zhipu-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zhipu quota fetcher
|
|
3
|
+
*
|
|
4
|
+
* Uses OpenCode's auth.json (zhipu-coding-plan) and queries:
|
|
5
|
+
* https://bigmodel.cn/api/monitor/usage/quota/limit
|
|
6
|
+
*/
|
|
7
|
+
import type { ZaiResult } from "./types.js";
|
|
8
|
+
export declare function queryZhipuQuota(options?: {
|
|
9
|
+
requestTimeoutMs?: number;
|
|
10
|
+
}): Promise<ZaiResult>;
|
|
11
|
+
//# sourceMappingURL=zhipu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zhipu.d.ts","sourceRoot":"","sources":["../../src/lib/zhipu.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,SAAS,EAEV,MAAM,YAAY,CAAC;AAKpB,wBAAsB,eAAe,CAAC,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CA+ErG"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zhipu quota fetcher
|
|
3
|
+
*
|
|
4
|
+
* Uses OpenCode's auth.json (zhipu-coding-plan) and queries:
|
|
5
|
+
* https://bigmodel.cn/api/monitor/usage/quota/limit
|
|
6
|
+
*/
|
|
7
|
+
import { clampPercent } from "./format-utils.js";
|
|
8
|
+
import { sanitizeDisplaySnippet, sanitizeDisplayText } from "./display-sanitize.js";
|
|
9
|
+
import { fetchWithTimeout } from "./http.js";
|
|
10
|
+
import { resolveZhipuAuthCached } from "./zhipu-auth.js";
|
|
11
|
+
const ZHIPU_QUOTA_URL = "https://bigmodel.cn/api/monitor/usage/quota/limit";
|
|
12
|
+
export async function queryZhipuQuota(options = {}) {
|
|
13
|
+
const auth = await resolveZhipuAuthCached();
|
|
14
|
+
if (auth.state === "none")
|
|
15
|
+
return null;
|
|
16
|
+
if (auth.state === "invalid") {
|
|
17
|
+
return { success: false, error: auth.error };
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const headers = {
|
|
21
|
+
Authorization: auth.apiKey,
|
|
22
|
+
"User-Agent": "OpenCode-Quota-Toast/1.0",
|
|
23
|
+
"Content-Type": "application/json",
|
|
24
|
+
};
|
|
25
|
+
const resp = await fetchWithTimeout(ZHIPU_QUOTA_URL, { headers }, options.requestTimeoutMs);
|
|
26
|
+
if (!resp.ok) {
|
|
27
|
+
const text = await resp.text();
|
|
28
|
+
return {
|
|
29
|
+
success: false,
|
|
30
|
+
error: `Zhipu API error ${resp.status}: ${sanitizeDisplaySnippet(text, 120)}`,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const data = (await resp.json());
|
|
34
|
+
const limits = data.data.limits;
|
|
35
|
+
if (!limits || !Array.isArray(limits)) {
|
|
36
|
+
return { success: false, error: "Invalid quota data" };
|
|
37
|
+
}
|
|
38
|
+
let fiveHourWindow;
|
|
39
|
+
let weeklyWindow;
|
|
40
|
+
let mcpWindow;
|
|
41
|
+
for (const limit of limits) {
|
|
42
|
+
const percentRemaining = clampPercent(100 - limit.percentage);
|
|
43
|
+
let resetTimeIso;
|
|
44
|
+
if (limit.nextResetTime) {
|
|
45
|
+
const ms = Math.round(limit.nextResetTime);
|
|
46
|
+
if (Number.isFinite(ms) && ms > 0) {
|
|
47
|
+
resetTimeIso = new Date(ms).toISOString();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const window = { percentRemaining, resetTimeIso };
|
|
51
|
+
if (limit.type === "TOKENS_LIMIT") {
|
|
52
|
+
if (limit.unit === 3) {
|
|
53
|
+
// unit 3 is the 5-hour token window (Standard Lite/Pro/Max).
|
|
54
|
+
fiveHourWindow = window;
|
|
55
|
+
}
|
|
56
|
+
else if (limit.unit === 6) {
|
|
57
|
+
// unit 6 is the weekly token window.
|
|
58
|
+
weeklyWindow = window;
|
|
59
|
+
}
|
|
60
|
+
else if (limit.unit === 4) {
|
|
61
|
+
// unit 4 is daily. Do not surface it as weekly in the current UI/report shape.
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else if (limit.type === "TIME_LIMIT") {
|
|
66
|
+
// TIME_LIMIT (unit 5) is typically the Monthly MCP limit
|
|
67
|
+
mcpWindow = window;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
success: true,
|
|
72
|
+
label: "Zhipu",
|
|
73
|
+
windows: {
|
|
74
|
+
fiveHour: fiveHourWindow,
|
|
75
|
+
weekly: weeklyWindow,
|
|
76
|
+
mcp: mcpWindow,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
return {
|
|
82
|
+
success: false,
|
|
83
|
+
error: sanitizeDisplayText(err instanceof Error ? err.message : String(err)),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=zhipu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zhipu.js","sourceRoot":"","sources":["../../src/lib/zhipu.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Fetches quota data from MiniMax API for coding plan users.
|
|
5
5
|
*/
|
|
6
6
|
import type { QuotaProvider } from "../lib/entries.js";
|
|
7
|
+
import { type MiniMaxQuotaEndpointId } from "../lib/minimax-endpoints.js";
|
|
7
8
|
import type { MiniMaxResult } from "../lib/types.js";
|
|
8
9
|
/**
|
|
9
10
|
* Fetch MiniMax coding plan quota from the API.
|
|
@@ -16,6 +17,9 @@ import type { MiniMaxResult } from "../lib/types.js";
|
|
|
16
17
|
*/
|
|
17
18
|
export declare function queryMiniMaxQuota(apiKey: string, options?: {
|
|
18
19
|
requestTimeoutMs?: number;
|
|
20
|
+
endpoint?: MiniMaxQuotaEndpointId;
|
|
21
|
+
label?: string;
|
|
19
22
|
}): Promise<MiniMaxResult>;
|
|
20
23
|
export declare const minimaxCodingPlanProvider: QuotaProvider;
|
|
24
|
+
export declare const minimaxChinaCodingPlanProvider: QuotaProvider;
|
|
21
25
|
//# sourceMappingURL=minimax-coding-plan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimax-coding-plan.d.ts","sourceRoot":"","sources":["../../src/providers/minimax-coding-plan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"minimax-coding-plan.d.ts","sourceRoot":"","sources":["../../src/providers/minimax-coding-plan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,aAAa,EAId,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,6BAA6B,CAAC;AAQrC,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,iBAAiB,CAAC;AAwJzE;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7F,OAAO,CAAC,aAAa,CAAC,CAgDxB;AAyGD,eAAO,MAAM,yBAAyB,EAAE,aAKtC,CAAC;AAEH,eAAO,MAAM,8BAA8B,EAAE,aAK3C,CAAC"}
|
|
@@ -3,14 +3,15 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Fetches quota data from MiniMax API for coding plan users.
|
|
5
5
|
*/
|
|
6
|
-
import { DEFAULT_MINIMAX_AUTH_CACHE_MAX_AGE_MS, resolveMiniMaxAuthCached, } from "../lib/minimax-auth.js";
|
|
6
|
+
import { DEFAULT_MINIMAX_AUTH_CACHE_MAX_AGE_MS, resolveMiniMaxAuthCached, resolveMiniMaxChinaAuthCached, } from "../lib/minimax-auth.js";
|
|
7
|
+
import { getMiniMaxQuotaEndpoint, } from "../lib/minimax-endpoints.js";
|
|
7
8
|
import { sanitizeDisplayText } from "../lib/display-sanitize.js";
|
|
8
9
|
import { fetchWithTimeout } from "../lib/http.js";
|
|
9
|
-
import { isCanonicalProviderAvailable } from "../lib/provider-availability.js";
|
|
10
|
+
import { isAnyProviderIdAvailable, isCanonicalProviderAvailable, } from "../lib/provider-availability.js";
|
|
10
11
|
import { normalizeQuotaProviderId } from "../lib/provider-metadata.js";
|
|
11
12
|
import { attemptedErrorResult, attemptedResult, notAttemptedResult } from "./result-helpers.js";
|
|
12
|
-
const MINIMAX_API_URL = "https://api.minimax.io/v1/api/openplatform/coding_plan/remains";
|
|
13
13
|
const MINIMAX_PROVIDER_LABEL = "MiniMax Coding Plan";
|
|
14
|
+
const MINIMAX_CHINA_PROVIDER_LABEL = "MiniMax Coding Plan (CN)";
|
|
14
15
|
const USER_AGENT = "OpenCode-Quota-Toast/1.0";
|
|
15
16
|
const MINIMAX_WINDOW_SPECS = [
|
|
16
17
|
{
|
|
@@ -36,8 +37,8 @@ function isFiniteNumber(value) {
|
|
|
36
37
|
/**
|
|
37
38
|
* Type guard that validates a value is a well-formed MiniMax model record.
|
|
38
39
|
*
|
|
39
|
-
* Checks for `model_name` (string) and
|
|
40
|
-
* `NaN` arithmetic when the API response shape is unexpected.
|
|
40
|
+
* Checks for `model_name` (string) and the 5-hour/request quota numeric fields
|
|
41
|
+
* to prevent `NaN` arithmetic when the API response shape is unexpected.
|
|
41
42
|
*/
|
|
42
43
|
function isMiniMaxModelRecord(value) {
|
|
43
44
|
if (value === null || typeof value !== "object" || !("model_name" in value))
|
|
@@ -46,10 +47,7 @@ function isMiniMaxModelRecord(value) {
|
|
|
46
47
|
return (typeof v.model_name === "string" &&
|
|
47
48
|
isFiniteNumber(v.current_interval_total_count) &&
|
|
48
49
|
isFiniteNumber(v.current_interval_usage_count) &&
|
|
49
|
-
isFiniteNumber(v.remains_time)
|
|
50
|
-
isFiniteNumber(v.current_weekly_total_count) &&
|
|
51
|
-
isFiniteNumber(v.current_weekly_usage_count) &&
|
|
52
|
-
isFiniteNumber(v.weekly_remains_time));
|
|
50
|
+
isFiniteNumber(v.remains_time));
|
|
53
51
|
}
|
|
54
52
|
function roundPercent(value) {
|
|
55
53
|
return Math.min(100, Math.round(value));
|
|
@@ -65,26 +63,31 @@ function isMiniMaxCodingModelName(modelName) {
|
|
|
65
63
|
const normalized = modelName.trim().toLowerCase();
|
|
66
64
|
return normalized === "minimax-m*" || normalized.startsWith("minimax-m");
|
|
67
65
|
}
|
|
68
|
-
function buildMiniMaxEntry(model, spec) {
|
|
66
|
+
function buildMiniMaxEntry(model, spec, providerLabel) {
|
|
69
67
|
const total = spec.getTotal(model);
|
|
68
|
+
const rawRemaining = spec.getRemaining(model);
|
|
69
|
+
const resetOffsetMs = spec.getResetOffsetMs(model);
|
|
70
|
+
if (!isFiniteNumber(total) || !isFiniteNumber(rawRemaining) || !isFiniteNumber(resetOffsetMs)) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
70
73
|
if (total <= 0)
|
|
71
74
|
return null;
|
|
72
|
-
const remaining = clampRemaining(total,
|
|
75
|
+
const remaining = clampRemaining(total, rawRemaining);
|
|
73
76
|
const used = total - remaining;
|
|
74
77
|
const percentRemaining = roundPercent((remaining / total) * 100);
|
|
75
78
|
return {
|
|
76
79
|
window: spec.window,
|
|
77
|
-
name: spec.name,
|
|
78
|
-
group:
|
|
80
|
+
name: spec.name.replace(MINIMAX_PROVIDER_LABEL, providerLabel),
|
|
81
|
+
group: providerLabel,
|
|
79
82
|
label: spec.label,
|
|
80
83
|
right: `${used}/${total}`,
|
|
81
84
|
percentRemaining,
|
|
82
|
-
resetTimeIso: new Date(Date.now() + Math.max(0,
|
|
85
|
+
resetTimeIso: new Date(Date.now() + Math.max(0, resetOffsetMs)).toISOString(),
|
|
83
86
|
};
|
|
84
87
|
}
|
|
85
|
-
function buildMiniMaxEntries(model) {
|
|
88
|
+
function buildMiniMaxEntries(model, providerLabel = MINIMAX_PROVIDER_LABEL) {
|
|
86
89
|
return MINIMAX_WINDOW_SPECS.flatMap((spec) => {
|
|
87
|
-
const entry = buildMiniMaxEntry(model, spec);
|
|
90
|
+
const entry = buildMiniMaxEntry(model, spec, providerLabel);
|
|
88
91
|
return entry ? [entry] : [];
|
|
89
92
|
});
|
|
90
93
|
}
|
|
@@ -116,8 +119,9 @@ function selectCanonicalMiniMaxModel(models) {
|
|
|
116
119
|
* the API returns successfully but no models have reportable quota.
|
|
117
120
|
*/
|
|
118
121
|
export async function queryMiniMaxQuota(apiKey, options = {}) {
|
|
122
|
+
const endpoint = getMiniMaxQuotaEndpoint(options.endpoint ?? "international");
|
|
119
123
|
try {
|
|
120
|
-
const response = await fetchWithTimeout(
|
|
124
|
+
const response = await fetchWithTimeout(endpoint.quotaUrl, {
|
|
121
125
|
method: "GET",
|
|
122
126
|
headers: {
|
|
123
127
|
Authorization: `Bearer ${apiKey}`,
|
|
@@ -140,7 +144,9 @@ export async function queryMiniMaxQuota(apiKey, options = {}) {
|
|
|
140
144
|
}
|
|
141
145
|
const matchingModels = (payload.model_remains ?? []).filter((model) => isMiniMaxModelRecord(model) && isMiniMaxCodingModelName(model.model_name));
|
|
142
146
|
const canonicalModel = selectCanonicalMiniMaxModel(matchingModels);
|
|
143
|
-
const entries = canonicalModel
|
|
147
|
+
const entries = canonicalModel
|
|
148
|
+
? buildMiniMaxEntries(canonicalModel, options.label ?? MINIMAX_PROVIDER_LABEL)
|
|
149
|
+
: [];
|
|
144
150
|
return { success: true, entries };
|
|
145
151
|
}
|
|
146
152
|
catch (err) {
|
|
@@ -150,43 +156,87 @@ export async function queryMiniMaxQuota(apiKey, options = {}) {
|
|
|
150
156
|
};
|
|
151
157
|
}
|
|
152
158
|
}
|
|
153
|
-
|
|
159
|
+
function isMiniMaxChinaExplicitlyEnabled(context) {
|
|
160
|
+
if (!context || context.enabledProviders === "auto")
|
|
161
|
+
return false;
|
|
162
|
+
return context.enabledProviders.some((providerId) => normalizeQuotaProviderId(providerId) === "minimax-china-coding-plan");
|
|
163
|
+
}
|
|
164
|
+
function matchesMiniMaxCurrentModel(model, spec, context) {
|
|
165
|
+
const [provider = "", modelId] = model.toLowerCase().split("/", 2);
|
|
166
|
+
if (!modelId || !isMiniMaxCodingModelName(modelId))
|
|
167
|
+
return false;
|
|
168
|
+
const normalizedProvider = normalizeQuotaProviderId(provider);
|
|
169
|
+
if (spec.id === "minimax-coding-plan") {
|
|
170
|
+
return normalizedProvider === "minimax-coding-plan";
|
|
171
|
+
}
|
|
172
|
+
return (normalizedProvider === "minimax-china-coding-plan" ||
|
|
173
|
+
(provider === "minimax" && isMiniMaxChinaExplicitlyEnabled(context)));
|
|
174
|
+
}
|
|
175
|
+
async function isMiniMaxProviderRuntimeAvailable(ctx, spec) {
|
|
176
|
+
const providerAvailable = await isCanonicalProviderAvailable({
|
|
177
|
+
ctx,
|
|
178
|
+
providerId: spec.id,
|
|
179
|
+
fallbackOnError: false,
|
|
180
|
+
});
|
|
181
|
+
if (providerAvailable)
|
|
182
|
+
return true;
|
|
183
|
+
if (spec.id !== "minimax-china-coding-plan" || !isMiniMaxChinaExplicitlyEnabled(ctx.config)) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
return isAnyProviderIdAvailable({
|
|
187
|
+
ctx,
|
|
188
|
+
candidateIds: ["minimax"],
|
|
189
|
+
fallbackOnError: false,
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
function createMiniMaxProvider(spec) {
|
|
193
|
+
return {
|
|
194
|
+
id: spec.id,
|
|
195
|
+
async isAvailable(ctx) {
|
|
196
|
+
const providerAvailable = await isMiniMaxProviderRuntimeAvailable(ctx, spec);
|
|
197
|
+
if (!providerAvailable) {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
const auth = await spec.resolveAuthCached({
|
|
201
|
+
maxAgeMs: DEFAULT_MINIMAX_AUTH_CACHE_MAX_AGE_MS,
|
|
202
|
+
});
|
|
203
|
+
return auth.state === "configured" || auth.state === "invalid";
|
|
204
|
+
},
|
|
205
|
+
matchesCurrentModel(model, context) {
|
|
206
|
+
return matchesMiniMaxCurrentModel(model, spec, context);
|
|
207
|
+
},
|
|
208
|
+
async fetch(ctx) {
|
|
209
|
+
const auth = await spec.resolveAuthCached({
|
|
210
|
+
maxAgeMs: DEFAULT_MINIMAX_AUTH_CACHE_MAX_AGE_MS,
|
|
211
|
+
});
|
|
212
|
+
if (auth.state === "none") {
|
|
213
|
+
return notAttemptedResult();
|
|
214
|
+
}
|
|
215
|
+
if (auth.state === "invalid") {
|
|
216
|
+
return attemptedErrorResult(spec.label, auth.error);
|
|
217
|
+
}
|
|
218
|
+
const result = await queryMiniMaxQuota(auth.apiKey, {
|
|
219
|
+
endpoint: spec.endpoint,
|
|
220
|
+
label: spec.label,
|
|
221
|
+
requestTimeoutMs: ctx.config?.requestTimeoutMs,
|
|
222
|
+
});
|
|
223
|
+
if (!result.success) {
|
|
224
|
+
return attemptedErrorResult(spec.label, result.error);
|
|
225
|
+
}
|
|
226
|
+
return attemptedResult(result.entries);
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
export const minimaxCodingPlanProvider = createMiniMaxProvider({
|
|
154
231
|
id: "minimax-coding-plan",
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
maxAgeMs: DEFAULT_MINIMAX_AUTH_CACHE_MAX_AGE_MS,
|
|
166
|
-
});
|
|
167
|
-
return auth.state === "configured" || auth.state === "invalid";
|
|
168
|
-
},
|
|
169
|
-
matchesCurrentModel(model) {
|
|
170
|
-
const [provider, modelId] = model.toLowerCase().split("/", 2);
|
|
171
|
-
return normalizeQuotaProviderId(provider) === "minimax-coding-plan" && Boolean(modelId) && isMiniMaxCodingModelName(modelId);
|
|
172
|
-
},
|
|
173
|
-
async fetch(ctx) {
|
|
174
|
-
const auth = await resolveMiniMaxAuthCached({
|
|
175
|
-
maxAgeMs: DEFAULT_MINIMAX_AUTH_CACHE_MAX_AGE_MS,
|
|
176
|
-
});
|
|
177
|
-
if (auth.state === "none") {
|
|
178
|
-
return notAttemptedResult();
|
|
179
|
-
}
|
|
180
|
-
if (auth.state === "invalid") {
|
|
181
|
-
return attemptedErrorResult(MINIMAX_PROVIDER_LABEL, auth.error);
|
|
182
|
-
}
|
|
183
|
-
const result = await queryMiniMaxQuota(auth.apiKey, {
|
|
184
|
-
requestTimeoutMs: ctx.config?.requestTimeoutMs,
|
|
185
|
-
});
|
|
186
|
-
if (!result.success) {
|
|
187
|
-
return attemptedErrorResult(MINIMAX_PROVIDER_LABEL, result.error);
|
|
188
|
-
}
|
|
189
|
-
return attemptedResult(result.entries);
|
|
190
|
-
},
|
|
191
|
-
};
|
|
232
|
+
label: MINIMAX_PROVIDER_LABEL,
|
|
233
|
+
endpoint: "international",
|
|
234
|
+
resolveAuthCached: resolveMiniMaxAuthCached,
|
|
235
|
+
});
|
|
236
|
+
export const minimaxChinaCodingPlanProvider = createMiniMaxProvider({
|
|
237
|
+
id: "minimax-china-coding-plan",
|
|
238
|
+
label: MINIMAX_CHINA_PROVIDER_LABEL,
|
|
239
|
+
endpoint: "china",
|
|
240
|
+
resolveAuthCached: resolveMiniMaxChinaAuthCached,
|
|
241
|
+
});
|
|
192
242
|
//# sourceMappingURL=minimax-coding-plan.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimax-coding-plan.js","sourceRoot":"","sources":["../../src/providers/minimax-coding-plan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
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;AAsBvD,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAsB9C"}
|
|
@@ -15,8 +15,9 @@ import { crofProvider } from "./crof.js";
|
|
|
15
15
|
import { qwenCodeProvider } from "./qwen-code.js";
|
|
16
16
|
import { alibabaCodingPlanProvider } from "./alibaba-coding-plan.js";
|
|
17
17
|
import { zaiProvider } from "./zai.js";
|
|
18
|
+
import { zhipuProvider } from "./zhipu.js";
|
|
18
19
|
import { nanoGptProvider } from "./nanogpt.js";
|
|
19
|
-
import { minimaxCodingPlanProvider } from "./minimax-coding-plan.js";
|
|
20
|
+
import { minimaxChinaCodingPlanProvider, minimaxCodingPlanProvider, } from "./minimax-coding-plan.js";
|
|
20
21
|
import { opencodeGoProvider } from "./opencode-go.js";
|
|
21
22
|
import { kimiCodeProvider } from "./kimi-code.js";
|
|
22
23
|
export function getProviders() {
|
|
@@ -34,8 +35,10 @@ export function getProviders() {
|
|
|
34
35
|
googleAntigravityProvider,
|
|
35
36
|
googleGeminiCliProvider,
|
|
36
37
|
zaiProvider,
|
|
38
|
+
zhipuProvider,
|
|
37
39
|
nanoGptProvider,
|
|
38
40
|
minimaxCodingPlanProvider,
|
|
41
|
+
minimaxChinaCodingPlanProvider,
|
|
39
42
|
kimiCodeProvider,
|
|
40
43
|
opencodeGoProvider,
|
|
41
44
|
];
|
|
@@ -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,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,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,
|
|
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,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,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,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,UAAU,YAAY;IAC1B,oDAAoD;IACpD,OAAO;QACL,iBAAiB;QACjB,eAAe;QACf,cAAc;QACd,cAAc;QACd,gBAAgB;QAChB,yBAAyB;QACzB,iBAAiB;QACjB,cAAc;QACd,YAAY;QACZ,yBAAyB;QACzB,uBAAuB;QACvB,WAAW;QACX,aAAa;QACb,eAAe;QACf,yBAAyB;QACzB,8BAA8B;QAC9B,gBAAgB;QAChB,kBAAkB;KACnB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zhipu.d.ts","sourceRoot":"","sources":["../../src/providers/zhipu.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,aAAa,EAId,MAAM,mBAAmB,CAAC;AAS3B,eAAO,MAAM,aAAa,EAAE,aAgF3B,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zhipu provider wrapper.
|
|
3
|
+
*
|
|
4
|
+
* Normalizes Zhipu quota into generic toast entries.
|
|
5
|
+
*/
|
|
6
|
+
import { queryZhipuQuota } from "../lib/zhipu.js";
|
|
7
|
+
import { isCanonicalProviderAvailable } from "../lib/provider-availability.js";
|
|
8
|
+
import { DEFAULT_ZHIPU_AUTH_CACHE_MAX_AGE_MS, resolveZhipuAuthCached, } from "../lib/zhipu-auth.js";
|
|
9
|
+
import { attemptedErrorResult, attemptedResult, notAttemptedResult } from "./result-helpers.js";
|
|
10
|
+
export const zhipuProvider = {
|
|
11
|
+
id: "zhipu",
|
|
12
|
+
async isAvailable(ctx) {
|
|
13
|
+
const providerAvailable = await isCanonicalProviderAvailable({
|
|
14
|
+
ctx,
|
|
15
|
+
providerId: "zhipu",
|
|
16
|
+
fallbackOnError: false,
|
|
17
|
+
});
|
|
18
|
+
if (!providerAvailable) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
const auth = await resolveZhipuAuthCached({
|
|
22
|
+
maxAgeMs: DEFAULT_ZHIPU_AUTH_CACHE_MAX_AGE_MS,
|
|
23
|
+
});
|
|
24
|
+
return auth.state === "configured" || auth.state === "invalid";
|
|
25
|
+
},
|
|
26
|
+
matchesCurrentModel(model) {
|
|
27
|
+
const lower = model.toLowerCase();
|
|
28
|
+
const provider = lower.split("/")[0];
|
|
29
|
+
return !!provider && (provider.includes("zhipu") || provider === "glm-coding-plan");
|
|
30
|
+
},
|
|
31
|
+
async fetch(ctx) {
|
|
32
|
+
const result = await queryZhipuQuota({ requestTimeoutMs: ctx.config?.requestTimeoutMs });
|
|
33
|
+
if (!result) {
|
|
34
|
+
return notAttemptedResult();
|
|
35
|
+
}
|
|
36
|
+
if (!result.success) {
|
|
37
|
+
return attemptedErrorResult("Zhipu", result.error);
|
|
38
|
+
}
|
|
39
|
+
const entries = [];
|
|
40
|
+
const group = result.label;
|
|
41
|
+
const fiveHour = result.windows.fiveHour;
|
|
42
|
+
if (fiveHour) {
|
|
43
|
+
entries.push({
|
|
44
|
+
name: `${group} 5h`,
|
|
45
|
+
group,
|
|
46
|
+
label: "5h:",
|
|
47
|
+
percentRemaining: fiveHour.percentRemaining,
|
|
48
|
+
resetTimeIso: fiveHour.resetTimeIso,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
const weekly = result.windows.weekly;
|
|
52
|
+
if (weekly) {
|
|
53
|
+
entries.push({
|
|
54
|
+
name: `${group} Weekly`,
|
|
55
|
+
group,
|
|
56
|
+
label: "Weekly:",
|
|
57
|
+
percentRemaining: weekly.percentRemaining,
|
|
58
|
+
resetTimeIso: weekly.resetTimeIso,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
const mcp = result.windows.mcp;
|
|
62
|
+
if (mcp) {
|
|
63
|
+
entries.push({
|
|
64
|
+
name: `${group} MCP`,
|
|
65
|
+
group,
|
|
66
|
+
label: "MCP:",
|
|
67
|
+
percentRemaining: mcp.percentRemaining,
|
|
68
|
+
resetTimeIso: mcp.resetTimeIso,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (entries.length === 0) {
|
|
72
|
+
entries.push({ name: result.label, percentRemaining: 0 });
|
|
73
|
+
}
|
|
74
|
+
return attemptedResult(entries, [], {
|
|
75
|
+
singleWindowDisplayName: result.label,
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=zhipu.js.map
|