opencode-claude-auth 0.7.3 → 0.7.4

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 CHANGED
@@ -47,6 +47,28 @@ Then add to the `plugin` array in your `opencode.json`:
47
47
 
48
48
  Just run OpenCode. The plugin handles auth automatically — it reads your Claude Code credentials, provides them to the Anthropic API, and refreshes them in the background. If your credentials aren't OAuth-based, the plugin falls through to standard API key auth.
49
49
 
50
+ ## Supported models
51
+
52
+ 15 supported models. Run `npm run test:models` to verify against your account.
53
+
54
+ | Model |
55
+ |-------|
56
+ | claude-3-haiku-20240307 |
57
+ | claude-haiku-4-5 |
58
+ | claude-haiku-4-5-20251001 |
59
+ | claude-opus-4-0 |
60
+ | claude-opus-4-1 |
61
+ | claude-opus-4-1-20250805 |
62
+ | claude-opus-4-20250514 |
63
+ | claude-opus-4-5 |
64
+ | claude-opus-4-5-20251101 |
65
+ | claude-opus-4-6 |
66
+ | claude-sonnet-4-0 |
67
+ | claude-sonnet-4-20250514 |
68
+ | claude-sonnet-4-5 |
69
+ | claude-sonnet-4-5-20250929 |
70
+ | claude-sonnet-4-6 |
71
+
50
72
  ## Credential sources
51
73
 
52
74
  The plugin checks these in order:
