@slkiser/opencode-quota 4.0.1 → 4.2.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 +94 -28
- package/dist/bin/opencode-quota.d.ts.map +1 -1
- package/dist/bin/opencode-quota.js +8 -0
- package/dist/bin/opencode-quota.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/anthropic.d.ts.map +1 -1
- package/dist/lib/anthropic.js +78 -72
- package/dist/lib/anthropic.js.map +1 -1
- package/dist/lib/api-key-resolver.d.ts +73 -22
- package/dist/lib/api-key-resolver.d.ts.map +1 -1
- package/dist/lib/api-key-resolver.js +116 -39
- package/dist/lib/api-key-resolver.js.map +1 -1
- package/dist/lib/atomic-json.d.ts +3 -1
- package/dist/lib/atomic-json.d.ts.map +1 -1
- package/dist/lib/atomic-json.js +23 -9
- package/dist/lib/atomic-json.js.map +1 -1
- package/dist/lib/chutes-config.d.ts.map +1 -1
- package/dist/lib/chutes-config.js +2 -4
- package/dist/lib/chutes-config.js.map +1 -1
- package/dist/lib/chutes.d.ts.map +1 -1
- package/dist/lib/chutes.js +28 -23
- package/dist/lib/chutes.js.map +1 -1
- package/dist/lib/cli-show.d.ts +9 -0
- package/dist/lib/cli-show.d.ts.map +1 -1
- package/dist/lib/cli-show.js +34 -5
- package/dist/lib/cli-show.js.map +1 -1
- package/dist/lib/cli-status.d.ts +8 -0
- package/dist/lib/cli-status.d.ts.map +1 -0
- package/dist/lib/cli-status.js +125 -0
- package/dist/lib/cli-status.js.map +1 -0
- package/dist/lib/config.d.ts +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +47 -12
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/copilot.d.ts +11 -5
- package/dist/lib/copilot.d.ts.map +1 -1
- package/dist/lib/copilot.js +378 -79
- package/dist/lib/copilot.js.map +1 -1
- package/dist/lib/deepseek-auth.d.ts.map +1 -1
- package/dist/lib/deepseek-auth.js +3 -7
- package/dist/lib/deepseek-auth.js.map +1 -1
- package/dist/lib/deepseek.d.ts.map +1 -1
- package/dist/lib/deepseek.js +22 -17
- package/dist/lib/deepseek.js.map +1 -1
- package/dist/lib/display-sanitize.d.ts.map +1 -1
- package/dist/lib/display-sanitize.js +8 -0
- package/dist/lib/display-sanitize.js.map +1 -1
- package/dist/lib/entries.d.ts +14 -0
- package/dist/lib/entries.d.ts.map +1 -1
- package/dist/lib/entries.js.map +1 -1
- package/dist/lib/format-utils.d.ts +7 -0
- package/dist/lib/format-utils.d.ts.map +1 -1
- package/dist/lib/format-utils.js +18 -0
- package/dist/lib/format-utils.js.map +1 -1
- package/dist/lib/format.d.ts +1 -0
- package/dist/lib/format.d.ts.map +1 -1
- package/dist/lib/format.js +22 -7
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/glm-coding-plan.d.ts +18 -0
- package/dist/lib/glm-coding-plan.d.ts.map +1 -0
- package/dist/lib/glm-coding-plan.js +68 -0
- package/dist/lib/glm-coding-plan.js.map +1 -0
- package/dist/lib/google-agy-companion.d.ts +4 -25
- package/dist/lib/google-agy-companion.d.ts.map +1 -1
- package/dist/lib/google-agy-companion.js +47 -272
- package/dist/lib/google-agy-companion.js.map +1 -1
- package/dist/lib/google-agy.d.ts.map +1 -1
- package/dist/lib/google-agy.js +204 -111
- package/dist/lib/google-agy.js.map +1 -1
- package/dist/lib/google-antigravity-companion.d.ts +4 -25
- package/dist/lib/google-antigravity-companion.d.ts.map +1 -1
- package/dist/lib/google-antigravity-companion.js +44 -283
- package/dist/lib/google-antigravity-companion.js.map +1 -1
- package/dist/lib/google-companion-credentials.d.ts +70 -0
- package/dist/lib/google-companion-credentials.d.ts.map +1 -0
- package/dist/lib/google-companion-credentials.js +265 -0
- package/dist/lib/google-companion-credentials.js.map +1 -0
- package/dist/lib/google-gemini-cli-companion.d.ts +4 -25
- package/dist/lib/google-gemini-cli-companion.d.ts.map +1 -1
- package/dist/lib/google-gemini-cli-companion.js +47 -258
- package/dist/lib/google-gemini-cli-companion.js.map +1 -1
- package/dist/lib/google-gemini-cli.d.ts.map +1 -1
- package/dist/lib/google-gemini-cli.js +55 -61
- package/dist/lib/google-gemini-cli.js.map +1 -1
- package/dist/lib/google-token-cache.d.ts.map +1 -1
- package/dist/lib/google-token-cache.js +87 -34
- package/dist/lib/google-token-cache.js.map +1 -1
- package/dist/lib/google.d.ts.map +1 -1
- package/dist/lib/google.js +80 -84
- package/dist/lib/google.js.map +1 -1
- package/dist/lib/grouped-entry-normalization.d.ts.map +1 -1
- package/dist/lib/grouped-entry-normalization.js +7 -1
- package/dist/lib/grouped-entry-normalization.js.map +1 -1
- package/dist/lib/http.d.ts +12 -7
- package/dist/lib/http.d.ts.map +1 -1
- package/dist/lib/http.js +28 -15
- package/dist/lib/http.js.map +1 -1
- package/dist/lib/init-installer.d.ts +2 -1
- package/dist/lib/init-installer.d.ts.map +1 -1
- package/dist/lib/init-installer.js +29 -2
- package/dist/lib/init-installer.js.map +1 -1
- package/dist/lib/kimi-auth.d.ts +3 -26
- package/dist/lib/kimi-auth.d.ts.map +1 -1
- package/dist/lib/kimi-auth.js +24 -91
- package/dist/lib/kimi-auth.js.map +1 -1
- package/dist/lib/kimi.d.ts.map +1 -1
- package/dist/lib/kimi.js +20 -15
- package/dist/lib/kimi.js.map +1 -1
- package/dist/lib/maintainer-announcements.d.ts.map +1 -1
- package/dist/lib/maintainer-announcements.js +5 -0
- package/dist/lib/maintainer-announcements.js.map +1 -1
- package/dist/lib/map-with-concurrency.d.ts +2 -0
- package/dist/lib/map-with-concurrency.d.ts.map +1 -0
- package/dist/lib/map-with-concurrency.js +17 -0
- package/dist/lib/map-with-concurrency.js.map +1 -0
- package/dist/lib/mimo-config.d.ts +29 -0
- package/dist/lib/mimo-config.d.ts.map +1 -0
- package/dist/lib/mimo-config.js +147 -0
- package/dist/lib/mimo-config.js.map +1 -0
- package/dist/lib/mimo.d.ts +35 -0
- package/dist/lib/mimo.d.ts.map +1 -0
- package/dist/lib/mimo.js +236 -0
- package/dist/lib/mimo.js.map +1 -0
- package/dist/lib/modelsdev-pricing.d.ts.map +1 -1
- package/dist/lib/modelsdev-pricing.js +39 -27
- package/dist/lib/modelsdev-pricing.js.map +1 -1
- package/dist/lib/nanogpt-config.d.ts.map +1 -1
- package/dist/lib/nanogpt-config.js +2 -4
- package/dist/lib/nanogpt-config.js.map +1 -1
- package/dist/lib/nanogpt.d.ts.map +1 -1
- package/dist/lib/nanogpt.js +40 -30
- package/dist/lib/nanogpt.js.map +1 -1
- package/dist/lib/ollama-cloud.d.ts +1 -1
- package/dist/lib/ollama-cloud.d.ts.map +1 -1
- package/dist/lib/ollama-cloud.js +73 -68
- package/dist/lib/ollama-cloud.js.map +1 -1
- package/dist/lib/openai.d.ts.map +1 -1
- package/dist/lib/openai.js +53 -48
- package/dist/lib/openai.js.map +1 -1
- package/dist/lib/opencode-config-providers.d.ts.map +1 -1
- package/dist/lib/opencode-config-providers.js +13 -16
- package/dist/lib/opencode-config-providers.js.map +1 -1
- package/dist/lib/opencode-config-read.d.ts +23 -0
- package/dist/lib/opencode-config-read.d.ts.map +1 -0
- package/dist/lib/opencode-config-read.js +30 -0
- package/dist/lib/opencode-config-read.js.map +1 -0
- package/dist/lib/opencode-go.d.ts.map +1 -1
- package/dist/lib/opencode-go.js +44 -39
- package/dist/lib/opencode-go.js.map +1 -1
- package/dist/lib/opencode-zen-config.d.ts +34 -0
- package/dist/lib/opencode-zen-config.d.ts.map +1 -0
- package/dist/lib/opencode-zen-config.js +103 -0
- package/dist/lib/opencode-zen-config.js.map +1 -0
- package/dist/lib/opencode-zen.d.ts +27 -0
- package/dist/lib/opencode-zen.d.ts.map +1 -0
- package/dist/lib/opencode-zen.js +143 -0
- package/dist/lib/opencode-zen.js.map +1 -0
- package/dist/lib/openrouter.d.ts +13 -0
- package/dist/lib/openrouter.d.ts.map +1 -0
- package/dist/lib/openrouter.js +41 -0
- package/dist/lib/openrouter.js.map +1 -0
- package/dist/lib/provider-add-command.d.ts.map +1 -1
- package/dist/lib/provider-add-command.js +4 -12
- package/dist/lib/provider-add-command.js.map +1 -1
- package/dist/lib/provider-add-json-v1-questionnaire.d.ts +32 -0
- package/dist/lib/provider-add-json-v1-questionnaire.d.ts.map +1 -0
- package/dist/lib/provider-add-json-v1-questionnaire.js +336 -0
- package/dist/lib/provider-add-json-v1-questionnaire.js.map +1 -0
- package/dist/lib/provider-availability.d.ts +2 -2
- package/dist/lib/provider-availability.d.ts.map +1 -1
- package/dist/lib/provider-availability.js +2 -3
- package/dist/lib/provider-availability.js.map +1 -1
- package/dist/lib/provider-metadata.d.ts +300 -1
- package/dist/lib/provider-metadata.d.ts.map +1 -1
- package/dist/lib/provider-metadata.js +332 -227
- package/dist/lib/provider-metadata.js.map +1 -1
- package/dist/lib/quota-command-format.d.ts.map +1 -1
- package/dist/lib/quota-command-format.js +12 -16
- package/dist/lib/quota-command-format.js.map +1 -1
- package/dist/lib/quota-dialog-commands.d.ts +59 -2
- package/dist/lib/quota-dialog-commands.d.ts.map +1 -1
- package/dist/lib/quota-dialog-commands.js +73 -39
- package/dist/lib/quota-dialog-commands.js.map +1 -1
- package/dist/lib/quota-entry-display.d.ts +2 -0
- package/dist/lib/quota-entry-display.d.ts.map +1 -1
- package/dist/lib/quota-entry-display.js +27 -13
- package/dist/lib/quota-entry-display.js.map +1 -1
- package/dist/lib/quota-providers-remote.d.ts +0 -1
- package/dist/lib/quota-providers-remote.d.ts.map +1 -1
- package/dist/lib/quota-providers-remote.js +3 -16
- package/dist/lib/quota-providers-remote.js.map +1 -1
- package/dist/lib/quota-render-data.d.ts +4 -0
- package/dist/lib/quota-render-data.d.ts.map +1 -1
- package/dist/lib/quota-render-data.js +118 -127
- package/dist/lib/quota-render-data.js.map +1 -1
- package/dist/lib/quota-runtime-context.d.ts +9 -1
- package/dist/lib/quota-runtime-context.d.ts.map +1 -1
- package/dist/lib/quota-runtime-context.js +5 -0
- package/dist/lib/quota-runtime-context.js.map +1 -1
- package/dist/lib/quota-state.d.ts.map +1 -1
- package/dist/lib/quota-state.js +25 -1
- package/dist/lib/quota-state.js.map +1 -1
- package/dist/lib/quota-stats.d.ts +1 -0
- package/dist/lib/quota-stats.d.ts.map +1 -1
- package/dist/lib/quota-stats.js +14 -4
- package/dist/lib/quota-stats.js.map +1 -1
- package/dist/lib/quota-status.d.ts +7 -17
- package/dist/lib/quota-status.d.ts.map +1 -1
- package/dist/lib/quota-status.js +123 -948
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/runtime-provider-ids.d.ts +4 -0
- package/dist/lib/runtime-provider-ids.d.ts.map +1 -0
- package/dist/lib/runtime-provider-ids.js +10 -0
- package/dist/lib/runtime-provider-ids.js.map +1 -0
- package/dist/lib/session-tokens.d.ts +2 -0
- package/dist/lib/session-tokens.d.ts.map +1 -1
- package/dist/lib/session-tokens.js +4 -2
- package/dist/lib/session-tokens.js.map +1 -1
- package/dist/lib/synthetic-config.d.ts.map +1 -1
- package/dist/lib/synthetic-config.js +2 -4
- package/dist/lib/synthetic-config.js.map +1 -1
- package/dist/lib/synthetic.d.ts.map +1 -1
- package/dist/lib/synthetic.js +37 -32
- package/dist/lib/synthetic.js.map +1 -1
- package/dist/lib/toast-format-grouped.d.ts +1 -0
- package/dist/lib/toast-format-grouped.d.ts.map +1 -1
- package/dist/lib/toast-format-grouped.js +33 -29
- package/dist/lib/toast-format-grouped.js.map +1 -1
- package/dist/lib/tui-refresh-lifecycle.d.ts +17 -0
- package/dist/lib/tui-refresh-lifecycle.d.ts.map +1 -0
- package/dist/lib/tui-refresh-lifecycle.js +83 -0
- package/dist/lib/tui-refresh-lifecycle.js.map +1 -0
- package/dist/lib/tui-runtime.d.ts +0 -5
- package/dist/lib/tui-runtime.d.ts.map +1 -1
- package/dist/lib/tui-runtime.js +1 -6
- package/dist/lib/tui-runtime.js.map +1 -1
- package/dist/lib/tui-sidebar-format.d.ts +1 -1
- package/dist/lib/tui-sidebar-format.d.ts.map +1 -1
- package/dist/lib/tui-sidebar-format.js +1 -0
- package/dist/lib/tui-sidebar-format.js.map +1 -1
- package/dist/lib/types.d.ts +72 -8
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/xai.d.ts +39 -0
- package/dist/lib/xai.d.ts.map +1 -0
- package/dist/lib/xai.js +153 -0
- package/dist/lib/xai.js.map +1 -0
- package/dist/lib/zai-auth.d.ts +3 -26
- package/dist/lib/zai-auth.d.ts.map +1 -1
- package/dist/lib/zai-auth.js +24 -94
- package/dist/lib/zai-auth.js.map +1 -1
- package/dist/lib/zai.d.ts +1 -8
- package/dist/lib/zai.d.ts.map +1 -1
- package/dist/lib/zai.js +11 -91
- package/dist/lib/zai.js.map +1 -1
- package/dist/lib/zhipu-auth.d.ts +3 -26
- package/dist/lib/zhipu-auth.d.ts.map +1 -1
- package/dist/lib/zhipu-auth.js +24 -94
- package/dist/lib/zhipu-auth.js.map +1 -1
- package/dist/lib/zhipu.d.ts +1 -8
- package/dist/lib/zhipu.d.ts.map +1 -1
- package/dist/lib/zhipu.js +10 -84
- package/dist/lib/zhipu.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +20 -145
- package/dist/plugin.js.map +1 -1
- package/dist/providers/alibaba-coding-plan.d.ts.map +1 -1
- package/dist/providers/alibaba-coding-plan.js +33 -6
- package/dist/providers/alibaba-coding-plan.js.map +1 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +35 -7
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/chutes.d.ts.map +1 -1
- package/dist/providers/chutes.js +10 -3
- package/dist/providers/chutes.js.map +1 -1
- package/dist/providers/copilot.d.ts.map +1 -1
- package/dist/providers/copilot.js +102 -31
- package/dist/providers/copilot.js.map +1 -1
- package/dist/providers/cursor.d.ts.map +1 -1
- package/dist/providers/cursor.js +34 -6
- package/dist/providers/cursor.js.map +1 -1
- package/dist/providers/deepseek.d.ts.map +1 -1
- package/dist/providers/deepseek.js +10 -3
- package/dist/providers/deepseek.js.map +1 -1
- package/dist/providers/glm-coding-plan-provider.d.ts +44 -0
- package/dist/providers/glm-coding-plan-provider.d.ts.map +1 -0
- package/dist/providers/glm-coding-plan-provider.js +62 -0
- package/dist/providers/glm-coding-plan-provider.js.map +1 -0
- package/dist/providers/google-agy.d.ts.map +1 -1
- package/dist/providers/google-agy.js +83 -42
- package/dist/providers/google-agy.js.map +1 -1
- package/dist/providers/google-antigravity.d.ts.map +1 -1
- package/dist/providers/google-antigravity.js +31 -6
- package/dist/providers/google-antigravity.js.map +1 -1
- package/dist/providers/google-gemini-cli.d.ts.map +1 -1
- package/dist/providers/google-gemini-cli.js +24 -6
- package/dist/providers/google-gemini-cli.js.map +1 -1
- package/dist/providers/kimi-code.d.ts.map +1 -1
- package/dist/providers/kimi-code.js +27 -8
- package/dist/providers/kimi-code.js.map +1 -1
- package/dist/providers/mimo.d.ts +3 -0
- package/dist/providers/mimo.d.ts.map +1 -0
- package/dist/providers/mimo.js +127 -0
- package/dist/providers/mimo.js.map +1 -0
- package/dist/providers/minimax-coding-plan.d.ts.map +1 -1
- package/dist/providers/minimax-coding-plan.js +68 -32
- package/dist/providers/minimax-coding-plan.js.map +1 -1
- package/dist/providers/nanogpt.d.ts.map +1 -1
- package/dist/providers/nanogpt.js +41 -4
- package/dist/providers/nanogpt.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +20 -3
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/opencode-go.d.ts.map +1 -1
- package/dist/providers/opencode-go.js +33 -15
- package/dist/providers/opencode-go.js.map +1 -1
- package/dist/providers/opencode-zen.d.ts +3 -0
- package/dist/providers/opencode-zen.d.ts.map +1 -0
- package/dist/providers/opencode-zen.js +99 -0
- package/dist/providers/opencode-zen.js.map +1 -0
- package/dist/providers/openrouter.d.ts +6 -0
- package/dist/providers/openrouter.d.ts.map +1 -0
- package/dist/providers/openrouter.js +25 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/providers/quota-providers.d.ts.map +1 -1
- package/dist/providers/quota-providers.js +3 -3
- package/dist/providers/quota-providers.js.map +1 -1
- package/dist/providers/qwen-code.d.ts.map +1 -1
- package/dist/providers/qwen-code.js +19 -5
- package/dist/providers/qwen-code.js.map +1 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +8 -0
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/result-helpers.d.ts +29 -1
- package/dist/providers/result-helpers.d.ts.map +1 -1
- package/dist/providers/result-helpers.js +69 -0
- package/dist/providers/result-helpers.js.map +1 -1
- package/dist/providers/synthetic.d.ts.map +1 -1
- package/dist/providers/synthetic.js +10 -3
- package/dist/providers/synthetic.js.map +1 -1
- package/dist/providers/xai.d.ts +6 -0
- package/dist/providers/xai.d.ts.map +1 -0
- package/dist/providers/xai.js +51 -0
- package/dist/providers/xai.js.map +1 -0
- package/dist/providers/zai.d.ts +1 -7
- package/dist/providers/zai.d.ts.map +1 -1
- package/dist/providers/zai.js +11 -46
- package/dist/providers/zai.js.map +1 -1
- package/dist/providers/zhipu.d.ts +1 -7
- package/dist/providers/zhipu.d.ts.map +1 -1
- package/dist/providers/zhipu.js +11 -46
- package/dist/providers/zhipu.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +47 -136
- package/dist/tui.tsx +62 -179
- package/package.json +1 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* xAI SuperGrok subscription quota fetcher.
|
|
3
|
+
*
|
|
4
|
+
* Uses OpenCode's read-only `xai` OAuth entry and queries the same shared
|
|
5
|
+
* period meter exposed by Grok Build:
|
|
6
|
+
* GET https://cli-chat-proxy.grok.com/v1/billing?format=credits
|
|
7
|
+
*
|
|
8
|
+
* OpenCode remains the sole owner of OAuth refresh and auth.json persistence.
|
|
9
|
+
*/
|
|
10
|
+
import type { AuthData, QuotaError } from "./types.js";
|
|
11
|
+
export declare const DEFAULT_XAI_AUTH_CACHE_MAX_AGE_MS = 5000;
|
|
12
|
+
export type XaiPeriodKind = "weekly" | "monthly" | "daily" | "period";
|
|
13
|
+
export interface XaiWindowValue {
|
|
14
|
+
percentRemaining: number;
|
|
15
|
+
resetTimeIso?: string;
|
|
16
|
+
kind: XaiPeriodKind;
|
|
17
|
+
}
|
|
18
|
+
export type XaiResult = {
|
|
19
|
+
success: true;
|
|
20
|
+
label: "xAI SuperGrok";
|
|
21
|
+
window: XaiWindowValue;
|
|
22
|
+
} | QuotaError | null;
|
|
23
|
+
export type ResolvedXaiOAuth = {
|
|
24
|
+
state: "none";
|
|
25
|
+
} | {
|
|
26
|
+
state: "configured";
|
|
27
|
+
accessToken: string;
|
|
28
|
+
expiresAt?: number;
|
|
29
|
+
};
|
|
30
|
+
export declare function periodKindLabel(kind: XaiPeriodKind): string;
|
|
31
|
+
export declare function resolveXaiOAuth(auth: AuthData | null | undefined): ResolvedXaiOAuth;
|
|
32
|
+
export declare function hasXaiOAuth(auth: AuthData | null | undefined): boolean;
|
|
33
|
+
export declare function hasXaiOAuthCached(params?: {
|
|
34
|
+
maxAgeMs?: number;
|
|
35
|
+
}): Promise<boolean>;
|
|
36
|
+
export declare function queryXaiQuota(options?: {
|
|
37
|
+
requestTimeoutMs?: number;
|
|
38
|
+
}): Promise<XaiResult>;
|
|
39
|
+
//# sourceMappingURL=xai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xai.d.ts","sourceRoot":"","sources":["../../src/lib/xai.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEvD,eAAO,MAAM,iCAAiC,OAAQ,CAAC;AAKvD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GACjB;IACE,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;CACxB,GACD,UAAU,GACV,IAAI,CAAC;AAET,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IACE,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA0BN,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAW3D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB,CAenF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEtE;AAED,wBAAsB,iBAAiB,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAKxF;AAwCD,wBAAsB,aAAa,CACjC,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC,SAAS,CAAC,CAmDpB"}
|
package/dist/lib/xai.js
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* xAI SuperGrok subscription quota fetcher.
|
|
3
|
+
*
|
|
4
|
+
* Uses OpenCode's read-only `xai` OAuth entry and queries the same shared
|
|
5
|
+
* period meter exposed by Grok Build:
|
|
6
|
+
* GET https://cli-chat-proxy.grok.com/v1/billing?format=credits
|
|
7
|
+
*
|
|
8
|
+
* OpenCode remains the sole owner of OAuth refresh and auth.json persistence.
|
|
9
|
+
*/
|
|
10
|
+
import { sanitizeSingleLineDisplaySnippet } from "./display-sanitize.js";
|
|
11
|
+
import { clampPercent } from "./format-utils.js";
|
|
12
|
+
import { fetchWithTimeout } from "./http.js";
|
|
13
|
+
import { readAuthFile, readAuthFileCached } from "./opencode-auth.js";
|
|
14
|
+
export const DEFAULT_XAI_AUTH_CACHE_MAX_AGE_MS = 5_000;
|
|
15
|
+
const CREDITS_URL = "https://cli-chat-proxy.grok.com/v1/billing?format=credits";
|
|
16
|
+
const USER_AGENT = "OpenCode-Quota-Toast/1.0";
|
|
17
|
+
function isRecord(value) {
|
|
18
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
19
|
+
}
|
|
20
|
+
function getNonEmptyString(value) {
|
|
21
|
+
return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
|
|
22
|
+
}
|
|
23
|
+
function isoOrUndefined(value) {
|
|
24
|
+
const raw = getNonEmptyString(value);
|
|
25
|
+
if (!raw)
|
|
26
|
+
return undefined;
|
|
27
|
+
const date = new Date(raw);
|
|
28
|
+
return Number.isNaN(date.getTime()) ? undefined : date.toISOString();
|
|
29
|
+
}
|
|
30
|
+
function periodKindFromType(value) {
|
|
31
|
+
const raw = getNonEmptyString(value)?.toUpperCase() ?? "";
|
|
32
|
+
if (raw.includes("WEEK"))
|
|
33
|
+
return "weekly";
|
|
34
|
+
if (raw.includes("MONTH"))
|
|
35
|
+
return "monthly";
|
|
36
|
+
if (raw.includes("DAY"))
|
|
37
|
+
return "daily";
|
|
38
|
+
return "period";
|
|
39
|
+
}
|
|
40
|
+
export function periodKindLabel(kind) {
|
|
41
|
+
switch (kind) {
|
|
42
|
+
case "weekly":
|
|
43
|
+
return "Weekly";
|
|
44
|
+
case "monthly":
|
|
45
|
+
return "Monthly";
|
|
46
|
+
case "daily":
|
|
47
|
+
return "Daily";
|
|
48
|
+
default:
|
|
49
|
+
return "Period";
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export function resolveXaiOAuth(auth) {
|
|
53
|
+
const entry = auth?.xai;
|
|
54
|
+
if (!entry || entry.type !== "oauth")
|
|
55
|
+
return { state: "none" };
|
|
56
|
+
const accessToken = typeof entry.access === "string" ? entry.access.trim() : "";
|
|
57
|
+
if (!accessToken)
|
|
58
|
+
return { state: "none" };
|
|
59
|
+
return {
|
|
60
|
+
state: "configured",
|
|
61
|
+
accessToken,
|
|
62
|
+
expiresAt: typeof entry.expires === "number" && Number.isFinite(entry.expires)
|
|
63
|
+
? entry.expires
|
|
64
|
+
: undefined,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function hasXaiOAuth(auth) {
|
|
68
|
+
return resolveXaiOAuth(auth).state === "configured";
|
|
69
|
+
}
|
|
70
|
+
export async function hasXaiOAuthCached(params) {
|
|
71
|
+
const auth = await readAuthFileCached({
|
|
72
|
+
maxAgeMs: Math.max(0, params?.maxAgeMs ?? DEFAULT_XAI_AUTH_CACHE_MAX_AGE_MS),
|
|
73
|
+
});
|
|
74
|
+
return hasXaiOAuth(auth);
|
|
75
|
+
}
|
|
76
|
+
function parseCreditsWindow(payload) {
|
|
77
|
+
if (!isRecord(payload) || !isRecord(payload.config)) {
|
|
78
|
+
throw new Error("xAI credits response returned an unexpected response shape");
|
|
79
|
+
}
|
|
80
|
+
const config = payload.config;
|
|
81
|
+
const period = isRecord(config.currentPeriod) ? config.currentPeriod : null;
|
|
82
|
+
const hasUsage = Object.prototype.hasOwnProperty.call(config, "creditUsagePercent");
|
|
83
|
+
const hasPeriod = Boolean(getNonEmptyString(period?.type) ||
|
|
84
|
+
getNonEmptyString(period?.start) ||
|
|
85
|
+
getNonEmptyString(period?.end));
|
|
86
|
+
if (!hasPeriod && !hasUsage)
|
|
87
|
+
return null;
|
|
88
|
+
if (hasUsage &&
|
|
89
|
+
(typeof config.creditUsagePercent !== "number" || !Number.isFinite(config.creditUsagePercent))) {
|
|
90
|
+
throw new Error("xAI credits response returned an invalid usage percentage");
|
|
91
|
+
}
|
|
92
|
+
// Protobuf JSON omits zero-valued fields, so an absent percentage with a
|
|
93
|
+
// current period means 0% used rather than missing quota.
|
|
94
|
+
const usedPercent = hasUsage ? config.creditUsagePercent : 0;
|
|
95
|
+
return {
|
|
96
|
+
percentRemaining: clampPercent(100 - usedPercent),
|
|
97
|
+
resetTimeIso: isoOrUndefined(period?.end) ?? isoOrUndefined(config.billingPeriodEnd),
|
|
98
|
+
kind: periodKindFromType(period?.type),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function safeErrorText(message, accessToken) {
|
|
102
|
+
const redacted = accessToken ? message.split(accessToken).join("[redacted]") : message;
|
|
103
|
+
return sanitizeSingleLineDisplaySnippet(redacted, 160);
|
|
104
|
+
}
|
|
105
|
+
export async function queryXaiQuota(options = {}) {
|
|
106
|
+
// OpenCode can replace this OAuth entry while servicing a model request.
|
|
107
|
+
// Read the file directly so a post-request quota fetch cannot reuse the
|
|
108
|
+
// token snapshot from before that refresh.
|
|
109
|
+
const resolvedAuth = resolveXaiOAuth(await readAuthFile());
|
|
110
|
+
if (resolvedAuth.state !== "configured")
|
|
111
|
+
return null;
|
|
112
|
+
if (resolvedAuth.expiresAt !== undefined && resolvedAuth.expiresAt <= Date.now()) {
|
|
113
|
+
return {
|
|
114
|
+
success: false,
|
|
115
|
+
error: "xAI OAuth token expired; use xAI in OpenCode to refresh it or reconnect xAI",
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
return await fetchWithTimeout(CREDITS_URL, {
|
|
120
|
+
request: {
|
|
121
|
+
method: "GET",
|
|
122
|
+
headers: {
|
|
123
|
+
Authorization: `Bearer ${resolvedAuth.accessToken}`,
|
|
124
|
+
Accept: "application/json",
|
|
125
|
+
"User-Agent": USER_AGENT,
|
|
126
|
+
"x-grok-client-surface": "grok-build",
|
|
127
|
+
"x-grok-client-version": "1.0.0",
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
timeoutMs: options.requestTimeoutMs,
|
|
131
|
+
consume: async (response) => {
|
|
132
|
+
if (!response.ok) {
|
|
133
|
+
const body = await response.text();
|
|
134
|
+
return {
|
|
135
|
+
success: false,
|
|
136
|
+
error: `xAI API error ${response.status}: ${safeErrorText(body, resolvedAuth.accessToken)}`,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
const window = parseCreditsWindow(await response.json());
|
|
140
|
+
if (!window)
|
|
141
|
+
return { success: false, error: "No weekly quota data" };
|
|
142
|
+
return { success: true, label: "xAI SuperGrok", window };
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
return {
|
|
148
|
+
success: false,
|
|
149
|
+
error: safeErrorText(error instanceof Error ? error.message : String(error), resolvedAuth.accessToken),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=xai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xai.js","sourceRoot":"","sources":["../../src/lib/xai.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/zai-auth.d.ts
CHANGED
|
@@ -1,32 +1,9 @@
|
|
|
1
|
+
import type { InvalidAwareAuthDiagnostics, InvalidAwareAuthResult } from "./api-key-resolver.js";
|
|
1
2
|
import type { AuthData } from "./types.js";
|
|
2
3
|
export declare const DEFAULT_ZAI_AUTH_CACHE_MAX_AGE_MS = 5000;
|
|
3
4
|
export type ZaiKeySource = "env:ZAI_API_KEY" | "env:ZAI_CODING_PLAN_API_KEY" | "opencode.json" | "opencode.jsonc" | "auth.json";
|
|
4
|
-
export type ResolvedZaiAuth =
|
|
5
|
-
|
|
6
|
-
} | {
|
|
7
|
-
state: "configured";
|
|
8
|
-
apiKey: string;
|
|
9
|
-
} | {
|
|
10
|
-
state: "invalid";
|
|
11
|
-
error: string;
|
|
12
|
-
};
|
|
13
|
-
export type ZaiAuthDiagnostics = {
|
|
14
|
-
state: "none";
|
|
15
|
-
source: null;
|
|
16
|
-
checkedPaths: string[];
|
|
17
|
-
authPaths: string[];
|
|
18
|
-
} | {
|
|
19
|
-
state: "configured";
|
|
20
|
-
source: ZaiKeySource;
|
|
21
|
-
checkedPaths: string[];
|
|
22
|
-
authPaths: string[];
|
|
23
|
-
} | {
|
|
24
|
-
state: "invalid";
|
|
25
|
-
source: "auth.json";
|
|
26
|
-
checkedPaths: string[];
|
|
27
|
-
authPaths: string[];
|
|
28
|
-
error: string;
|
|
29
|
-
};
|
|
5
|
+
export type ResolvedZaiAuth = InvalidAwareAuthResult;
|
|
6
|
+
export type ZaiAuthDiagnostics = InvalidAwareAuthDiagnostics<ZaiKeySource, "auth.json">;
|
|
30
7
|
export { getGlobalOpencodeConfigCandidatePaths as getOpencodeConfigCandidatePaths } from "./api-key-resolver.js";
|
|
31
8
|
export declare function resolveZaiAuth(auth: AuthData | null | undefined): ResolvedZaiAuth;
|
|
32
9
|
export declare function resolveZaiAuthCached(params?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zai-auth.d.ts","sourceRoot":"","sources":["../../src/lib/zai-auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"zai-auth.d.ts","sourceRoot":"","sources":["../../src/lib/zai-auth.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACjG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,iCAAiC,OAAQ,CAAC;AAKvD,MAAM,MAAM,YAAY,GACpB,iBAAiB,GACjB,6BAA6B,GAC7B,eAAe,GACf,gBAAgB,GAChB,WAAW,CAAC;AAEhB,MAAM,MAAM,eAAe,GAAG,sBAAsB,CAAC;AACrD,MAAM,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AAExF,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAuBjH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,CAEjF;AAED,wBAAsB,oBAAoB,CAAC,MAAM,CAAC,EAAE;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,eAAe,CAAC,CAE3B;AAED,wBAAsB,qBAAqB,CAAC,MAAM,CAAC,EAAE;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE9B"}
|
package/dist/lib/zai-auth.js
CHANGED
|
@@ -1,107 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { sanitizeDisplayText } from "./display-sanitize.js";
|
|
1
|
+
import { createProviderApiKeyResolver, getGlobalOpencodeConfigCandidatePaths, } from "./api-key-resolver.js";
|
|
3
2
|
import { getAuthPaths, readAuthFileCached } from "./opencode-auth.js";
|
|
4
3
|
export const DEFAULT_ZAI_AUTH_CACHE_MAX_AGE_MS = 5_000;
|
|
5
4
|
const ZAI_AUTH_KEYS = ["zai-coding-plan"];
|
|
6
5
|
const ZAI_PROVIDER_KEYS = ["zai", "zai-coding-plan", "glm"];
|
|
7
6
|
const ALLOWED_ZAI_ENV_VARS = ["ZAI_API_KEY", "ZAI_CODING_PLAN_API_KEY"];
|
|
8
7
|
export { getGlobalOpencodeConfigCandidatePaths as getOpencodeConfigCandidatePaths } from "./api-key-resolver.js";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
8
|
+
const zaiAuthResolver = createProviderApiKeyResolver({
|
|
9
|
+
envVars: [
|
|
10
|
+
{ name: "ZAI_API_KEY", source: "env:ZAI_API_KEY" },
|
|
11
|
+
{ name: "ZAI_CODING_PLAN_API_KEY", source: "env:ZAI_CODING_PLAN_API_KEY" },
|
|
12
|
+
],
|
|
13
|
+
providerKeys: ZAI_PROVIDER_KEYS,
|
|
14
|
+
allowedEnvVars: ALLOWED_ZAI_ENV_VARS,
|
|
15
|
+
configJsonSource: "opencode.json",
|
|
16
|
+
configJsoncSource: "opencode.jsonc",
|
|
17
|
+
getConfigCandidates: getGlobalOpencodeConfigCandidatePaths,
|
|
18
|
+
auth: {
|
|
19
|
+
policy: "invalid-aware-api-key",
|
|
20
|
+
authKeys: ZAI_AUTH_KEYS,
|
|
21
|
+
authSource: "auth.json",
|
|
22
|
+
displayName: "Z.ai",
|
|
23
|
+
defaultMaxAgeMs: DEFAULT_ZAI_AUTH_CACHE_MAX_AGE_MS,
|
|
24
|
+
readAuth: (maxAgeMs) => readAuthFileCached({ maxAgeMs }),
|
|
25
|
+
getAuthPaths,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
19
28
|
export function resolveZaiAuth(auth) {
|
|
20
|
-
|
|
21
|
-
if (zai === null || zai === undefined) {
|
|
22
|
-
return { state: "none" };
|
|
23
|
-
}
|
|
24
|
-
if (!isZaiAuthData(zai)) {
|
|
25
|
-
return { state: "invalid", error: "Z.ai auth entry has invalid shape" };
|
|
26
|
-
}
|
|
27
|
-
if (typeof zai.type !== "string") {
|
|
28
|
-
return { state: "invalid", error: "Z.ai auth entry present but type is missing or invalid" };
|
|
29
|
-
}
|
|
30
|
-
if (zai.type !== "api") {
|
|
31
|
-
return {
|
|
32
|
-
state: "invalid",
|
|
33
|
-
error: `Unsupported Z.ai auth type: "${sanitizeZaiAuthValue(zai.type)}"`,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
const key = typeof zai.key === "string" ? zai.key.trim() : "";
|
|
37
|
-
if (!key) {
|
|
38
|
-
return { state: "invalid", error: "Z.ai auth entry present but key is empty" };
|
|
39
|
-
}
|
|
40
|
-
return { state: "configured", apiKey: key };
|
|
41
|
-
}
|
|
42
|
-
async function resolveZaiAuthWithSource(params) {
|
|
43
|
-
const resolvedFromEnvOrConfig = await resolveApiKeyFromEnvAndConfig({
|
|
44
|
-
envVars: [
|
|
45
|
-
{ name: "ZAI_API_KEY", source: "env:ZAI_API_KEY" },
|
|
46
|
-
{
|
|
47
|
-
name: "ZAI_CODING_PLAN_API_KEY",
|
|
48
|
-
source: "env:ZAI_CODING_PLAN_API_KEY",
|
|
49
|
-
},
|
|
50
|
-
],
|
|
51
|
-
extractFromConfig: (config) => extractProviderOptionsApiKey(config, {
|
|
52
|
-
providerKeys: ZAI_PROVIDER_KEYS,
|
|
53
|
-
allowedEnvVars: ALLOWED_ZAI_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_ZAI_AUTH_CACHE_MAX_AGE_MS);
|
|
66
|
-
const authData = await readAuthFileCached({ maxAgeMs });
|
|
67
|
-
const auth = resolveZaiAuth(authData);
|
|
68
|
-
return {
|
|
69
|
-
auth,
|
|
70
|
-
source: auth.state === "none" ? null : "auth.json",
|
|
71
|
-
};
|
|
29
|
+
return zaiAuthResolver.parseAuth(auth);
|
|
72
30
|
}
|
|
73
31
|
export async function resolveZaiAuthCached(params) {
|
|
74
|
-
return (
|
|
32
|
+
return zaiAuthResolver.resolve(params);
|
|
75
33
|
}
|
|
76
34
|
export async function getZaiAuthDiagnostics(params) {
|
|
77
|
-
|
|
78
|
-
const checkedPaths = getApiKeyCheckedPaths({
|
|
79
|
-
envVarNames: [...ALLOWED_ZAI_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
|
-
};
|
|
35
|
+
return zaiAuthResolver.diagnostics(params);
|
|
106
36
|
}
|
|
107
37
|
//# sourceMappingURL=zai-auth.js.map
|
package/dist/lib/zai-auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zai-auth.js","sourceRoot":"","sources":["../../src/lib/zai-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,
|
|
1
|
+
{"version":3,"file":"zai-auth.js","sourceRoot":"","sources":["../../src/lib/zai-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,qCAAqC,GACtC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAKtE,MAAM,CAAC,MAAM,iCAAiC,GAAG,KAAK,CAAC;AACvD,MAAM,aAAa,GAAG,CAAC,iBAAiB,CAAU,CAAC;AACnD,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAU,CAAC;AACrE,MAAM,oBAAoB,GAAG,CAAC,aAAa,EAAE,yBAAyB,CAAU,CAAC;AAYjF,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAEjH,MAAM,eAAe,GAAG,4BAA4B,CAA4B;IAC9E,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE;QAClD,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,6BAA6B,EAAE;KAC3E;IACD,YAAY,EAAE,iBAAiB;IAC/B,cAAc,EAAE,oBAAoB;IACpC,gBAAgB,EAAE,eAAe;IACjC,iBAAiB,EAAE,gBAAgB;IACnC,mBAAmB,EAAE,qCAAqC;IAC1D,IAAI,EAAE;QACJ,MAAM,EAAE,uBAAuB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,WAAW;QACvB,WAAW,EAAE,MAAM;QACnB,eAAe,EAAE,iCAAiC;QAClD,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC;QACxD,YAAY;KACb;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAAC,IAAiC;IAC9D,OAAO,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAE1C;IACC,OAAO,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAE3C;IACC,OAAO,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC"}
|
package/dist/lib/zai.d.ts
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Z.ai quota fetcher
|
|
3
|
-
*
|
|
4
|
-
* Uses OpenCode's auth.json (zai-coding-plan) and queries:
|
|
5
|
-
* https://api.z.ai/api/monitor/usage/quota/limit
|
|
6
|
-
*/
|
|
7
|
-
import type { ZaiResult } from "./types.js";
|
|
8
1
|
export declare function queryZaiQuota(options?: {
|
|
9
2
|
requestTimeoutMs?: number;
|
|
10
|
-
}): Promise<ZaiResult>;
|
|
3
|
+
}): Promise<import("./types.js").ZaiResult>;
|
|
11
4
|
//# sourceMappingURL=zai.d.ts.map
|
package/dist/lib/zai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zai.d.ts","sourceRoot":"","sources":["../../src/lib/zai.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"zai.d.ts","sourceRoot":"","sources":["../../src/lib/zai.ts"],"names":[],"mappings":"AAYA,wBAAgB,aAAa,CAAC,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,2CAExE"}
|
package/dist/lib/zai.js
CHANGED
|
@@ -1,94 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
* Z.ai quota fetcher
|
|
3
|
-
*
|
|
4
|
-
* Uses OpenCode's auth.json (zai-coding-plan) and queries:
|
|
5
|
-
* https://api.z.ai/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";
|
|
1
|
+
import { queryGlmCodingPlanQuota } from "./glm-coding-plan.js";
|
|
10
2
|
import { resolveZaiAuthCached } from "./zai-auth.js";
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
Authorization: auth.apiKey,
|
|
22
|
-
"User-Agent": "OpenCode-Quota-Toast/1.0",
|
|
23
|
-
"Content-Type": "application/json",
|
|
24
|
-
};
|
|
25
|
-
const resp = await fetchWithTimeout(ZAI_QUOTA_URL, { headers }, options.requestTimeoutMs);
|
|
26
|
-
if (!resp.ok) {
|
|
27
|
-
const text = await resp.text();
|
|
28
|
-
return {
|
|
29
|
-
success: false,
|
|
30
|
-
error: `Z.ai API error ${resp.status}: ${sanitizeDisplaySnippet(text, 120)}`,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
const data = (await resp.json());
|
|
34
|
-
if (data.success === false || (typeof data.code === "number" && data.code >= 400)) {
|
|
35
|
-
const msg = typeof data.msg === "string" ? sanitizeDisplayText(data.msg) : "";
|
|
36
|
-
return {
|
|
37
|
-
success: false,
|
|
38
|
-
error: msg || (typeof data.code === "number" ? `Z.ai API error ${data.code}` : "Z.ai API error"),
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
const limits = data.data?.limits ?? data.limits;
|
|
42
|
-
if (!limits || !Array.isArray(limits)) {
|
|
43
|
-
return { success: false, error: "Invalid quota data" };
|
|
44
|
-
}
|
|
45
|
-
let fiveHourWindow;
|
|
46
|
-
let weeklyWindow;
|
|
47
|
-
let mcpWindow;
|
|
48
|
-
for (const limit of limits) {
|
|
49
|
-
const percentRemaining = clampPercent(100 - limit.percentage);
|
|
50
|
-
let resetTimeIso;
|
|
51
|
-
if (limit.nextResetTime) {
|
|
52
|
-
const ms = Math.round(limit.nextResetTime);
|
|
53
|
-
if (Number.isFinite(ms) && ms > 0) {
|
|
54
|
-
resetTimeIso = new Date(ms).toISOString();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
const window = { percentRemaining, resetTimeIso };
|
|
58
|
-
if (limit.type === "TOKENS_LIMIT") {
|
|
59
|
-
if (limit.unit === 3) {
|
|
60
|
-
// unit 3 is the 5-hour token window (Standard Lite/Pro/Max).
|
|
61
|
-
fiveHourWindow = window;
|
|
62
|
-
}
|
|
63
|
-
else if (limit.unit === 6) {
|
|
64
|
-
// unit 6 is the weekly token window.
|
|
65
|
-
weeklyWindow = window;
|
|
66
|
-
}
|
|
67
|
-
else if (limit.unit === 4) {
|
|
68
|
-
// unit 4 is daily. Do not surface it as weekly in the current UI/report shape.
|
|
69
|
-
continue;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
else if (limit.type === "TIME_LIMIT") {
|
|
73
|
-
// TIME_LIMIT (unit 5) is typically the Monthly MCP limit
|
|
74
|
-
mcpWindow = window;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return {
|
|
78
|
-
success: true,
|
|
79
|
-
label: "Z.ai",
|
|
80
|
-
windows: {
|
|
81
|
-
fiveHour: fiveHourWindow,
|
|
82
|
-
weekly: weeklyWindow,
|
|
83
|
-
mcp: mcpWindow,
|
|
84
|
-
},
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
catch (err) {
|
|
88
|
-
return {
|
|
89
|
-
success: false,
|
|
90
|
-
error: sanitizeDisplayText(err instanceof Error ? err.message : String(err)),
|
|
91
|
-
};
|
|
92
|
-
}
|
|
3
|
+
const ZAI_QUOTA = {
|
|
4
|
+
label: "Z.ai",
|
|
5
|
+
endpoint: "https://api.z.ai/api/monitor/usage/quota/limit",
|
|
6
|
+
httpErrorPrefix: "Z.ai API error",
|
|
7
|
+
apiErrorPrefix: "Z.ai API error",
|
|
8
|
+
envelope: "zai",
|
|
9
|
+
resolveAuth: resolveZaiAuthCached,
|
|
10
|
+
};
|
|
11
|
+
export function queryZaiQuota(options = {}) {
|
|
12
|
+
return queryGlmCodingPlanQuota(ZAI_QUOTA, options);
|
|
93
13
|
}
|
|
94
14
|
//# sourceMappingURL=zai.js.map
|
package/dist/lib/zai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zai.js","sourceRoot":"","sources":["../../src/lib/zai.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"zai.js","sourceRoot":"","sources":["../../src/lib/zai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,SAAS,GAAG;IAChB,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,gDAAgD;IAC1D,eAAe,EAAE,gBAAgB;IACjC,cAAc,EAAE,gBAAgB;IAChC,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,oBAAoB;CACzB,CAAC;AAEX,MAAM,UAAU,aAAa,CAAC,UAAyC,EAAE;IACvE,OAAO,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC"}
|
package/dist/lib/zhipu-auth.d.ts
CHANGED
|
@@ -1,32 +1,9 @@
|
|
|
1
|
+
import type { InvalidAwareAuthDiagnostics, InvalidAwareAuthResult } from "./api-key-resolver.js";
|
|
1
2
|
import type { AuthData } from "./types.js";
|
|
2
3
|
export declare const DEFAULT_ZHIPU_AUTH_CACHE_MAX_AGE_MS = 5000;
|
|
3
4
|
export type ZhipuKeySource = "env:ZHIPU_API_KEY" | "env:ZHIPU_CODING_PLAN_API_KEY" | "opencode.json" | "opencode.jsonc" | "auth.json";
|
|
4
|
-
export type ResolvedZhipuAuth =
|
|
5
|
-
|
|
6
|
-
} | {
|
|
7
|
-
state: "configured";
|
|
8
|
-
apiKey: string;
|
|
9
|
-
} | {
|
|
10
|
-
state: "invalid";
|
|
11
|
-
error: string;
|
|
12
|
-
};
|
|
13
|
-
export type ZhipuAuthDiagnostics = {
|
|
14
|
-
state: "none";
|
|
15
|
-
source: null;
|
|
16
|
-
checkedPaths: string[];
|
|
17
|
-
authPaths: string[];
|
|
18
|
-
} | {
|
|
19
|
-
state: "configured";
|
|
20
|
-
source: ZhipuKeySource;
|
|
21
|
-
checkedPaths: string[];
|
|
22
|
-
authPaths: string[];
|
|
23
|
-
} | {
|
|
24
|
-
state: "invalid";
|
|
25
|
-
source: "auth.json";
|
|
26
|
-
checkedPaths: string[];
|
|
27
|
-
authPaths: string[];
|
|
28
|
-
error: string;
|
|
29
|
-
};
|
|
5
|
+
export type ResolvedZhipuAuth = InvalidAwareAuthResult;
|
|
6
|
+
export type ZhipuAuthDiagnostics = InvalidAwareAuthDiagnostics<ZhipuKeySource, "auth.json">;
|
|
30
7
|
export { getGlobalOpencodeConfigCandidatePaths as getOpencodeConfigCandidatePaths } from "./api-key-resolver.js";
|
|
31
8
|
export declare function resolveZhipuAuth(auth: AuthData | null | undefined): ResolvedZhipuAuth;
|
|
32
9
|
export declare function resolveZhipuAuthCached(params?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zhipu-auth.d.ts","sourceRoot":"","sources":["../../src/lib/zhipu-auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"zhipu-auth.d.ts","sourceRoot":"","sources":["../../src/lib/zhipu-auth.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACjG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,mCAAmC,OAAQ,CAAC;AAUzD,MAAM,MAAM,cAAc,GACtB,mBAAmB,GACnB,+BAA+B,GAC/B,eAAe,GACf,gBAAgB,GAChB,WAAW,CAAC;AAEhB,MAAM,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;AACvD,MAAM,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAE5F,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAuBjH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,iBAAiB,CAErF;AAED,wBAAsB,sBAAsB,CAAC,MAAM,CAAC,EAAE;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAE7B;AAED,wBAAsB,uBAAuB,CAAC,MAAM,CAAC,EAAE;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAEhC"}
|