@namzu/cli 14.1.0 → 14.2.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.
Files changed (56) hide show
  1. package/README.md +20 -9
  2. package/dist/commands/login.d.ts +21 -3
  3. package/dist/commands/login.d.ts.map +1 -1
  4. package/dist/commands/login.js +33 -21
  5. package/dist/commands/login.js.map +1 -1
  6. package/dist/integrations/providers/discover.d.ts +4 -0
  7. package/dist/integrations/providers/discover.d.ts.map +1 -1
  8. package/dist/integrations/providers/discover.js +55 -37
  9. package/dist/integrations/providers/discover.js.map +1 -1
  10. package/dist/integrations/providers/harness-credentials.d.ts +44 -9
  11. package/dist/integrations/providers/harness-credentials.d.ts.map +1 -1
  12. package/dist/integrations/providers/harness-credentials.js +140 -11
  13. package/dist/integrations/providers/harness-credentials.js.map +1 -1
  14. package/dist/integrations/providers/identity.d.ts +20 -24
  15. package/dist/integrations/providers/identity.d.ts.map +1 -1
  16. package/dist/integrations/providers/identity.js +20 -24
  17. package/dist/integrations/providers/identity.js.map +1 -1
  18. package/dist/integrations/providers/index.d.ts +1 -1
  19. package/dist/integrations/providers/index.d.ts.map +1 -1
  20. package/dist/integrations/providers/index.js +1 -1
  21. package/dist/integrations/providers/index.js.map +1 -1
  22. package/dist/integrations/providers/oauth.d.ts +8 -3
  23. package/dist/integrations/providers/oauth.d.ts.map +1 -1
  24. package/dist/integrations/providers/oauth.js +37 -11
  25. package/dist/integrations/providers/oauth.js.map +1 -1
  26. package/dist/integrations/providers/subscription-login.d.ts +7 -41
  27. package/dist/integrations/providers/subscription-login.d.ts.map +1 -1
  28. package/dist/integrations/providers/subscription-login.js +26 -149
  29. package/dist/integrations/providers/subscription-login.js.map +1 -1
  30. package/dist/tui/App.d.ts.map +1 -1
  31. package/dist/tui/App.js +316 -83
  32. package/dist/tui/App.js.map +1 -1
  33. package/dist/tui/ChoicePicker.d.ts +14 -0
  34. package/dist/tui/ChoicePicker.d.ts.map +1 -0
  35. package/dist/tui/ChoicePicker.js +15 -0
  36. package/dist/tui/ChoicePicker.js.map +1 -0
  37. package/dist/tui/Picker.d.ts +4 -2
  38. package/dist/tui/Picker.d.ts.map +1 -1
  39. package/dist/tui/Picker.js +99 -10
  40. package/dist/tui/Picker.js.map +1 -1
  41. package/dist/tui/StatusBar.d.ts +24 -40
  42. package/dist/tui/StatusBar.d.ts.map +1 -1
  43. package/dist/tui/StatusBar.js +71 -106
  44. package/dist/tui/StatusBar.js.map +1 -1
  45. package/dist/tui/agent.d.ts.map +1 -1
  46. package/dist/tui/agent.js +10 -8
  47. package/dist/tui/agent.js.map +1 -1
  48. package/dist/tui/login-prompt.d.ts +0 -1
  49. package/dist/tui/login-prompt.d.ts.map +1 -1
  50. package/dist/tui/login-prompt.js +1 -6
  51. package/dist/tui/login-prompt.js.map +1 -1
  52. package/dist/tui/slashCommands.d.ts +8 -0
  53. package/dist/tui/slashCommands.d.ts.map +1 -1
  54. package/dist/tui/slashCommands.js +20 -15
  55. package/dist/tui/slashCommands.js.map +1 -1
  56. package/package.json +4 -4
@@ -1,19 +1,66 @@
1
- /**
2
- * Read-only adapters for credentials owned by co-installed agent harnesses.
3
- *
4
- * These files are authorities, not migration inputs. Namzu reads the whole
5
- * record, validates only the fields its provider wire needs, and never writes
6
- * either file. In particular, refresh tokens remain owned by the harness that
7
- * obtained them; consuming a single-use refresh grant here would race that
8
- * owner and could log it out.
9
- */
10
- import { readFileSync, statSync } from 'node:fs';
1
+ /** Adapters for credentials owned by co-installed agent harnesses. */
2
+ import { execFileSync } from 'node:child_process';
3
+ import { randomBytes } from 'node:crypto';
4
+ import { closeSync, fsyncSync, openSync, readFileSync, renameSync, statSync, unlinkSync, writeFileSync, } from 'node:fs';
11
5
  import { homedir } from 'node:os';
12
- import { isAbsolute, join, resolve } from 'node:path';
6
+ import { basename, dirname, isAbsolute, join, resolve } from 'node:path';
13
7
  const MAX_CREDENTIAL_FILE_BYTES = 1024 * 1024;
14
8
  export function claudeCredentialsPath(home = homedir()) {
15
9
  return join(home, '.claude', '.credentials.json');
16
10
  }