@@ -0,0 +1,7 @@
1
+ export declare const LONG_CONTEXT_BETAS: string[];
2
+ export declare function getExcludedBetas(modelId: string): Set<string>;
3
+ export declare function addExcludedBeta(modelId: string, beta: string): void;
4
+ export declare function isLongContextError(responseBody: string): boolean;
5
+ export declare function getNextBetaToExclude(modelId: string): string | null;
6
+ export declare function getModelBetas(modelId: string, excluded?: Set<string>): string[];
7
+ //# sourceMappingURL=betas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"betas.d.ts","sourceRoot":"","sources":["../src/betas.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB,UAA+D,CAAA;AAc9F,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAe7D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAInE;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAGhE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQnE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CA+B/E"}
package/dist/betas.js ADDED
@@ -0,0 +1,74 @@
1
+ const DEFAULT_BETA_FLAGS = "claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,prompt-caching-scope-2026-01-05";
2
+ // Beta flags to try removing in order when "long context" errors occur
3
+ export const LONG_CONTEXT_BETAS = ["context-1m-2025-08-07", "interleaved-thinking-2025-05-14"];
4
+ function getRequiredBetas() {
5
+ return (process.env.ANTHROPIC_BETA_FLAGS ?? DEFAULT_BETA_FLAGS)
6
+ .split(",").map(s => s.trim()).filter(Boolean);
7
+ }
8
+ // Session-level cache of excluded beta flags per model (resets on process restart)
9
+ const excludedBetas = new Map();
10
+ // Track the last-seen beta flags env var and model to detect changes
11
+ let lastBetaFlagsEnv = process.env.ANTHROPIC_BETA_FLAGS;
12
+ let lastModelId;
13
+ export function getExcludedBetas(modelId) {
14
+ // Reset exclusions if user changed ANTHROPIC_BETA_FLAGS
15
+ const currentBetaFlags = process.env.ANTHROPIC_BETA_FLAGS;
16
+ if (currentBetaFlags !== lastBetaFlagsEnv) {
17
+ excludedBetas.clear();
18
+ lastBetaFlagsEnv = currentBetaFlags;
19
+ }
20
+ // Reset exclusions if user switched models (new model may support different betas)
21
+ if (lastModelId !== undefined && lastModelId !== modelId) {
22
+ excludedBetas.clear();
23
+ }
24
+ lastModelId = modelId;
25
+ return excludedBetas.get(modelId) ?? new Set();
26
+ }
27
+ export function addExcludedBeta(modelId, beta) {
28
+ const existing = excludedBetas.get(modelId) ?? new Set();
29
+ existing.add(beta);
30
+ excludedBetas.set(modelId, existing);
31
+ }
32
+ export function isLongContextError(responseBody) {
33
+ return responseBody.includes("Extra usage is required for long context requests")
34
+ || responseBody.includes("long context beta is not yet available");
35
+ }
36
+ export function getNextBetaToExclude(modelId) {
37
+ const excluded = getExcludedBetas(modelId);
38
+ for (const beta of LONG_CONTEXT_BETAS) {
39
+ if (!excluded.has(beta)) {
40
+ return beta;
41
+ }
42
+ }
43
+ return null; // All long-context betas already excluded
44
+ }
45
+ export function getModelBetas(modelId, excluded) {
46
+ const betas = [...getRequiredBetas()];
47
+ const lower = modelId.toLowerCase();
48
+ // context-1m only for opus/sonnet 4.6+ models
49
+ if (lower.includes("opus") || lower.includes("sonnet")) {
50
+ const versionMatch = lower.match(/(opus|sonnet)-(\d+)-(\d+)/);
51
+ if (versionMatch) {
52
+ const major = parseInt(versionMatch[2], 10);
53
+ const minor = parseInt(versionMatch[3], 10);
54
+ // Date suffixes like 20250514 are not minor versions — treat as x.0
55
+ const effectiveMinor = minor > 99 ? 0 : minor;
56
+ if (major > 4 || (major === 4 && effectiveMinor >= 6)) {
57
+ betas.push("context-1m-2025-08-07");
58
+ }
59
+ }
60
+ // If no version found (bare alias like "sonnet"), exclude 1M beta
61
+ }
62
+ // haiku doesn't get claude-code-20250219
63
+ if (lower.includes("haiku")) {
64
+ const idx = betas.indexOf("claude-code-20250219");
65
+ if (idx !== -1)
66
+ betas.splice(idx, 1);
67
+ }
68
+ // Filter out excluded betas (from previous failed requests due to long context errors)
69
+ if (excluded && excluded.size > 0) {
70
+ return betas.filter(beta => !excluded.has(beta));
71
+ }
72
+ return betas;
73
+ }
74
+ //# sourceMappingURL=betas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"betas.js","sourceRoot":"","sources":["../src/betas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type ClaudeCredentials } from "./keychain.js";
2
+ export declare function syncAuthJson(creds: ClaudeCredentials): void;
3
+ export declare function refreshIfNeeded(): ClaudeCredentials | null;
4
+ export declare function getCachedCredentials(): ClaudeCredentials | null;
5
+ export type { ClaudeCredentials } from "./keychain.js";
6
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAIA,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AA0C7E,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAI3D;AAmBD,wBAAgB,eAAe,IAAI,iBAAiB,GAAG,IAAI,CAW1D;AAMD,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAoB/D;AAED,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,97 @@
1
+ import { execSync } from "node:child_process";
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
+ import { dirname, join } from "node:path";
4
+ import { homedir } from "node:os";
5
+ import { readClaudeCredentials } from "./keychain.js";
6
+ const CREDENTIAL_CACHE_TTL_MS = 30_000;
7
+ let cachedCredentials = null;
8
+ let cachedCredentialsAt = 0;
9
+ function getAuthJsonPaths() {
10
+ const xdgPath = join(homedir(), ".local", "share", "opencode", "auth.json");
11
+ if (process.platform === "win32") {
12
+ const appData = process.env.LOCALAPPDATA ?? join(homedir(), "AppData", "Local");
13
+ const localAppDataPath = join(appData, "opencode", "auth.json");
14
+ return [xdgPath, localAppDataPath];
15
+ }
16
+ return [xdgPath];
17
+ }
18
+ function syncToPath(authPath, creds) {
19
+ let auth = {};
20
+ if (existsSync(authPath)) {
21
+ const raw = readFileSync(authPath, "utf-8").trim();
22
+ if (raw) {
23
+ try {
24
+ auth = JSON.parse(raw);
25
+ }
26
+ catch {
27
+ // Malformed file, start fresh
28
+ }
29
+ }
30
+ }
31
+ auth.anthropic = {
32
+ type: "oauth",
33
+ access: creds.accessToken,
34
+ refresh: creds.refreshToken,
35
+ expires: creds.expiresAt,
36
+ };
37
+ const dir = dirname(authPath);
38
+ if (!existsSync(dir)) {
39
+ mkdirSync(dir, { recursive: true });
40
+ }
41
+ writeFileSync(authPath, JSON.stringify(auth, null, 2), "utf-8");
42
+ }
43
+ export function syncAuthJson(creds) {
44
+ for (const authPath of getAuthJsonPaths()) {
45
+ syncToPath(authPath, creds);
46
+ }
47
+ }
48
+ function refreshViaCli() {
49
+ const maxAttempts = 2;
50
+ for (let i = 0; i < maxAttempts; i++) {
51
+ try {
52
+ execSync("claude -p . --model haiku", {
53
+ timeout: 60_000,
54
+ encoding: "utf-8",
55
+ env: { ...process.env, TERM: "dumb" },
56
+ stdio: "ignore",
57
+ });
58
+ return;
59
+ }
60
+ catch {
61
+ // Non-fatal: retry once, then give up
62
+ }
63
+ }
64
+ }
65
+ export function refreshIfNeeded() {
66
+ let creds = readClaudeCredentials();
67
+ if (creds && creds.expiresAt > Date.now() + 60_000) {
68
+ return creds;
69
+ }
70
+ refreshViaCli();
71
+ creds = readClaudeCredentials();
72
+ if (creds && creds.expiresAt > Date.now() + 60_000) {
73
+ return creds;
74
+ }
75
+ return null;
76
+ }
77
+ function isCredentialUsable(creds) {
78
+ return creds.expiresAt > Date.now() + 60_000;
79
+ }
80
+ export function getCachedCredentials() {
81
+ const now = Date.now();
82
+ if (cachedCredentials &&
83
+ now - cachedCredentialsAt < CREDENTIAL_CACHE_TTL_MS &&
84
+ isCredentialUsable(cachedCredentials)) {
85
+ return cachedCredentials;
86
+ }
87
+ const latest = refreshIfNeeded();
88
+ if (!latest) {
89
+ cachedCredentials = null;
90
+ cachedCredentialsAt = 0;
91
+ return null;
92
+ }
93
+ cachedCredentials = latest;
94
+ cachedCredentialsAt = now;
95
+ return latest;
96
+ }
97
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,qBAAqB,EAA0B,MAAM,eAAe,CAAA;AAE7E,MAAM,uBAAuB,GAAG,MAAM,CAAA;AAEtC,IAAI,iBAAiB,GAA6B,IAAI,CAAA;AACtD,IAAI,mBAAmB,GAAG,CAAC,CAAA;AAE3B,SAAS,gBAAgB;IACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IAC3E,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAC/E,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QAC/D,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,CAAA;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB,EAAE,KAAwB;IAC5D,IAAI,IAAI,GAA4B,EAAE,CAAA;IACtC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;QAClD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,8BAA8B;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,SAAS,GAAG;QACf,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,KAAK,CAAC,WAAW;QACzB,OAAO,EAAE,KAAK,CAAC,YAAY;QAC3B,OAAO,EAAE,KAAK,CAAC,SAAS;KACzB,CAAA;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACrC,CAAC;IACD,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;AACjE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,EAAE,CAAC;QAC1C,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,WAAW,GAAG,CAAC,CAAA;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,QAAQ,CAAC,2BAA2B,EAAE;gBACpC,OAAO,EAAE,MAAM;gBACf,QAAQ,EAAE,OAAO;gBACjB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;gBACrC,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,KAAK,GAAG,qBAAqB,EAAE,CAAA;IACnC,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QACnD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,aAAa,EAAE,CAAA;IACf,KAAK,GAAG,qBAAqB,EAAE,CAAA;IAC/B,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QACnD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAwB;IAClD,OAAO,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,IACE,iBAAiB;QACjB,GAAG,GAAG,mBAAmB,GAAG,uBAAuB;QACnD,kBAAkB,CAAC,iBAAiB,CAAC,EACrC,CAAC;QACD,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;IAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,iBAAiB,GAAG,IAAI,CAAA;QACxB,mBAAmB,GAAG,CAAC,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,iBAAiB,GAAG,MAAM,CAAA;IAC1B,mBAAmB,GAAG,GAAG,CAAA;IACzB,OAAO,MAAM,CAAA;AACf,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,15 +1,11 @@
1
1
  import type { Plugin } from "@opencode-ai/plugin";
