@namzu/cli 8.3.0 → 8.5.0
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/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/login.d.ts +44 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +185 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/integrations/providers/discover.d.ts.map +1 -1
- package/dist/integrations/providers/discover.js +24 -0
- package/dist/integrations/providers/discover.js.map +1 -1
- package/dist/integrations/providers/oauth.d.ts +14 -3
- package/dist/integrations/providers/oauth.d.ts.map +1 -1
- package/dist/integrations/providers/oauth.js +14 -3
- package/dist/integrations/providers/oauth.js.map +1 -1
- package/dist/tui/App.d.ts +1 -17
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +133 -48
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/Markdown.d.ts +14 -0
- package/dist/tui/Markdown.d.ts.map +1 -1
- package/dist/tui/Markdown.js +31 -4
- package/dist/tui/Markdown.js.map +1 -1
- package/dist/tui/Picker.d.ts +14 -1
- package/dist/tui/Picker.d.ts.map +1 -1
- package/dist/tui/Picker.js +12 -3
- package/dist/tui/Picker.js.map +1 -1
- package/dist/tui/Transcript.d.ts +18 -2
- package/dist/tui/Transcript.d.ts.map +1 -1
- package/dist/tui/Transcript.js +48 -13
- package/dist/tui/Transcript.js.map +1 -1
- package/dist/tui/bottom-spacer.d.ts +22 -8
- package/dist/tui/bottom-spacer.d.ts.map +1 -1
- package/dist/tui/bottom-spacer.js.map +1 -1
- package/dist/tui/live-window.d.ts +97 -0
- package/dist/tui/live-window.d.ts.map +1 -0
- package/dist/tui/live-window.js +140 -0
- package/dist/tui/live-window.js.map +1 -0
- package/dist/tui/login-prompt.d.ts +26 -2
- package/dist/tui/login-prompt.d.ts.map +1 -1
- package/dist/tui/login-prompt.js +16 -7
- package/dist/tui/login-prompt.js.map +1 -1
- package/dist/tui/markdown-block-cache.d.ts +57 -0
- package/dist/tui/markdown-block-cache.d.ts.map +1 -0
- package/dist/tui/markdown-block-cache.js +74 -0
- package/dist/tui/markdown-block-cache.js.map +1 -0
- package/dist/tui/markdownParser.d.ts +33 -0
- package/dist/tui/markdownParser.d.ts.map +1 -1
- package/dist/tui/markdownParser.js +124 -54
- package/dist/tui/markdownParser.js.map +1 -1
- package/package.json +3 -3
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiDH,MAAM,WAAW,aAAa;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAChC;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CA2GjE"}
|
package/dist/cli.js
CHANGED
|
@@ -13,6 +13,7 @@ import { Command, CommanderError } from 'commander';
|
|
|
13
13
|
import { doctorCommand } from './commands/doctor.js';
|
|
14
14
|
import { drainCommand } from './commands/drain.js';
|
|
15
15
|
import { evalCommand } from './commands/eval.js';
|
|
16
|
+
import { loginCommand, logoutCommand } from './commands/login.js';
|
|
16
17
|
import { registerAll } from './commands/registry.js';
|
|
17
18
|
import { historyCommand, providersJSONCommand, runStreamCommand, skillsJSONCommand, } from './commands/run-stream.js';
|
|
18
19
|
import { runCommand } from './commands/run.js';
|
|
@@ -76,6 +77,8 @@ export async function runCli(opts) {
|
|
|
76
77
|
registerAll(program, [
|
|
77
78
|
doctorCommand,
|
|
78
79
|
runCommand,
|
|
80
|
+
loginCommand,
|
|
81
|
+
logoutCommand,
|
|
79
82
|
drainCommand,
|
|
80
83
|
evalCommand,
|
|
81
84
|
runStreamCommand,
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `namzu login` / `namzu logout` — sign in without a running TUI.
|
|
3
|
+
*
|
|
4
|
+
* ## Why this exists, having been argued against
|
|
5
|
+
*
|
|
6
|
+
* When the sign-in shipped, a standalone command was declined: the TUI already
|
|
7
|
+
* offered `/login`, and a second entry point is a second thing to document.
|
|
8
|
+
* That reasoning had a hole, and an operator found it on the first day.
|
|
9
|
+
*
|
|
10
|
+
* `/login` is a slash command, slash commands are typed into the composer, and
|
|
11
|
+
* **the composer does not exist during the provider picker.** So the one
|
|
12
|
+
* operator who most needs to sign in — the one with no credential at all, whom
|
|
13
|
+
* namzu routes straight to the picker — is the one operator who cannot reach
|
|
14
|
+
* the command. There was no other route: nothing else writes the credential
|
|
15
|
+
* store. A capability with no reachable entry point is not a capability, and
|
|
16
|
+
* "it is reachable from the screen you cannot get to" is the shape this
|
|
17
|
+
* repository has spent its time removing.
|
|
18
|
+
*
|
|
19
|
+
* The picker now offers it too. This command remains, because it is the
|
|
20
|
+
* answer for the case that has no screen at all: a container, a provisioning
|
|
21
|
+
* script, a machine being set up over SSH before anyone opens a session.
|
|
22
|
+
*
|
|
23
|
+
* ## Finishing without a browser on this machine
|
|
24
|
+
*
|
|
25
|
+
* The verifier lives in this process and nowhere else — that is what makes the
|
|
26
|
+
* exchange safe — so a second invocation cannot finish what a first one
|
|
27
|
+
* started. There is no `--code` flag for that reason: it would look like it
|
|
28
|
+
* should work and could not.
|
|
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.
|
|
33
|
+
*/
|
|
34
|
+
import type { CommandDef } from './types.js';
|
|
35
|
+
interface LoginFlags {
|
|
36
|
+
readonly noBrowser: boolean;
|
|
37
|
+
readonly timeoutMs: number;
|
|
38
|
+
readonly unknown: readonly string[];
|
|
39
|
+
}
|
|
40
|
+
export declare function parseLoginFlags(argv: readonly string[]): LoginFlags;
|
|
41
|
+
export declare const loginCommand: CommandDef;
|
|
42
|
+
export declare const logoutCommand: CommandDef;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAcH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAoB5C,UAAU,UAAU;IACnB,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,CA2BnE;AAoCD,eAAO,MAAM,YAAY,EAAE,UAwD1B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,UAiB3B,CAAA"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `namzu login` / `namzu logout` — sign in without a running TUI.
|
|
3
|
+
*
|
|
4
|
+
* ## Why this exists, having been argued against
|
|
5
|
+
*
|
|
6
|
+
* When the sign-in shipped, a standalone command was declined: the TUI already
|
|
7
|
+
* offered `/login`, and a second entry point is a second thing to document.
|
|
8
|
+
* That reasoning had a hole, and an operator found it on the first day.
|
|
9
|
+
*
|
|
10
|
+
* `/login` is a slash command, slash commands are typed into the composer, and
|
|
11
|
+
* **the composer does not exist during the provider picker.** So the one
|
|
12
|
+
* operator who most needs to sign in — the one with no credential at all, whom
|
|
13
|
+
* namzu routes straight to the picker — is the one operator who cannot reach
|
|
14
|
+
* the command. There was no other route: nothing else writes the credential
|
|
15
|
+
* store. A capability with no reachable entry point is not a capability, and
|
|
16
|
+
* "it is reachable from the screen you cannot get to" is the shape this
|
|
17
|
+
* repository has spent its time removing.
|
|
18
|
+
*
|
|
19
|
+
* The picker now offers it too. This command remains, because it is the
|
|
20
|
+
* answer for the case that has no screen at all: a container, a provisioning
|
|
21
|
+
* script, a machine being set up over SSH before anyone opens a session.
|
|
22
|
+
*
|
|
23
|
+
* ## Finishing without a browser on this machine
|
|
24
|
+
*
|
|
25
|
+
* The verifier lives in this process and nowhere else — that is what makes the
|
|
26
|
+
* exchange safe — so a second invocation cannot finish what a first one
|
|
27
|
+
* started. There is no `--code` flag for that reason: it would look like it
|
|
28
|
+
* should work and could not.
|
|
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.
|
|
33
|
+
*/
|
|
34
|
+
import { createInterface } from 'node:readline';
|
|
35
|
+
import { EXIT_FAIL, EXIT_OK, EXIT_USAGE } from '../exit-codes.js';
|
|
36
|
+
import { beginSubscriptionLogin, clearStoredSubscriptionCredential, credentialsPath, readStoredSubscriptionCredential, } from '../integrations/providers/index.js';
|
|
37
|
+
import { describeLoginOutcome, describeLoginStart, describeLogout } from '../tui/login-prompt.js';
|
|
38
|
+
import { openInBrowser } from '../tui/open-browser.js';
|
|
39
|
+
const LOGIN_HELP = `Usage: namzu login [options]
|
|
40
|
+
|
|
41
|
+
Sign in with a provider subscription and store the credential on this machine.
|
|
42
|
+
|
|
43
|
+
Options:
|
|
44
|
+
--no-browser Do not try to launch a browser; just print the address.
|
|
45
|
+
--timeout <seconds> Give up waiting after this long (default: 300).
|
|
46
|
+
-h, --help Show this help.
|
|
47
|
+
|
|
48
|
+
namzu prints an address to open. Finish the sign-in in a browser and namzu
|
|
49
|
+
picks it up automatically; if your browser is on another machine, paste the
|
|
50
|
+
address it lands on into this terminal and press enter.
|
|
51
|
+
|
|
52
|
+
The credential is written to ~/.namzu/credentials.json, readable only by your
|
|
53
|
+
account. Run 'namzu logout' to remove it.`;
|
|
54
|
+
const DEFAULT_TIMEOUT_SECONDS = 300;
|
|
55
|
+
export function parseLoginFlags(argv) {
|
|
56
|
+
let noBrowser = false;
|
|
57
|
+
let timeoutMs = DEFAULT_TIMEOUT_SECONDS * 1_000;
|
|
58
|
+
const unknown = [];
|
|
59
|
+
for (let i = 0; i < argv.length; i++) {
|
|
60
|
+
const arg = argv[i];
|
|
61
|
+
if (arg === '--no-browser') {
|
|
62
|
+
noBrowser = true;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (arg === '--timeout') {
|
|
66
|
+
const value = argv[++i];
|
|
67
|
+
const seconds = Number(value);
|
|
68
|
+
// Refused rather than defaulted. A caller who wrote `--timeout 5m`
|
|
69
|
+
// meant something specific, and silently waiting five minutes
|
|
70
|
+
// because `NaN` fell through to the default is the reading that
|
|
71
|
+
// makes a flag look honoured when it was discarded.
|
|
72
|
+
if (!Number.isFinite(seconds) || seconds <= 0) {
|
|
73
|
+
unknown.push(`--timeout ${value ?? ''}`.trim());
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
timeoutMs = seconds * 1_000;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (arg !== undefined)
|
|
80
|
+
unknown.push(arg);
|
|
81
|
+
}
|
|
82
|
+
return { noBrowser, timeoutMs, unknown };
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Resolve with the first NON-BLANK line standard input offers, or never.
|
|
86
|
+
*
|
|
87
|
+
* Two deliberate choices, both found by running this rather than by reading it.
|
|
88
|
+
*
|
|
89
|
+
* **Blank lines are ignored, not answered.** `once('line')` took a bare Enter
|
|
90
|
+
* — the keystroke a person makes while waiting, and the one a piped empty
|
|
91
|
+
* stdin delivers immediately — and spent the sign-in on it: the empty string
|
|
92
|
+
* went to `completeWithPastedCode`, came back "that does not contain an
|
|
93
|
+
* authorization code", and the attempt was over before the browser had loaded
|
|
94
|
+
* the page.
|
|
95
|
+
*
|
|
96
|
+
* **A closed or absent stream never resolves.** This is raced against the
|
|
97
|
+
* loopback listener and a timeout, so a stdin that is not there (a service,
|
|
98
|
+
* `< /dev/null`) must not read as "the operator declined" and cancel a browser
|
|
99
|
+
* sign-in still in progress.
|
|
100
|
+
*/
|
|
101
|
+
function firstStdinLine(signal) {
|
|
102
|
+
return new Promise((resolve) => {
|
|
103
|
+
if (!process.stdin.readable)
|
|
104
|
+
return;
|
|
105
|
+
const rl = createInterface({ input: process.stdin });
|
|
106
|
+
const done = () => {
|
|
107
|
+
rl.close();
|
|
108
|
+
};
|
|
109
|
+
signal.addEventListener('abort', done, { once: true });
|
|
110
|
+
rl.on('line', (line) => {
|
|
111
|
+
if (line.trim().length === 0)
|
|
112
|
+
return;
|
|
113
|
+
signal.removeEventListener('abort', done);
|
|
114
|
+
rl.close();
|
|
115
|
+
resolve(line);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
export const loginCommand = {
|
|
120
|
+
name: 'login',
|
|
121
|
+
description: 'Sign in with a provider subscription and store the credential.',
|
|
122
|
+
passThrough: true,
|
|
123
|
+
help: LOGIN_HELP,
|
|
124
|
+
handler: async ({ ctx, rawArgs }) => {
|
|
125
|
+
const flags = parseLoginFlags(rawArgs);
|
|
126
|
+
if (flags.unknown.length > 0) {
|
|
127
|
+
ctx.formatter.print({
|
|
128
|
+
text: `Unrecognised argument(s): ${flags.unknown.join(', ')}\n\n${LOGIN_HELP}`,
|
|
129
|
+
});
|
|
130
|
+
return EXIT_USAGE;
|
|
131
|
+
}
|
|
132
|
+
let login;
|
|
133
|
+
try {
|
|
134
|
+
login = await beginSubscriptionLogin();
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
ctx.formatter.print({
|
|
138
|
+
text: `Could not start a sign-in: ${err instanceof Error ? err.message : String(err)}`,
|
|
139
|
+
});
|
|
140
|
+
return EXIT_FAIL;
|
|
141
|
+
}
|
|
142
|
+
ctx.formatter.print({
|
|
143
|
+
text: describeLoginStart({
|
|
144
|
+
url: login.url,
|
|
145
|
+
loopback: login.loopback,
|
|
146
|
+
browserOpened: flags.noBrowser ? false : openInBrowser(login.url),
|
|
147
|
+
completionHint: 'paste it here and press enter',
|
|
148
|
+
}),
|
|
149
|
+
});
|
|
150
|
+
const stop = new AbortController();
|
|
151
|
+
const timeout = new Promise((resolve) => setTimeout(() => resolve({
|
|
152
|
+
ok: false,
|
|
153
|
+
reason: 'Timed out waiting for the sign-in to finish. Nothing was stored.',
|
|
154
|
+
}), flags.timeoutMs).unref());
|
|
155
|
+
const pasted = firstStdinLine(stop.signal).then((line) => login.completeWithPastedCode(line));
|
|
156
|
+
const callback = login.waitForCallback();
|
|
157
|
+
const outcome = await Promise.race(callback ? [callback, pasted, timeout] : [pasted, timeout]);
|
|
158
|
+
stop.abort();
|
|
159
|
+
login.cancel();
|
|
160
|
+
ctx.formatter.print({
|
|
161
|
+
text: describeLoginOutcome(outcome, { retry: 'namzu login', remove: 'namzu logout' }),
|
|
162
|
+
});
|
|
163
|
+
return outcome.ok ? EXIT_OK : EXIT_FAIL;
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
export const logoutCommand = {
|
|
167
|
+
name: 'logout',
|
|
168
|
+
description: 'Remove the subscription credential namzu stored on this machine.',
|
|
169
|
+
handler: async ({ ctx }) => {
|
|
170
|
+
const path = credentialsPath();
|
|
171
|
+
const had = readStoredSubscriptionCredential() !== null;
|
|
172
|
+
try {
|
|
173
|
+
clearStoredSubscriptionCredential();
|
|
174
|
+
}
|
|
175
|
+
catch (err) {
|
|
176
|
+
ctx.formatter.print({
|
|
177
|
+
text: `Could not remove ${path}: ${err instanceof Error ? err.message : String(err)}`,
|
|
178
|
+
});
|
|
179
|
+
return EXIT_FAIL;
|
|
180
|
+
}
|
|
181
|
+
ctx.formatter.print({ text: describeLogout(path, had) });
|
|
182
|
+
return EXIT_OK;
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAqB,KAAK,UAAU,EAAE,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAE9F,MAAM,MAAM,eAAe,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACzD;;;;GAIG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACpD;;;;;;;GAOG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAA;AAE/B,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAA;IACrC,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,mDAAmD;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,iEAAiE;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE;QAChB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;QAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;QAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;KAClC,CAAA;IACD,qEAAqE;IACrE,QAAQ,CAAC,YAAY,EAAE,SAAS,eAAe,EAAE,CAAA;CACjD;AAED,MAAM,WAAW,eAAe;IAC/B,wCAAwC;IACxC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IAChC,sCAAsC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,oEAAoE;IACpE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IAC7B,0CAA0C;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAC7B;AAID,wBAAsB,iBAAiB,CACtC,IAAI,GAAE,eAAoB,GACxB,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAqB,KAAK,UAAU,EAAE,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAE9F,MAAM,MAAM,eAAe,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACzD;;;;GAIG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACpD;;;;;;;GAOG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAA;AAE/B,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAA;IACrC,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,mDAAmD;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,iEAAiE;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE;QAChB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;QAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;QAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;KAClC,CAAA;IACD,qEAAqE;IACrE,QAAQ,CAAC,YAAY,EAAE,SAAS,eAAe,EAAE,CAAA;CACjD;AAED,MAAM,WAAW,eAAe;IAC/B,wCAAwC;IACxC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IAChC,sCAAsC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,oEAAoE;IACpE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IAC7B,0CAA0C;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAC7B;AAID,wBAAsB,iBAAiB,CACtC,IAAI,GAAE,eAAoB,GACxB,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CA8FtC;AAmBD,yEAAyE;AACzE,wBAAgB,YAAY,CAC3B,IAAI,EAAE,SAAS,gBAAgB,EAAE,EACjC,EAAE,EAAE,UAAU,GACZ,gBAAgB,GAAG,IAAI,CAEzB"}
|
|
@@ -69,6 +69,30 @@ export async function discoverProviders(opts = {}) {
|
|
|
69
69
|
const detected = [];
|
|
70
70
|
// Read both credential sources once, up front, so the loop body stays
|
|
71
71
|
// uniform. Only anthropic consumes either.
|
|
72
|
+
//
|
|
73
|
+
// ## Two lookups, one store per credential — do not "fix" this
|
|
74
|
+
//
|
|
75
|
+
// These are two SOURCES, not two stores, and the difference is the whole
|
|
76
|
+
// design. A credential belongs to exactly one of them for its whole life:
|
|
77
|
+
// the one namzu obtained lives in namzu's file, the one a co-installed tool
|
|
78
|
+
// obtained lives in that tool's Keychain entry, and `origin` — set below and
|
|
79
|
+
// carried on the detected provider — is what pairs every later READ with the
|
|
80
|
+
// matching WRITE (see `oauth.ts`).
|
|
81
|
+
//
|
|
82
|
+
// So the two obvious tidy-ups are both defects:
|
|
83
|
+
//
|
|
84
|
+
// - **Merging them into one lookup** would blend fields across sources —
|
|
85
|
+
// an access token from one with a refresh token from the other. The
|
|
86
|
+
// refresh would then be attempted with a token the endpoint never issued
|
|
87
|
+
// against that access token, and the failure surfaces as a 401 in a
|
|
88
|
+
// session the operator signed into successfully.
|
|
89
|
+
// - **Writing a refresh back to both** would put namzu's secret in another
|
|
90
|
+
// product's envelope, under their name, and give one credential two
|
|
91
|
+
// homes that drift the moment either side rotates.
|
|
92
|
+
//
|
|
93
|
+
// A second lookup is not a gap to be closed; it is the only way to reach a
|
|
94
|
+
// credential namzu did not write. What must stay single is the store each
|
|
95
|
+
// credential is read from and written to, and that is `origin`'s job.
|
|
72
96
|
const storedCredential = opts.skipStored
|
|
73
97
|
? null
|
|
74
98
|
: readStoredSubscriptionCredential(...(opts.home === undefined ? [] : [opts.home]));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../src/integrations/providers/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAEH,OAAO,EAAE,eAAe,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAA;AACzF,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAE7E,OAAO,EAAE,iBAAiB,EAA+C,MAAM,eAAe,CAAA;AAkE9F,MAAM,wBAAwB,GAAG,GAAG,CAAA;AAEpC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,OAAwB,EAAE;IAE1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACnC,MAAM,QAAQ,GAAuB,EAAE,CAAA;IAEvC,sEAAsE;IACtE,2CAA2C;IAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU;QACvC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,gCAAgC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpF,0EAA0E;IAC1E,YAAY;IACZ,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B,EAAE,CAAA;IAEnF,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAA0B,EAAE,CAAC;QAC1E,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAA;QACnC,MAAM,OAAO,GAAsB,EAAE,CAAA;QACrC,IAAI,MAA0B,CAAA;QAC9B,IAAI,KAAgC,CAAA;QACpC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;YACtB,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,MAAM,KAAK,SAAS;oBAAE,MAAM,GAAG,CAAC,CAAA;gBACpC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;YACvC,CAAC;QACF,CAAC;QACD,IAAI,EAAE,KAAK,WAAW,IAAI,gBAAgB,EAAE,CAAC;YAC5C,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAA;YAC/D,OAAO,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACtE,CAAC,CAAA;YACF,+DAA+D;YAC/D,2DAA2D;YAC3D,IAAI,MAAM,KAAK,gBAAgB,CAAC,WAAW,EAAE,CAAC;gBAC7C,KAAK,GAAG;oBACP,YAAY,EAAE,gBAAgB,CAAC,YAAY;oBAC3C,SAAS,EAAE,gBAAgB,CAAC,SAAS;oBACrC,MAAM,EAAE,QAAQ;iBAChB,CAAA;YACF,CAAC;QACF,CAAC;QACD,IAAI,EAAE,KAAK,WAAW,IAAI,kBAAkB,EAAE,CAAC;YAC9C,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAA;YACjE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAA;YAC7D,IAAI,MAAM,KAAK,kBAAkB,CAAC,WAAW,EAAE,CAAC;gBAC/C,KAAK,GAAG;oBACP,YAAY,EAAE,kBAAkB,CAAC,YAAY;oBAC7C,SAAS,EAAE,kBAAkB,CAAC,SAAS;oBACvC,MAAM,EAAE,UAAU;iBAClB,CAAA;YACF,CAAC;QACF,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChE,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;YACnD,IAAI,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;YACrD,CAAC;QACF,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC;gBACb,KAAK;gBACL,MAAM,EAAE,OAAO,CAAC,CAAC,CAAoB;gBACrC,MAAM;gBACN,OAAO,EAAE,KAAK,CAAC,cAAc;gBAC7B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;aAC9B,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IACD,OAAO,QAAQ,CAAA;AAChB,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,GAAW,EAAE,IAAqB;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAA;IAC9C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,MAAM,KAAK,GAAG,UAAU,CACvB,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EACxB,IAAI,CAAC,cAAc,IAAI,wBAAwB,CAC/C,CAAA;IACD,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;QAC5E,OAAO,GAAG,CAAC,EAAE,CAAA;IACd,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAA;IACb,CAAC;YAAS,CAAC;QACV,YAAY,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;AACF,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAC3B,IAAiC,EACjC,EAAc;IAEd,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAA;AACnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../src/integrations/providers/discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,9 +33,20 @@ import { type AgentOAuthCredential } from './keychain.js';
|
|
|
33
33
|
/**
|
|
34
34
|
* Re-read the current credential from the store it lives in.
|
|
35
35
|
*
|
|
36
|
-
* The session layer calls this between turns because another process may
|
|
37
|
-
*
|
|
38
|
-
*
|
|
36
|
+
* The session layer calls this between turns because another process may have
|
|
37
|
+
* rotated the token since launch. Pairing it with `origin` is what stops a
|
|
38
|
+
* long-running session reading one store and writing the other.
|
|
39
|
+
*
|
|
40
|
+
* **It takes an origin rather than searching, and that is the point.** A
|
|
41
|
+
* version that tried both and returned the first hit would look more helpful
|
|
42
|
+
* and would silently break the pairing: a session that started on namzu's own
|
|
43
|
+
* credential would, on the machine where both exist, quietly begin refreshing
|
|
44
|
+
* a co-installed tool's credential instead — writing namzu's refreshed token
|
|
45
|
+
* into somebody else's envelope, and leaving the store the operator actually
|
|
46
|
+
* signed into holding a token that lapses again on every launch.
|
|
47
|
+
*
|
|
48
|
+
* One credential, one store, for its whole life. `discover.ts` decides which
|
|
49
|
+
* at detection; everything after that is told, not asked.
|
|
39
50
|
*/
|
|
40
51
|
export declare function readSubscriptionCredential(origin: CredentialOrigin): AgentOAuthCredential | null;
|
|
41
52
|
/** Which store a subscription credential came from, and goes back to. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAOH,OAAO,EACN,KAAK,oBAAoB,EAGzB,MAAM,eAAe,CAAA;AAKtB
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAOH,OAAO,EACN,KAAK,oBAAoB,EAGzB,MAAM,eAAe,CAAA;AAKtB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,gBAAgB,GAAG,oBAAoB,GAAG,IAAI,CAEhG;AAED,yEAAyE;AACzE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,CAAA;AAEpD,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAClC;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC9C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,aAAa,GAClB,OAAO,CAAC,MAAM,CAAC,CASjB;AAuBD,+EAA+E;AAC/E,wBAAsB,sBAAsB,CAC3C,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CA2BtC"}
|
|
@@ -37,9 +37,20 @@ const EXPIRY_SKEW_MS = 60_000;
|
|
|
37
37
|
/**
|
|
38
38
|
* Re-read the current credential from the store it lives in.
|
|
39
39
|
*
|
|
40
|
-
* The session layer calls this between turns because another process may
|
|
41
|
-
*
|
|
42
|
-
*
|
|
40
|
+
* The session layer calls this between turns because another process may have
|
|
41
|
+
* rotated the token since launch. Pairing it with `origin` is what stops a
|
|
42
|
+
* long-running session reading one store and writing the other.
|
|
43
|
+
*
|
|
44
|
+
* **It takes an origin rather than searching, and that is the point.** A
|
|
45
|
+
* version that tried both and returned the first hit would look more helpful
|
|
46
|
+
* and would silently break the pairing: a session that started on namzu's own
|
|
47
|
+
* credential would, on the machine where both exist, quietly begin refreshing
|
|
48
|
+
* a co-installed tool's credential instead — writing namzu's refreshed token
|
|
49
|
+
* into somebody else's envelope, and leaving the store the operator actually
|
|
50
|
+
* signed into holding a token that lapses again on every launch.
|
|
51
|
+
*
|
|
52
|
+
* One credential, one store, for its whole life. `discover.ts` decides which
|
|
53
|
+
* at detection; everything after that is told, not asked.
|
|
43
54
|
*/
|
|
44
55
|
export function readSubscriptionCredential(origin) {
|
|
45
56
|
return origin === 'stored' ? readStoredSubscriptionCredential() : readAgentKeychainCredential();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/integrations/providers/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EACN,gCAAgC,EAChC,iCAAiC,GACjC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAChE,OAAO,EAEN,2BAA2B,EAC3B,4BAA4B,GAC5B,MAAM,eAAe,CAAA;AAEtB,0EAA0E;AAC1E,MAAM,cAAc,GAAG,MAAM,CAAA;AAE7B
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/integrations/providers/oauth.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/App.d.ts
CHANGED
|
@@ -10,25 +10,9 @@
|
|
|
10
10
|
* 4. If discovery returned zero providers → show <Picker/> in
|
|
11
11
|
* empty-state mode (explains where to put credentials).
|
|
12
12
|
*/
|
|
13
|
-
import type {
|
|
13
|
+
import type { TuiContext } from './types.js';
|
|
14
14
|
export interface AppProps {
|
|
15
15
|
readonly ctx: TuiContext;
|
|
16
16
|
}
|
|
17
|
-
/**
|
|
18
|
-
* Every line the finalized transcript will print, for the spacer to measure.
|
|
19
|
-
*
|
|
20
|
-
* Exported so the wiring is testable rather than only typecheckable. The
|
|
21
|
-
* spacer's own docblock states the asymmetry it depends on: over-count the
|
|
22
|
-
* content and the composer merely floats, under-count it and the composer is
|
|
23
|
-
* pushed off the bottom. The caller used to pass each row's `content` alone,
|
|
24
|
-
* which counted a six-line collapsed tool body as nothing at all — the estimate
|
|
25
|
-
* ran low by six per tool call, in the direction that costs the usability
|
|
26
|
-
* rather than the feature. `/expand` makes it acute: a row whose entire
|
|
27
|
-
* substance is a two-hundred-line body would have been handed over as one line.
|
|
28
|
-
*
|
|
29
|
-
* A pending row is excluded because it is not in the static log yet; the
|
|
30
|
-
* spacer's `liveRows` covers the live region.
|
|
31
|
-
*/
|
|
32
|
-
export declare function spacerTranscript(messages: readonly TranscriptMessage[]): readonly string[];
|
|
33
17
|
export declare function App({ ctx }: AppProps): import("react/jsx-runtime").JSX.Element;
|
|
34
18
|
//# sourceMappingURL=App.d.ts.map
|
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;
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAkEH,OAAO,KAAK,EAAqB,UAAU,EAAE,MAAM,YAAY,CAAA;AAE/D,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;CACxB;AAsBD,wBAAgB,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,2CA2kDpC"}
|