@slkiser/opencode-quota 4.7.0 → 4.8.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 +1 -1
- 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 +35 -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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-go.js","sourceRoot":"","sources":["../../src/providers/opencode-go.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opencode-go.js","sourceRoot":"","sources":["../../src/providers/opencode-go.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slkiser/opencode-quota",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.8.0",
|
|
4
4
|
"description": "OpenCode quota & tokens usage with zero context window pollution. Supports GitHub Copilot, OpenAI (Plus/Pro), Qwen Code, Chutes AI, Synthetic, Google Antigravity, Z.ai coding plan and more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
export interface OpenCodeGoConfig {
|
|
2
|
-
workspaceId: string;
|
|
3
|
-
authCookie: string;
|
|
4
|
-
}
|
|
5
|
-
export type ResolvedOpenCodeGoConfig = {
|
|
6
|
-
state: "none";
|
|
7
|
-
} | {
|
|
8
|
-
state: "configured";
|
|
9
|
-
config: OpenCodeGoConfig;
|
|
10
|
-
source: string;
|
|
11
|
-
} | {
|
|
12
|
-
state: "incomplete";
|
|
13
|
-
source: string;
|
|
14
|
-
missing: string;
|
|
15
|
-
} | {
|
|
16
|
-
state: "invalid";
|
|
17
|
-
source: string;
|
|
18
|
-
error: string;
|
|
19
|
-
};
|
|
20
|
-
export interface OpenCodeGoConfigDiagnostics {
|
|
21
|
-
state: ResolvedOpenCodeGoConfig["state"];
|
|
22
|
-
source: string | null;
|
|
23
|
-
missing: string | null;
|
|
24
|
-
error: string | null;
|
|
25
|
-
checkedPaths: string[];
|
|
26
|
-
}
|
|
27
|
-
export declare function resolveOpenCodeGoConfigFromEnv(env?: NodeJS.ProcessEnv): ResolvedOpenCodeGoConfig | null;
|
|
28
|
-
export declare function resolveOpenCodeGoConfig(): Promise<ResolvedOpenCodeGoConfig>;
|
|
29
|
-
declare const DEFAULT_CACHE_MAX_AGE_MS = 30000;
|
|
30
|
-
export { DEFAULT_CACHE_MAX_AGE_MS as DEFAULT_OPENCODE_GO_CONFIG_CACHE_MAX_AGE_MS };
|
|
31
|
-
export declare function resolveOpenCodeGoConfigCached(params?: {
|
|
32
|
-
maxAgeMs?: number;
|
|
33
|
-
}): Promise<ResolvedOpenCodeGoConfig>;
|
|
34
|
-
export declare function getOpenCodeGoConfigDiagnostics(): Promise<OpenCodeGoConfigDiagnostics>;
|
|
35
|
-
//# sourceMappingURL=opencode-go-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-go-config.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-go-config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjE;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAsCD,wBAAgB,8BAA8B,CAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,wBAAwB,GAAG,IAAI,CAmBjC;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CA8BjF;AAKD,QAAA,MAAM,wBAAwB,QAAS,CAAC;AACxC,OAAO,EAAE,wBAAwB,IAAI,2CAA2C,EAAE,CAAC;AAEnF,wBAAsB,6BAA6B,CAAC,MAAM,CAAC,EAAE;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CASpC;AAED,wBAAsB,8BAA8B,IAAI,OAAO,CAAC,2BAA2B,CAAC,CAmC3F"}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { readFile } from "fs/promises";
|
|
2
|
-
import { join } from "path";
|
|
3
|
-
import { getOpencodeRuntimeDirCandidates } from "./opencode-runtime-paths.js";
|
|
4
|
-
function getConfigCandidatePaths() {
|
|
5
|
-
const { configDirs } = getOpencodeRuntimeDirCandidates();
|
|
6
|
-
return configDirs.map((dir) => join(dir, "opencode-quota", "opencode-go.json"));
|
|
7
|
-
}
|
|
8
|
-
function getConfigFileError(error) {
|
|
9
|
-
if (error instanceof SyntaxError) {
|
|
10
|
-
return `Failed to parse JSON: ${error.message}`;
|
|
11
|
-
}
|
|
12
|
-
if (error instanceof Error && error.message) {
|
|
13
|
-
return `Failed to read config file: ${error.message}`;
|
|
14
|
-
}
|
|
15
|
-
return `Failed to read config file: ${String(error)}`;
|
|
16
|
-
}
|
|
17
|
-
async function readConfigFile(path) {
|
|
18
|
-
try {
|
|
19
|
-
const data = await readFile(path, "utf-8");
|
|
20
|
-
const parsed = JSON.parse(data);
|
|
21
|
-
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
22
|
-
return { state: "invalid", error: "Config file must contain a JSON object" };
|
|
23
|
-
}
|
|
24
|
-
return { state: "loaded", config: parsed };
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
if (error?.code === "ENOENT") {
|
|
28
|
-
return { state: "missing" };
|
|
29
|
-
}
|
|
30
|
-
return { state: "invalid", error: getConfigFileError(error) };
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
export function resolveOpenCodeGoConfigFromEnv(env = process.env) {
|
|
34
|
-
const workspaceId = env.OPENCODE_GO_WORKSPACE_ID?.trim();
|
|
35
|
-
const authCookie = env.OPENCODE_GO_AUTH_COOKIE?.trim();
|
|
36
|
-
if (!workspaceId && !authCookie)
|
|
37
|
-
return null;
|
|
38
|
-
if (workspaceId && authCookie) {
|
|
39
|
-
return {
|
|
40
|
-
state: "configured",
|
|
41
|
-
config: { workspaceId, authCookie },
|
|
42
|
-
source: "env",
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
return {
|
|
46
|
-
state: "incomplete",
|
|
47
|
-
source: "env",
|
|
48
|
-
missing: workspaceId ? "OPENCODE_GO_AUTH_COOKIE" : "OPENCODE_GO_WORKSPACE_ID",
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
export async function resolveOpenCodeGoConfig() {
|
|
52
|
-
const envResult = resolveOpenCodeGoConfigFromEnv();
|
|
53
|
-
if (envResult)
|
|
54
|
-
return envResult;
|
|
55
|
-
const candidates = getConfigCandidatePaths();
|
|
56
|
-
for (const path of candidates) {
|
|
57
|
-
const fileResult = await readConfigFile(path);
|
|
58
|
-
if (fileResult.state === "missing")
|
|
59
|
-
continue;
|
|
60
|
-
if (fileResult.state === "invalid") {
|
|
61
|
-
return { state: "invalid", source: path, error: fileResult.error };
|
|
62
|
-
}
|
|
63
|
-
const config = fileResult.config;
|
|
64
|
-
const workspaceId = typeof config.workspaceId === "string" ? config.workspaceId.trim() : "";
|
|
65
|
-
const authCookie = typeof config.authCookie === "string" ? config.authCookie.trim() : "";
|
|
66
|
-
if (workspaceId && authCookie) {
|
|
67
|
-
return {
|
|
68
|
-
state: "configured",
|
|
69
|
-
config: { workspaceId, authCookie },
|
|
70
|
-
source: path,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
const missing = !workspaceId ? "workspaceId" : "authCookie";
|
|
74
|
-
return { state: "incomplete", source: path, missing };
|
|
75
|
-
}
|
|
76
|
-
return { state: "none" };
|
|
77
|
-
}
|
|
78
|
-
let cachedConfig = null;
|
|
79
|
-
let cachedAt = 0;
|
|
80
|
-
const DEFAULT_CACHE_MAX_AGE_MS = 30_000;
|
|
81
|
-
export { DEFAULT_CACHE_MAX_AGE_MS as DEFAULT_OPENCODE_GO_CONFIG_CACHE_MAX_AGE_MS };
|
|
82
|
-
export async function resolveOpenCodeGoConfigCached(params) {
|
|
83
|
-
const maxAgeMs = Math.max(0, params?.maxAgeMs ?? DEFAULT_CACHE_MAX_AGE_MS);
|
|
84
|
-
const now = Date.now();
|
|
85
|
-
if (cachedConfig && now - cachedAt < maxAgeMs) {
|
|
86
|
-
return cachedConfig;
|
|
87
|
-
}
|
|
88
|
-
cachedConfig = await resolveOpenCodeGoConfig();
|
|
89
|
-
cachedAt = now;
|
|
90
|
-
return cachedConfig;
|
|
91
|
-
}
|
|
92
|
-
export async function getOpenCodeGoConfigDiagnostics() {
|
|
93
|
-
const resolved = await resolveOpenCodeGoConfig();
|
|
94
|
-
const checkedPaths = getConfigCandidatePaths();
|
|
95
|
-
if (resolved.state === "none") {
|
|
96
|
-
return { state: "none", source: null, missing: null, error: null, checkedPaths };
|
|
97
|
-
}
|
|
98
|
-
if (resolved.state === "incomplete") {
|
|
99
|
-
return {
|
|
100
|
-
state: "incomplete",
|
|
101
|
-
source: resolved.source,
|
|
102
|
-
missing: resolved.missing,
|
|
103
|
-
error: null,
|
|
104
|
-
checkedPaths,
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
if (resolved.state === "invalid") {
|
|
108
|
-
return {
|
|
109
|
-
state: "invalid",
|
|
110
|
-
source: resolved.source,
|
|
111
|
-
missing: null,
|
|
112
|
-
error: resolved.error,
|
|
113
|
-
checkedPaths,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
return {
|
|
117
|
-
state: "configured",
|
|
118
|
-
source: resolved.source,
|
|
119
|
-
missing: null,
|
|
120
|
-
error: null,
|
|
121
|
-
checkedPaths,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=opencode-go-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-go-config.js","sourceRoot":"","sources":["../../src/lib/opencode-go-config.ts"],"names":[],"mappings":"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"}
|