2
- import { type ClaudeCredentials } from "./keychain.js";
2
+ export { getExcludedBetas, addExcludedBeta, getNextBetaToExclude, isLongContextError, getModelBetas, LONG_CONTEXT_BETAS } from "./betas.js";
3
+ export { transformBody, stripToolPrefix, transformResponseStream } from "./transforms.js";
4
+ export { getCachedCredentials, syncAuthJson, refreshIfNeeded, type ClaudeCredentials } from "./credentials.js";
3
5
  type FetchFn = typeof fetch;
4
6
  export declare function fetchWithRetry(input: RequestInfo | URL, init?: RequestInit, retries?: number, fetchImpl?: FetchFn): Promise<Response>;
5
- export declare function isLongContextError(responseBody: string): boolean;
6
- export declare function getCachedCredentials(): ClaudeCredentials | null;
7
7
  export declare function buildRequestHeaders(input: RequestInfo | URL, init: RequestInit, accessToken: string, modelId?: string, excludedBetas?: Set<string>): Headers;
8
8
  export declare function getBillingHeader(modelId: string): string;
9
- export declare function getModelBetas(modelId: string, excluded?: Set<string>): string[];
10
- export declare function transformBody(body: BodyInit | null | undefined): BodyInit | null | undefined;
11
- export declare function stripToolPrefix(text: string): string;
12
- export declare function transformResponseStream(response: Response): Response;
13
9
  declare const plugin: Plugin;
