chivgent 0.16.0 → 0.18.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 +71 -1
- package/README.zh-CN.md +56 -1
- package/dist/cli-options.d.ts +2 -0
- package/dist/cli-options.d.ts.map +1 -1
- package/dist/cli-options.js +6 -0
- package/dist/cli-options.js.map +1 -1
- package/dist/cli.js +86 -23
- package/dist/cli.js.map +1 -1
- package/dist/evals/runner.d.ts.map +1 -1
- package/dist/evals/runner.js +1 -19
- package/dist/evals/runner.js.map +1 -1
- package/dist/remote/framing.d.ts +3 -1
- package/dist/remote/framing.d.ts.map +1 -1
- package/dist/remote/framing.js +23 -9
- package/dist/remote/framing.js.map +1 -1
- package/dist/repl.d.ts +1 -0
- package/dist/repl.d.ts.map +1 -1
- package/dist/repl.js +89 -65
- package/dist/repl.js.map +1 -1
- package/dist/shell/output.d.ts.map +1 -1
- package/dist/shell/output.js +3 -14
- package/dist/shell/output.js.map +1 -1
- package/dist/shell/truncate.d.ts +2 -0
- package/dist/shell/truncate.d.ts.map +1 -1
- package/dist/shell/truncate.js +17 -6
- package/dist/shell/truncate.js.map +1 -1
- package/dist/tools/target.d.ts +10 -0
- package/dist/tools/target.d.ts.map +1 -0
- package/dist/tools/target.js +27 -0
- package/dist/tools/target.js.map +1 -0
- package/dist/tui/input.d.ts +24 -0
- package/dist/tui/input.d.ts.map +1 -0
- package/dist/tui/input.js +45 -0
- package/dist/tui/input.js.map +1 -0
- package/dist/tui/live.d.ts +38 -0
- package/dist/tui/live.d.ts.map +1 -0
- package/dist/tui/live.js +116 -0
- package/dist/tui/live.js.map +1 -0
- package/dist/tui/paint.d.ts +38 -0
- package/dist/tui/paint.d.ts.map +1 -0
- package/dist/tui/paint.js +86 -0
- package/dist/tui/paint.js.map +1 -0
- package/dist/tui/state.d.ts +49 -0
- package/dist/tui/state.d.ts.map +1 -0
- package/dist/tui/state.js +105 -0
- package/dist/tui/state.js.map +1 -0
- package/dist/tui/text.d.ts +7 -0
- package/dist/tui/text.d.ts.map +1 -0
- package/dist/tui/text.js +31 -0
- package/dist/tui/text.js.map +1 -0
- package/dist/tui/view.d.ts +24 -0
- package/dist/tui/view.d.ts.map +1 -0
- package/dist/tui/view.js +83 -0
- package/dist/tui/view.js.map +1 -0
- package/dist/tui/welcome.d.ts +12 -0
- package/dist/tui/welcome.d.ts.map +1 -0
- package/dist/tui/welcome.js +28 -0
- package/dist/tui/welcome.js.map +1 -0
- package/package.json +4 -2
package/dist/remote/framing.js
CHANGED
|
@@ -28,30 +28,44 @@ export function encodeMessage(value) {
|
|
|
28
28
|
*/
|
|
29
29
|
export class LineDecoder {
|
|
30
30
|
maxLineBytes;
|
|
31
|
-
|
|
31
|
+
fragments = [];
|
|
32
|
+
bufferedBytes = 0;
|
|
32
33
|
decoder = new TextDecoder("utf-8");
|
|
33
34
|
constructor(maxLineBytes = MAX_LINE_BYTES) {
|
|
34
35
|
this.maxLineBytes = maxLineBytes;
|
|
35
36
|
}
|
|
36
37
|
push(chunk) {
|
|
37
|
-
|
|
38
|
+
const text = this.decoder.decode(chunk, { stream: true });
|
|
38
39
|
const lines = [];
|
|
40
|
+
let start = 0;
|
|
41
|
+
// Scan only newly decoded text. Joining an unfinished line on every push
|
|
42
|
+
// repeatedly copies and scans its prefix when the transport fragments it.
|
|
39
43
|
for (;;) {
|
|
40
|
-
const
|
|
41
|
-
if (
|
|
44
|
+
const end = text.indexOf("\n", start);
|
|
45
|
+
if (end === -1) {
|
|
46
|
+
this.appendFragment(text.slice(start));
|
|
42
47
|
break;
|
|
43
48
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
49
|
+
this.appendFragment(text.slice(start, end));
|
|
50
|
+
const trimmed = this.fragments.join("").trim();
|
|
51
|
+
this.fragments = [];
|
|
52
|
+
this.bufferedBytes = 0;
|
|
47
53
|
if (trimmed.length > 0) {
|
|
48
54
|
lines.push(trimmed);
|
|
49
55
|
}
|
|
56
|
+
start = end + 1;
|
|
50
57
|
}
|
|
51
|
-
|
|
58
|
+
return lines;
|
|
59
|
+
}
|
|
60
|
+
appendFragment(fragment) {
|
|
61
|
+
const bytes = Buffer.byteLength(fragment, "utf8");
|
|
62
|
+
if (this.bufferedBytes + bytes > this.maxLineBytes) {
|
|
52
63
|
throw new FramingError(`A single line exceeded the ${this.maxLineBytes}-byte limit.`);
|
|
53
64
|
}
|
|
54
|
-
|
|
65
|
+
if (fragment.length > 0) {
|
|
66
|
+
this.fragments.push(fragment);
|
|
67
|
+
this.bufferedBytes += bytes;
|
|
68
|
+
}
|
|
55
69
|
}
|
|
56
70
|
}
|
|
57
71
|
/** Parses one line, or returns why it could not be parsed. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framing.js","sourceRoot":"","sources":["../../src/remote/framing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,YAAY,CAAC,mCAAmC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,WAAW;
|
|
1
|
+
{"version":3,"file":"framing.js","sourceRoot":"","sources":["../../src/remote/framing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,YAAY,CAAC,mCAAmC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IAKO,YAAY;IAJjC,SAAS,GAAa,EAAE,CAAC;IACzB,aAAa,GAAG,CAAC,CAAC;IACT,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAEpD,YAA6B,YAAY,GAAW,cAAc;4BAArC,YAAY;IAA4B,CAAC;IAEtE,IAAI,CAAC,KAAa;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,yEAAyE;QACzE,0EAA0E;QAC1E,SAAS,CAAC;YACR,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvC,MAAM;YACR,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YACvB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;YACD,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,cAAc,CAAC,QAAgB;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,aAAa,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACnD,MAAM,IAAI,YAAY,CACpB,8BAA8B,IAAI,CAAC,YAAY,cAAc,CAC9D,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC;QAC9B,CAAC;IACH,CAAC;CACF;AAED,8DAA8D;AAC9D,MAAM,UAAU,SAAS,CACvB,IAAY;IAEZ,IAAI,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IACrC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO;YACL,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/repl.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export declare const BUILT_IN_COMMANDS: readonly ["help", "session", "tools", "c
|
|
|
37
37
|
*/
|
|
38
38
|
export declare function handleSlashCommand(line: string, context: SlashCommandContext): SlashCommandOutcome;
|
|
39
39
|
export interface ReplOptions {
|
|
40
|
+
readonly tui?: boolean;
|
|
40
41
|
readonly session: AgentSession;
|
|
41
42
|
readonly input: NodeJS.ReadableStream;
|
|
42
43
|
readonly output: NodeJS.WritableStream;
|
package/dist/repl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,eAAO,MAAM,WAAW,YAAO,CAAC;AAEhC,MAAM,MAAM,mBAAmB,GAC3B,SAAS,GACT,MAAM,GACN,eAAe;AACjB,6EAA6E;GAC3E;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE;AAC5B,6EAA6E;GAC3E;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEN,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC1D,gFAAgF;IAChF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,KAAK,IAAI,OAAO,CAAC;IACjB,qEAAqE;IACrE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACrD;AAED,eAAO,MAAM,iBAAiB,YAC5B,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,CACC,CAAC;AA2BX;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,mBAAmB,GAC3B,mBAAmB,CAoDrB;AAoCD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC1D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAmED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA8HnE"}
|
package/dist/repl.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TuiInput } from "./tui/input.js";
|
|
1
2
|
import { createInterface } from "node:readline";
|
|
2
3
|
import { formatTokens } from "./providers/usage.js";
|
|
3
4
|
export const REPL_PROMPT = "› ";
|
|
@@ -163,13 +164,24 @@ export async function runRepl(options) {
|
|
|
163
164
|
const write = (text) => {
|
|
164
165
|
options.stderr.write(text);
|
|
165
166
|
};
|
|
167
|
+
const tuiInput = options.tui ? new TuiInput(options.input) : undefined;
|
|
166
168
|
const readline = createInterface({
|
|
167
|
-
input: options.input,
|
|
169
|
+
input: tuiInput ?? options.input,
|
|
168
170
|
output: options.output,
|
|
169
171
|
terminal: true,
|
|
170
172
|
prompt: REPL_PROMPT,
|
|
173
|
+
...(options.tui ? {
|
|
174
|
+
completer: (line) => {
|
|
175
|
+
const commands = [...BUILT_IN_COMMANDS, ...(options.extensionCommands ?? []).map((command) => command.name)];
|
|
176
|
+
const matches = line.startsWith("/") && !/\s/.test(line)
|
|
177
|
+
? [...new Set(commands)].map((name) => `/${name}`).filter((name) => name.startsWith(line))
|
|
178
|
+
: [];
|
|
179
|
+
return [matches, line];
|
|
180
|
+
},
|
|
181
|
+
} : {}),
|
|
171
182
|
});
|
|
172
183
|
let controller;
|
|
184
|
+
readline.on("close", () => controller?.abort());
|
|
173
185
|
readline.on("SIGINT", () => {
|
|
174
186
|
if (controller === undefined) {
|
|
175
187
|
write("Press Ctrl+D or /exit to leave.\n");
|
|
@@ -187,78 +199,90 @@ export async function runRepl(options) {
|
|
|
187
199
|
const next = await lines.next();
|
|
188
200
|
return next.done === true ? undefined : next.value;
|
|
189
201
|
};
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
if (line.trim().length === 0) {
|
|
196
|
-
readline.prompt();
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
|
-
const outcome = handleSlashCommand(line, {
|
|
200
|
-
session: options.session,
|
|
201
|
-
write,
|
|
202
|
-
...(options.sessionFile === undefined
|
|
203
|
-
? {}
|
|
204
|
-
: { sessionFile: options.sessionFile }),
|
|
205
|
-
...(options.extensionCommands === undefined
|
|
206
|
-
? {}
|
|
207
|
-
: { extensionCommands: options.extensionCommands }),
|
|
208
|
-
...(options.signIn === undefined ? {} : { signIn: options.signIn }),
|
|
209
|
-
});
|
|
210
|
-
if (outcome === "exit") {
|
|
211
|
-
break;
|
|
212
|
-
}
|
|
213
|
-
if (typeof outcome === "object" && outcome.kind === "login") {
|
|
214
|
-
if (options.signIn !== undefined) {
|
|
215
|
-
await runSignIn(readline, readNextLine, write, options.signIn);
|
|
202
|
+
try {
|
|
203
|
+
for (;;) {
|
|
204
|
+
const line = await readNextLine();
|
|
205
|
+
if (line === undefined) {
|
|
206
|
+
break;
|
|
216
207
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
208
|
+
if (line.trim().length === 0) {
|
|
209
|
+
readline.prompt();
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
const outcome = handleSlashCommand(line, {
|
|
213
|
+
session: options.session,
|
|
214
|
+
write,
|
|
215
|
+
...(options.sessionFile === undefined
|
|
216
|
+
? {}
|
|
217
|
+
: { sessionFile: options.sessionFile }),
|
|
218
|
+
...(options.extensionCommands === undefined
|
|
219
|
+
? {}
|
|
220
|
+
: { extensionCommands: options.extensionCommands }),
|
|
221
|
+
...(options.signIn === undefined ? {} : { signIn: options.signIn }),
|
|
222
|
+
});
|
|
223
|
+
if (outcome === "exit") {
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
if (typeof outcome === "object" && outcome.kind === "login") {
|
|
227
|
+
if (options.signIn !== undefined) {
|
|
228
|
+
await runSignIn(readline, readNextLine, write, options.signIn);
|
|
229
|
+
}
|
|
230
|
+
readline.prompt();
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
if (typeof outcome === "object") {
|
|
234
|
+
// An extension command runs here rather than inside the parser so it may
|
|
235
|
+
// be async, and so a throwing command cannot take the REPL down.
|
|
236
|
+
try {
|
|
237
|
+
await outcome.command.run({
|
|
238
|
+
session: options.session,
|
|
239
|
+
write,
|
|
240
|
+
argument: outcome.argument,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
245
|
+
write(`/${outcome.command.name} failed: ${message}\n`);
|
|
246
|
+
}
|
|
247
|
+
readline.prompt();
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
if (outcome === "handled") {
|
|
251
|
+
readline.prompt();
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
if (options.signIn !== undefined && !options.signIn.ready()) {
|
|
255
|
+
// Saying this before the run starts is clearer than letting the Provider
|
|
256
|
+
// call fail and reporting it as an agent failure.
|
|
257
|
+
write("No API key yet. Run /login to add one.\n");
|
|
258
|
+
readline.prompt();
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
controller = new AbortController();
|
|
262
|
+
tuiInput?.setBusy(true);
|
|
223
263
|
try {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
264
|
+
const signal = controller.signal;
|
|
265
|
+
const prompt = () => options.session.prompt(line, { signal });
|
|
266
|
+
if (options.tui)
|
|
267
|
+
await withoutEcho(readline, prompt);
|
|
268
|
+
else
|
|
269
|
+
await prompt();
|
|
229
270
|
}
|
|
230
271
|
catch (error) {
|
|
231
|
-
const message = error instanceof Error ? error.message :
|
|
232
|
-
write(
|
|
272
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
273
|
+
write(`Agent failed: ${message}\n`);
|
|
274
|
+
}
|
|
275
|
+
finally {
|
|
276
|
+
controller = undefined;
|
|
277
|
+
tuiInput?.setBusy(false);
|
|
233
278
|
}
|
|
234
279
|
readline.prompt();
|
|
235
|
-
continue;
|
|
236
|
-
}
|
|
237
|
-
if (outcome === "handled") {
|
|
238
|
-
readline.prompt();
|
|
239
|
-
continue;
|
|
240
|
-
}
|
|
241
|
-
if (options.signIn !== undefined && !options.signIn.ready()) {
|
|
242
|
-
// Saying this before the run starts is clearer than letting the Provider
|
|
243
|
-
// call fail and reporting it as an agent failure.
|
|
244
|
-
write("No API key yet. Run /login to add one.\n");
|
|
245
|
-
readline.prompt();
|
|
246
|
-
continue;
|
|
247
280
|
}
|
|
248
|
-
controller = new AbortController();
|
|
249
|
-
try {
|
|
250
|
-
await options.session.prompt(line, { signal: controller.signal });
|
|
251
|
-
}
|
|
252
|
-
catch (error) {
|
|
253
|
-
const message = error instanceof Error ? error.message : "Unknown error";
|
|
254
|
-
write(`Agent failed: ${message}\n`);
|
|
255
|
-
}
|
|
256
|
-
finally {
|
|
257
|
-
controller = undefined;
|
|
258
|
-
}
|
|
259
|
-
readline.prompt();
|
|
260
281
|
}
|
|
261
|
-
|
|
282
|
+
finally {
|
|
283
|
+
readline.close();
|
|
284
|
+
tuiInput?.dispose();
|
|
285
|
+
}
|
|
262
286
|
return 0;
|
|
263
287
|
}
|
|
264
288
|
//# 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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/shell/output.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/shell/output.ts"],"names":[],"mappings":"AAKA,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,sEAAsE;IACtE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,yDAAyD;IACzD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;;;;GASG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IAEpD,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,cAAc,CAA0B;IAEhD,YAAY,OAAO,GAAE,wBAA6B,EAMjD;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAe1B;IAED,gFAAgF;IAChF,MAAM,IAAI,IAAI,CASb;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,QAAQ,IAAI,cAAc,CAwBzB;IAED,0EAA0E;IACpE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAS3B;IAED,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,eAAe;CAmBxB"}
|
package/dist/shell/output.js
CHANGED
|
@@ -3,7 +3,7 @@ import { createWriteStream } from "node:fs";
|
|
|
3
3
|
import { tmpdir } from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { sanitizeShellOutput } from "./sanitize.js";
|
|
6
|
-
import { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, truncateTail, } from "./truncate.js";
|
|
6
|
+
import { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, truncateTail, takeLastBytes, } from "./truncate.js";
|
|
7
7
|
/**
|
|
8
8
|
* Collects streaming command output in bounded memory.
|
|
9
9
|
*
|
|
@@ -134,19 +134,8 @@ export class OutputAccumulator {
|
|
|
134
134
|
}
|
|
135
135
|
// Dropping from the front can cut mid-line; truncateTail rebuilds whole
|
|
136
136
|
// lines from what is left, and the totals stay correct either way.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
let index = characters.length;
|
|
140
|
-
while (index > 0) {
|
|
141
|
-
const size = Buffer.byteLength(characters[index - 1] ?? "", "utf8");
|
|
142
|
-
if (bytes + size > this.maxRollingBytes) {
|
|
143
|
-
break;
|
|
144
|
-
}
|
|
145
|
-
bytes += size;
|
|
146
|
-
index -= 1;
|
|
147
|
-
}
|
|
148
|
-
this.tail = characters.slice(index).join("");
|
|
149
|
-
this.tailBytes = bytes;
|
|
137
|
+
this.tail = takeLastBytes(this.tail, this.maxRollingBytes);
|
|
138
|
+
this.tailBytes = Buffer.byteLength(this.tail, "utf8");
|
|
150
139
|
}
|
|
151
140
|
spillToTempFile() {
|
|
152
141
|
if (this.tempFileStream !== undefined) {
|
package/dist/shell/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/shell/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAoB,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/shell/output.ts"],"names":[],"mappings":"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"}
|
package/dist/shell/truncate.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export interface TruncationResult {
|
|
|
17
17
|
readonly maxLines: number;
|
|
18
18
|
readonly maxBytes: number;
|
|
19
19
|
}
|
|
20
|
+
/** Keeps whole characters, never splitting a multi-byte sequence. */
|
|
21
|
+
export declare function takeLastBytes(value: string, maxBytes: number): string;
|
|
20
22
|
export declare function countLines(content: string): number;
|
|
21
23
|
/**
|
|
22
24
|
* Keeps the end of the content.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../src/shell/truncate.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AACvC,eAAO,MAAM,iBAAiB,QAAY,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../src/shell/truncate.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AACvC,eAAO,MAAM,iBAAiB,QAAY,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAoBD,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAwBrE;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAsElB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD"}
|
package/dist/shell/truncate.js
CHANGED
|
@@ -17,19 +17,30 @@ function splitLines(content) {
|
|
|
17
17
|
return lines;
|
|
18
18
|
}
|
|
19
19
|
/** Keeps whole characters, never splitting a multi-byte sequence. */
|
|
20
|
-
function takeLastBytes(value, maxBytes) {
|
|
21
|
-
const characters = [...value];
|
|
20
|
+
export function takeLastBytes(value, maxBytes) {
|
|
22
21
|
let bytes = 0;
|
|
23
|
-
let index =
|
|
22
|
+
let index = value.length;
|
|
23
|
+
// Walk UTF-16 backwards without allocating an array for the entire input.
|
|
24
|
+
// A surrogate pair is one four-byte UTF-8 character; an unpaired surrogate
|
|
25
|
+
// is encoded as the three-byte replacement character, just like Buffer.
|
|
24
26
|
while (index > 0) {
|
|
25
|
-
const
|
|
27
|
+
const code = value.charCodeAt(index - 1);
|
|
28
|
+
let units = 1;
|
|
29
|
+
let size = code <= 0x7f ? 1 : code <= 0x7ff ? 2 : 3;
|
|
30
|
+
if (code >= 0xdc00 && code <= 0xdfff && index > 1) {
|
|
31
|
+
const previous = value.charCodeAt(index - 2);
|
|
32
|
+
if (previous >= 0xd800 && previous <= 0xdbff) {
|
|
33
|
+
units = 2;
|
|
34
|
+
size = 4;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
26
37
|
if (bytes + size > maxBytes) {
|
|
27
38
|
break;
|
|
28
39
|
}
|
|
29
40
|
bytes += size;
|
|
30
|
-
index -=
|
|
41
|
+
index -= units;
|
|
31
42
|
}
|
|
32
|
-
return
|
|
43
|
+
return value.slice(index);
|
|
33
44
|
}
|
|
34
45
|
export function countLines(content) {
|
|
35
46
|
return splitLines(content).length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../src/shell/truncate.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,0CAA0C;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC;AAqB3C,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,4EAA4E;AAC5E,SAAS,UAAU,CAAC,OAAe;IACjC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CACzD,KAAK,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAC9C,CAAC;IACF,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACxB,KAAK,CAAC,GAAG,EAAE,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qEAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../src/shell/truncate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one argument worth showing beside a tool call.
|
|
3
|
+
*
|
|
4
|
+
* Full arguments are too much for a status line and for an eval report alike:
|
|
5
|
+
* an edit carries both halves of the change. But a bare tool name cannot tell
|
|
6
|
+
* a read of the right file from a read of the wrong one, so the path — or, for
|
|
7
|
+
* a shell command, its head — is kept and everything else dropped.
|
|
8
|
+
*/
|
|
9
|
+
export declare function callTarget(argumentsValue: unknown): string | undefined;
|
|
10
|
+
//# sourceMappingURL=target.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../../src/tools/target.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,cAAc,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAiBtE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const MAX_TARGET_LENGTH = 80;
|
|
2
|
+
/**
|
|
3
|
+
* The one argument worth showing beside a tool call.
|
|
4
|
+
*
|
|
5
|
+
* Full arguments are too much for a status line and for an eval report alike:
|
|
6
|
+
* an edit carries both halves of the change. But a bare tool name cannot tell
|
|
7
|
+
* a read of the right file from a read of the wrong one, so the path — or, for
|
|
8
|
+
* a shell command, its head — is kept and everything else dropped.
|
|
9
|
+
*/
|
|
10
|
+
export function callTarget(argumentsValue) {
|
|
11
|
+
if (typeof argumentsValue !== "object" || argumentsValue === null) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
const record = argumentsValue;
|
|
15
|
+
const value = typeof record.path === "string"
|
|
16
|
+
? record.path
|
|
17
|
+
: typeof record.command === "string"
|
|
18
|
+
? record.command
|
|
19
|
+
: undefined;
|
|
20
|
+
if (value === undefined || value.length === 0) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
return value.length > MAX_TARGET_LENGTH
|
|
24
|
+
? `${value.slice(0, MAX_TARGET_LENGTH)}…`
|
|
25
|
+
: value;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/tools/target.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,cAAuB;IAChD,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,cAAyC,CAAC;IACzD,MAAM,KAAK,GACT,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC7B,CAAC,CAAC,MAAM,CAAC,IAAI;QACb,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAClC,CAAC,CAAC,MAAM,CAAC,OAAO;YAChB,CAAC,CAAC,SAAS,CAAC;IAClB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,GAAG,iBAAiB;QACrC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG;QACzC,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PassThrough } from "node:stream";
|
|
2
|
+
type TerminalInput = NodeJS.ReadableStream & {
|
|
3
|
+
isTTY?: boolean;
|
|
4
|
+
setRawMode?: (enabled: boolean) => unknown;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Readline keeps its normal editing and history. During a run, only Ctrl+C
|
|
8
|
+
* reaches it: typing must neither echo into the live region nor queue prompts.
|
|
9
|
+
* The source stays in raw mode so cancellation still arrives immediately.
|
|
10
|
+
*/
|
|
11
|
+
export declare class TuiInput extends PassThrough {
|
|
12
|
+
private readonly source;
|
|
13
|
+
readonly isTTY: boolean;
|
|
14
|
+
private busy;
|
|
15
|
+
constructor(source: TerminalInput);
|
|
16
|
+
setRawMode(enabled: boolean): this;
|
|
17
|
+
setBusy(busy: boolean): void;
|
|
18
|
+
dispose(): void;
|
|
19
|
+
private readonly receive;
|
|
20
|
+
private readonly ended;
|
|
21
|
+
private readonly failed;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=input.d.ts.map
|
|
@@ -0,0 +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;AAEF;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,WAAW;IAI3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,IAAI,CAAS;IAErB,YAA6B,MAAM,EAAE,aAAa,EAMjD;IAED,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAGjC;IAED,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE3B;IAED,OAAO,IAAI,IAAI,CAOd;IAED,OAAO,CAAC,QAAQ,CAAC,OAAO,CAMtB;IAEF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoD;CAC5E"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { PassThrough } from "node:stream";
|
|
2
|
+
/**
|
|
3
|
+
* Readline keeps its normal editing and history. During a run, only Ctrl+C
|
|
4
|
+
* reaches it: typing must neither echo into the live region nor queue prompts.
|
|
5
|
+
* The source stays in raw mode so cancellation still arrives immediately.
|
|
6
|
+
*/
|
|
7
|
+
export class TuiInput extends PassThrough {
|
|
8
|
+
source;
|
|
9
|
+
isTTY;
|
|
10
|
+
busy = false;
|
|
11
|
+
constructor(source) {
|
|
12
|
+
super();
|
|
13
|
+
this.source = source;
|
|
14
|
+
this.isTTY = source.isTTY === true;
|
|
15
|
+
source.on("data", this.receive);
|
|
16
|
+
source.on("end", this.ended);
|
|
17
|
+
source.on("error", this.failed);
|
|
18
|
+
}
|
|
19
|
+
setRawMode(enabled) {
|
|
20
|
+
this.source.setRawMode?.(enabled);
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
setBusy(busy) {
|
|
24
|
+
this.busy = busy;
|
|
25
|
+
}
|
|
26
|
+
dispose() {
|
|
27
|
+
this.source.off("data", this.receive);
|
|
28
|
+
this.source.off("end", this.ended);
|
|
29
|
+
this.source.off("error", this.failed);
|
|
30
|
+
this.setRawMode(false);
|
|
31
|
+
this.source.pause();
|
|
32
|
+
this.destroy();
|
|
33
|
+
}
|
|
34
|
+
receive = (chunk) => {
|
|
35
|
+
if (!this.busy) {
|
|
36
|
+
this.write(chunk);
|
|
37
|
+
}
|
|
38
|
+
else if (chunk.includes("\u0003")) {
|
|
39
|
+
this.write("\u0003");
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
ended = () => { this.end(); };
|
|
43
|
+
failed = (error) => { this.destroy(error); };
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +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;IAIV,MAAM;IAH1B,KAAK,CAAU;IAChB,IAAI,GAAG,KAAK,CAAC;IAErB,YAA6B,MAAqB;QAChD,KAAK,EAAE,CAAC;sBADmB,MAAM;QAEjC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;QACnC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,UAAU,CAAC,OAAgB;QACzB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,IAAa;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEgB,OAAO,GAAG,CAAC,KAAsB,EAAQ,EAAE;QAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEe,KAAK,GAAG,GAAS,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,GAAG,CAAC,KAAY,EAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5E"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { AgentEventListener } from "../events.js";
|
|
2
|
+
import type { OutputStream } from "../render.js";
|
|
3
|
+
export interface LiveRegionOptions {
|
|
4
|
+
readonly stream: OutputStream;
|
|
5
|
+
/** Re-read on every paint: a resize changes it under us. */
|
|
6
|
+
readonly width: () => number;
|
|
7
|
+
readonly height?: () => number;
|
|
8
|
+
/** Final answers can be redirected independently of terminal chrome. */
|
|
9
|
+
readonly answerStream?: OutputStream;
|
|
10
|
+
readonly now?: () => number;
|
|
11
|
+
readonly tickMs?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface LiveRegion {
|
|
14
|
+
readonly listener: AgentEventListener;
|
|
15
|
+
/** Erases the region and stops the clock. Safe to call twice. */
|
|
16
|
+
stop(): void;
|
|
17
|
+
/** Drops the diff baseline and repaints, for a resize. */
|
|
18
|
+
resized(): void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Drives the live region from the event stream.
|
|
22
|
+
*
|
|
23
|
+
* The three pure pieces do the work — `reduce` holds the state, `view` turns it
|
|
24
|
+
* into lines, `Painter` writes only what changed. This is the wiring between
|
|
25
|
+
* them, and the only part that owns a timer or a stream.
|
|
26
|
+
*/
|
|
27
|
+
export declare function createLiveRegion(options: LiveRegionOptions): LiveRegion;
|
|
28
|
+
/**
|
|
29
|
+
* The usable width, or a sane default.
|
|
30
|
+
*
|
|
31
|
+
* `columns` is not merely absent off a terminal — it can be `0`, which `??`
|
|
32
|
+
* lets through and which then collapses every line to the minimum. A width has
|
|
33
|
+
* to be positive to mean anything.
|
|
34
|
+
*/
|
|
35
|
+
export declare function terminalWidth(stream: {
|
|
36
|
+
columns?: number;
|
|
37
|
+
}): number;
|
|
38
|
+
//# sourceMappingURL=live.d.ts.map
|