@slkiser/opencode-quota 4.7.0 → 4.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 +4 -4
- package/dist/lib/api-key-resolver.d.ts +1 -0
- package/dist/lib/api-key-resolver.d.ts.map +1 -1
- package/dist/lib/api-key-resolver.js +2 -1
- package/dist/lib/api-key-resolver.js.map +1 -1
- package/dist/lib/opencode-go-auth.d.ts +14 -0
- package/dist/lib/opencode-go-auth.d.ts.map +1 -0
- package/dist/lib/opencode-go-auth.js +38 -0
- package/dist/lib/opencode-go-auth.js.map +1 -0
- package/dist/lib/opencode-go.d.ts +1 -22
- package/dist/lib/opencode-go.d.ts.map +1 -1
- package/dist/lib/opencode-go.js +109 -160
- package/dist/lib/opencode-go.js.map +1 -1
- package/dist/lib/provider-metadata.d.ts +4 -4
- package/dist/lib/provider-metadata.d.ts.map +1 -1
- package/dist/lib/provider-metadata.js +4 -4
- package/dist/lib/provider-metadata.js.map +1 -1
- package/dist/lib/quota-status.d.ts.map +1 -1
- package/dist/lib/quota-status.js +20 -3
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/types.d.ts +16 -15
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/providers/opencode-go.d.ts +0 -6
- package/dist/providers/opencode-go.d.ts.map +1 -1
- package/dist/providers/opencode-go.js +37 -74
- package/dist/providers/opencode-go.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/opencode-go-config.d.ts +0 -35
- package/dist/lib/opencode-go-config.d.ts.map +0 -1
- package/dist/lib/opencode-go-config.js +0 -124
- package/dist/lib/opencode-go-config.js.map +0 -1
package/README.md
CHANGED
|
@@ -139,14 +139,14 @@ Run `npx @slkiser/opencode-quota@latest --help` for command options. See [Extern
|
|
|
139
139
|
| Anthropic (Claude) | [Needs setup](docs/readme/providers.md#anthropic-claude) | Local CLI/OAuth | Quota |
|
|
140
140
|
| Chutes AI | Automatic | Remote API | Quota |
|
|
141
141
|
| Cursor | [Needs setup](docs/readme/providers.md#cursor) | Local estimate | Budget and spend |
|
|
142
|
-
| GitHub Copilot | Automatic | Remote API |
|
|
142
|
+
| GitHub Copilot | Automatic | Remote API | Budget and usage |
|
|
143
143
|
| Google AGY | [Needs setup](docs/readme/providers.md#google-agy-quick-setup) | Remote API | Quota |
|
|
144
144
|
| Google Antigravity | [Needs setup](docs/readme/providers.md#google-antigravity) | Remote API | Quota |
|
|
145
145
|
| Kilo Gateway | Automatic | Remote API | Quota and balance |
|
|
146
146
|
| NanoGPT | Automatic | Remote API | Quota and balance |
|
|
147
147
|
| Ollama Cloud | Automatic | Remote API | Quota and usage |
|
|
148
148
|
| OpenAI | Automatic | Remote API | Quota |
|
|
149
|
-
| OpenCode Go |
|
|
149
|
+
| OpenCode Go | Automatic | Remote API | Quota |
|
|
150
150
|
| OpenCode Zen | [Needs setup](docs/readme/providers.md#opencode-zen) | Dashboard scraping | Budget and balance |
|
|
151
151
|
| OpenRouter | Automatic | Remote API | Budget and spend |
|
|
152
152
|
| Synthetic | Automatic | Remote API | Quota |
|
|
@@ -163,7 +163,7 @@ Run `npx @slkiser/opencode-quota@latest --help` for command options. See [Extern
|
|
|
163
163
|
| Chutes AI | Automatic | Remote API | Quota |
|
|
164
164
|
| Cursor | [Needs setup](docs/readme/providers.md#cursor) | Local estimate | Budget and spend |
|
|
165
165
|
| Gemini CLI (deprecated) | [Existing setups only](docs/readme/providers.md#gemini-cli) | Remote API | Quota |
|
|
166
|
-
| GitHub Copilot | [Needs setup](docs/readme/providers.md#github-copilot) | Remote API |
|
|
166
|
+
| GitHub Copilot | [Needs setup](docs/readme/providers.md#github-copilot) | Remote API | Budget and usage |
|
|
167
167
|
| Google AGY | [Needs setup](docs/readme/providers.md#google-agy-quick-setup) | Remote API | Quota |
|
|
168
168
|
| Google Antigravity | [Needs setup](docs/readme/providers.md#google-antigravity) | Remote API | Quota |
|
|
169
169
|
| NanoGPT | Automatic | Remote API | Quota and balance |
|
|
@@ -269,4 +269,4 @@ OpenCode Quota is not built by the OpenCode team and is not affiliated with Open
|
|
|
269
269
|
|
|
270
270
|
## Star history
|
|
271
271
|
|
|
272
|
-

|
|
@@ -98,6 +98,7 @@ export interface InvalidAwareApiKeyAuthConfig<AuthSource extends string> {
|
|
|
98
98
|
authSource: AuthSource;
|
|
99
99
|
displayName: string;
|
|
100
100
|
defaultMaxAgeMs: number;
|
|
101
|
+
unsupportedTypeError?: string;
|
|
101
102
|
}
|
|
102
103
|
/** Configuration for simple nullable API key resolution. */
|
|
103
104
|
export interface ResolveProviderApiKeyConfig<Source extends string> extends ResolveProviderApiKeyBaseConfig<Source> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/api-key-resolver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api-key-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/api-key-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -126,7 +126,8 @@ function parseInvalidAwareAuth(auth, config) {
|
|
|
126
126
|
const sanitized = sanitizeDisplayText(record.type).replace(/\s+/g, " ").trim();
|
|
127
127
|
return {
|
|
128
128
|
state: "invalid",
|
|
129
|
-
error:
|
|
129
|
+
error: config.unsupportedTypeError ??
|
|
130
|
+
`Unsupported ${config.displayName} auth type: "${(sanitized || "unknown").slice(0, 120)}"`,
|
|
130
131
|
};
|
|
131
132
|
}
|
|
132
133
|
const apiKey = typeof record.key === "string" ? record.key.trim() : "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key-resolver.js","sourceRoot":"","sources":["../../src/lib/api-key-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAQ9E,SAAS,6BAA6B,CAAC,UAA6B;IAClE,OAAO,6BAA6B,CAAC;QACnC,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;KAC/B,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACrB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,OAAO,EAAE,SAAS,CAAC,MAAM,KAAK,OAAO;KACtC,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B;IAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,+BAA+B,EAAE,CAAC;IAEzD,OAAO,CAAC,GAAG,6BAA6B,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,6BAA6B,CAAC,UAAU,CAAC,CAAC,CAAC;AACjG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qCAAqC;IACnD,MAAM,EAAE,UAAU,EAAE,GAAG,+BAA+B,EAAE,CAAC;IACzD,OAAO,6BAA6B,CAAC,UAAU,CAAC,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,OAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC;QAC/C,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;KACnC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9F,CAAC;AAcD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAa,EAAE,QAA2B;IAC/E,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAa,EACb,QAA2B;IAE3B,OAAO,QAAQ,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAe,EACf,MAGC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;QAC/B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEvE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,cAAc;YAAE,OAAO,OAAO,CAAC;QAE3C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QACpE,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;IAChC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAa,EAAE,QAA2B;IAC/E,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,CAAC;QACxB,IAAI,MAAM,EAAE,IAAI,KAAK,KAAK,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/E,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;
|
|
1
|
+
{"version":3,"file":"api-key-resolver.js","sourceRoot":"","sources":["../../src/lib/api-key-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { InvalidAwareAuthDiagnostics, InvalidAwareAuthResult } from "./api-key-resolver.js";
|
|
2
|
+
export declare const DEFAULT_OPENCODE_GO_AUTH_CACHE_MAX_AGE_MS = 5000;
|
|
3
|
+
export type OpenCodeGoKeySource = "env:OPENCODE_API_KEY" | "opencode.json" | "opencode.jsonc" | "auth.json";
|
|
4
|
+
export type ResolvedOpenCodeGoAuth = InvalidAwareAuthResult;
|
|
5
|
+
export type OpenCodeGoAuthDiagnostics = InvalidAwareAuthDiagnostics<OpenCodeGoKeySource, "auth.json">;
|
|
6
|
+
export { getGlobalOpencodeConfigCandidatePaths as getOpencodeConfigCandidatePaths } from "./api-key-resolver.js";
|
|
7
|
+
export declare function resolveOpenCodeGoAuth(auth: unknown): ResolvedOpenCodeGoAuth;
|
|
8
|
+
export declare function resolveOpenCodeGoAuthCached(params?: {
|
|
9
|
+
maxAgeMs?: number;
|
|
10
|
+
}): Promise<ResolvedOpenCodeGoAuth>;
|
|
11
|
+
export declare function getOpenCodeGoAuthDiagnostics(params?: {
|
|
12
|
+
maxAgeMs?: number;
|
|
13
|
+
}): Promise<OpenCodeGoAuthDiagnostics>;
|
|
14
|
+
//# sourceMappingURL=opencode-go-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-go-auth.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-go-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAOjG,eAAO,MAAM,yCAAyC,OAAQ,CAAC;AAQ/D,MAAM,MAAM,mBAAmB,GAC3B,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,WAAW,CAAC;AAEhB,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AAC5D,MAAM,MAAM,yBAAyB,GAAG,2BAA2B,CACjE,mBAAmB,EACnB,WAAW,CACZ,CAAC;AAEF,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAqBjH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,sBAAsB,CAE3E;AAED,wBAAsB,2BAA2B,CAAC,MAAM,CAAC,EAAE;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAElC;AAED,wBAAsB,4BAA4B,CAAC,MAAM,CAAC,EAAE;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAErC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { createProviderApiKeyResolver, getGlobalOpencodeConfigCandidatePaths, } from "./api-key-resolver.js";
|
|
2
|
+
import { getAuthPaths, readAuthFileCached } from "./opencode-auth.js";
|
|
3
|
+
export const DEFAULT_OPENCODE_GO_AUTH_CACHE_MAX_AGE_MS = 5_000;
|
|
4
|
+
// `opencode-go` is the provider id the OpenCode CLI writes via
|
|
5
|
+
// `opencode auth login -p opencode-go` (shown as "OpenCode Go api" in `opencode auth list`).
|
|
6
|
+
// `opencode` stays as a fallback alias for existing manual setups.
|
|
7
|
+
const OPENCODE_GO_AUTH_KEYS = ["opencode-go", "opencode"];
|
|
8
|
+
const OPENCODE_GO_PROVIDER_KEYS = ["opencode"];
|
|
9
|
+
const ALLOWED_OPENCODE_GO_ENV_VARS = ["OPENCODE_API_KEY"];
|
|
10
|
+
export { getGlobalOpencodeConfigCandidatePaths as getOpencodeConfigCandidatePaths } from "./api-key-resolver.js";
|
|
11
|
+
const openCodeGoAuthResolver = createProviderApiKeyResolver({
|
|
12
|
+
envVars: [{ name: "OPENCODE_API_KEY", source: "env:OPENCODE_API_KEY" }],
|
|
13
|
+
providerKeys: OPENCODE_GO_PROVIDER_KEYS,
|
|
14
|
+
allowedEnvVars: ALLOWED_OPENCODE_GO_ENV_VARS,
|
|
15
|
+
configJsonSource: "opencode.json",
|
|
16
|
+
configJsoncSource: "opencode.jsonc",
|
|
17
|
+
getConfigCandidates: getGlobalOpencodeConfigCandidatePaths,
|
|
18
|
+
auth: {
|
|
19
|
+
policy: "invalid-aware-api-key",
|
|
20
|
+
authKeys: OPENCODE_GO_AUTH_KEYS,
|
|
21
|
+
authSource: "auth.json",
|
|
22
|
+
displayName: "OpenCode Go",
|
|
23
|
+
defaultMaxAgeMs: DEFAULT_OPENCODE_GO_AUTH_CACHE_MAX_AGE_MS,
|
|
24
|
+
unsupportedTypeError: "OpenCode Go auth entry has unsupported type",
|
|
25
|
+
readAuth: (maxAgeMs) => readAuthFileCached({ maxAgeMs }),
|
|
26
|
+
getAuthPaths,
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
export function resolveOpenCodeGoAuth(auth) {
|
|
30
|
+
return openCodeGoAuthResolver.parseAuth(auth);
|
|
31
|
+
}
|
|
32
|
+
export async function resolveOpenCodeGoAuthCached(params) {
|
|
33
|
+
return openCodeGoAuthResolver.resolve(params);
|
|
34
|
+
}
|
|
35
|
+
export async function getOpenCodeGoAuthDiagnostics(params) {
|
|
36
|
+
return openCodeGoAuthResolver.diagnostics(params);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=opencode-go-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-go-auth.js","sourceRoot":"","sources":["../../src/lib/opencode-go-auth.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAC5B,qCAAqC,GACtC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEtE,MAAM,CAAC,MAAM,yCAAyC,GAAG,KAAK,CAAC;AAC/D,+DAA+D;AAC/D,6FAA6F;AAC7F,mEAAmE;AACnE,MAAM,qBAAqB,GAAG,CAAC,aAAa,EAAE,UAAU,CAAU,CAAC;AACnE,MAAM,yBAAyB,GAAG,CAAC,UAAU,CAAU,CAAC;AACxD,MAAM,4BAA4B,GAAG,CAAC,kBAAkB,CAAU,CAAC;AAcnE,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAEjH,MAAM,sBAAsB,GAAG,4BAA4B,CAAmC;IAC5F,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACvE,YAAY,EAAE,yBAAyB;IACvC,cAAc,EAAE,4BAA4B;IAC5C,gBAAgB,EAAE,eAAe;IACjC,iBAAiB,EAAE,gBAAgB;IACnC,mBAAmB,EAAE,qCAAqC;IAC1D,IAAI,EAAE;QACJ,MAAM,EAAE,uBAAuB;QAC/B,QAAQ,EAAE,qBAAqB;QAC/B,UAAU,EAAE,WAAW;QACvB,WAAW,EAAE,aAAa;QAC1B,eAAe,EAAE,yCAAyC;QAC1D,oBAAoB,EAAE,6CAA6C;QACnE,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC;QACxD,YAAY;KACb;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,qBAAqB,CAAC,IAAa;IACjD,OAAO,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,MAEjD;IACC,OAAO,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,MAElD;IACC,OAAO,sBAAsB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -1,26 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenCode Go dashboard scraper.
|
|
3
|
-
*
|
|
4
|
-
* Fetches the OpenCode Go workspace page and parses usage data from two
|
|
5
|
-
* possible formats:
|
|
6
|
-
* 1. SolidJS SSR hydration output (`$R[\d+]={...usagePercent...resetInSec...}`)
|
|
7
|
-
* 2. HTML with `data-slot` attributes (newer format)
|
|
8
|
-
*
|
|
9
|
-
* The scraper tries SolidJS SSR first, then falls back to data-slot parsing.
|
|
10
|
-
*/
|
|
11
1
|
import type { OpenCodeGoResult } from "./types.js";
|
|
12
|
-
|
|
13
|
-
usagePercent: number;
|
|
14
|
-
resetInSec: number;
|
|
15
|
-
}
|
|
16
|
-
declare function parseWindowUsage(html: string, rePctFirst: RegExp, reResetFirst: RegExp): ScrapedWindowUsage | null;
|
|
17
|
-
/**
|
|
18
|
-
* Parse the newer data-slot HTML format.
|
|
19
|
-
* Returns a record of window names to their usage data.
|
|
20
|
-
*/
|
|
21
|
-
declare function parseDataSlotFormat(html: string): Partial<Record<string, ScrapedWindowUsage>>;
|
|
22
|
-
export declare function queryOpenCodeGoQuota(workspaceId: string, authCookie: string, options?: {
|
|
2
|
+
export declare function queryOpenCodeGoQuota(accessToken: string, options?: {
|
|
23
3
|
requestTimeoutMs?: number;
|
|
24
4
|
}): Promise<OpenCodeGoResult>;
|
|
25
|
-
export { parseWindowUsage as _parseWindowUsage, parseDataSlotFormat as _parseDataSlotFormat };
|
|
26
5
|
//# sourceMappingURL=opencode-go.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-go.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-go.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opencode-go.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-go.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAyC,MAAM,YAAY,CAAC;AAiI1F,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC,gBAAgB,CAAC,CAwC3B"}
|
package/dist/lib/opencode-go.js
CHANGED
|
@@ -1,190 +1,139 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenCode Go dashboard scraper.
|
|
3
|
-
*
|
|
4
|
-
* Fetches the OpenCode Go workspace page and parses usage data from two
|
|
5
|
-
* possible formats:
|
|
6
|
-
* 1. SolidJS SSR hydration output (`$R[\d+]={...usagePercent...resetInSec...}`)
|
|
7
|
-
* 2. HTML with `data-slot` attributes (newer format)
|
|
8
|
-
*
|
|
9
|
-
* The scraper tries SolidJS SSR first, then falls back to data-slot parsing.
|
|
10
|
-
*/
|
|
11
1
|
import { sanitizeDisplayText } from "./display-sanitize.js";
|
|
12
2
|
import { fetchWithTimeout } from "./http.js";
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
3
|
+
const OPENCODE_GO_USAGE_URL = "https://opencode.ai/zen/go/v1/usage";
|
|
4
|
+
const OPENCODE_GO_WINDOW_ORDER = ["rolling", "weekly", "monthly"];
|
|
5
|
+
const OFFSET_ISO_TIMESTAMP = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.\d+)?(?:Z|[+-](\d{2}):(\d{2}))$/;
|
|
6
|
+
function asRecord(value) {
|
|
7
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
8
|
+
? value
|
|
9
|
+
: null;
|
|
10
|
+
}
|
|
11
|
+
function redactToken(text, accessToken) {
|
|
12
|
+
return accessToken ? text.replaceAll(accessToken, "[redacted]") : text;
|
|
13
|
+
}
|
|
14
|
+
function sanitizeMessage(text, accessToken, maxLength = 120) {
|
|
15
|
+
const redacted = redactToken(text, accessToken);
|
|
16
|
+
const sanitized = sanitizeDisplayText(redacted).replace(/\s+/g, " ").trim();
|
|
17
|
+
return (sanitized || "unknown").slice(0, maxLength);
|
|
18
|
+
}
|
|
19
|
+
function errorMessage(error, accessToken) {
|
|
20
|
+
return sanitizeMessage(error instanceof Error ? error.message : String(error), accessToken);
|
|
21
|
+
}
|
|
22
|
+
function contractError(message) {
|
|
23
|
+
return { success: false, error: `Invalid OpenCode Go API response: ${message}` };
|
|
24
|
+
}
|
|
25
|
+
function isValidOffsetIsoTimestamp(value) {
|
|
26
|
+
const match = OFFSET_ISO_TIMESTAMP.exec(value);
|
|
27
|
+
if (!match)
|
|
28
|
+
return false;
|
|
29
|
+
const [, yearText, monthText, dayText, hourText, minuteText, secondText, offsetHour, offsetMinute,] = match;
|
|
30
|
+
const year = Number(yearText);
|
|
31
|
+
const month = Number(monthText);
|
|
32
|
+
const day = Number(dayText);
|
|
33
|
+
const hour = Number(hourText);
|
|
34
|
+
const minute = Number(minuteText);
|
|
35
|
+
const second = Number(secondText);
|
|
36
|
+
const leapYear = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
|
|
37
|
+
const daysInMonth = [0, 31, leapYear ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
|
38
|
+
return (month >= 1 &&
|
|
39
|
+
month <= 12 &&
|
|
40
|
+
day >= 1 &&
|
|
41
|
+
day <= (daysInMonth[month] ?? 0) &&
|
|
42
|
+
hour <= 23 &&
|
|
43
|
+
minute <= 59 &&
|
|
44
|
+
second <= 59 &&
|
|
45
|
+
(offsetHour === undefined || Number(offsetHour) <= 23) &&
|
|
46
|
+
(offsetMinute === undefined || Number(offsetMinute) <= 59));
|
|
47
|
+
}
|
|
48
|
+
function normalizeWindow(windowKey, value, accessToken) {
|
|
49
|
+
const window = asRecord(value);
|
|
50
|
+
if (!window) {
|
|
51
|
+
return contractError(`${windowKey} window is missing or malformed`);
|
|
36
52
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const resetInSec = Number(resetFirstMatch[1]);
|
|
40
|
-
const usagePercent = Number(resetFirstMatch[2]);
|
|
41
|
-
if (Number.isFinite(usagePercent) && Number.isFinite(resetInSec)) {
|
|
42
|
-
return { usagePercent, resetInSec };
|
|
43
|
-
}
|
|
53
|
+
if (window.status !== "ok") {
|
|
54
|
+
return contractError(`${windowKey} status is not ok: ${sanitizeMessage(String(window.status), accessToken)}`);
|
|
44
55
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
* Parse human-readable time strings like "1 hour 56 minutes", "6 days 2 hours", "26 days 17 hours"
|
|
49
|
-
* into seconds.
|
|
50
|
-
*/
|
|
51
|
-
function parseHumanReadableTime(timeStr) {
|
|
52
|
-
const normalized = timeStr.toLowerCase().trim().replace(/\s+/g, " ");
|
|
53
|
-
if (["reset-now", "reset now", "now", "resets now"].includes(normalized)) {
|
|
54
|
-
return 0;
|
|
56
|
+
const percent = window.percent;
|
|
57
|
+
if (typeof percent !== "number" || !Number.isFinite(percent) || percent < 0 || percent > 100) {
|
|
58
|
+
return contractError(`${windowKey} percent must be a finite number from 0 to 100`);
|
|
55
59
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const hourMatch = normalized.match(/(\d+(?:\.\d+)?)\s*hours?/);
|
|
60
|
-
const minuteMatch = normalized.match(/(\d+(?:\.\d+)?)\s*minutes?/);
|
|
61
|
-
const secondMatch = normalized.match(/(\d+(?:\.\d+)?)\s*seconds?/);
|
|
62
|
-
const hasDuration = Boolean(dayMatch || hourMatch || minuteMatch || secondMatch);
|
|
63
|
-
if (dayMatch)
|
|
64
|
-
totalSeconds += Number(dayMatch[1]) * 86400;
|
|
65
|
-
if (hourMatch)
|
|
66
|
-
totalSeconds += Number(hourMatch[1]) * 3600;
|
|
67
|
-
if (minuteMatch)
|
|
68
|
-
totalSeconds += Number(minuteMatch[1]) * 60;
|
|
69
|
-
if (secondMatch)
|
|
70
|
-
totalSeconds += Number(secondMatch[1]);
|
|
71
|
-
return hasDuration ? totalSeconds : null;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Parse the newer data-slot HTML format.
|
|
75
|
-
* Returns a record of window names to their usage data.
|
|
76
|
-
*/
|
|
77
|
-
function parseDataSlotFormat(html) {
|
|
78
|
-
const result = {};
|
|
79
|
-
const items = html.split(/data-slot="usage-item"/);
|
|
80
|
-
for (let i = 1; i < items.length; i++) {
|
|
81
|
-
const content = items[i];
|
|
82
|
-
// Extract the label (Rolling Usage, Weekly Usage, Monthly Usage)
|
|
83
|
-
const labelMatch = content.match(/data-slot="usage-label">([^<]+)</);
|
|
84
|
-
if (!labelMatch)
|
|
85
|
-
continue;
|
|
86
|
-
const label = labelMatch[1].trim().toLowerCase();
|
|
87
|
-
// Extract usage percentage - get the number after data-slot="usage-value">
|
|
88
|
-
const usageMatch = content.match(/data-slot="usage-value">[^0-9]*(\d+(?:\.\d+)?)/);
|
|
89
|
-
if (!usageMatch)
|
|
90
|
-
continue;
|
|
91
|
-
const usagePercent = Number(usageMatch[1]);
|
|
92
|
-
// Extract reset time - get content between reset-time/reset-now and </span>
|
|
93
|
-
const resetMatch = content.match(/data-slot="(reset-time|reset-now)">([\s\S]*?)<\/span>/);
|
|
94
|
-
if (!resetMatch)
|
|
95
|
-
continue;
|
|
96
|
-
// Clean up SolidJS comments and "Resets in" prefix
|
|
97
|
-
const resetContent = resetMatch[2]
|
|
98
|
-
.replace(/<!--\$-->/g, "")
|
|
99
|
-
.replace(/<!--\/-->/g, "")
|
|
100
|
-
.replace(/Resets?\s*in\s*/i, "")
|
|
101
|
-
.trim();
|
|
102
|
-
const resetInSec = resetMatch[1] === "reset-now" ? 0 : parseHumanReadableTime(resetContent);
|
|
103
|
-
if (!Number.isFinite(usagePercent) || resetInSec === null || !Number.isFinite(resetInSec))
|
|
104
|
-
continue;
|
|
105
|
-
// Map label to window key
|
|
106
|
-
let windowKey = null;
|
|
107
|
-
if (label.includes("rolling"))
|
|
108
|
-
windowKey = "rolling";
|
|
109
|
-
else if (label.includes("weekly"))
|
|
110
|
-
windowKey = "weekly";
|
|
111
|
-
else if (label.includes("monthly"))
|
|
112
|
-
windowKey = "monthly";
|
|
113
|
-
if (windowKey) {
|
|
114
|
-
result[windowKey] = { usagePercent, resetInSec };
|
|
115
|
-
}
|
|
60
|
+
const resetsAt = window.resetsAt;
|
|
61
|
+
if (typeof resetsAt !== "string" || !isValidOffsetIsoTimestamp(resetsAt)) {
|
|
62
|
+
return contractError(`${windowKey} resetsAt must be an offset-qualified ISO timestamp`);
|
|
116
63
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
return
|
|
64
|
+
const resetTime = Date.parse(resetsAt);
|
|
65
|
+
if (!Number.isFinite(resetTime)) {
|
|
66
|
+
return contractError(`${windowKey} resetsAt must be a valid timestamp`);
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
status: "ok",
|
|
70
|
+
usagePercent: percent,
|
|
71
|
+
percentRemaining: 100 - percent,
|
|
72
|
+
resetTimeIso: new Date(resetTime).toISOString(),
|
|
73
|
+
};
|
|
122
74
|
}
|
|
123
|
-
function
|
|
124
|
-
const
|
|
125
|
-
|
|
75
|
+
function normalizeResponse(payload, accessToken) {
|
|
76
|
+
const root = asRecord(payload);
|
|
77
|
+
if (!root)
|
|
78
|
+
return contractError("root must be an object");
|
|
79
|
+
const usage = asRecord(root.usage);
|
|
80
|
+
if (!usage)
|
|
81
|
+
return contractError("usage must be an object");
|
|
82
|
+
const normalized = {};
|
|
83
|
+
for (const windowKey of OPENCODE_GO_WINDOW_ORDER) {
|
|
84
|
+
const window = normalizeWindow(windowKey, usage[windowKey], accessToken);
|
|
85
|
+
if ("success" in window)
|
|
86
|
+
return window;
|
|
87
|
+
normalized[windowKey] = window;
|
|
88
|
+
}
|
|
126
89
|
return {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
90
|
+
success: true,
|
|
91
|
+
rolling: normalized.rolling,
|
|
92
|
+
weekly: normalized.weekly,
|
|
93
|
+
monthly: normalized.monthly,
|
|
131
94
|
};
|
|
132
95
|
}
|
|
133
|
-
export async function queryOpenCodeGoQuota(
|
|
96
|
+
export async function queryOpenCodeGoQuota(accessToken, options = {}) {
|
|
134
97
|
try {
|
|
135
|
-
|
|
136
|
-
return await fetchWithTimeout(url, {
|
|
98
|
+
return await fetchWithTimeout(OPENCODE_GO_USAGE_URL, {
|
|
137
99
|
request: {
|
|
138
100
|
method: "GET",
|
|
139
101
|
headers: {
|
|
140
|
-
|
|
141
|
-
Accept: "
|
|
142
|
-
Cookie: `auth=${authCookie}`,
|
|
102
|
+
Authorization: `Bearer ${accessToken}`,
|
|
103
|
+
Accept: "application/json",
|
|
143
104
|
},
|
|
144
105
|
},
|
|
145
|
-
timeoutMs: options.requestTimeoutMs
|
|
106
|
+
timeoutMs: options.requestTimeoutMs,
|
|
146
107
|
consume: async (response) => {
|
|
147
108
|
if (!response.ok) {
|
|
148
|
-
|
|
109
|
+
let text;
|
|
110
|
+
try {
|
|
111
|
+
text = await response.text();
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
return {
|
|
115
|
+
success: false,
|
|
116
|
+
error: `OpenCode Go API error ${response.status}: ${errorMessage(error, accessToken)}`,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
149
119
|
return {
|
|
150
120
|
success: false,
|
|
151
|
-
error: `OpenCode Go
|
|
121
|
+
error: `OpenCode Go API error ${response.status}: ${sanitizeMessage(text, accessToken)}`,
|
|
152
122
|
};
|
|
153
123
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
let weekly = parseWindowUsage(html, RE_WEEKLY_PCT_FIRST, RE_WEEKLY_RESET_FIRST);
|
|
158
|
-
let monthly = parseWindowUsage(html, RE_MONTHLY_PCT_FIRST, RE_MONTHLY_RESET_FIRST);
|
|
159
|
-
// Fall back to data-slot HTML format if SSR found nothing
|
|
160
|
-
if (!rolling && !weekly && !monthly) {
|
|
161
|
-
const dataSlotResult = parseDataSlotFormat(html);
|
|
162
|
-
rolling = dataSlotResult.rolling ?? null;
|
|
163
|
-
weekly = dataSlotResult.weekly ?? null;
|
|
164
|
-
monthly = dataSlotResult.monthly ?? null;
|
|
124
|
+
let payload;
|
|
125
|
+
try {
|
|
126
|
+
payload = await response.json();
|
|
165
127
|
}
|
|
166
|
-
|
|
167
|
-
return {
|
|
168
|
-
success: false,
|
|
169
|
-
error: "Could not parse any known OpenCode Go dashboard usage windows (rollingUsage, weeklyUsage, monthlyUsage)",
|
|
170
|
-
};
|
|
128
|
+
catch (error) {
|
|
129
|
+
return contractError(`body is not valid JSON: ${errorMessage(error, accessToken)}`);
|
|
171
130
|
}
|
|
172
|
-
|
|
173
|
-
return {
|
|
174
|
-
success: true,
|
|
175
|
-
...(rolling ? { rolling: normalizeWindowUsage(rolling, now) } : {}),
|
|
176
|
-
...(weekly ? { weekly: normalizeWindowUsage(weekly, now) } : {}),
|
|
177
|
-
...(monthly ? { monthly: normalizeWindowUsage(monthly, now) } : {}),
|
|
178
|
-
};
|
|
131
|
+
return normalizeResponse(payload, accessToken);
|
|
179
132
|
},
|
|
180
133
|
});
|
|
181
134
|
}
|
|
182
|
-
catch (
|
|
183
|
-
return {
|
|
184
|
-
success: false,
|
|
185
|
-
error: sanitizeMessage(err instanceof Error ? err.message : String(err)),
|
|
186
|
-
};
|
|
135
|
+
catch (error) {
|
|
136
|
+
return { success: false, error: errorMessage(error, accessToken) };
|
|
187
137
|
}
|
|
188
138
|
}
|
|
189
|
-
export { parseWindowUsage as _parseWindowUsage, parseDataSlotFormat as _parseDataSlotFormat };
|
|
190
139
|
//# sourceMappingURL=opencode-go.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-go.js","sourceRoot":"","sources":["../../src/lib/opencode-go.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"opencode-go.js","sourceRoot":"","sources":["../../src/lib/opencode-go.ts"],"names":[],"mappings":"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"}
|
|
@@ -259,11 +259,11 @@ declare const PROVIDER_CATALOG_SOURCE: {
|
|
|
259
259
|
readonly runtimeIds: readonly ["opencode-go"];
|
|
260
260
|
readonly synonyms: readonly ["opencode-go-subscription"];
|
|
261
261
|
readonly shape: {
|
|
262
|
-
readonly autoSetup: "
|
|
263
|
-
readonly authentication: "
|
|
262
|
+
readonly autoSetup: "yes";
|
|
263
|
+
readonly authentication: "opencode_auth_api_key";
|
|
264
|
+
readonly authFallbacks: readonly ["env_api_key", "global_opencode_config"];
|
|
264
265
|
readonly quota: "remote_api";
|
|
265
|
-
readonly
|
|
266
|
-
readonly notes: "Scrapes the OpenCode Go dashboard; requires workspaceId and authCookie";
|
|
266
|
+
readonly notes: "Reads the official OpenCode Go usage API through standard Go API-key sources";
|
|
267
267
|
};
|
|
268
268
|
};
|
|
269
269
|
readonly opencode: {
|