14
10
  export declare const ClaudeAuthPlugin: Plugin;
15
11
  export default plugin;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAKjD,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AA8B7E,KAAK,OAAO,GAAG,OAAO,KAAK,CAAA;AAE3B,wBAAsB,cAAc,CAClC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,EAClB,OAAO,SAAI,EACX,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,QAAQ,CAAC,CAcnB;AA2GD,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAGhE;AAYD,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAoB/D;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,SAAY,EACnB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC1B,OAAO,CAuCT;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CA+B/E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,CA8C5F;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CA0CpE;AAID,QAAA,MAAM,MAAM,EAAE,MA4Ib,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAS,CAAA;AACtC,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAMjD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC3I,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AACzF,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAa9G,KAAK,OAAO,GAAG,OAAO,KAAK,CAAA;AAE3B,wBAAsB,cAAc,CAClC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,EAClB,OAAO,SAAI,EACX,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,QAAQ,CAAC,CAcnB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,SAAY,EACnB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC1B,OAAO,CAuCT;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAID,QAAA,MAAM,MAAM,EAAE,MA4Ib,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAS,CAAA;AACtC,eAAe,MAAM,CAAA"}
package/dist/index.js CHANGED
@@ -1,29 +1,18 @@
1
- import { execSync } from "node:child_process";
2
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
- import { dirname, join } from "node:path";
4
- import { homedir } from "node:os";
5
1
  import { readClaudeCredentials } from "./keychain.js";
2
+ import { getExcludedBetas, addExcludedBeta, getNextBetaToExclude, isLongContextError, getModelBetas, LONG_CONTEXT_BETAS } from "./betas.js";
3
+ import { transformBody, transformResponseStream } from "./transforms.js";
4
+ import { getCachedCredentials, syncAuthJson, refreshIfNeeded } from "./credentials.js";
5
+ export { getExcludedBetas, addExcludedBeta, getNextBetaToExclude, isLongContextError, getModelBetas, LONG_CONTEXT_BETAS } from "./betas.js";
6
+ export { transformBody, stripToolPrefix, transformResponseStream } from "./transforms.js";
7
+ export { getCachedCredentials, syncAuthJson, refreshIfNeeded } from "./credentials.js";
6
8
  const SYSTEM_IDENTITY_PREFIX = "You are Claude Code, Anthropic's official CLI for Claude.";
