@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
package/README.md CHANGED
@@ -6,7 +6,7 @@ description: >-
6
6
  you get. Interactive sessions, headless runs that stream structured events,
7
7
  and a doctor that reports what the host can actually do.
8
8
  tags: [readme, package, cli, agent]
9
- timestamp: 2026-08-22T00:00:00Z
9
+ timestamp: 2026-08-23T00:00:00Z
10
10
  status: active
11
11
  diataxis: reference
12
12
  -->
@@ -69,14 +69,25 @@ namzu login codex # create a Namzu-owned ChatGPT subscription session
69
69
  ```
70
70
 
71
71
  On startup, Namzu first reuses usable `Claude` and `Codex` sessions already owned
72
- by their installed command-line clients. With no saved choice, one signed-in
73
- subscription starts directly; if both are available, a narrowed picker asks
74
- which one to use and proceeds with its default model. These borrowed credentials
75
- remain read-only and are never copied into `~/.namzu`. A Namzu-owned sign-in is
76
- needed only when no usable device session exists or when you explicitly want a
77
- separate login. API keys remain optional alternatives through environment
78
- variables or the session-only credential picker, and detecting one does not hide
79
- the subscription sign-in action.
72
+ by their installed command-line clients, including the paired Windows home from
73
+ WSL. With no saved choice, one signed-in subscription starts directly; if both
74
+ are available, a narrowed picker asks which one to use and proceeds with its
75
+ default model. Codex credentials remain read-only. If an expired `Claude` session
76
+ must rotate its refresh grant, Namzu preserves the complete owner envelope and
77
+ publishes the successor pair back to that exact file so `Claude` is not logged
78
+ out. A Namzu-owned sign-in is needed only when no usable device session exists
79
+ or when you explicitly want a separate login; its `Claude` route uses direct
80
+ subscription authorization rather than API-usage billing, and its returned
81
+ authorization code can be pasted back into the same picker that started it.
82
+ API keys remain optional alternatives through environment variables or the
83
+ session-only credential picker, and detecting one does not hide the subscription
84
+ sign-in action.
85
+
86
+ Bare `/effort` and `/permissions` open finite keyboard choosers; their argument
87
+ forms remain available for scripts. The footer keeps `model effort · cwd` on the
88
+ left and reserves the right edge for a state-specific interaction or durable
89
+ goal state. Idle conversation leaves the key legend to `/help` instead of
90
+ repeating it on every frame.
80
91
 
81
92
  Repository policy stays live for the whole session. The CLI starts with the
82
93
  applicable `AGENTS.md` chain, discovers nested instruction files after
@@ -27,9 +27,9 @@
27
27
  * started. There is no `--code` flag for that reason: it would look like it
28
28
  * should work and could not.
29
29
  *
30
- * Instead this waits on BOTH routes at once. The loopback listener takes the
31
- * browser that lands on this machine; standard input takes the address pasted
32
- * back from a browser somewhere else. Whichever answers first wins.
30
+ * The registered browser callback shows a code rather than returning to a
31
+ * local listener. Standard input takes that code or the finished address;
32
+ * the timeout bounds an unattended terminal.
33
33
  */
34
34
  import { type SubscriptionProviderId } from '../integrations/providers/index.js';
35
35
  import type { CommandDef } from './types.js';
@@ -40,6 +40,24 @@ interface LoginFlags {
40
40
  readonly unknown: readonly string[];
41
41
  }
42
42
  export declare function parseLoginFlags(argv: readonly string[]): LoginFlags;
43
+ /**
44
+ * Resolve with the first NON-BLANK line standard input offers, or never.
45
+ *
46
+ * Two deliberate choices, both found by running this rather than by reading it.
47
+ *
48
+ * **Blank lines are ignored, not answered.** `once('line')` took a bare Enter
49
+ * — the keystroke a person makes while waiting, and the one a piped empty
50
+ * stdin delivers immediately — and spent the sign-in on it: the empty string
51
+ * went to `completeWithPastedCode`, came back "that does not contain an
52
+ * authorization code", and the attempt was over before the browser had loaded
53
+ * the page.
54
+ *
55
+ * **A closed or absent stream resolves as absent, not as a blank code.** A
56
+ * pending promise with only an unref'd timeout does not keep Node alive, so
57
+ * `< /dev/null` otherwise exits zero before printing an outcome. The caller
58
+ * turns absence into an explicit failed login.
59
+ */
60
+ export declare function firstStdinLine(signal: AbortSignal, input?: NodeJS.ReadableStream): Promise<string | null>;
43
61
  export declare const loginCommand: CommandDef;
44
62
  export declare const logoutCommand: CommandDef;
45
63
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAKH,OAAO,EAEN,KAAK,sBAAsB,EAO3B,MAAM,oCAAoC,CAAA;AAQ3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAsB5C,UAAU,UAAU;IACnB,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAA;IAC1C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CACnC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAsCnE;AAoCD,eAAO,MAAM,YAAY,EAAE,UAuG1B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,UAiB3B,CAAA"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAKH,OAAO,EAEN,KAAK,sBAAsB,EAO3B,MAAM,oCAAoC,CAAA;AAQ3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAsB5C,UAAU,UAAU;IACnB,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAA;IAC1C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CACnC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAsCnE;AAED;;;;;;;;;;;;;;;;GAgBG;AAEH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,WAAW,EACnB,KAAK,GAAE,MAAM,CAAC,cAA8B,GAC1C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuBxB;AAED,eAAO,MAAM,YAAY,EAAE,UA4G1B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,UAiB3B,CAAA"}
@@ -27,9 +27,9 @@
27
27
  * started. There is no `--code` flag for that reason: it would look like it
28
28
  * should work and could not.
29
29
  *
30
- * Instead this waits on BOTH routes at once. The loopback listener takes the
31
- * browser that lands on this machine; standard input takes the address pasted
32
- * back from a browser somewhere else. Whichever answers first wins.
30
+ * The registered browser callback shows a code rather than returning to a
31
+ * local listener. Standard input takes that code or the finished address;
32
+ * the timeout bounds an unattended terminal.
33
33
  */
34
34
  import { createInterface } from 'node:readline';
35
35
  import { EXIT_FAIL, EXIT_OK, EXIT_USAGE } from '../exit-codes.js';
@@ -46,8 +46,8 @@ const LOGIN_HELP = [
46
46
  ' --timeout <seconds> Give up waiting after this long (default: 300).',
47
47
  ' -h, --help Show this help.',
48
48
  '',
49
- 'Claude sign-in opens a browser callback; on a remote machine, paste the final',
50
- 'callback address into this terminal. Codex sign-in prints a device code and',
49
+ 'Claude sign-in opens a registered browser flow; paste the returned code or',
50
+ 'finished address into this terminal. Codex sign-in prints a device code and',
51
51
  'polls while you approve it in the browser.',
52
52
  '',
53
53
  'The credential is written to ~/.namzu/credentials.json, readable only by your',
@@ -110,27 +110,36 @@ export function parseLoginFlags(argv) {
110
110
  * authorization code", and the attempt was over before the browser had loaded
111
111
  * the page.
112
112
  *
113
- * **A closed or absent stream never resolves.** This is raced against the
114
- * loopback listener and a timeout, so a stdin that is not there (a service,
115
- * `< /dev/null`) must not read as "the operator declined" and cancel a browser
116
- * sign-in still in progress.
113
+ * **A closed or absent stream resolves as absent, not as a blank code.** A
114
+ * pending promise with only an unref'd timeout does not keep Node alive, so
115
+ * `< /dev/null` otherwise exits zero before printing an outcome. The caller
116
+ * turns absence into an explicit failed login.
117
117
  */
118
- function firstStdinLine(signal) {
118
+ export function firstStdinLine(signal, input = process.stdin) {
119
+ if (!input.readable)
120
+ return Promise.resolve(null);
119
121
  return new Promise((resolve) => {
120
- if (!process.stdin.readable)
121
- return;
122
- const rl = createInterface({ input: process.stdin });
123
- const done = () => {
122
+ const rl = createInterface({ input });
123
+ let settled = false;
124
+ const finish = (value) => {
125
+ if (settled)
126
+ return;
127
+ settled = true;
128
+ signal.removeEventListener('abort', onAbort);
129
+ resolve(value);
130
+ };
131
+ const onAbort = () => {
132
+ finish(null);
124
133
  rl.close();
125
134
  };
126
- signal.addEventListener('abort', done, { once: true });
135
+ signal.addEventListener('abort', onAbort, { once: true });
127
136
  rl.on('line', (line) => {
128
137
  if (line.trim().length === 0)
129
138
  return;
130
- signal.removeEventListener('abort', done);
139
+ finish(line);
131
140
  rl.close();
132
- resolve(line);
133
141
  });
142
+ rl.once('close', () => finish(null));
134
143
  });
135
144
  }
136
145
  export const loginCommand = {
@@ -197,7 +206,6 @@ export const loginCommand = {
197
206
  ctx.formatter.print({
198
207
  text: describeLoginStart({
199
208
  url: login.url,
200
- loopback: login.loopback,
201
209
  browserOpened: flags.noBrowser ? false : openInBrowser(login.url),
202
210
  completionHint: 'paste it here and press enter',
203
211
  }),
@@ -207,9 +215,13 @@ export const loginCommand = {
207
215
  ok: false,
208
216
  reason: 'Timed out waiting for the sign-in to finish. Nothing was stored.',
209
217
  }), flags.timeoutMs).unref());
210
- const pasted = firstStdinLine(stop.signal).then((line) => login.completeWithPastedCode(line));
211
- const callback = login.waitForCallback();
212
- const outcome = await Promise.race(callback ? [callback, pasted, timeout] : [pasted, timeout]);
218
+ const pasted = firstStdinLine(stop.signal).then((line) => line === null
219
+ ? {
220
+ ok: false,
221
+ reason: 'Standard input closed before an authorization code was pasted. Nothing was stored.',
222
+ }
223
+ : login.completeWithPastedCode(line));
224
+ const outcome = await Promise.race([pasted, timeout]);
213
225
  stop.abort();
214
226
  login.cancel();
215
227
  ctx.formatter.print({
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
@@ -120,6 +120,8 @@ export interface DetectedProvider {
120
120
  readonly refreshToken?: string;
121
121
  readonly expiresAt?: number;
122
122
  readonly origin?: CredentialOrigin;
123
+ /** Exact Claude owner file admitted by discovery. */
124
+ readonly sourcePath?: string;
123
125
  };
124
126
  /** Account-routed OAuth metadata for the Codex Responses backend. */
125
127
  readonly codex?: {
@@ -145,6 +147,8 @@ export interface DiscoverOptions {
145
147
  readonly skipKeychain?: boolean;
146
148
  /** Skip namzu's own credential store (tests, and `--no-stored-credential`). */
147
149
  readonly skipStored?: boolean;
150
+ /** Explicit paired Windows home for a WSL credential fixture. */
151
+ readonly windowsHome?: string | null;
148
152
  }
149
153
  /**
150
154
  * Providers backed by a subscription session that is already usable now.
@@ -1 +1 @@
1
- {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/discover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/discover.ts"],"names":[],"mappings":"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"}
@@ -58,7 +58,7 @@
58
58
  */
59
59
  import { EnvCredentialProvider } from '@namzu/sdk';
60
60
  import { credentialsPath, readStoredCodexCredential, readStoredSubscriptionCredential, } from './credential-store.js';
61
- import { claudeCredentialsPath, codexCredentialsPath, preferFresherCredential, readClaudeFileCredential, readCodexFileCredential, } from './harness-credentials.js';
61
+ import { preferFresherCredential, readClaudeFileCredentialCandidates, readCodexFileCredentialCandidates, } from './harness-credentials.js';
62
62
  import { KEYCHAIN_SERVICE, readAgentKeychainCredential } from './keychain.js';
63
63
  import { PROVIDER_REGISTRY } from './registry.js';
64
64
  /**
@@ -130,12 +130,17 @@ export async function discoverProviders(opts = {}) {
130
130
  // macOS-only: the OAuth credential a co-installed tool keeps in the login
131
131
  // Keychain.
132
132
  const keychainCredential = opts.skipKeychain ? null : readAgentKeychainCredential();
133
- const claudeFileCredential = readClaudeFileCredential(opts.home);
134
- const codexFileCredential = readCodexFileCredential(opts.home, env);
135
- const usableCodexFileCredential = codexFileCredential?.expiresAt === undefined ||
136
- codexFileCredential.expiresAt - Date.now() > 60_000
137
- ? codexFileCredential
138
- : null;
133
+ const claudeFileCredentials = readClaudeFileCredentialCandidates(opts.home, env, opts.windowsHome);
134
+ const codexFileCredentials = readCodexFileCredentialCandidates(opts.home, env, opts.windowsHome).filter((candidate) => candidate.credential.expiresAt === undefined ||
135
+ candidate.credential.expiresAt - Date.now() > 60_000);
136
+ const usableCodexFileCredential = codexFileCredentials.reduce((current, candidate) => {
137
+ if (!current)
138
+ return candidate;
139
+ return preferFresherCredential(current.credential, candidate.credential) ===
140
+ candidate.credential
141
+ ? candidate
142
+ : current;
143
+ }, null);
139
144
  for (const id of Object.keys(PROVIDER_REGISTRY)) {
140
145
  const entry = PROVIDER_REGISTRY[id];
141
146
  const sources = [];
@@ -143,39 +148,47 @@ export async function discoverProviders(opts = {}) {
143
148
  let oauth;
144
149
  let codex;
145
150
  if (id === 'anthropic') {
146
- const borrowed = preferFresherCredential(claudeFileCredential, keychainCredential);
147
- const usableBorrowed = borrowed?.expiresAt === undefined || borrowed.expiresAt - Date.now() > 60_000
148
- ? borrowed
149
- : null;
150
- const borrowedSource = usableBorrowed === claudeFileCredential && usableBorrowed
151
- ? {
152
- kind: 'claude-file',
153
- path: claudeCredentialsPath(opts.home),
154
- }
155
- : usableBorrowed
156
- ? { kind: 'keychain', service: KEYCHAIN_SERVICE }
157
- : undefined;
158
- if (usableBorrowed && borrowedSource) {
151
+ const borrowedCandidates = [
152
+ ...claudeFileCredentials.map(({ credential, path }) => ({
153
+ credential,
154
+ source: { kind: 'claude-file', path },
155
+ })),
156
+ ...(keychainCredential
157
+ ? [
158
+ {
159
+ credential: keychainCredential,
160
+ source: { kind: 'keychain', service: KEYCHAIN_SERVICE },
161
+ },
162
+ ]
163
+ : []),
164
+ ].filter((candidate) => candidate.credential.expiresAt === undefined ||
165
+ candidate.credential.expiresAt - Date.now() > 60_000 ||
166
+ (candidate.source.kind === 'claude-file' &&
167
+ candidate.credential.refreshToken !== undefined));
168
+ const borrowed = borrowedCandidates.reduce((current, candidate) => {
169
+ if (!current)
170
+ return candidate;
171
+ return preferFresherCredential(current.credential, candidate.credential) ===
172
+ candidate.credential
173
+ ? candidate
174
+ : current;
175
+ }, null);
176
+ if (borrowed) {
159
177
  if (apiKey === undefined) {
160
- apiKey = usableBorrowed.accessToken;
178
+ apiKey = borrowed.credential.accessToken;
161
179
  oauth = {
162
- refreshToken: usableBorrowed.refreshToken,
163
- expiresAt: usableBorrowed.expiresAt,
164
- origin: borrowedSource.kind === 'claude-file' ? 'claude-file' : 'keychain',
180
+ refreshToken: borrowed.credential.refreshToken,
181
+ expiresAt: borrowed.credential.expiresAt,
182
+ origin: borrowed.source.kind === 'claude-file' ? 'claude-file' : 'keychain',
183
+ ...(borrowed.source.kind === 'claude-file' ? { sourcePath: borrowed.source.path } : {}),
165
184
  };
166
185
  }
167
- sources.push(borrowedSource);
186
+ sources.push(borrowed.source);
187
+ }
188
+ for (const candidate of borrowedCandidates) {
189
+ if (candidate !== borrowed)
190
+ sources.push(candidate.source);
168
191
  }
169
- const otherBorrowedSource = usableBorrowed && usableBorrowed === claudeFileCredential && keychainCredential
170
- ? { kind: 'keychain', service: KEYCHAIN_SERVICE }
171
- : usableBorrowed && usableBorrowed === keychainCredential && claudeFileCredential
172
- ? {
173
- kind: 'claude-file',
174
- path: claudeCredentialsPath(opts.home),
175
- }
176
- : undefined;
177
- if (otherBorrowedSource)
178
- sources.push(otherBorrowedSource);
179
192
  if (storedCredential) {
180
193
  if (apiKey === undefined) {
181
194
  apiKey = storedCredential.accessToken;
@@ -192,14 +205,14 @@ export async function discoverProviders(opts = {}) {
192
205
  }
193
206
  }
194
207
  if (id === 'codex' && (storedCodexCredential || usableCodexFileCredential)) {
195
- const credential = usableCodexFileCredential ?? storedCodexCredential;
208
+ const credential = usableCodexFileCredential?.credential ?? storedCodexCredential;
196
209
  if (!credential)
197
210
  throw new Error('unreachable');
198
211
  apiKey = credential.accessToken;
199
212
  sources.push({
200
213
  kind: usableCodexFileCredential ? 'codex-file' : 'stored',
201
214
  path: usableCodexFileCredential
202
- ? codexCredentialsPath(opts.home, env)
215
+ ? usableCodexFileCredential.path
203
216
  : credentialsPath(...(opts.home === undefined ? [] : [opts.home])),
204
217
  });
205
218
  codex = {
@@ -213,6 +226,11 @@ export async function discoverProviders(opts = {}) {
213
226
  path: credentialsPath(...(opts.home === undefined ? [] : [opts.home])),
214
227
  });
215
228
  }
229
+ for (const candidate of codexFileCredentials) {
230
+ if (candidate !== usableCodexFileCredential) {
231
+ sources.push({ kind: 'codex-file', path: candidate.path });
232
+ }
233
+ }
216
234
  }
217
235
  for (const envName of entry.envVars) {
218
236
  // Through the SDK's seam rather than a direct `env[envName]`. The
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../src/integrations/providers/discover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../src/integrations/providers/discover.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,54 @@
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
- */
1
+ /** Adapters for credentials owned by co-installed agent harnesses. */
2
+ import { execFileSync } from 'node:child_process';
10
3
  import type { AgentOAuthCredential } from './keychain.js';
11
4
  export interface CodexOAuthCredential extends AgentOAuthCredential {
12
5
  readonly accountId: string;
13
6
  }
7
+ export interface HarnessCredentialCandidate<T extends AgentOAuthCredential> {
8
+ readonly path: string;
9
+ readonly credential: T;
10
+ }
11
+ export interface ClaudeCredentialReplaceResult {
12
+ readonly replaced: boolean;
13
+ readonly current: AgentOAuthCredential | null;
14
+ }
14
15
  export declare function claudeCredentialsPath(home?: string): string;
16
+ /** Convert an absolute Windows path into the drive mount WSL exposes. */
17
+ export declare function windowsPathToWsl(path: string): string | null;
18
+ /**
19
+ * Resolve the Windows account paired with this WSL process.
20
+ *
21
+ * The Windows executable is pinned instead of searched through PATH: this
22
+ * lookup decides where a credential may be read, so a project-local `cmd.exe`
23
+ * must not be able to redirect it. Failure is an ordinary "no second home"
24
+ * result; native Linux never starts a process.
25
+ */
26
+ export declare function wslWindowsHome(env?: NodeJS.ProcessEnv, run?: typeof execFileSync, command?: string): string | null;
27
+ /**
28
+ * Usable Claude sessions visible from this process, freshest first.
29
+ *
30
+ * WSL is one device with two home directories in practice. Claude may be
31
+ * installed and signed in on Windows while Namzu runs inside WSL; treating the
32
+ * Linux home as the whole device turns that valid subscription into a missing
33
+ * credential. An explicit `home` remains hermetic for embeds and tests.
34
+ */
35
+ export declare function readClaudeFileCredentialCandidates(home: string | undefined, env?: NodeJS.ProcessEnv, windowsHome?: string | null | undefined): readonly HarnessCredentialCandidate<AgentOAuthCredential>[];
15
36
  export declare function codexCredentialsPath(home?: string, env?: NodeJS.ProcessEnv): string;
16
37
  export declare function readClaudeFileCredential(home?: string): AgentOAuthCredential | null;
17
38
  /** Read a Claude-owned credential from the exact path discovery admitted. */
18
39
  export declare function readClaudeCredentialFile(path: string): AgentOAuthCredential | null;
40
+ /**
41
+ * Publish a refreshed Claude session back to the exact owner file discovered.
42
+ *
43
+ * Claude refresh grants may rotate. Keeping the successor only in Namzu would
44
+ * consume the owner's grant and leave its file unusable, so this preserves the
45
+ * full envelope and atomically replaces only its OAuth fields. The final
46
+ * re-read lets an owner rotation that completed during the network request win.
47
+ * Claude does not participate in Namzu's lock, so this is intentionally not
48
+ * described as a cross-process CAS; it is the strongest owner-compatible
49
+ * publication available for this shared file format.
50
+ */
51
+ export declare function replaceClaudeCredentialFile(path: string, expected: AgentOAuthCredential, replacement: AgentOAuthCredential): ClaudeCredentialReplaceResult;
19
52
  export declare function codexCredentialFromTokens(tokens: {
20
53
  readonly accessToken: string;
21
54
  readonly refreshToken?: string;
@@ -29,6 +62,8 @@ export declare function codexCredentialFromTokens(tokens: {
29
62
  * Codex Responses backend and requires the account id that backend routes on.
30
63
  */
31
64
  export declare function readCodexFileCredential(home?: string, env?: NodeJS.ProcessEnv): CodexOAuthCredential | null;
65
+ /** Usable Codex sessions visible from this process, including a paired WSL host. */
66
+ export declare function readCodexFileCredentialCandidates(home: string | undefined, env?: NodeJS.ProcessEnv, windowsHome?: string | null | undefined): readonly HarnessCredentialCandidate<CodexOAuthCredential>[];
32
67
  /** Read a Codex-owned credential from the exact path discovery admitted. */
33
68
  export declare function readCodexCredentialFile(path: string): CodexOAuthCredential | null;
34
69
  /** Prefer the credential whose access token remains valid for longer. */
@@ -1 +1 @@
1
- {"version":3,"file":"harness-credentials.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/harness-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAIzD,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEtE;AAED,wBAAgB,oBAAoB,CACnC,IAAI,GAAE,MAAkB,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,MAAM,CAQR;AA6BD,wBAAgB,wBAAwB,CAAC,IAAI,GAAE,MAAkB,GAAG,oBAAoB,GAAG,IAAI,CAE9F;AAED,6EAA6E;AAC7E,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAWlF;AAOD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IACjD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC3B,GAAG,oBAAoB,GAAG,IAAI,CAW9B;AAoBD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACtC,IAAI,GAAE,MAAkB,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,oBAAoB,GAAG,IAAI,CAE7B;AAED,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAkBjF;AAED,yEAAyE;AACzE,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,oBAAoB,EACrE,IAAI,EAAE,CAAC,GAAG,IAAI,EACd,KAAK,EAAE,CAAC,GAAG,IAAI,EACf,GAAG,SAAa,GACd,CAAC,GAAG,IAAI,CASV"}
1
+ {"version":3,"file":"harness-credentials.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/harness-credentials.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAejD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAIzD,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,0BAA0B,CAAC,CAAC,SAAS,oBAAoB;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;CACtB;AAED,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAA;CAC7C;AAED,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEtE;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK5D;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC7B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,GAAG,GAAE,OAAO,YAA2B,EACvC,OAAO,SAAoC,GACzC,MAAM,GAAG,IAAI,CAcf;AAED;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CACjD,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,WAAW,GAAE,MAAM,GAAG,IAAI,GAAG,SAA2D,GACtF,SAAS,0BAA0B,CAAC,oBAAoB,CAAC,EAAE,CAU7D;AAED,wBAAgB,oBAAoB,CACnC,IAAI,GAAE,MAAkB,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,MAAM,CAQR;AA6BD,wBAAgB,wBAAwB,CAAC,IAAI,GAAE,MAAkB,GAAG,oBAAoB,GAAG,IAAI,CAE9F;AAED,6EAA6E;AAC7E,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAWlF;AAWD;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,EAAE,oBAAoB,GAC/B,6BAA6B,CAiD/B;AAOD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IACjD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC3B,GAAG,oBAAoB,GAAG,IAAI,CAW9B;AAoBD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACtC,IAAI,GAAE,MAAkB,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,oBAAoB,GAAG,IAAI,CAE7B;AAED,oFAAoF;AACpF,wBAAgB,iCAAiC,CAChD,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,WAAW,GAAE,MAAM,GAAG,IAAI,GAAG,SAA2D,GACtF,SAAS,0BAA0B,CAAC,oBAAoB,CAAC,EAAE,CAa7D;AAED,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAkBjF;AAED,yEAAyE;AACzE,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,oBAAoB,EACrE,IAAI,EAAE,CAAC,GAAG,IAAI,EACd,KAAK,EAAE,CAAC,GAAG,IAAI,EACf,GAAG,SAAa,GACd,CAAC,GAAG,IAAI,CASV"}