@namzu/cli 14.2.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.
- package/README.md +8 -6
- package/dist/commands/login.d.ts +21 -3
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +33 -21
- package/dist/commands/login.js.map +1 -1
- package/dist/integrations/providers/identity.d.ts +16 -21
- package/dist/integrations/providers/identity.d.ts.map +1 -1
- package/dist/integrations/providers/identity.js +16 -21
- package/dist/integrations/providers/identity.js.map +1 -1
- package/dist/integrations/providers/index.d.ts +1 -1
- package/dist/integrations/providers/index.d.ts.map +1 -1
- package/dist/integrations/providers/index.js +1 -1
- package/dist/integrations/providers/index.js.map +1 -1
- package/dist/integrations/providers/subscription-login.d.ts +7 -41
- package/dist/integrations/providers/subscription-login.d.ts.map +1 -1
- package/dist/integrations/providers/subscription-login.js +16 -143
- package/dist/integrations/providers/subscription-login.js.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +76 -71
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/Picker.d.ts +4 -2
- package/dist/tui/Picker.d.ts.map +1 -1
- package/dist/tui/Picker.js +99 -10
- package/dist/tui/Picker.js.map +1 -1
- package/dist/tui/StatusBar.d.ts +1 -1
- package/dist/tui/StatusBar.d.ts.map +1 -1
- package/dist/tui/StatusBar.js +8 -5
- package/dist/tui/StatusBar.js.map +1 -1
- package/dist/tui/login-prompt.d.ts +0 -1
- package/dist/tui/login-prompt.d.ts.map +1 -1
- package/dist/tui/login-prompt.js +1 -6
- package/dist/tui/login-prompt.js.map +1 -1
- package/package.json +4 -4
|
@@ -10,21 +10,11 @@
|
|
|
10
10
|
*
|
|
11
11
|
* ## The flow
|
|
12
12
|
*
|
|
13
|
-
* Authorization code with PKCE (RFC 7636, S256), redirected to
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* never touches a screen.
|
|
19
|
-
* 2. **Paste.** The operator copies the code — or the whole redirect URL —
|
|
20
|
-
* out of a browser and hands it back.
|
|
21
|
-
*
|
|
22
|
-
* The second is not a consolation prize. A container, a remote shell over
|
|
23
|
-
* SSH, a machine with no graphical session: none of them can be redirected
|
|
24
|
-
* to, and on all of them the loopback server is either unreachable from
|
|
25
|
-
* wherever the browser actually is or cannot bind at all. `start()` says
|
|
26
|
-
* which of the two it managed to arrange (`loopback`), and the paste path
|
|
27
|
-
* works whether or not it did.
|
|
13
|
+
* Authorization code with PKCE (RFC 7636, S256), redirected to the platform
|
|
14
|
+
* callback registered for the owner client's public identity. The operator
|
|
15
|
+
* copies the code — or the whole finished address — back to the initiating
|
|
16
|
+
* surface. This flow deliberately does not invent a localhost redirect: the
|
|
17
|
+
* authorization server rejects an unregistered callback before sign-in.
|
|
28
18
|
*
|
|
29
19
|
* ## What never happens here
|
|
30
20
|
*
|
|
@@ -35,12 +25,11 @@
|
|
|
35
25
|
* login leaves no partial credential behind.
|
|
36
26
|
*/
|
|
37
27
|
import { createHash, randomBytes, timingSafeEqual } from 'node:crypto';
|
|
38
|
-
import { createServer } from 'node:http';
|
|
39
28
|
import { writeStoredSubscriptionCredential } from './credential-store.js';
|
|
40
|
-
import { AUTHORIZE_URL, MANUAL_REDIRECT_URI, OAUTH_CLIENT_ID, OAUTH_SCOPES, OAUTH_TOKEN_URL,
|
|
29
|
+
import { AUTHORIZE_URL, MANUAL_REDIRECT_URI, OAUTH_CLIENT_ID, OAUTH_SCOPES, OAUTH_TOKEN_URL, } from './identity.js';
|
|
41
30
|
import { PROVIDER_REGISTRY } from './registry.js';
|
|
42
31
|
/**
|
|
43
|
-
* Begin a login. Returns the page to open plus the
|
|
32
|
+
* Begin a login. Returns the page to open plus the paste-completion handle.
|
|
44
33
|
*
|
|
45
34
|
* Deliberately does NOT open a browser. Which of `open`, `xdg-open` or a
|
|
46
35
|
* Windows protocol handler to spawn — and whether spawning anything is even
|
|
@@ -54,7 +43,10 @@ export async function beginSubscriptionLogin(options = {}) {
|
|
|
54
43
|
const attemptSignal = options.signal
|
|
55
44
|
? AbortSignal.any([options.signal, cancelController.signal])
|
|
56
45
|
: cancelController.signal;
|
|
57
|
-
const exchangeOptions = {
|
|
46
|
+
const exchangeOptions = {
|
|
47
|
+
...options,
|
|
48
|
+
signal: attemptSignal,
|
|
49
|
+
};
|
|
58
50
|
const verifier = base64Url(randomBytes(32));
|
|
59
51
|
const challenge = base64Url(createHash('sha256').update(verifier).digest());
|
|
60
52
|
// An independent value, not the verifier reused.
|
|
@@ -65,9 +57,7 @@ export async function beginSubscriptionLogin(options = {}) {
|
|
|
65
57
|
// the way — and the secret PKCE exists to keep out of that URL is exactly
|
|
66
58
|
// the verifier.
|
|
67
59
|
const state = base64Url(randomBytes(16));
|
|
68
|
-
const
|
|
69
|
-
attemptSignal.throwIfAborted();
|
|
70
|
-
const redirectUri = listener ? REDIRECT_URI : MANUAL_REDIRECT_URI;
|
|
60
|
+
const redirectUri = MANUAL_REDIRECT_URI;
|
|
71
61
|
let settled = false;
|
|
72
62
|
const exchangeOnce = async (code, seenState) => {
|
|
73
63
|
if (settled)
|
|
@@ -84,20 +74,6 @@ export async function beginSubscriptionLogin(options = {}) {
|
|
|
84
74
|
return {
|
|
85
75
|
url: authorizeUrl(challenge, state, redirectUri),
|
|
86
76
|
redirectUri,
|
|
87
|
-
loopback: listener !== null,
|
|
88
|
-
waitForCallback: () => listener === null
|
|
89
|
-
? null
|
|
90
|
-
: listener.received.then((got) => got === null
|
|
91
|
-
? {
|
|
92
|
-
ok: false,
|
|
93
|
-
reason: 'The sign-in was cancelled before the browser came back.',
|
|
94
|
-
}
|
|
95
|
-
: got.error
|
|
96
|
-
? {
|
|
97
|
-
ok: false,
|
|
98
|
-
reason: `The sign-in did not complete (${got.error}). Nothing was stored.`,
|
|
99
|
-
}
|
|
100
|
-
: exchangeOnce(got.code, got.state)),
|
|
101
77
|
completeWithPastedCode: async (input) => {
|
|
102
78
|
const parsed = parsePastedInput(input);
|
|
103
79
|
if (!parsed.code) {
|
|
@@ -110,7 +86,6 @@ export async function beginSubscriptionLogin(options = {}) {
|
|
|
110
86
|
},
|
|
111
87
|
cancel: () => {
|
|
112
88
|
cancelController.abort(new Error('The sign-in attempt was cancelled.'));
|
|
113
|
-
listener?.close();
|
|
114
89
|
},
|
|
115
90
|
};
|
|
116
91
|
}
|
|
@@ -199,7 +174,10 @@ async function exchange(code, state, verifier, redirectUri, options) {
|
|
|
199
174
|
try {
|
|
200
175
|
res = await awaitWithSignal(fetchFn(OAUTH_TOKEN_URL, {
|
|
201
176
|
method: 'POST',
|
|
202
|
-
headers: {
|
|
177
|
+
headers: {
|
|
178
|
+
'content-type': 'application/json',
|
|
179
|
+
accept: 'application/json',
|
|
180
|
+
},
|
|
203
181
|
body: JSON.stringify({
|
|
204
182
|
grant_type: 'authorization_code',
|
|
205
183
|
client_id: OAUTH_CLIENT_ID,
|
|
@@ -286,111 +264,6 @@ async function exchange(code, state, verifier, redirectUri, options) {
|
|
|
286
264
|
}
|
|
287
265
|
return { ok: true, credential, storedAt };
|
|
288
266
|
}
|
|
289
|
-
/**
|
|
290
|
-
* A single-purpose listener on the loopback redirect, or `null`.
|
|
291
|
-
*
|
|
292
|
-
* `null` on every failure to bind — the port is in use (a second namzu, or
|
|
293
|
-
* another product's login mid-flight), the sandbox forbids listening, there
|
|
294
|
-
* is no loopback interface. None of those is fatal, because the paste path
|
|
295
|
-
* does not need this.
|
|
296
|
-
*/
|
|
297
|
-
async function openLoopback(expectedState, signal) {
|
|
298
|
-
signal?.throwIfAborted();
|
|
299
|
-
let settle = () => { };
|
|
300
|
-
const received = new Promise((r) => {
|
|
301
|
-
let done = false;
|
|
302
|
-
settle = (v) => {
|
|
303
|
-
if (done)
|
|
304
|
-
return;
|
|
305
|
-
done = true;
|
|
306
|
-
r(v);
|
|
307
|
-
};
|
|
308
|
-
});
|
|
309
|
-
const server = createServer((req, res) => {
|
|
310
|
-
const url = new URL(req.url ?? '/', `http://127.0.0.1:${SUBSCRIPTION_REDIRECT_PORT}`);
|
|
311
|
-
const error = url.searchParams.get('error');
|
|
312
|
-
const code = url.searchParams.get('code');
|
|
313
|
-
const state = url.searchParams.get('state');
|
|
314
|
-
const finish = (status, text) => {
|
|
315
|
-
res.writeHead(status, { 'content-type': 'text/plain; charset=utf-8' });
|
|
316
|
-
res.end(text);
|
|
317
|
-
};
|
|
318
|
-
if (error) {
|
|
319
|
-
finish(400, 'Sign-in did not complete. Return to namzu.');
|
|
320
|
-
settle({ code: '', state: '', error });
|
|
321
|
-
return;
|
|
322
|
-
}
|
|
323
|
-
if (!code || !state) {
|
|
324
|
-
// Not our redirect — a browser probing the port, a favicon request.
|
|
325
|
-
// Answering and NOT settling keeps the listener alive for the real one.
|
|
326
|
-
finish(404, 'Not the sign-in callback.');
|
|
327
|
-
return;
|
|
328
|
-
}
|
|
329
|
-
if (!constantTimeEquals(state, expectedState)) {
|
|
330
|
-
// Refused here as well as at the exchange. This is the request a
|
|
331
|
-
// cross-site attempt would make, and answering it with "done" would
|
|
332
|
-
// tell whoever made it that the port is a live login.
|
|
333
|
-
finish(400, 'Sign-in did not complete. Return to namzu.');
|
|
334
|
-
return;
|
|
335
|
-
}
|
|
336
|
-
finish(200, 'Signed in. You can close this tab and return to namzu.');
|
|
337
|
-
settle({ code, state });
|
|
338
|
-
});
|
|
339
|
-
let bindOwned = true;
|
|
340
|
-
let closeOwned = false;
|
|
341
|
-
let abortBind;
|
|
342
|
-
const close = () => {
|
|
343
|
-
if (closeOwned)
|
|
344
|
-
return;
|
|
345
|
-
closeOwned = true;
|
|
346
|
-
settle(null);
|
|
347
|
-
try {
|
|
348
|
-
server.close();
|
|
349
|
-
}
|
|
350
|
-
catch {
|
|
351
|
-
// A cancellation can win before `listen()` owns a handle. There is no
|
|
352
|
-
// resource to close in that branch, and the bind promise is rejected.
|
|
353
|
-
}
|
|
354
|
-
};
|
|
355
|
-
const bound = await new Promise((resolve, reject) => {
|
|
356
|
-
const finish = (value) => {
|
|
357
|
-
if (!bindOwned)
|
|
358
|
-
return;
|
|
359
|
-
bindOwned = false;
|
|
360
|
-
resolve(value);
|
|
361
|
-
};
|
|
362
|
-
abortBind = () => {
|
|
363
|
-
if (!bindOwned)
|
|
364
|
-
return;
|
|
365
|
-
bindOwned = false;
|
|
366
|
-
close();
|
|
367
|
-
reject(signal?.reason);
|
|
368
|
-
};
|
|
369
|
-
signal?.addEventListener('abort', abortBind, { once: true });
|
|
370
|
-
server.once('error', () => finish(false));
|
|
371
|
-
server.listen(SUBSCRIPTION_REDIRECT_PORT, '127.0.0.1', () => finish(true));
|
|
372
|
-
if (signal?.aborted)
|
|
373
|
-
abortBind();
|
|
374
|
-
});
|
|
375
|
-
if (abortBind)
|
|
376
|
-
signal?.removeEventListener('abort', abortBind);
|
|
377
|
-
if (!bound) {
|
|
378
|
-
close();
|
|
379
|
-
return null;
|
|
380
|
-
}
|
|
381
|
-
if (signal?.aborted) {
|
|
382
|
-
close();
|
|
383
|
-
throw signal.reason;
|
|
384
|
-
}
|
|
385
|
-
signal?.addEventListener('abort', close, { once: true });
|
|
386
|
-
return {
|
|
387
|
-
received,
|
|
388
|
-
close: () => {
|
|
389
|
-
signal?.removeEventListener('abort', close);
|
|
390
|
-
close();
|
|
391
|
-
},
|
|
392
|
-
};
|
|
393
|
-
}
|
|
394
267
|
/**
|
|
395
268
|
* Pull a code (and a state, when there is one) out of whatever got pasted.
|
|
396
269
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-login.js","sourceRoot":"","sources":["../../../src/integrations/providers/subscription-login.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subscription-login.js","sourceRoot":"","sources":["../../../src/integrations/providers/subscription-login.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAMN,KAAK,OAAO,EAaZ,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAMN,KAAK,OAAO,EAaZ,MAAM,YAAY,CAAA;AAoHnB,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG/D,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;CACxB;AA8DD,sEAAsE;AACtE,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,MAAM,EAAE,MAAM,MAAM,EACpB,iBAAiB,GAAE,SAAS,MAAM,EAAO,GACvC,SAAS,iBAAiB,EAAE,CA4D9B;AAgED,wBAAgB,GAAG,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,QAAQ,2CA4mHhD"}
|
package/dist/tui/App.js
CHANGED
|
@@ -19,7 +19,7 @@ import { pinTrustedProjectPath, resolveTrustedProjectContext, } from '../config/
|
|
|
19
19
|
import { visibleProjectInstructionPath } from '../context/project-path.js';
|
|
20
20
|
import { writeClipboardText } from '../integrations/clipboard/text.js';
|
|
21
21
|
import { terminalNotificationEnabled, writeTerminalNotification, } from '../integrations/notifications/terminal.js';
|
|
22
|
-
import { beginCodexDeviceLogin, beginSubscriptionLogin, clearAllStoredCredentials, credentialsPath, primaryProvider, readStoredCodexCredential, readStoredSubscriptionCredential, signedInSubscriptionProviders, writePreferences, } from '../integrations/providers/index.js';
|
|
22
|
+
import { beginCodexDeviceLogin, beginSubscriptionLogin, clearAllStoredCredentials, credentialsPath, parsePastedInput, primaryProvider, readStoredCodexCredential, readStoredSubscriptionCredential, signedInSubscriptionProviders, writePreferences, } from '../integrations/providers/index.js';
|
|
23
23
|
import { appendMessages, forkConversation, forkConversationBeforeUser, listRecent, loadConversation, openSessions, replaceConversation, requireWritableConversation, setTitle, startConversation, titleOf, } from '../integrations/sessions/store.js';
|
|
24
24
|
import { conversationMarkdown, writeConversationExport, } from '../integrations/sessions/transcript-export.js';
|
|
25
25
|
import { isTrusted, trustDir } from '../integrations/trust/store.js';
|
|
@@ -836,15 +836,14 @@ export function App({ ctx: initialCtx }) {
|
|
|
836
836
|
* nobody can see. Everything this path says goes into `pickerNotice`, which
|
|
837
837
|
* the picker renders.
|
|
838
838
|
*
|
|
839
|
-
*
|
|
840
|
-
*
|
|
841
|
-
*
|
|
842
|
-
*
|
|
843
|
-
* address from standard input and exists for exactly that machine.
|
|
839
|
+
* The registered browser callback shows a code rather than returning to a
|
|
840
|
+
* local listener. The picker therefore owns the matching paste field; sending a
|
|
841
|
+
* first-run operator to another terminal would make the sign-in technically
|
|
842
|
+
* started here but impossible to finish on the screen that started it.
|
|
844
843
|
*/
|
|
845
844
|
const startLoginFromPicker = useCallback(async (provider, signal) => {
|
|
846
845
|
if (signal.aborted)
|
|
847
|
-
return;
|
|
846
|
+
return 'failed';
|
|
848
847
|
cancelPendingLogin();
|
|
849
848
|
if (provider === 'codex') {
|
|
850
849
|
let start;
|
|
@@ -855,11 +854,11 @@ export function App({ ctx: initialCtx }) {
|
|
|
855
854
|
if (!signal.aborted) {
|
|
856
855
|
setPickerNotice(`Could not start Codex sign-in: ${error instanceof Error ? error.message : String(error)}`);
|
|
857
856
|
}
|
|
858
|
-
return;
|
|
857
|
+
return 'failed';
|
|
859
858
|
}
|
|
860
859
|
if (signal.aborted) {
|
|
861
860
|
start.cancel();
|
|
862
|
-
return;
|
|
861
|
+
return 'failed';
|
|
863
862
|
}
|
|
864
863
|
codexLoginRef.current = start;
|
|
865
864
|
setPickerNotice(describeCodexDeviceLoginStart({
|
|
@@ -869,7 +868,7 @@ export function App({ ctx: initialCtx }) {
|
|
|
869
868
|
}));
|
|
870
869
|
const outcome = await start.waitForCompletion();
|
|
871
870
|
if (codexLoginRef.current !== start || signal.aborted)
|
|
872
|
-
return;
|
|
871
|
+
return 'failed';
|
|
873
872
|
codexLoginRef.current = null;
|
|
874
873
|
start.cancel();
|
|
875
874
|
setPickerNotice(describeLoginOutcome(outcome));
|
|
@@ -877,7 +876,7 @@ export function App({ ctx: initialCtx }) {
|
|
|
877
876
|
setPickerInitialView('providers');
|
|
878
877
|
await runProbeRef.current?.(signal);
|
|
879
878
|
}
|
|
880
|
-
return;
|
|
879
|
+
return 'finished';
|
|
881
880
|
}
|
|
882
881
|
let start;
|
|
883
882
|
try {
|
|
@@ -885,13 +884,13 @@ export function App({ ctx: initialCtx }) {
|
|
|
885
884
|
}
|
|
886
885
|
catch (err) {
|
|
887
886
|
if (signal.aborted)
|
|
888
|
-
return;
|
|
887
|
+
return 'failed';
|
|
889
888
|
setPickerNotice(`Could not start a sign-in: ${err instanceof Error ? err.message : String(err)}`);
|
|
890
|
-
return;
|
|
889
|
+
return 'failed';
|
|
891
890
|
}
|
|
892
891
|
if (signal.aborted) {
|
|
893
892
|
start.cancel();
|
|
894
|
-
return;
|
|
893
|
+
return 'failed';
|
|
895
894
|
}
|
|
896
895
|
loginRef.current = start;
|
|
897
896
|
const cancelForPicker = () => {
|
|
@@ -906,36 +905,39 @@ export function App({ ctx: initialCtx }) {
|
|
|
906
905
|
signal.addEventListener('abort', cancelForPicker, { once: true });
|
|
907
906
|
if (signal.aborted) {
|
|
908
907
|
cancelForPicker();
|
|
909
|
-
return;
|
|
908
|
+
return 'failed';
|
|
910
909
|
}
|
|
911
910
|
setPickerNotice(describeLoginStart({
|
|
912
911
|
url: start.url,
|
|
913
|
-
loopback: start.loopback,
|
|
914
912
|
browserOpened: openInBrowser(start.url),
|
|
915
|
-
|
|
916
|
-
// slash command is what made the feature unreachable; telling them
|
|
917
|
-
// to run a command in another terminal is something they can do
|
|
918
|
-
// from where they are sitting.
|
|
919
|
-
completionHint: 'run "namzu login" in a terminal and paste it there',
|
|
913
|
+
completionHint: 'paste it below and press enter',
|
|
920
914
|
}));
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
const
|
|
925
|
-
if (
|
|
926
|
-
|
|
915
|
+
return 'awaiting-input';
|
|
916
|
+
}, [cancelPendingLogin]);
|
|
917
|
+
const finishLoginFromPicker = useCallback(async (pasted, signal) => {
|
|
918
|
+
const pending = loginRef.current;
|
|
919
|
+
if (!pending) {
|
|
920
|
+
setPickerNotice('There is no Claude sign-in waiting for this code. Start it again.');
|
|
921
|
+
return 'finished';
|
|
922
|
+
}
|
|
923
|
+
if (!parsePastedInput(pasted).code) {
|
|
924
|
+
setPickerNotice('That does not contain an authorization code. Paste the whole finished address, or the code Claude showed.');
|
|
925
|
+
return 'retry';
|
|
926
|
+
}
|
|
927
|
+
const outcome = await pending.completeWithPastedCode(pasted);
|
|
928
|
+
if (loginRef.current !== pending || signal.aborted)
|
|
929
|
+
return 'finished';
|
|
927
930
|
loginRef.current = null;
|
|
928
|
-
|
|
931
|
+
loginAbortCleanupRef.current?.();
|
|
929
932
|
loginAbortCleanupRef.current = null;
|
|
930
|
-
|
|
931
|
-
if (!outcome.ok && outcome.reason.includes('cancelled'))
|
|
932
|
-
return;
|
|
933
|
+
pending.cancel();
|
|
933
934
|
setPickerNotice(describeLoginOutcome(outcome));
|
|
934
935
|
if (outcome.ok) {
|
|
935
936
|
setPickerInitialView('providers');
|
|
936
937
|
await runProbeRef.current?.(signal);
|
|
937
938
|
}
|
|
938
|
-
|
|
939
|
+
return 'finished';
|
|
940
|
+
}, []);
|
|
939
941
|
const runProbe = useCallback(async (signal) => {
|
|
940
942
|
try {
|
|
941
943
|
if (signal?.aborted)
|
|
@@ -3240,46 +3242,46 @@ export function App({ ctx: initialCtx }) {
|
|
|
3240
3242
|
// Background is left natural — we inherit the terminal's own background
|
|
3241
3243
|
// and only theme the foreground. Forcing
|
|
3242
3244
|
// a filled bg left mismatched patches around bordered areas, so we don't.
|
|
3243
|
-
return (
|
|
3244
|
-
|
|
3245
|
-
conversationMutation === null &&
|
|
3246
|
-
choicePicker === null &&
|
|
3247
|
-
copyPicker === null, hidden: permission !== null || choicePicker !== null || copyPicker !== null, children: [queued.length > 0 &&
|
|
3248
|
-
permission === null &&
|
|
3249
|
-
choicePicker === null &&
|
|
3250
|
-
copyPicker === null ? (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: theme.text.muted, children: [queuePause ? '⏸' : '⏎', " ", queued.length, " message", queued.length > 1 ? 's' : '', " queued \u2014", ' ', queuePause
|
|
3251
|
-
? `paused after a ${queuePause.outcome} turn; send a message or change model to continue`
|
|
3252
|
-
: 'sending when ready'] }) })) : null, _jsx(Composer, { disabled: phase !== 'ready' ||
|
|
3253
|
-
state === 'awaiting-permission' ||
|
|
3254
|
-
compacting ||
|
|
3255
|
-
conversationMutation !== null, hidden: permission !== null || choicePicker !== null || copyPicker !== null,
|
|
3256
|
-
// A turn is running, so Esc is the interrupt and not
|
|
3257
|
-
// the composer's clear.
|
|
3258
|
-
escapeInterrupts: !compacting && (state === 'thinking' || state === 'tool'), onSubmit: handleSubmit, onNotice: (text) => pushMessage('system', text), onEditPrevious: openPromptEditor, draftToRestore: composerDraft, onDraftRestored: (token) => setComposerDraft((draft) => (draft?.token === token ? null : draft)), userCommands: userCommands, history: history })] })] })), _jsx(Box, { paddingTop: 1, children: _jsx(StatusBar, { cwd: ctx.cwd, provider: session?.providerSummary ?? null, model: session?.modelSummary ?? null, effort: reasoningEffort ?? 'default', goal: phase === 'ready' &&
|
|
3259
|
-
state === 'idle' &&
|
|
3245
|
+
return (_jsx(Box, { flexDirection: "column", children: _jsxs(Box, { flexDirection: "column", paddingX: 1, children: [phase === 'trust' ? (_jsx(TrustPrompt, { cwd: ctx.cwd })) : phase === 'resume' ? (_jsx(ResumePicker, { conversations: resumeList, selected: selectedResume })) : phase === 'edit' ? (_jsx(EditPromptPicker, { prompts: editList, selected: selectedEdit })) : phase === 'picker' ? (_jsx(Picker, { detected: pickerDetected ?? detected, currentProvider: currentProvider, selectionKind: pickerSelectionKind, currentModel: session?.modelSummary ?? null, initialView: pickerInitialView, onSubmit: handlePickerSubmit, onCancel: handlePickerCancel, onCredential: handleTypedCredential, onLogin: startLoginFromPicker, onLoginComplete: finishLoginFromPicker, keyEntryFor: keyEntryFor, notice: pickerNotice })) : (_jsxs(_Fragment, { children: [_jsx(TranscriptFrame, { children: _jsx(Transcript, { messages: finalized, pending: messages.find((m) => m.pending) ?? null, state: state, settled: window.settled, resetKey: resetKey, raw: rawOutput, header: phase === 'ready' ? (_jsx(Banner, { version: ctx.version, session: session, permissionMode: permissionMode, cwd: ctx.cwd })) : undefined }) }), spacerRows > 0 ? _jsx(Box, { height: spacerRows }) : null, _jsx(LiveActivity, { activeTools: activeTools, thinking: state === 'thinking' && !messages.some((m) => m.pending) }), permission ? (_jsx(PermissionOverlay, { toolCalls: permission.toolCalls })) : choicePicker ? (_jsx(ChoicePicker, { title: choicePicker.title, notice: choicePicker.notice, options: choicePicker.options, selected: selectedChoice })) : copyPicker ? (_jsx(CopyPicker, { targets: copyPicker.targets, selected: selectedCopy })) : null, _jsxs(ComposerFrame, { focus: state === 'idle' &&
|
|
3246
|
+
phase === 'ready' &&
|
|
3260
3247
|
conversationMutation === null &&
|
|
3261
|
-
!compacting &&
|
|
3262
|
-
permission === null &&
|
|
3263
3248
|
choicePicker === null &&
|
|
3264
|
-
copyPicker === null
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
:
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
|
|
3249
|
+
copyPicker === null, hidden: permission !== null || choicePicker !== null || copyPicker !== null, children: [queued.length > 0 &&
|
|
3250
|
+
permission === null &&
|
|
3251
|
+
choicePicker === null &&
|
|
3252
|
+
copyPicker === null ? (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: theme.text.muted, children: [queuePause ? '⏸' : '⏎', " ", queued.length, " message", queued.length > 1 ? 's' : '', " queued \u2014", ' ', queuePause
|
|
3253
|
+
? `paused after a ${queuePause.outcome} turn; send a message or change model to continue`
|
|
3254
|
+
: 'sending when ready'] }) })) : null, _jsx(Composer, { disabled: phase !== 'ready' ||
|
|
3255
|
+
state === 'awaiting-permission' ||
|
|
3256
|
+
compacting ||
|
|
3257
|
+
conversationMutation !== null, hidden: permission !== null || choicePicker !== null || copyPicker !== null,
|
|
3258
|
+
// A turn is running, so Esc is the interrupt and not
|
|
3259
|
+
// the composer's clear.
|
|
3260
|
+
escapeInterrupts: !compacting && (state === 'thinking' || state === 'tool'), onSubmit: handleSubmit, onNotice: (text) => pushMessage('system', text), onEditPrevious: openPromptEditor, draftToRestore: composerDraft, onDraftRestored: (token) => setComposerDraft((draft) => (draft?.token === token ? null : draft)), userCommands: userCommands, history: history })] })] })), _jsx(Box, { paddingTop: 1, children: _jsx(StatusBar, { cwd: ctx.cwd, provider: session?.providerSummary ?? null, model: session?.modelSummary ?? null, effort: reasoningEffort ?? 'default', goal: phase === 'ready' &&
|
|
3261
|
+
state === 'idle' &&
|
|
3262
|
+
conversationMutation === null &&
|
|
3263
|
+
!compacting &&
|
|
3264
|
+
permission === null &&
|
|
3265
|
+
choicePicker === null &&
|
|
3266
|
+
copyPicker === null
|
|
3267
|
+
? goalStatusLabel(goalStatus)
|
|
3268
|
+
: null, state: state, hint: conversationMutation === 'fork'
|
|
3269
|
+
? 'forking conversation — input is paused'
|
|
3270
|
+
: conversationMutation === 'edit'
|
|
3271
|
+
? 'branching before prompt — input is paused'
|
|
3272
|
+
: conversationMutation === 'new'
|
|
3273
|
+
? 'starting a fresh conversation — input is paused'
|
|
3274
|
+
: compacting
|
|
3275
|
+
? 'compacting conversation — input is paused'
|
|
3276
|
+
: permission
|
|
3277
|
+
? hintForPhase(phase, state, session?.hasProvider === true)
|
|
3278
|
+
: choicePicker
|
|
3279
|
+
? 'choice open — ↑↓ / 1–9 select · enter apply · esc cancel'
|
|
3280
|
+
: copyPicker
|
|
3281
|
+
? 'copy target open — ↑↓ / 1–9 select · esc cancel'
|
|
3282
|
+
: goalStatus && phase === 'ready' && state === 'idle'
|
|
3283
|
+
? undefined
|
|
3284
|
+
: hintForPhase(phase, state, session?.hasProvider === true), usage: usage, context: context }) })] }) }));
|
|
3283
3285
|
}
|
|
3284
3286
|
function Banner({ version, session, permissionMode, cwd, }) {
|
|
3285
3287
|
const cols = process.stdout.columns ?? 80;
|
|
@@ -3335,7 +3337,10 @@ canReturn = false) {
|
|
|
3335
3337
|
return 'y approve · n / esc reject · a approve all';
|
|
3336
3338
|
if (state !== 'idle')
|
|
3337
3339
|
return 'agent is working — esc to interrupt';
|
|
3338
|
-
|
|
3340
|
+
// The composer already points to /help. Keeping the complete key legend in
|
|
3341
|
+
// every idle frame made ordinary conversation read like a permanent setup
|
|
3342
|
+
// screen; only state-specific actions belong in the footer.
|
|
3343
|
+
return '';
|
|
3339
3344
|
}
|
|
3340
3345
|
function goalStatusLabel(goal) {
|
|
3341
3346
|
if (!goal)
|