7
- const TOOL_PREFIX = "mcp_";
8
9
  const DEFAULT_CC_VERSION = "2.1.80";
9
- const DEFAULT_BETA_FLAGS = "claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,prompt-caching-scope-2026-01-05";
10
10
  function getCliVersion() {
11
11
  return process.env.ANTHROPIC_CLI_VERSION ?? DEFAULT_CC_VERSION;
12
12
  }
13
13
  function getUserAgent() {
14
14
  return process.env.ANTHROPIC_USER_AGENT ?? `claude-cli/${getCliVersion()} (external, cli)`;
15
15
  }
16
- function getRequiredBetas() {
17
- return (process.env.ANTHROPIC_BETA_FLAGS ?? DEFAULT_BETA_FLAGS)
18
- .split(",").map(s => s.trim()).filter(Boolean);
19
- }
20
- const CREDENTIAL_CACHE_TTL_MS = 30_000;
21
- // Beta flags to try removing in order when "long context" errors occur
22
- const LONG_CONTEXT_BETAS = ["context-1m-2025-08-07", "interleaved-thinking-2025-05-14"];
23
- let cachedCredentials = null;
24
- let cachedCredentialsAt = 0;
25
- // Session-level cache of excluded beta flags per model (resets on process restart)
26
- const excludedBetas = new Map();
27
16
  export async function fetchWithRetry(input, init, retries = 3, fetchImpl = fetch) {
28
17
  for (let i = 0; i < retries; i++) {
29
18
  const res = await fetchImpl(input, init);
@@ -39,132 +28,6 @@ export async function fetchWithRetry(input, init, retries = 3, fetchImpl = fetch
39
28
  }
40
29
  return fetchImpl(input, init);
41
30
  }
42
- function getAuthJsonPaths() {
43
- const xdgPath = join(homedir(), ".local", "share", "opencode", "auth.json");
44
- if (process.platform === "win32") {
45
- const appData = process.env.LOCALAPPDATA ?? join(homedir(), "AppData", "Local");
46
- const localAppDataPath = join(appData, "opencode", "auth.json");
47
- // Write to both paths on Windows: some installs (Chocolatey, npm global)
48
- // use the XDG-style path, others use %LOCALAPPDATA%. See #33.
49
- return [xdgPath, localAppDataPath];
50
- }
51
- return [xdgPath];
52
- }
53
- function syncToPath(authPath, creds) {
54
- let auth = {};
55
- if (existsSync(authPath)) {
56
- const raw = readFileSync(authPath, "utf-8").trim();
57
- if (raw) {
58
- try {
59
- auth = JSON.parse(raw);
60
- }
61
- catch {
62
- // Malformed file, start fresh
63
- }
64
- }
65
- }
66
- auth.anthropic = {
67
- type: "oauth",
68
- access: creds.accessToken,
69
- refresh: creds.refreshToken,
70
- expires: creds.expiresAt,
71
- };
72
- const dir = dirname(authPath);
73
- if (!existsSync(dir)) {
74
- mkdirSync(dir, { recursive: true });
75
- }
76
- writeFileSync(authPath, JSON.stringify(auth, null, 2), "utf-8");
77
- }
78
- function syncAuthJson(creds) {
79
- for (const authPath of getAuthJsonPaths()) {
80
- syncToPath(authPath, creds);
81
- }
82
- }
83
- function refreshViaCli() {
84
- const maxAttempts = 2;
85
- for (let i = 0; i < maxAttempts; i++) {
86
- try {
87
- execSync("claude -p . --model haiku", {
88
- timeout: 60_000,
89
- encoding: "utf-8",
90
- env: { ...process.env, TERM: "dumb" },
91
- stdio: "ignore",
92
- });
93
- return;
94
- }
95
- catch {
96
- // Non-fatal: retry once, then give up
97
- }
98
- }
99
- }
100
- function refreshIfNeeded() {
101
- let creds = readClaudeCredentials();
102
- if (creds && creds.expiresAt > Date.now() + 60_000) {
103
- return creds;
104
- }
105
- // Token is expired or near expiry, try CLI refresh
106
- refreshViaCli();
107
- creds = readClaudeCredentials();
108
- if (creds && creds.expiresAt > Date.now() + 60_000) {
109
- return creds;
110
- }
111
- return null;
112
- }
113
- function isCredentialUsable(creds) {
114
- return creds.expiresAt > Date.now() + 60_000;
115
- }
116
- // Track the last-seen beta flags env var and model to detect changes
117
- let lastBetaFlagsEnv = process.env.ANTHROPIC_BETA_FLAGS;
118
- let lastModelId;
119
- function getExcludedBetas(modelId) {
120
- // Reset exclusions if user changed ANTHROPIC_BETA_FLAGS
121
- const currentBetaFlags = process.env.ANTHROPIC_BETA_FLAGS;
122
- if (currentBetaFlags !== lastBetaFlagsEnv) {
123
- excludedBetas.clear();
124
- lastBetaFlagsEnv = currentBetaFlags;
125
- }
126
- // Reset exclusions if user switched models (new model may support different betas)
127
- if (lastModelId !== undefined && lastModelId !== modelId) {
128
- excludedBetas.clear();
129
- }
130
- lastModelId = modelId;
131
- return excludedBetas.get(modelId) ?? new Set();
132
- }
133
- function addExcludedBeta(modelId, beta) {
134
- const existing = excludedBetas.get(modelId) ?? new Set();
135
- existing.add(beta);
136
- excludedBetas.set(modelId, existing);
137
- }
138
- export function isLongContextError(responseBody) {
139
- return responseBody.includes("Extra usage is required for long context requests")
140
- || responseBody.includes("long context beta is not yet available");
141
- }
142
- function getNextBetaToExclude(modelId) {
143
- const excluded = getExcludedBetas(modelId);
144
- for (const beta of LONG_CONTEXT_BETAS) {
145
- if (!excluded.has(beta)) {
146
- return beta;
147
- }
148
- }
149
- return null; // All long-context betas already excluded
150
- }
151
- export function getCachedCredentials() {
152
- const now = Date.now();
153
- if (cachedCredentials &&
154
- now - cachedCredentialsAt < CREDENTIAL_CACHE_TTL_MS &&
155
- isCredentialUsable(cachedCredentials)) {
156
- return cachedCredentials;
157
- }
158
- const latest = refreshIfNeeded();
159
- if (!latest) {
160
- cachedCredentials = null;
161
- cachedCredentialsAt = 0;
162
- return null;
163
- }
164
- cachedCredentials = latest;
165
- cachedCredentialsAt = now;
166
- return latest;
167
- }
168
31
  export function buildRequestHeaders(input, init, accessToken, modelId = "unknown", excludedBetas) {
169
32
  const headers = new Headers();
170
33
  if (input instanceof Request) {
@@ -206,112 +69,6 @@ export function getBillingHeader(modelId) {
206
69
  const entrypoint = "cli";
207
70
  return `cc_version=${getCliVersion()}.${modelId}; cc_entrypoint=${entrypoint}; cch=00000;`;
208
71
  }
209
- export function getModelBetas(modelId, excluded) {
210
- const betas = [...getRequiredBetas()];
211
- const lower = modelId.toLowerCase();
212
- // context-1m only for opus/sonnet 4.6+ models
213
- if (lower.includes("opus") || lower.includes("sonnet")) {
214
- const versionMatch = lower.match(/(opus|sonnet)-(\d+)-(\d+)/);
215
- if (versionMatch) {
216
- const major = parseInt(versionMatch[2], 10);
217
- const minor = parseInt(versionMatch[3], 10);
218
- // Date suffixes like 20250514 are not minor versions — treat as x.0
219
- const effectiveMinor = minor > 99 ? 0 : minor;
220
- if (major > 4 || (major === 4 && effectiveMinor >= 6)) {
221
- betas.push("context-1m-2025-08-07");
222
- }
223
- }
224
- // If no version found (bare alias like "sonnet"), exclude 1M beta
225
- }
226
- // haiku doesn't get claude-code-20250219
227
- if (lower.includes("haiku")) {
228
- const idx = betas.indexOf("claude-code-20250219");
229
- if (idx !== -1)
230
- betas.splice(idx, 1);
231
- }
232
- // Filter out excluded betas (from previous failed requests due to long context errors)
233
- if (excluded && excluded.size > 0) {
234
- return betas.filter(beta => !excluded.has(beta));
235
- }
236
- return betas;
237
- }
238
- export function transformBody(body) {
239
- if (typeof body !== "string") {
240
- return body;
241
- }
242
- try {
243
- const parsed = JSON.parse(body);
244
- if (Array.isArray(parsed.tools)) {
245
- parsed.tools = parsed.tools.map((tool) => ({
246
- ...tool,
247
- name: tool.name ? `${TOOL_PREFIX}${tool.name}` : tool.name,
248
- }));
249
- }
250
- if (Array.isArray(parsed.messages)) {
251
- parsed.messages = parsed.messages.map((message) => {
252
- if (!Array.isArray(message.content)) {
253
- return message;
254
- }
255
- return {
256
- ...message,
257
- content: message.content.map((block) => {
258
- if (block.type !== "tool_use" || typeof block.name !== "string") {
259
- return block;
260
- }
261
- return {
262
- ...block,
263
- name: `${TOOL_PREFIX}${block.name}`,
264
- };
265
- }),
266
- };
267
- });
268
- }
269
- return JSON.stringify(parsed);
270
- }
271
- catch {
272
- return body;
273
- }
274
- }
275
- export function stripToolPrefix(text) {
276
- return text.replace(/"name"\s*:\s*"mcp_([^"]+)"/g, '"name": "$1"');
277
- }
278
- export function transformResponseStream(response) {
279
- if (!response.body) {
280
- return response;
281
- }
282
- const reader = response.body.getReader();
283
- const decoder = new TextDecoder();
284
- const encoder = new TextEncoder();
285
- let buffer = "";
286
- const stream = new ReadableStream({
287
- async pull(controller) {
288
- for (;;) {
289
- const boundary = buffer.indexOf("\n\n");
290
- if (boundary !== -1) {
291
- const completeEvent = buffer.slice(0, boundary + 2);
292
- buffer = buffer.slice(boundary + 2);
293
- controller.enqueue(encoder.encode(stripToolPrefix(completeEvent)));
294
- return;
295
- }
296
- const { done, value } = await reader.read();
297
- if (done) {
298
- if (buffer) {
299
- controller.enqueue(encoder.encode(stripToolPrefix(buffer)));
300
- buffer = "";
301
- }
302
- controller.close();
303
- return;
304
- }
305
- buffer += decoder.decode(value, { stream: true });
306
- }
307
- },
308
- });
309
- return new Response(stream, {
310
- status: response.status,
311
- statusText: response.statusText,
312
- headers: response.headers,
313
- });
314
- }
315
72
  const SYNC_INTERVAL = 5 * 60 * 1000; // 5 minutes
316
73
  const plugin = async () => {
317
74
  let creds = null;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function transformBody(body: BodyInit | null | undefined): BodyInit | null | undefined;
2
+ export declare function stripToolPrefix(text: string): string;
3
+ export declare function transformResponseStream(response: Response): Response;
4
+ //# sourceMappingURL=transforms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transforms.d.ts","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,CA8C5F;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CA0CpE"}
@@ -0,0 +1,79 @@
1
+ const TOOL_PREFIX = "mcp_";
2
+ export function transformBody(body) {
3
+ if (typeof body !== "string") {
4
+ return body;
5
+ }
6
+ try {
7
+ const parsed = JSON.parse(body);
8
+ if (Array.isArray(parsed.tools)) {
9
+ parsed.tools = parsed.tools.map((tool) => ({
10
+ ...tool,
11
+ name: tool.name ? `${TOOL_PREFIX}${tool.name}` : tool.name,
12
+ }));
13
+ }
14
+ if (Array.isArray(parsed.messages)) {
15
+ parsed.messages = parsed.messages.map((message) => {
16
+ if (!Array.isArray(message.content)) {
17
+ return message;
18
+ }
19
+ return {
20
+ ...message,
21
+ content: message.content.map((block) => {
22
+ if (block.type !== "tool_use" || typeof block.name !== "string") {
23
+ return block;
24
+ }
25
+ return {
26
+ ...block,
27
+ name: `${TOOL_PREFIX}${block.name}`,
28
+ };
29
+ }),
30
+ };
31
+ });
32
+ }
33
+ return JSON.stringify(parsed);
34
+ }
35
+ catch {
36
+ return body;
37
+ }
38
+ }
39
+ export function stripToolPrefix(text) {
40
+ return text.replace(/"name"\s*:\s*"mcp_([^"]+)"/g, '"name": "$1"');
41
+ }
42
+ export function transformResponseStream(response) {
43
+ if (!response.body) {
44
+ return response;
45
+ }
46
+ const reader = response.body.getReader();
47
+ const decoder = new TextDecoder();
48
+ const encoder = new TextEncoder();
49
+ let buffer = "";
50
+ const stream = new ReadableStream({
51
+ async pull(controller) {
52
+ for (;;) {
53
+ const boundary = buffer.indexOf("\n\n");
54
+ if (boundary !== -1) {
55
+ const completeEvent = buffer.slice(0, boundary + 2);
56
+ buffer = buffer.slice(boundary + 2);
57
+ controller.enqueue(encoder.encode(stripToolPrefix(completeEvent)));
58
+ return;
59
+ }
60
+ const { done, value } = await reader.read();
61
+ if (done) {
62
+ if (buffer) {
63
+ controller.enqueue(encoder.encode(stripToolPrefix(buffer)));
64
+ buffer = "";
65
+ }
66
+ controller.close();
67
+ return;
68
+ }
69
+ buffer += decoder.decode(value, { stream: true });
70
+ }
71
+ },
72
+ });
73
+ return new Response(stream, {
74
+ status: response.status,
75
+ statusText: response.statusText,
76
+ headers: response.headers,
77
+ });
78
+ }
79
+ //# sourceMappingURL=transforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transforms.js","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { ClaudeAuthPlugin, default } from "./dist/index.js";
package/package.json CHANGED
@@ -1,20 +1,43 @@
1
1
  {
2
2
  "name": "opencode-claude-auth",
3
- "version": "0.7.3",
3
+ "version": "0.7.4",
4
4
  "description": "OpenCode plugin that uses your Claude Code credentials — no separate login needed.",
5
5
  "preferGlobal": true,
6
- "main": "dist/index.js",
7
- "module": "dist/index.js",
6
+ "main": "opencode-claude-auth.js",
7
+ "module": "opencode-claude-auth.js",
8
8
  "types": "dist/index.d.ts",
9
9
  "type": "module",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./opencode-claude-auth.js"
14
+ },
15
+ "./claude-auth-plugin": {
16
+ "types": "./dist/index.d.ts",
17
+ "import": "./dist/index.js"
18
+ },
19
+ "./claude-auth-plugin.js": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js"
22
+ },
23
+ "./opencode-claude-auth": {
24
+ "types": "./dist/index.d.ts",
25
+ "import": "./dist/index.js"
26
+ },
27
+ "./opencode-claude-auth.js": {
28
+ "types": "./dist/index.d.ts",
29
+ "import": "./dist/index.js"
30
+ }
31
+ },
10
32
  "files": [
33
+ "opencode-claude-auth.js",
11
34
  "dist",
12
- "claude-auth-plugin.js",
13
35
  "installation.md"
14
36
  ],
15
37
  "scripts": {
16
38
  "build": "tsc && cp src/anthropic-prompt.txt dist/",
17
39
  "test": "node --test --experimental-strip-types src/**/*.test.ts",
40
+ "test:models": "npm run build && node scripts/test-models.ts",
18
41
  "prepublishOnly": "npm run build && npm test"
19
42
  },
20
43
  "peerDependencies": {
@@ -1 +0,0 @@
1
- export { ClaudeAuthPlugin, default } from "./dist/index.js"