opencode-claude-auth 0.5.4 → 0.5.6
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 +10 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
# opencode-claude-auth
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/opencode-claude-auth)
|
|
4
|
+
[](https://github.com/griffinmartin/opencode-claude-auth/actions/workflows/ci.yml)
|
|
5
|
+
[](https://socket.dev/npm/package/opencode-claude-auth)
|
|
4
6
|
|
|
5
7
|
OpenCode plugin that uses your existing Claude Code credentials — no separate login needed.
|
|
6
8
|
|
|
7
9
|
## How it works
|
|
8
10
|
|
|
9
|
-
Claude Code stores OAuth tokens in the macOS Keychain (or `~/.claude/.credentials.json` on other platforms). This plugin reads those tokens and
|
|
11
|
+
Claude Code stores OAuth tokens in the macOS Keychain (or `~/.claude/.credentials.json` on other platforms). This plugin reads those tokens and writes them to OpenCode's `~/.local/share/opencode/auth.json` (`%LOCALAPPDATA%\opencode\auth.json` on Windows), so you don't need to log in twice. It re-syncs every 5 minutes to pick up token refreshes. If a token is near expiry, it runs the Claude CLI to trigger a refresh.
|
|
10
12
|
|
|
11
13
|
## Prerequisites
|
|
12
14
|
|
|
@@ -41,7 +43,7 @@ Then add to the `plugin` array in your `opencode.json`:
|
|
|
41
43
|
|
|
42
44
|
## Usage
|
|
43
45
|
|
|
44
|
-
Just run OpenCode. The plugin
|
|
46
|
+
Just run OpenCode. The plugin syncs your Claude Code credentials to OpenCode's auth.json and refreshes them in the background.
|
|
45
47
|
|
|
46
48
|
## Credential sources
|
|
47
49
|
|
|
@@ -63,12 +65,12 @@ The plugin checks these in order:
|
|
|
63
65
|
|
|
64
66
|
## How it works (technical)
|
|
65
67
|
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
68
|
+
- Reads OAuth tokens from macOS Keychain (`Claude Code-credentials` entry) or `~/.claude/.credentials.json` fallback
|
|
69
|
+
- Writes an `anthropic` entry to `~/.local/share/opencode/auth.json` (`%LOCALAPPDATA%\opencode\auth.json` on Windows) in OpenCode's native OAuth format
|
|
70
|
+
- Preserves other provider entries already in auth.json
|
|
71
|
+
- Re-syncs credentials every 5 minutes in the background
|
|
72
|
+
- When a token is within 60 seconds of expiry, runs `claude` CLI to trigger a refresh
|
|
73
|
+
- If credentials are unavailable or unreadable, the plugin disables itself and OpenCode continues without Claude auth
|
|
72
74
|
|
|
73
75
|
## License
|
|
74
76
|
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAsEjD,QAAA,MAAM,MAAM,EAAE,MAmCb,CAAA;AAED,eAAe,MAAM,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,8 @@ import { homedir } from "node:os";
|
|
|
5
5
|
import { readClaudeCredentials } from "./keychain.js";
|
|
6
6
|
function getAuthJsonPath() {
|
|
7
7
|
if (process.platform === "win32") {
|
|
8
|
-
|
|
8
|
+
const appData = process.env.LOCALAPPDATA ?? join(homedir(), "AppData", "Local");
|
|
9
|
+
return join(appData, "opencode", "auth.json");
|
|
9
10
|
}
|
|
10
11
|
return join(homedir(), ".local", "share", "opencode", "auth.json");
|
|
11
12
|
}
|
|
@@ -37,7 +38,7 @@ function syncAuthJson(creds) {
|
|
|
37
38
|
}
|
|
38
39
|
function refreshViaCli() {
|
|
39
40
|
try {
|
|
40
|
-
execSync("claude -p . --model
|
|
41
|
+
execSync("claude -p . --model haiku", {
|
|
41
42
|
timeout: 60_000,
|
|
42
43
|
encoding: "utf-8",
|
|
43
44
|
env: { ...process.env, TERM: "dumb" },
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,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,SAAS,eAAe;IACtB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|