11
+ /** Convert an absolute Windows path into the drive mount WSL exposes. */
12
+ export function windowsPathToWsl(path) {
13
+ const normalized = path.trim().replaceAll('\\', '/');
14
+ const match = /^([A-Za-z]):\/(.+)$/u.exec(normalized);
15
+ if (!match?.[1] || !match[2] || match[2].split('/').includes('..'))
16
+ return null;
17
+ return `/mnt/${match[1].toLowerCase()}/${match[2]}`;
18
+ }
19
+ /**
20
+ * Resolve the Windows account paired with this WSL process.
21
+ *
22
+ * The Windows executable is pinned instead of searched through PATH: this
23
+ * lookup decides where a credential may be read, so a project-local `cmd.exe`
24
+ * must not be able to redirect it. Failure is an ordinary "no second home"
25
+ * result; native Linux never starts a process.
26
+ */
27
+ export function wslWindowsHome(env = process.env, run = execFileSync, command = '/mnt/c/Windows/System32/cmd.exe') {
28
+ if (!env.WSL_DISTRO_NAME && !env.WSL_INTEROP)
29
+ return null;
30
+ try {
31
+ if (!statSync(command).isFile())
32
+ return null;
33
+ const output = run(command, ['/d', '/s', '/c', 'echo', '%USERPROFILE%'], {
34
+ encoding: 'utf8',
35
+ timeout: 1_000,
36
+ windowsHide: true,
37
+ stdio: ['ignore', 'pipe', 'ignore'],
38
+ });
39
+ return windowsPathToWsl(String(output));
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
45
+ /**
46
+ * Usable Claude sessions visible from this process, freshest first.
47
+ *
48
+ * WSL is one device with two home directories in practice. Claude may be
49
+ * installed and signed in on Windows while Namzu runs inside WSL; treating the
50
+ * Linux home as the whole device turns that valid subscription into a missing
51
+ * credential. An explicit `home` remains hermetic for embeds and tests.
52
+ */
53
+ export function readClaudeFileCredentialCandidates(home, env = process.env, windowsHome = home === undefined ? wslWindowsHome(env) : null) {
54
+ const paths = [
55
+ claudeCredentialsPath(home),
56
+ ...(windowsHome ? [claudeCredentialsPath(windowsHome)] : []),
57
+ ];
58
+ const unique = [...new Set(paths)];
59
+ return unique.flatMap((path) => {
60
+ const credential = readClaudeCredentialFile(path);
61
+ return credential ? [{ path, credential }] : [];
62
+ });
63
+ }
17
64
  export function codexCredentialsPath(home = homedir(), env = process.env) {
18
65
  const configured = env.CODEX_HOME?.trim();
19
66
  const root = configured
@@ -65,6 +112,73 @@ export function readClaudeCredentialFile(path) {
65
112
  scopes: optionalStringArray(oauth?.scopes),
66
113
  };
67
114
  }
115
+ function sameClaudeCredential(left, right) {
116
+ return (left.accessToken === right.accessToken &&
117
+ left.refreshToken === right.refreshToken &&
118
+ left.expiresAt === right.expiresAt &&
119
+ JSON.stringify(left.scopes ?? []) === JSON.stringify(right.scopes ?? []));
120
+ }
121
+ /**
122
+ * Publish a refreshed Claude session back to the exact owner file discovered.
123
+ *
124
+ * Claude refresh grants may rotate. Keeping the successor only in Namzu would
125
+ * consume the owner's grant and leave its file unusable, so this preserves the
126
+ * full envelope and atomically replaces only its OAuth fields. The final
127
+ * re-read lets an owner rotation that completed during the network request win.
128
+ * Claude does not participate in Namzu's lock, so this is intentionally not
129
+ * described as a cross-process CAS; it is the strongest owner-compatible
130
+ * publication available for this shared file format.
131
+ */
132
+ export function replaceClaudeCredentialFile(path, expected, replacement) {
133
+ const root = record(readCredentialJson(path));
134
+ const oauth = record(root?.claudeAiOauth);
135
+ const current = readClaudeCredentialFile(path);
136
+ if (!root || !oauth || !current)
137
+ return { replaced: false, current };
138
+ if (!sameClaudeCredential(current, expected))
139
+ return { replaced: false, current };
140
+ const updated = {
141
+ ...root,
142
+ claudeAiOauth: {
143
+ ...oauth,
144
+ accessToken: replacement.accessToken,
145
+ ...(replacement.refreshToken === undefined ? {} : { refreshToken: replacement.refreshToken }),
146
+ ...(replacement.expiresAt === undefined ? {} : { expiresAt: replacement.expiresAt }),
147
+ ...(replacement.scopes === undefined ? {} : { scopes: replacement.scopes }),
148
+ },
149
+ };
150
+ const tempPath = join(dirname(path), `.${basename(path)}.namzu-${process.pid}-${randomBytes(8).toString('hex')}.tmp`);
151
+ let descriptor;
152
+ try {
153
+ descriptor = openSync(tempPath, 'wx', 0o600);
154
+ writeFileSync(descriptor, `${JSON.stringify(updated, null, 2)}\n`, 'utf8');
155
+ fsyncSync(descriptor);
156
+ closeSync(descriptor);
157
+ descriptor = undefined;
158
+ const beforeCommit = readClaudeCredentialFile(path);
159
+ if (!beforeCommit || !sameClaudeCredential(beforeCommit, expected)) {
160
+ return { replaced: false, current: beforeCommit };
161
+ }
162
+ renameSync(tempPath, path);
163
+ return { replaced: true, current: replacement };
164
+ }
165
+ finally {
166
+ if (descriptor !== undefined) {
167
+ try {
168
+ closeSync(descriptor);
169
+ }
170
+ catch {
171
+ // The primary publication error remains authoritative.
172
+ }
173
+ }
174
+ try {
175
+ unlinkSync(tempPath);
176
+ }
177
+ catch {
178
+ // A successful rename has already consumed the temporary name.
179
+ }
180
+ }
181
+ }
68
182
  export function codexCredentialFromTokens(tokens) {
69
183
  if (tokens.accessToken.length === 0)
70
184
  return null;
@@ -108,6 +222,21 @@ function jwtClaims(token) {
108
222
  export function readCodexFileCredential(home = homedir(), env = process.env) {
109
223
  return readCodexCredentialFile(codexCredentialsPath(home, env));
110
224
  }
225
+ /** Usable Codex sessions visible from this process, including a paired WSL host. */
226
+ export function readCodexFileCredentialCandidates(home, env = process.env, windowsHome = home === undefined ? wslWindowsHome(env) : null) {
227
+ // CODEX_HOME is an explicit authority choice. Do not silently add another
228
+ // store beside it, because two owners could then refresh independently.
229
+ const paths = env.CODEX_HOME?.trim()
230
+ ? [codexCredentialsPath(home, env)]
231
+ : [
232
+ codexCredentialsPath(home, env),
233
+ ...(windowsHome ? [codexCredentialsPath(windowsHome, {})] : []),
234
+ ];
235
+ return [...new Set(paths)].flatMap((path) => {
236
+ const credential = readCodexCredentialFile(path);
237
+ return credential ? [{ path, credential }] : [];
238
+ });
239
+ }
111
240
  /** Read a Codex-owned credential from the exact path discovery admitted. */
112
241
  export function readCodexCredentialFile(path) {
113
242
  const root = record(readCredentialJson(path));
@@ -1 +1 @@
1
- {"version":3,"file":"harness-credentials.js","sourceRoot":"","sources":["../../../src/integrations/providers/harness-credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness-credentials.js","sourceRoot":"","sources":["../../../src/integrations/providers/harness-credentials.ts"],"names":[],"mappings":"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"}
@@ -36,33 +36,29 @@
36
36
  *
37
37
  * ## The addresses
38
38
  *
39
- * Verified 2026-08-09 rather than assumed. Two hosts serve this token
40
- * endpoint — the one below and `platform.claude.com` on the same path — and
41
- * both answer an `authorization_code` grant identically (`400 invalid_grant`
42
- * for a bogus code, from the same handler). namzu keeps the address its
43
- * existing refresh path has always used, because there was no behaviour to
44
- * gain by moving and a live refresh to lose by guessing.
45
- *
46
- * The redirect port is fixed and NOT free to change: it is part of what the
47
- * client identity above is registered with, so a different port is simply not
48
- * an accepted redirect. That is why a busy port degrades to the paste flow
49
- * rather than picking another one.
39
+ * Re-verified by capturing the exact URL emitted by the installed owner client
40
+ * (`claude auth login --claudeai`, 2.1.241) on 2026-08-23. Its live production
41
+ * contract uses the CAI authorize endpoint, the platform token endpoint and
42
+ * the platform callback below. That client does not offer a loopback redirect
43
+ * on this flow. A localhost callback may be valid OAuth in general, but it is
44
+ * not registered for this client identity; sending one makes the consent page
45
+ * refuse the request before sign-in.
50
46
  */
51
47
  export declare const OAUTH_CLIENT_ID = "9d1c250a-e61b-44d9-88ed-5944d1962f5e";
52
- export declare const OAUTH_TOKEN_URL = "https://console.anthropic.com/v1/oauth/token";
53
- export declare const AUTHORIZE_URL = "https://claude.ai/oauth/authorize";
54
- /** Registered with the client identity above; not ours to choose. */
55
- export declare const SUBSCRIPTION_REDIRECT_PORT = 53692;
56
- export declare const REDIRECT_URI = "http://localhost:53692/callback";
48
+ export declare const OAUTH_TOKEN_URL = "https://platform.claude.com/v1/oauth/token";
49
+ export declare const AUTHORIZE_URL = "https://claude.com/cai/oauth/authorize";
50
+ /** Registered browser-to-terminal callback; not ours to replace with localhost. */
51
+ export declare const MANUAL_REDIRECT_URI = "https://platform.claude.com/oauth/code/callback";
57
52
  /**
58
- * The smallest source-verified scope set used by the current Claude harness.
53
+ * The direct Claude Pro/Max scope set used by the current Claude harness.
59
54
  *
60
- * Do not copy every scope a historical client happened to request. Unknown
61
- * scopes make the authorization page reject the whole request before the
62
- * operator can sign in, and key creation is not inference authority. These
63
- * three are the live harness contract: identify the account, run inference,
64
- * and retain the ability to create an API key from that harness when the
65
- * account permits it.
55
+ * This looks broader than the inference capability Namzu consumes, but it is
56
+ * the exact set the current owner client sends for `--claudeai`, not its
57
+ * separately selected `--console` flow. The CAI endpoint validates the whole
58
+ * registered request shape; deleting `org:create_api_key` because its name
59
+ * sounds unrelated produces "Invalid request format" before the account can
60
+ * authorize anything. Keep this as one captured protocol value rather than a
61
+ * hand-curated list of what Namzu later uses.
66
62
  */
67
- export declare const OAUTH_SCOPES = "org:create_api_key user:profile user:inference";
63
+ export declare const OAUTH_SCOPES = "org:create_api_key user:profile user:inference user:sessions:claude_code user:mcp_servers user:file_upload";
68
64
  //# sourceMappingURL=identity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,eAAO,MAAM,eAAe,yCAAyC,CAAA;AACrE,eAAO,MAAM,eAAe,iDAAiD,CAAA;AAC7E,eAAO,MAAM,aAAa,sCAAsC,CAAA;AAEhE,qEAAqE;AACrE,eAAO,MAAM,0BAA0B,QAAQ,CAAA;AAC/C,eAAO,MAAM,YAAY,oCAA4D,CAAA;AAErF;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,mDAAmD,CAAA"}
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,eAAO,MAAM,eAAe,yCAAyC,CAAA;AACrE,eAAO,MAAM,eAAe,+CAA+C,CAAA;AAC3E,eAAO,MAAM,aAAa,2CAA2C,CAAA;AAErE,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,oDAAoD,CAAA;AAEpF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,+GACoF,CAAA"}
@@ -36,33 +36,29 @@
36
36
  *
37
37
  * ## The addresses
38
38
  *
39
- * Verified 2026-08-09 rather than assumed. Two hosts serve this token
40
- * endpoint — the one below and `platform.claude.com` on the same path — and
41
- * both answer an `authorization_code` grant identically (`400 invalid_grant`
42
- * for a bogus code, from the same handler). namzu keeps the address its
43
- * existing refresh path has always used, because there was no behaviour to
44
- * gain by moving and a live refresh to lose by guessing.
45
- *
46
- * The redirect port is fixed and NOT free to change: it is part of what the
47
- * client identity above is registered with, so a different port is simply not
48
- * an accepted redirect. That is why a busy port degrades to the paste flow
49
- * rather than picking another one.
39
+ * Re-verified by capturing the exact URL emitted by the installed owner client
40
+ * (`claude auth login --claudeai`, 2.1.241) on 2026-08-23. Its live production
41
+ * contract uses the CAI authorize endpoint, the platform token endpoint and
42
+ * the platform callback below. That client does not offer a loopback redirect
43
+ * on this flow. A localhost callback may be valid OAuth in general, but it is
44
+ * not registered for this client identity; sending one makes the consent page
45
+ * refuse the request before sign-in.
50
46
  */
51
47
  export const OAUTH_CLIENT_ID = '9d1c250a-e61b-44d9-88ed-5944d1962f5e';
52
- export const OAUTH_TOKEN_URL = 'https://console.anthropic.com/v1/oauth/token';
53
- export const AUTHORIZE_URL = 'https://claude.ai/oauth/authorize';
54
- /** Registered with the client identity above; not ours to choose. */
55
- export const SUBSCRIPTION_REDIRECT_PORT = 53692;
56
- export const REDIRECT_URI = `http://localhost:${SUBSCRIPTION_REDIRECT_PORT}/callback`;
48
+ export const OAUTH_TOKEN_URL = 'https://platform.claude.com/v1/oauth/token';
49
+ export const AUTHORIZE_URL = 'https://claude.com/cai/oauth/authorize';
50
+ /** Registered browser-to-terminal callback; not ours to replace with localhost. */
51
+ export const MANUAL_REDIRECT_URI = 'https://platform.claude.com/oauth/code/callback';
57
52
  /**
58
- * The smallest source-verified scope set used by the current Claude harness.
53
+ * The direct Claude Pro/Max scope set used by the current Claude harness.
59
54
  *
60
- * Do not copy every scope a historical client happened to request. Unknown
61
- * scopes make the authorization page reject the whole request before the
62
- * operator can sign in, and key creation is not inference authority. These
63
- * three are the live harness contract: identify the account, run inference,
64
- * and retain the ability to create an API key from that harness when the
65
- * account permits it.
55
+ * This looks broader than the inference capability Namzu consumes, but it is
56
+ * the exact set the current owner client sends for `--claudeai`, not its
57
+ * separately selected `--console` flow. The CAI endpoint validates the whole
58
+ * registered request shape; deleting `org:create_api_key` because its name
59
+ * sounds unrelated produces "Invalid request format" before the account can
60
+ * authorize anything. Keep this as one captured protocol value rather than a
61
+ * hand-curated list of what Namzu later uses.
66
62
  */
67
- export const OAUTH_SCOPES = 'org:create_api_key user:profile user:inference';
63
+ export const OAUTH_SCOPES = 'org:create_api_key user:profile user:inference user:sessions:claude_code user:mcp_servers user:file_upload';
68
64
  //# sourceMappingURL=identity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/integrations/providers/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,sCAAsC,CAAA;AACrE,MAAM,CAAC,MAAM,eAAe,GAAG,8CAA8C,CAAA;AAC7E,MAAM,CAAC,MAAM,aAAa,GAAG,mCAAmC,CAAA;AAEhE,qEAAqE;AACrE,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAA;AAC/C,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,0BAA0B,WAAW,CAAA;AAErF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,gDAAgD,CAAA"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/integrations/providers/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,sCAAsC,CAAA;AACrE,MAAM,CAAC,MAAM,eAAe,GAAG,4CAA4C,CAAA;AAC3E,MAAM,CAAC,MAAM,aAAa,GAAG,wCAAwC,CAAA;AAErE,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,iDAAiD,CAAA;AAEpF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,YAAY,GACxB,4GAA4G,CAAA"}
@@ -4,7 +4,7 @@ export { type AgentOAuthCredential, isAnthropicOAuthToken, readAgentKeychainCred
4
4
  export { beginCodexDeviceLogin, CODEX_AUTH_ORIGIN, CODEX_OAUTH_CLIENT_ID, type CodexDeviceLogin, type CodexDeviceLoginOptions, type CodexDeviceLoginOutcome, } from './codex-device-login.js';
5
5
  export { clearAllStoredCredentials, clearStoredSubscriptionCredential, clearStoredCodexCredential, CREDENTIALS_FILE_VERSION, CredentialStoreError, credentialsPath, readStoredSubscriptionCredential, readStoredCodexCredential, replaceStoredCodexCredential, type StoredCodexCredential, writeStoredSubscriptionCredential, writeStoredCodexCredential, } from './credential-store.js';
6
6
  export { ensureFreshStoredCodexCredential, type StoredCodexRefreshOptions, } from './codex-oauth.js';
7
- export { OAUTH_SCOPES, REDIRECT_URI } from './identity.js';
7
+ export { MANUAL_REDIRECT_URI, OAUTH_SCOPES } from './identity.js';
8
8
  export { CredentialPublicationError, CredentialRefreshRejectedError, CredentialWithdrawnError, type CredentialOrigin, ensureFreshAnthropicToken, type OAuthMetadata, readSubscriptionCredential, refreshAgentOAuthToken, sameOAuthCredential, } from './oauth.js';
9
9
  export { beginSubscriptionLogin, type LoginOutcome, parsePastedInput, type SubscriptionLogin, type SubscriptionLoginOptions, subscriptionDetectedProvider, } from './subscription-login.js';
10
10
  export { type CapabilityDisagreement, chainCapabilityDisagreements, describeAcceptedMismatch, describeCapabilityRefusal, type MemberCapabilities, unresolvedMembers, } from './chain-capabilities.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,iBAAiB,EACjB,YAAY,EACZ,6BAA6B,GAC7B,MAAM,eAAe,CAAA;AACtB,OAAO,EACN,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,GACvB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACN,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,2BAA2B,GAC3B,MAAM,eAAe,CAAA;AACtB,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,GAC5B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACN,yBAAyB,EACzB,iCAAiC,EACjC,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,EAC5B,KAAK,qBAAqB,EAC1B,iCAAiC,EACjC,0BAA0B,GAC1B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACN,gCAAgC,EAChC,KAAK,yBAAyB,GAC9B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EACN,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,yBAAyB,EACzB,KAAK,aAAa,EAClB,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EACN,sBAAsB,EACtB,KAAK,YAAY,EACjB,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,4BAA4B,GAC5B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACN,KAAK,sBAAsB,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,iBAAiB,GACjB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACN,iBAAiB,EACjB,KAAK,WAAW,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,eAAe,EACf,gBAAgB,GAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACN,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,0BAA0B,GAC1B,MAAM,eAAe,CAAA;AACtB,OAAO,EACN,gBAAgB,EAChB,YAAY,EACZ,wBAAwB,GACxB,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,iBAAiB,EACjB,YAAY,EACZ,6BAA6B,GAC7B,MAAM,eAAe,CAAA;AACtB,OAAO,EACN,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,GACvB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACN,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,2BAA2B,GAC3B,MAAM,eAAe,CAAA;AACtB,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,GAC5B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACN,yBAAyB,EACzB,iCAAiC,EACjC,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,EAC5B,KAAK,qBAAqB,EAC1B,iCAAiC,EACjC,0BAA0B,GAC1B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACN,gCAAgC,EAChC,KAAK,yBAAyB,GAC9B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjE,OAAO,EACN,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,yBAAyB,EACzB,KAAK,aAAa,EAClB,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EACN,sBAAsB,EACtB,KAAK,YAAY,EACjB,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,4BAA4B,GAC5B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACN,KAAK,sBAAsB,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,iBAAiB,GACjB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACN,iBAAiB,EACjB,KAAK,WAAW,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,eAAe,EACf,gBAAgB,GAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACN,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,0BAA0B,GAC1B,MAAM,eAAe,CAAA;AACtB,OAAO,EACN,gBAAgB,EAChB,YAAY,EACZ,wBAAwB,GACxB,MAAM,eAAe,CAAA"}
@@ -4,7 +4,7 @@ export { isAnthropicOAuthToken, readAgentKeychainCredential, } from './keychain.
4
4
  export { beginCodexDeviceLogin, CODEX_AUTH_ORIGIN, CODEX_OAUTH_CLIENT_ID, } from './codex-device-login.js';
5
5
  export { clearAllStoredCredentials, clearStoredSubscriptionCredential, clearStoredCodexCredential, CREDENTIALS_FILE_VERSION, CredentialStoreError, credentialsPath, readStoredSubscriptionCredential, readStoredCodexCredential, replaceStoredCodexCredential, writeStoredSubscriptionCredential, writeStoredCodexCredential, } from './credential-store.js';
6
6
  export { ensureFreshStoredCodexCredential, } from './codex-oauth.js';
7
- export { OAUTH_SCOPES, REDIRECT_URI } from './identity.js';
7
+ export { MANUAL_REDIRECT_URI, OAUTH_SCOPES } from './identity.js';
8
8
  export { CredentialPublicationError, CredentialRefreshRejectedError, CredentialWithdrawnError, ensureFreshAnthropicToken, readSubscriptionCredential, refreshAgentOAuthToken, sameOAuthCredential, } from './oauth.js';
9
9
  export { beginSubscriptionLogin, parsePastedInput, subscriptionDetectedProvider, } from './subscription-login.js';
10
10
  export { chainCapabilityDisagreements, describeAcceptedMismatch, describeCapabilityRefusal, unresolvedMembers, } from './chain-capabilities.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,iBAAiB,EACjB,YAAY,EACZ,6BAA6B,GAC7B,MAAM,eAAe,CAAA;AACtB,OAAO,EAEN,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,GACvB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAEN,qBAAqB,EACrB,2BAA2B,GAC3B,MAAM,eAAe,CAAA;AACtB,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,GAIrB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACN,yBAAyB,EACzB,iCAAiC,EACjC,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,EAE5B,iCAAiC,EACjC,0BAA0B,GAC1B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACN,gCAAgC,GAEhC,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EACN,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EAExB,yBAAyB,EAEzB,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EACN,sBAAsB,EAEtB,gBAAgB,EAGhB,4BAA4B,GAC5B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAEN,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EAEzB,iBAAiB,GACjB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACN,iBAAiB,EAEjB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,eAAe,EAGf,eAAe,EACf,gBAAgB,GAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACN,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,EAKjB,0BAA0B,GAC1B,MAAM,eAAe,CAAA;AACtB,OAAO,EACN,gBAAgB,EAChB,YAAY,EACZ,wBAAwB,GACxB,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,iBAAiB,EACjB,YAAY,EACZ,6BAA6B,GAC7B,MAAM,eAAe,CAAA;AACtB,OAAO,EAEN,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,GACvB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAEN,qBAAqB,EACrB,2BAA2B,GAC3B,MAAM,eAAe,CAAA;AACtB,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,GAIrB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACN,yBAAyB,EACzB,iCAAiC,EACjC,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,EAE5B,iCAAiC,EACjC,0BAA0B,GAC1B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACN,gCAAgC,GAEhC,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjE,OAAO,EACN,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EAExB,yBAAyB,EAEzB,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EACN,sBAAsB,EAEtB,gBAAgB,EAGhB,4BAA4B,GAC5B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAEN,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EAEzB,iBAAiB,GACjB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACN,iBAAiB,EAEjB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,eAAe,EAGf,eAAe,EACf,gBAAgB,GAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACN,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,EAKjB,0BAA0B,GAC1B,MAAM,eAAe,CAAA;AACtB,OAAO,EACN,gBAAgB,EAChB,YAAY,EACZ,wBAAwB,GACxB,MAAM,eAAe,CAAA"}
@@ -16,7 +16,7 @@
16
16
  *
17
17
  * ## Where a refreshed token is written back
18
18
  *
19
- * There are two places a subscription credential can live and they are not
19
+ * There are three places a subscription credential can live and they are not
20
20
  * interchangeable, so `origin` says which one this credential came from and
21
21
  * therefore which publication rule applies:
22
22
  *
@@ -24,6 +24,9 @@
24
24
  * every platform. A refresh replaces only the exact credential it used.
25
25
  * - `'keychain'` — a co-installed tool's macOS entry, which namzu reads but
26
26
  * does not own. A refresh is session-local and never writes that entry.
27
+ * - `'claude-file'` — Claude's device-session file. A rotating refresh grant
28
+ * must publish its successor back to the exact admitted file or it would
29
+ * log the owner out, so publication preserves Claude's full envelope.
27
30
  *
28
31
  * `origin` is optional and defaults to `'keychain'` because that is the only
29
32
  * source that existed when this file was written. Every namzu-owned caller
@@ -50,7 +53,7 @@ import { type AgentOAuthCredential } from './keychain.js';
50
53
  * One credential, one store, for its whole life. `discover.ts` decides which
51
54
  * at detection; everything after that is told, not asked.
52
55
  */
53
- export declare function readSubscriptionCredential(origin: CredentialOrigin): AgentOAuthCredential | null;
56
+ export declare function readSubscriptionCredential(origin: CredentialOrigin, sourcePath?: string): AgentOAuthCredential | null;
54
57
  /** Which store a subscription credential came from and therefore who owns publication. */
55
58
  export type CredentialOrigin = 'stored' | 'keychain' | 'claude-file';
56
59
  export interface OAuthMetadata {
@@ -59,6 +62,8 @@ export interface OAuthMetadata {
59
62
  readonly scopes?: readonly string[];
60
63
  /** Defaults to `'keychain'` — see the note at the top of this file. */
61
64
  readonly origin?: CredentialOrigin;
65
+ /** Exact owner file admitted by discovery; required for `'claude-file'`. */
66
+ readonly sourcePath?: string;
62
67
  }
63
68
  /** The credential that authorized a refresh was removed before publication. */
64
69
  export declare class CredentialWithdrawnError extends Error {
@@ -93,5 +98,5 @@ export declare function sameOAuthCredential(left: AgentOAuthCredential, right: A
93
98
  * `400 invalid_grant` throws {@link CredentialRefreshRejectedError}; retrying
94
99
  * the same grant is not recovery.
95
100
  */
96
- export declare function refreshAgentOAuthToken(refreshToken: string, signal?: AbortSignal): Promise<AgentOAuthCredential | null>;
101
+ export declare function refreshAgentOAuthToken(refreshToken: string, signal?: AbortSignal, scopes?: readonly string[]): Promise<AgentOAuthCredential | null>;
97
102
  //# sourceMappingURL=oauth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAYH,OAAO,EAAE,KAAK,oBAAoB,EAA+B,MAAM,eAAe,CAAA;AAsCtF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,gBAAgB,GAAG,oBAAoB,GAAG,IAAI,CAGhG;AAED,0FAA0F;AAC1F,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAA;AAEpE,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,uEAAuE;IACvE,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAClC;AAED,+EAA+E;AAC/E,qBAAa,wBAAyB,SAAQ,KAAK;IAClD,SAAkB,IAAI,8BAA6B;gBAEvC,OAAO,SAA0E;CAG7F;AAED,6EAA6E;AAC7E,qBAAa,0BAA2B,SAAQ,KAAK;IACpD,SAAkB,IAAI,gCAA+B;gBAEzC,OAAO,CAAC,EAAE,YAAY;CAGlC;AAED,mFAAmF;AACnF,qBAAa,8BAA+B,SAAQ,KAAK;IACxD,SAAkB,IAAI,oCAAmC;IACzD,QAAQ,CAAC,IAAI,EAAG,eAAe,CAAS;;CAKxC;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC9C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,aAAa,EACpB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC,CAkBjB;AA8DD,gGAAgG;AAChG,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,oBAAoB,GACzB,OAAO,CAcT;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC3C,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CA6DtC"}
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAYH,OAAO,EAAE,KAAK,oBAAoB,EAA+B,MAAM,eAAe,CAAA;AAsCtF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,gBAAgB,EACxB,UAAU,CAAC,EAAE,MAAM,GACjB,oBAAoB,GAAG,IAAI,CAM7B;AAED,0FAA0F;AAC1F,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAA;AAEpE,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,uEAAuE;IACvE,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,+EAA+E;AAC/E,qBAAa,wBAAyB,SAAQ,KAAK;IAClD,SAAkB,IAAI,8BAA6B;gBAEvC,OAAO,SAA0E;CAG7F;AAED,6EAA6E;AAC7E,qBAAa,0BAA2B,SAAQ,KAAK;IACpD,SAAkB,IAAI,gCAA+B;gBAEzC,OAAO,CAAC,EAAE,YAAY;CAGlC;AAED,mFAAmF;AACnF,qBAAa,8BAA+B,SAAQ,KAAK;IACxD,SAAkB,IAAI,oCAAmC;IACzD,QAAQ,CAAC,IAAI,EAAG,eAAe,CAAS;;CAKxC;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC9C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,aAAa,EACpB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC,CAmBjB;AA4ED,gGAAgG;AAChG,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,oBAAoB,GACzB,OAAO,CAcT;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC3C,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,WAAW,EACpB,MAAM,GAAE,SAAS,MAAM,EAA4B,GACjD,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAgEtC"}
@@ -16,7 +16,7 @@
16
16
  *
17
17
  * ## Where a refreshed token is written back
18
18
  *
19
- * There are two places a subscription credential can live and they are not
19
+ * There are three places a subscription credential can live and they are not
20
20
  * interchangeable, so `origin` says which one this credential came from and
21
21
  * therefore which publication rule applies:
22
22
  *
@@ -24,6 +24,9 @@
24
24
  * every platform. A refresh replaces only the exact credential it used.
25
25
  * - `'keychain'` — a co-installed tool's macOS entry, which namzu reads but
26
26
  * does not own. A refresh is session-local and never writes that entry.
27
+ * - `'claude-file'` — Claude's device-session file. A rotating refresh grant
28
+ * must publish its successor back to the exact admitted file or it would
29
+ * log the owner out, so publication preserves Claude's full envelope.
27
30
  *
28
31
  * `origin` is optional and defaults to `'keychain'` because that is the only
29
32
  * source that existed when this file was written. Every namzu-owned caller
@@ -34,8 +37,8 @@
34
37
  import { buildProbeContext, probe } from '@namzu/sdk';
35
38
  import { SUBSCRIPTION_CREDENTIAL_REF } from './credential-provider.js';
36
39
  import { credentialsPath, readStoredSubscriptionCredential, replaceStoredSubscriptionCredential, } from './credential-store.js';
37
- import { readClaudeFileCredential } from './harness-credentials.js';
38
- import { OAUTH_CLIENT_ID, OAUTH_TOKEN_URL } from './identity.js';
40
+ import { readClaudeCredentialFile, replaceClaudeCredentialFile } from './harness-credentials.js';
41
+ import { OAUTH_CLIENT_ID, OAUTH_SCOPES, OAUTH_TOKEN_URL } from './identity.js';
39
42
  import { readAgentKeychainCredential } from './keychain.js';
40
43
  /** Refresh a few seconds early so an about-to-expire token isn't used. */
41
44
  const EXPIRY_SKEW_MS = 60_000;
@@ -89,10 +92,13 @@ async function awaitWithSignal(operation, signal) {
89
92
  * One credential, one store, for its whole life. `discover.ts` decides which
90
93
  * at detection; everything after that is told, not asked.
91
94
  */
92
- export function readSubscriptionCredential(origin) {
95
+ export function readSubscriptionCredential(origin, sourcePath) {
93
96
  if (origin === 'stored')
94
97
  return readStoredSubscriptionCredential();
95
- return origin === 'claude-file' ? readClaudeFileCredential() : readAgentKeychainCredential();
98
+ if (origin === 'claude-file') {
99
+ return sourcePath ? readClaudeCredentialFile(sourcePath) : null;
100
+ }
101
+ return readAgentKeychainCredential();
96
102
  }
97
103
  /** The credential that authorized a refresh was removed before publication. */
98
104
  export class CredentialWithdrawnError extends Error {
@@ -130,7 +136,7 @@ export async function ensureFreshAnthropicToken(accessToken, oauth, signal) {
130
136
  return accessToken;
131
137
  if (!oauth.refreshToken)
132
138
  return accessToken;
133
- const refreshed = await refreshAgentOAuthToken(oauth.refreshToken, signal);
139
+ const refreshed = await refreshAgentOAuthToken(oauth.refreshToken, signal, oauth.scopes);
134
140
  if (!refreshed)
135
141
  return accessToken;
136
142
  // The response body was the final foreign await. Re-check immediately at
@@ -142,7 +148,8 @@ export async function ensureFreshAnthropicToken(accessToken, oauth, signal) {
142
148
  expiresAt: oauth.expiresAt,
143
149
  scopes: oauth.scopes,
144
150
  };
145
- return publishRefreshed(expected, refreshed, oauth.origin ?? 'keychain').accessToken;
151
+ return publishRefreshed(expected, refreshed, oauth.origin ?? 'keychain', oauth.sourcePath)
152
+ .accessToken;
146
153
  }
147
154
  /**
148
155
  * Say that a credential turned over, without saying what it turned into.
@@ -161,17 +168,34 @@ function announceRotation(replaced) {
161
168
  ref: SUBSCRIPTION_CREDENTIAL_REF,
162
169
  }, buildProbeContext());
163
170
  }
164
- function publishRefreshed(expected, refreshed, origin) {
165
- if (origin !== 'stored') {
171
+ function publishRefreshed(expected, refreshed, origin, sourcePath) {
172
+ if (origin === 'keychain') {
166
173
  // This entry belongs to another product, whose writer cannot participate
167
174
  // in a Namzu lock or conditional update. Never overwrite it. A rotation
168
175
  // that landed while the request was pending wins for this session; when it
169
176
  // is unchanged, the refreshed token remains session-local.
170
- const current = origin === 'claude-file' ? readClaudeFileCredential() : readAgentKeychainCredential();
177
+ const current = readAgentKeychainCredential();
171
178
  if (!current)
172
179
  throw new CredentialWithdrawnError();
173
180
  return !sameOAuthCredential(current, expected) ? current : refreshed;
174
181
  }
182
+ if (origin === 'claude-file') {
183
+ if (!sourcePath)
184
+ throw new CredentialPublicationError();
185
+ let result;
186
+ try {
187
+ result = replaceClaudeCredentialFile(sourcePath, expected, refreshed);
188
+ }
189
+ catch (error) {
190
+ throw new CredentialPublicationError({ cause: error });
191
+ }
192
+ if (!result.replaced) {
193
+ if (!result.current)
194
+ throw new CredentialWithdrawnError();
195
+ return result.current;
196
+ }
197
+ return refreshed;
198
+ }
175
199
  let result;
176
200
  try {
177
201
  result = replaceStoredSubscriptionCredential(expected, refreshed);
@@ -217,7 +241,7 @@ export function sameOAuthCredential(left, right) {
217
241
  * `400 invalid_grant` throws {@link CredentialRefreshRejectedError}; retrying
218
242
  * the same grant is not recovery.
219
243
  */
220
- export async function refreshAgentOAuthToken(refreshToken, signal) {
244
+ export async function refreshAgentOAuthToken(refreshToken, signal, scopes = OAUTH_SCOPES.split(' ')) {
221
245
  signal?.throwIfAborted();
222
246
  const requestController = new AbortController();
223
247
  const timeoutCause = new RefreshDeadlineError();
@@ -234,6 +258,7 @@ export async function refreshAgentOAuthToken(refreshToken, signal) {
234
258
  grant_type: 'refresh_token',
235
259
  refresh_token: refreshToken,
236
260
  client_id: OAUTH_CLIENT_ID,
261
+ scope: scopes.join(' '),
237
262
  }),
238
263
  signal: requestController.signal,
239
264
  }), requestController.signal);
@@ -254,6 +279,7 @@ export async function refreshAgentOAuthToken(refreshToken, signal) {
254
279
  accessToken: data.access_token,
255
280
  refreshToken: typeof data.refresh_token === 'string' ? data.refresh_token : refreshToken,
256
281
  expiresAt: typeof data.expires_in === 'number' ? Date.now() + data.expires_in * 1_000 : undefined,
282
+ scopes: typeof data.scope === 'string' ? data.scope.split(' ').filter(Boolean) : [...scopes],
257
283
  };
258
284
  }
259
285
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/integrations/providers/oauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/integrations/providers/oauth.ts"],"names":[],"mappings":"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"}