chivgent 0.18.1 → 1.0.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/README.md +67 -34
- package/README.zh-CN.md +57 -27
- package/dist/cli-options.d.ts.map +1 -1
- package/dist/cli-options.js +5 -0
- package/dist/cli-options.js.map +1 -1
- package/dist/cli.js +13 -25
- package/dist/cli.js.map +1 -1
- package/dist/providers/deferred-client.d.ts +2 -1
- package/dist/providers/deferred-client.d.ts.map +1 -1
- package/dist/providers/deferred-client.js +4 -0
- package/dist/providers/deferred-client.js.map +1 -1
- package/dist/providers/interactive.d.ts +31 -0
- package/dist/providers/interactive.d.ts.map +1 -0
- package/dist/providers/interactive.js +184 -0
- package/dist/providers/interactive.js.map +1 -0
- package/dist/remote/repl.d.ts.map +1 -1
- package/dist/remote/repl.js +6 -5
- package/dist/remote/repl.js.map +1 -1
- package/dist/repl.d.ts +32 -4
- package/dist/repl.d.ts.map +1 -1
- package/dist/repl.js +209 -29
- package/dist/repl.js.map +1 -1
- package/dist/tui/input.d.ts +6 -0
- package/dist/tui/input.d.ts.map +1 -1
- package/dist/tui/input.js +98 -12
- package/dist/tui/input.js.map +1 -1
- package/dist/tui/menu.d.ts +26 -0
- package/dist/tui/menu.d.ts.map +1 -0
- package/dist/tui/menu.js +75 -0
- package/dist/tui/menu.js.map +1 -0
- package/dist/tui/text.d.ts +2 -0
- package/dist/tui/text.d.ts.map +1 -1
- package/dist/tui/text.js +19 -0
- package/dist/tui/text.js.map +1 -1
- package/dist/tui/view.d.ts.map +1 -1
- package/dist/tui/view.js +57 -23
- package/dist/tui/view.js.map +1 -1
- package/dist/tui/welcome.d.ts +2 -1
- package/dist/tui/welcome.d.ts.map +1 -1
- package/dist/tui/welcome.js +26 -24
- package/dist/tui/welcome.js.map +1 -1
- package/dist/update.d.ts +13 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +145 -0
- package/dist/update.js.map +1 -0
- package/package.json +4 -2
package/dist/repl.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TuiInput } from "./tui/input.js";
|
|
2
|
+
import { InputMenu } from "./tui/menu.js";
|
|
2
3
|
import { createInterface, emitKeypressEvents } from "node:readline";
|
|
3
4
|
import { formatTokens } from "./providers/usage.js";
|
|
4
5
|
export const REPL_PROMPT = "› ";
|
|
@@ -10,16 +11,22 @@ export const BUILT_IN_COMMANDS = [
|
|
|
10
11
|
"exit",
|
|
11
12
|
"quit",
|
|
12
13
|
"login",
|
|
14
|
+
"provider",
|
|
15
|
+
"model",
|
|
16
|
+
"endpoint",
|
|
13
17
|
];
|
|
14
18
|
const HELP = `Commands:
|
|
15
19
|
/help Show this help
|
|
16
20
|
/session Show the current session id, workspace, and size
|
|
17
21
|
/tools List the tools available to the model
|
|
18
22
|
/clear Start a new transcript in the same session
|
|
19
|
-
/
|
|
20
|
-
/
|
|
23
|
+
/provider Choose a Provider (↑↓ and Enter in the TUI)
|
|
24
|
+
/model Show or change the current model: /model MODEL
|
|
25
|
+
/endpoint Set the URL for an OpenAI-compatible Provider
|
|
26
|
+
/login Store a key for the current Provider; /login NAME switches first
|
|
27
|
+
/exit Leave chivgent (Ctrl+C or Ctrl+D also works)
|
|
21
28
|
|
|
22
|
-
Anything else is sent to the model. Ctrl+C stops
|
|
29
|
+
Anything else is sent to the model. Ctrl+C stops a running answer; at the prompt it exits.
|
|
23
30
|
`;
|
|
24
31
|
function helpText(context) {
|
|
25
32
|
const extras = context.extensionCommands ?? [];
|
|
@@ -56,12 +63,42 @@ export function handleSlashCommand(line, context) {
|
|
|
56
63
|
context.session.clear();
|
|
57
64
|
context.write("Transcript cleared.\n");
|
|
58
65
|
return "handled";
|
|
66
|
+
case "/provider":
|
|
67
|
+
if (context.providers === undefined) {
|
|
68
|
+
context.write("Provider switching is unavailable in this session.\n");
|
|
69
|
+
return "handled";
|
|
70
|
+
}
|
|
71
|
+
if (trimmed === "/provider") {
|
|
72
|
+
context.write(context.providers.describe());
|
|
73
|
+
return "handled";
|
|
74
|
+
}
|
|
75
|
+
return { kind: "provider", argument: trimmed.slice("/provider".length).trim() };
|
|
76
|
+
case "/model":
|
|
77
|
+
if (context.providers === undefined) {
|
|
78
|
+
context.write("Model switching is unavailable in this session.\n");
|
|
79
|
+
return "handled";
|
|
80
|
+
}
|
|
81
|
+
if (trimmed === "/model") {
|
|
82
|
+
context.write(`Current model: ${context.providers.model ?? "not set"}. Use /model MODEL to change it.\n`);
|
|
83
|
+
return "handled";
|
|
84
|
+
}
|
|
85
|
+
return { kind: "model", argument: trimmed.slice("/model".length).trim() };
|
|
86
|
+
case "/endpoint":
|
|
87
|
+
if (context.providers === undefined) {
|
|
88
|
+
context.write("Endpoint configuration is unavailable in this session.\n");
|
|
89
|
+
return "handled";
|
|
90
|
+
}
|
|
91
|
+
if (trimmed === "/endpoint") {
|
|
92
|
+
context.write("Use /endpoint https://api.example.com/v1 for an OpenAI-compatible Provider.\n");
|
|
93
|
+
return "handled";
|
|
94
|
+
}
|
|
95
|
+
return { kind: "endpoint", argument: trimmed.slice("/endpoint".length).trim() };
|
|
59
96
|
case "/login":
|
|
60
97
|
if (context.signIn === undefined) {
|
|
61
98
|
context.write("This session cannot store a key; it is attached to a server that already has one.\n");
|
|
62
99
|
return "handled";
|
|
63
100
|
}
|
|
64
|
-
return { kind: "login" };
|
|
101
|
+
return { kind: "login", providerArgument: trimmed.slice("/login".length).trim() };
|
|
65
102
|
case "/exit":
|
|
66
103
|
case "/quit":
|
|
67
104
|
return "exit";
|
|
@@ -130,11 +167,7 @@ async function withoutEcho(readline, read) {
|
|
|
130
167
|
}
|
|
131
168
|
}
|
|
132
169
|
async function runSignIn(readline, readNextLine, write, signIn) {
|
|
133
|
-
write(
|
|
134
|
-
`Paste an API key for ${signIn.provider}. It is not echoed.`,
|
|
135
|
-
`It will be stored in ${signIn.authFile}, readable only by you.`,
|
|
136
|
-
"API key: ",
|
|
137
|
-
].join("\n"));
|
|
170
|
+
write(`API key for ${signIn.provider} (hidden, saved locally; Enter skips): `);
|
|
138
171
|
// The key is read from the same line source the loop uses. readline's
|
|
139
172
|
// question() competes with the loop's own iterator for input, so the answer
|
|
140
173
|
// would be swallowed or never arrive.
|
|
@@ -153,12 +186,13 @@ async function runSignIn(readline, readNextLine, write, signIn) {
|
|
|
153
186
|
write(`${failure}\n`);
|
|
154
187
|
return;
|
|
155
188
|
}
|
|
156
|
-
write(
|
|
189
|
+
write(signIn.ready()
|
|
190
|
+
? `Stored the key for ${signIn.provider}. Ready for your next prompt.\n`
|
|
191
|
+
: `Stored the key for ${signIn.provider}. ${signIn.unavailableMessage?.() ?? "Finish Provider setup before sending a prompt."}\n`);
|
|
157
192
|
}
|
|
158
193
|
/**
|
|
159
|
-
* Reads prompts until the user leaves.
|
|
160
|
-
*
|
|
161
|
-
* session log survive an interrupt.
|
|
194
|
+
* Reads prompts until the user leaves. Ctrl+C cancels a running answer, keeping
|
|
195
|
+
* its transcript and log; at an idle prompt it closes the REPL.
|
|
162
196
|
*/
|
|
163
197
|
export async function runRepl(options) {
|
|
164
198
|
const write = (text) => {
|
|
@@ -175,24 +209,113 @@ export async function runRepl(options) {
|
|
|
175
209
|
output: options.output,
|
|
176
210
|
terminal: true,
|
|
177
211
|
prompt: REPL_PROMPT,
|
|
178
|
-
...(options.tui ? {
|
|
179
|
-
completer: (line) => {
|
|
180
|
-
const commands = [...BUILT_IN_COMMANDS, ...(options.extensionCommands ?? []).map((command) => command.name)];
|
|
181
|
-
const matches = line.startsWith("/") && !/\s/.test(line)
|
|
182
|
-
? [...new Set(commands)].map((name) => `/${name}`).filter((name) => name.startsWith(line))
|
|
183
|
-
: [];
|
|
184
|
-
return [matches, line];
|
|
185
|
-
},
|
|
186
|
-
} : {}),
|
|
187
212
|
});
|
|
213
|
+
const menu = tuiInput === undefined ? undefined : new InputMenu(readline, options.output);
|
|
214
|
+
let dismissedLine;
|
|
215
|
+
let refreshQueued = false;
|
|
216
|
+
const commands = [...BUILT_IN_COMMANDS, ...(options.extensionCommands ?? []).map((command) => command.name)]
|
|
217
|
+
.filter((name, index, all) => all.indexOf(name) === index)
|
|
218
|
+
.map((name) => ({ value: name, label: `/${name}${name === "provider" ? " · choose a Provider" : name === "model" ? " · change model" : ""}` }));
|
|
219
|
+
const menuItems = (line) => {
|
|
220
|
+
if (line === "/provider" || line.startsWith("/provider ")) {
|
|
221
|
+
const query = line.slice("/provider".length).trim().toLowerCase();
|
|
222
|
+
return (options.providers?.providerIds() ?? []).filter((id) => id.includes(query))
|
|
223
|
+
.map((id) => ({ value: `provider ${id}`, label: `${id === options.providers?.provider ? "●" : "○"} ${id}` }));
|
|
224
|
+
}
|
|
225
|
+
if (line.startsWith("/") && !/\s/.test(line)) {
|
|
226
|
+
return commands.filter((item) => item.label.startsWith(line));
|
|
227
|
+
}
|
|
228
|
+
return [];
|
|
229
|
+
};
|
|
230
|
+
const refreshMenu = () => {
|
|
231
|
+
if (menu === undefined || inputClosed || signingIn || controller !== undefined)
|
|
232
|
+
return;
|
|
233
|
+
const line = readline.line;
|
|
234
|
+
menu.show(line === dismissedLine ? [] : menuItems(line), true);
|
|
235
|
+
};
|
|
236
|
+
const queueRefresh = () => {
|
|
237
|
+
if (refreshQueued)
|
|
238
|
+
return;
|
|
239
|
+
refreshQueued = true;
|
|
240
|
+
setImmediate(() => { refreshQueued = false; refreshMenu(); });
|
|
241
|
+
};
|
|
242
|
+
const replaceDraft = (value) => {
|
|
243
|
+
menu?.reset();
|
|
244
|
+
readline.write(null, { ctrl: true, name: "a" });
|
|
245
|
+
readline.write(null, { ctrl: true, name: "k" });
|
|
246
|
+
readline.write(value);
|
|
247
|
+
};
|
|
188
248
|
let controller;
|
|
189
249
|
let promptVisible = false;
|
|
250
|
+
let inputClosed = false;
|
|
251
|
+
let signingIn = false;
|
|
252
|
+
let interrupted = false;
|
|
253
|
+
if (tuiInput !== undefined) {
|
|
254
|
+
tuiInput.setMenuControls(() => {
|
|
255
|
+
menu?.clear();
|
|
256
|
+
dismissedLine = undefined;
|
|
257
|
+
}, (key) => {
|
|
258
|
+
if (signingIn || controller !== undefined)
|
|
259
|
+
return false;
|
|
260
|
+
if (key === "enter" && !menu?.active && readline.line === "/provider" && options.providers !== undefined) {
|
|
261
|
+
menu?.show(menuItems(readline.line));
|
|
262
|
+
return true;
|
|
263
|
+
}
|
|
264
|
+
if (key === "tab" && !menu?.active) {
|
|
265
|
+
const first = menuItems(readline.line)[0]?.value;
|
|
266
|
+
if (first !== undefined) {
|
|
267
|
+
replaceDraft(`/${first}${first === "model" || first === "endpoint" ? " " : ""}`);
|
|
268
|
+
queueRefresh();
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
if (!menu?.active)
|
|
273
|
+
return false;
|
|
274
|
+
if (key === "up" || key === "down") {
|
|
275
|
+
menu.move(key === "up" ? -1 : 1);
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
if (key === "escape") {
|
|
279
|
+
dismissedLine = readline.line;
|
|
280
|
+
menu.clear();
|
|
281
|
+
return true;
|
|
282
|
+
}
|
|
283
|
+
const chosen = menu.selection;
|
|
284
|
+
if (chosen === undefined)
|
|
285
|
+
return false;
|
|
286
|
+
const replacement = `/${chosen}`;
|
|
287
|
+
if (key === "tab") {
|
|
288
|
+
replaceDraft(replacement + (chosen === "model" || chosen === "endpoint" ? " " : ""));
|
|
289
|
+
queueRefresh();
|
|
290
|
+
return true;
|
|
291
|
+
}
|
|
292
|
+
if (key === "enter") {
|
|
293
|
+
replaceDraft(replacement);
|
|
294
|
+
if (chosen === "provider" || chosen === "model" || chosen === "endpoint") {
|
|
295
|
+
if (chosen !== "provider")
|
|
296
|
+
readline.write(" ");
|
|
297
|
+
queueRefresh();
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
tuiInput.markSubmitted();
|
|
301
|
+
readline.write("\r");
|
|
302
|
+
}
|
|
303
|
+
return true;
|
|
304
|
+
}
|
|
305
|
+
return false;
|
|
306
|
+
});
|
|
307
|
+
tuiInput.on("keypress", queueRefresh);
|
|
308
|
+
}
|
|
190
309
|
const showPrompt = () => {
|
|
310
|
+
if (inputClosed)
|
|
311
|
+
return;
|
|
191
312
|
promptVisible = true;
|
|
192
313
|
readline.prompt();
|
|
193
314
|
};
|
|
194
|
-
readline.on("line", () => { promptVisible = false; });
|
|
315
|
+
readline.on("line", () => { menu?.reset(); promptVisible = false; });
|
|
195
316
|
readline.on("close", () => {
|
|
317
|
+
menu?.reset();
|
|
318
|
+
inputClosed = true;
|
|
196
319
|
controller?.abort();
|
|
197
320
|
if (options.tui && promptVisible) {
|
|
198
321
|
// Ctrl+D closes an empty input line without printing a newline.
|
|
@@ -203,14 +326,15 @@ export async function runRepl(options) {
|
|
|
203
326
|
readline.on("SIGINT", () => {
|
|
204
327
|
if (controller === undefined) {
|
|
205
328
|
if (options.tui) {
|
|
206
|
-
//
|
|
329
|
+
// Erase wrapped drafts before removing the prompt on close.
|
|
207
330
|
readline.write(null, { ctrl: true, name: "e" });
|
|
208
331
|
readline.write(null, { ctrl: true, name: "u" });
|
|
209
332
|
}
|
|
210
333
|
else {
|
|
211
|
-
write("
|
|
334
|
+
options.output.write("\n");
|
|
212
335
|
}
|
|
213
|
-
|
|
336
|
+
interrupted = true;
|
|
337
|
+
readline.close();
|
|
214
338
|
return;
|
|
215
339
|
}
|
|
216
340
|
controller.abort();
|
|
@@ -225,6 +349,29 @@ export async function runRepl(options) {
|
|
|
225
349
|
const next = await lines.next();
|
|
226
350
|
return next.done === true ? undefined : next.value;
|
|
227
351
|
};
|
|
352
|
+
const signInAfterProviderSelection = async () => {
|
|
353
|
+
if (!options.tui || options.signIn === undefined)
|
|
354
|
+
return;
|
|
355
|
+
let missingKey;
|
|
356
|
+
try {
|
|
357
|
+
missingKey = options.signIn.needsApiKey === undefined
|
|
358
|
+
? !options.signIn.ready()
|
|
359
|
+
: await options.signIn.needsApiKey();
|
|
360
|
+
}
|
|
361
|
+
catch (error) {
|
|
362
|
+
write(`Could not check saved API key: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
if (!missingKey)
|
|
366
|
+
return;
|
|
367
|
+
signingIn = true;
|
|
368
|
+
try {
|
|
369
|
+
await runSignIn(readline, readNextLine, write, options.signIn);
|
|
370
|
+
}
|
|
371
|
+
finally {
|
|
372
|
+
signingIn = false;
|
|
373
|
+
}
|
|
374
|
+
};
|
|
228
375
|
try {
|
|
229
376
|
for (;;) {
|
|
230
377
|
const line = await readNextLine();
|
|
@@ -245,13 +392,46 @@ export async function runRepl(options) {
|
|
|
245
392
|
? {}
|
|
246
393
|
: { extensionCommands: options.extensionCommands }),
|
|
247
394
|
...(options.signIn === undefined ? {} : { signIn: options.signIn }),
|
|
395
|
+
...(options.providers === undefined ? {} : { providers: options.providers }),
|
|
248
396
|
});
|
|
249
397
|
if (outcome === "exit") {
|
|
250
398
|
break;
|
|
251
399
|
}
|
|
252
400
|
if (typeof outcome === "object" && outcome.kind === "login") {
|
|
401
|
+
if (outcome.providerArgument.length > 0) {
|
|
402
|
+
if (options.providers === undefined) {
|
|
403
|
+
write("Provider switching is unavailable in this session.\n");
|
|
404
|
+
showPrompt();
|
|
405
|
+
continue;
|
|
406
|
+
}
|
|
407
|
+
const selected = await options.providers.select(outcome.providerArgument);
|
|
408
|
+
write(selected.message);
|
|
409
|
+
if (!selected.ok) {
|
|
410
|
+
showPrompt();
|
|
411
|
+
continue;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
253
414
|
if (options.signIn !== undefined) {
|
|
254
|
-
|
|
415
|
+
signingIn = true;
|
|
416
|
+
try {
|
|
417
|
+
await runSignIn(readline, readNextLine, write, options.signIn);
|
|
418
|
+
}
|
|
419
|
+
finally {
|
|
420
|
+
signingIn = false;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
showPrompt();
|
|
424
|
+
continue;
|
|
425
|
+
}
|
|
426
|
+
if (typeof outcome === "object" && (outcome.kind === "provider" || outcome.kind === "model" || outcome.kind === "endpoint")) {
|
|
427
|
+
if (options.providers !== undefined) {
|
|
428
|
+
const selected = outcome.kind === "provider"
|
|
429
|
+
? await options.providers.select(outcome.argument)
|
|
430
|
+
: outcome.kind === "model" ? await options.providers.changeModel(outcome.argument)
|
|
431
|
+
: await options.providers.changeEndpoint(outcome.argument);
|
|
432
|
+
write(selected.message);
|
|
433
|
+
if (selected.ok && outcome.kind === "provider")
|
|
434
|
+
await signInAfterProviderSelection();
|
|
255
435
|
}
|
|
256
436
|
showPrompt();
|
|
257
437
|
continue;
|
|
@@ -280,7 +460,7 @@ export async function runRepl(options) {
|
|
|
280
460
|
if (options.signIn !== undefined && !options.signIn.ready()) {
|
|
281
461
|
// Saying this before the run starts is clearer than letting the Provider
|
|
282
462
|
// call fail and reporting it as an agent failure.
|
|
283
|
-
write(
|
|
463
|
+
write(`${options.providers?.unavailableMessage?.() ?? `No API key for ${options.signIn.provider}. Run /login or use /provider to switch.`}\n`);
|
|
284
464
|
showPrompt();
|
|
285
465
|
continue;
|
|
286
466
|
}
|
|
@@ -309,6 +489,6 @@ export async function runRepl(options) {
|
|
|
309
489
|
readline.close();
|
|
310
490
|
tuiInput?.dispose();
|
|
311
491
|
}
|
|
312
|
-
return 0;
|
|
492
|
+
return interrupted ? 130 : 0;
|
|
313
493
|
}
|
|
314
494
|
//# sourceMappingURL=repl.js.map
|
package/dist/repl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/input.d.ts
CHANGED
|
@@ -14,11 +14,17 @@ export declare class TuiInput extends PassThrough {
|
|
|
14
14
|
private busy;
|
|
15
15
|
private submitted;
|
|
16
16
|
private afterCR;
|
|
17
|
+
private escapePrefix;
|
|
18
|
+
private escapeTimer?;
|
|
19
|
+
private beforeEdit?;
|
|
20
|
+
private menuKey?;
|
|
17
21
|
constructor(source: TerminalInput);
|
|
18
22
|
setRawMode(enabled: boolean): this;
|
|
19
23
|
setBusy(busy: boolean): void;
|
|
24
|
+
setMenuControls(beforeEdit: () => void, menuKey: (key: "up" | "down" | "enter" | "escape" | "tab") => boolean): void;
|
|
20
25
|
/** Called only when the REPL is ready to read its next line. */
|
|
21
26
|
acceptLine(): void;
|
|
27
|
+
markSubmitted(): void;
|
|
22
28
|
dispose(): void;
|
|
23
29
|
private readonly receive;
|
|
24
30
|
private readonly ended;
|
package/dist/tui/input.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/tui/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,KAAK,aAAa,GAAG,MAAM,CAAC,cAAc,GAAG;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;CAC5C,CAAC;
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/tui/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,KAAK,aAAa,GAAG,MAAM,CAAC,cAAc,GAAG;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;CAC5C,CAAC;AAOF;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,WAAW;IAU3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,WAAW,CAAC,CAAiB;IACrC,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,OAAO,CAAC,CAA+D;IAE/E,YAA6B,MAAM,EAAE,aAAa,EAMjD;IAED,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAGjC;IAED,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE3B;IAED,eAAe,CAAC,UAAU,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,KAAK,OAAO,GAAG,IAAI,CAGnH;IAED,gEAAgE;IAChE,UAAU,IAAI,IAAI,CAEjB;IAED,aAAa,IAAI,IAAI,CAEpB;IAED,OAAO,IAAI,IAAI,CAQd;IAED,OAAO,CAAC,QAAQ,CAAC,OAAO,CAuEtB;IAEF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAIpB;IACF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoD;CAC5E"}
|
package/dist/tui/input.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { PassThrough } from "node:stream";
|
|
2
|
+
const menuKeys = new Map([
|
|
3
|
+
["\u001b[A", "up"], ["\u001bOA", "up"], ["\u001b[B", "down"], ["\u001bOB", "down"],
|
|
4
|
+
["\r", "enter"], ["\n", "enter"], ["\u001b", "escape"], ["\t", "tab"],
|
|
5
|
+
]);
|
|
2
6
|
/**
|
|
3
7
|
* Readline keeps its normal editing and history. During a run, only Ctrl+C
|
|
4
8
|
* reaches it: typing must neither echo into the live region nor queue prompts.
|
|
@@ -10,6 +14,10 @@ export class TuiInput extends PassThrough {
|
|
|
10
14
|
busy = false;
|
|
11
15
|
submitted = false;
|
|
12
16
|
afterCR = false;
|
|
17
|
+
escapePrefix = Buffer.alloc(0);
|
|
18
|
+
escapeTimer;
|
|
19
|
+
beforeEdit;
|
|
20
|
+
menuKey;
|
|
13
21
|
constructor(source) {
|
|
14
22
|
super();
|
|
15
23
|
this.source = source;
|
|
@@ -25,11 +33,20 @@ export class TuiInput extends PassThrough {
|
|
|
25
33
|
setBusy(busy) {
|
|
26
34
|
this.busy = busy;
|
|
27
35
|
}
|
|
36
|
+
setMenuControls(beforeEdit, menuKey) {
|
|
37
|
+
this.beforeEdit = beforeEdit;
|
|
38
|
+
this.menuKey = menuKey;
|
|
39
|
+
}
|
|
28
40
|
/** Called only when the REPL is ready to read its next line. */
|
|
29
41
|
acceptLine() {
|
|
30
42
|
this.submitted = false;
|
|
31
43
|
}
|
|
44
|
+
markSubmitted() {
|
|
45
|
+
this.submitted = true;
|
|
46
|
+
}
|
|
32
47
|
dispose() {
|
|
48
|
+
if (this.escapeTimer !== undefined)
|
|
49
|
+
clearTimeout(this.escapeTimer);
|
|
33
50
|
this.source.off("data", this.receive);
|
|
34
51
|
this.source.off("end", this.ended);
|
|
35
52
|
this.source.off("error", this.failed);
|
|
@@ -39,6 +56,13 @@ export class TuiInput extends PassThrough {
|
|
|
39
56
|
}
|
|
40
57
|
receive = (chunk) => {
|
|
41
58
|
let bytes = typeof chunk === "string" ? Buffer.from(chunk) : chunk;
|
|
59
|
+
if (this.escapePrefix.length > 0) {
|
|
60
|
+
bytes = Buffer.concat([this.escapePrefix, bytes]);
|
|
61
|
+
this.escapePrefix = Buffer.alloc(0);
|
|
62
|
+
if (this.escapeTimer !== undefined)
|
|
63
|
+
clearTimeout(this.escapeTimer);
|
|
64
|
+
this.escapeTimer = undefined;
|
|
65
|
+
}
|
|
42
66
|
if (bytes.length === 0)
|
|
43
67
|
return;
|
|
44
68
|
if (this.afterCR && bytes[0] === 10)
|
|
@@ -51,20 +75,82 @@ export class TuiInput extends PassThrough {
|
|
|
51
75
|
this.write("\u0003");
|
|
52
76
|
return;
|
|
53
77
|
}
|
|
54
|
-
//
|
|
55
|
-
//
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
this.
|
|
78
|
+
// A terminal may deliver Arrow+Enter in one chunk. Parse control keys in
|
|
79
|
+
// order, while forwarding ordinary text as intact bytes for split UTF-8.
|
|
80
|
+
let offset = 0;
|
|
81
|
+
const forward = (part) => {
|
|
82
|
+
if (part.length === 0)
|
|
83
|
+
return;
|
|
84
|
+
this.beforeEdit?.();
|
|
85
|
+
this.write(part);
|
|
86
|
+
};
|
|
87
|
+
const holdEscape = (part) => {
|
|
88
|
+
this.escapePrefix = Buffer.from(part);
|
|
89
|
+
this.escapeTimer = setTimeout(() => {
|
|
90
|
+
const pending = this.escapePrefix;
|
|
91
|
+
this.escapePrefix = Buffer.alloc(0);
|
|
92
|
+
this.escapeTimer = undefined;
|
|
93
|
+
if (pending.length === 1 && this.menuKey?.("escape"))
|
|
94
|
+
return;
|
|
95
|
+
forward(pending);
|
|
96
|
+
}, 30);
|
|
97
|
+
};
|
|
98
|
+
while (offset < bytes.length && !this.submitted) {
|
|
99
|
+
const byte = bytes[offset];
|
|
100
|
+
if (byte === 27 || byte === 9 || byte === 10 || byte === 13) {
|
|
101
|
+
let size = 1;
|
|
102
|
+
if (byte === 27) {
|
|
103
|
+
if (offset + 1 === bytes.length) {
|
|
104
|
+
holdEscape(bytes.subarray(offset));
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (bytes[offset + 1] === 91) {
|
|
108
|
+
let end = offset + 2;
|
|
109
|
+
while (end < bytes.length && ((bytes[end] ?? 0) < 64 || (bytes[end] ?? 0) > 126))
|
|
110
|
+
end++;
|
|
111
|
+
if (end === bytes.length) {
|
|
112
|
+
holdEscape(bytes.subarray(offset));
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
size = end - offset + 1;
|
|
116
|
+
}
|
|
117
|
+
else if (bytes[offset + 1] === 79) {
|
|
118
|
+
if (offset + 2 === bytes.length) {
|
|
119
|
+
holdEscape(bytes.subarray(offset));
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
size = 3;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const part = bytes.subarray(offset, offset + size);
|
|
126
|
+
const key = menuKeys.get(part.toString());
|
|
127
|
+
if (key !== undefined && this.menuKey?.(key)) {
|
|
128
|
+
offset += size;
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
if (byte === 10 || byte === 13) {
|
|
132
|
+
this.submitted = true;
|
|
133
|
+
this.afterCR = byte === 13 && offset + 1 === bytes.length;
|
|
134
|
+
forward(part);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
forward(part);
|
|
138
|
+
offset += size;
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
const start = offset;
|
|
142
|
+
while (offset < bytes.length && ![9, 10, 13, 27].includes(bytes[offset] ?? -1))
|
|
143
|
+
offset++;
|
|
144
|
+
forward(bytes.subarray(start, offset));
|
|
65
145
|
}
|
|
66
146
|
};
|
|
67
|
-
ended = () => {
|
|
147
|
+
ended = () => {
|
|
148
|
+
if (this.escapeTimer !== undefined)
|
|
149
|
+
clearTimeout(this.escapeTimer);
|
|
150
|
+
if (this.escapePrefix.length > 0)
|
|
151
|
+
this.write(this.escapePrefix);
|
|
152
|
+
this.end();
|
|
153
|
+
};
|
|
68
154
|
failed = (error) => { this.destroy(error); };
|
|
69
155
|
}
|
|
70
156
|
//# sourceMappingURL=input.js.map
|
package/dist/tui/input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/tui/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAO1C;;;;GAIG;AACH,MAAM,OAAO,QAAS,SAAQ,WAAW;
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/tui/input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Interface } from "node:readline";
|
|
2
|
+
export interface MenuItem {
|
|
3
|
+
readonly value: string;
|
|
4
|
+
readonly label: string;
|
|
5
|
+
}
|
|
6
|
+
/** A small transient region beneath readline, with the cursor left in the draft. */
|
|
7
|
+
export declare class InputMenu {
|
|
8
|
+
private readonly readline;
|
|
9
|
+
private readonly output;
|
|
10
|
+
private items;
|
|
11
|
+
private selected;
|
|
12
|
+
private reserved;
|
|
13
|
+
private painted;
|
|
14
|
+
constructor(readline: Interface, output: NodeJS.WritableStream & {
|
|
15
|
+
columns?: number;
|
|
16
|
+
rows?: number;
|
|
17
|
+
});
|
|
18
|
+
get active(): boolean;
|
|
19
|
+
get selection(): string | undefined;
|
|
20
|
+
show(items: readonly MenuItem[], preserveSelection?: boolean): void;
|
|
21
|
+
move(delta: number): void;
|
|
22
|
+
clear(): void;
|
|
23
|
+
reset(): void;
|
|
24
|
+
private belowInput;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/tui/menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG/C,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,oFAAoF;AACpF,qBAAa,SAAS;IAOlB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,OAAO,CAAK;IAEpB,YACmB,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAClF;IAEJ,IAAI,MAAM,IAAI,OAAO,CAAkC;IACvD,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAA6C;IAEhF,IAAI,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,iBAAiB,UAAQ,GAAG,IAAI,CAyBhE;IAED,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIxB;IAED,KAAK,IAAI,IAAI,CAWZ;IAED,KAAK,IAAI,IAAI,CAGZ;IAED,OAAO,CAAC,UAAU;CAMnB"}
|