@duetso/agent 0.1.53 → 0.1.55
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 +13 -2
- package/dist/package.json +1 -1
- package/dist/src/cli/help.js +1 -1
- package/dist/src/cli/memory-db.d.ts.map +1 -1
- package/dist/src/cli/memory-db.js +14 -5
- package/dist/src/cli/memory-db.js.map +1 -1
- package/dist/src/cli/memory-tui.js +1 -1
- package/dist/src/cli/memory-tui.js.map +1 -1
- package/dist/src/cli/resume-hint.d.ts +1 -1
- package/dist/src/cli/resume-hint.d.ts.map +1 -1
- package/dist/src/cli/resume-hint.js +2 -2
- package/dist/src/cli/resume-hint.js.map +1 -1
- package/dist/src/cli/run.d.ts +1 -1
- package/dist/src/cli/run.d.ts.map +1 -1
- package/dist/src/cli/run.js +7 -6
- package/dist/src/cli/run.js.map +1 -1
- package/dist/src/memory/context-pack.d.ts +29 -0
- package/dist/src/memory/context-pack.d.ts.map +1 -0
- package/dist/src/memory/context-pack.js +40 -0
- package/dist/src/memory/context-pack.js.map +1 -0
- package/dist/src/memory/embedding-worker.d.ts +26 -0
- package/dist/src/memory/embedding-worker.d.ts.map +1 -0
- package/dist/src/memory/embedding-worker.js +145 -0
- package/dist/src/memory/embedding-worker.js.map +1 -0
- package/dist/src/memory/embedding.d.ts +59 -0
- package/dist/src/memory/embedding.d.ts.map +1 -0
- package/dist/src/memory/embedding.js +126 -0
- package/dist/src/memory/embedding.js.map +1 -0
- package/dist/src/memory/loader.d.ts +81 -0
- package/dist/src/memory/loader.d.ts.map +1 -0
- package/dist/src/memory/loader.js +162 -0
- package/dist/src/memory/loader.js.map +1 -0
- package/dist/src/memory/migrations.d.ts +54 -0
- package/dist/src/memory/migrations.d.ts.map +1 -0
- package/dist/src/memory/migrations.js +199 -0
- package/dist/src/memory/migrations.js.map +1 -0
- package/dist/src/memory/observational.d.ts +18 -0
- package/dist/src/memory/observational.d.ts.map +1 -1
- package/dist/src/memory/observational.js +63 -14
- package/dist/src/memory/observational.js.map +1 -1
- package/dist/src/memory/pglite.d.ts +5 -5
- package/dist/src/memory/pglite.d.ts.map +1 -1
- package/dist/src/memory/pglite.js +20 -6
- package/dist/src/memory/pglite.js.map +1 -1
- package/dist/src/memory/recall.d.ts +49 -0
- package/dist/src/memory/recall.d.ts.map +1 -0
- package/dist/src/memory/recall.js +185 -0
- package/dist/src/memory/recall.js.map +1 -0
- package/dist/src/memory/storage.d.ts +36 -1
- package/dist/src/memory/storage.d.ts.map +1 -1
- package/dist/src/memory/storage.js +68 -14
- package/dist/src/memory/storage.js.map +1 -1
- package/dist/src/memory/store.d.ts +33 -1
- package/dist/src/memory/store.d.ts.map +1 -1
- package/dist/src/memory/store.js +22 -16
- package/dist/src/memory/store.js.map +1 -1
- package/dist/src/session/session.d.ts.map +1 -1
- package/dist/src/session/session.js +5 -1
- package/dist/src/session/session.js.map +1 -1
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +361 -30
- package/dist/src/tui/app.js.map +1 -1
- package/dist/src/tui/autocomplete.d.ts.map +1 -1
- package/dist/src/tui/autocomplete.js +5 -0
- package/dist/src/tui/autocomplete.js.map +1 -1
- package/dist/src/tui/clipboard.d.ts +28 -0
- package/dist/src/tui/clipboard.d.ts.map +1 -0
- package/dist/src/tui/clipboard.js +95 -0
- package/dist/src/tui/clipboard.js.map +1 -0
- package/dist/src/tui/history.d.ts +14 -0
- package/dist/src/tui/history.d.ts.map +1 -1
- package/dist/src/tui/history.js +21 -0
- package/dist/src/tui/history.js.map +1 -1
- package/dist/src/tui/recent-sessions.d.ts +51 -0
- package/dist/src/tui/recent-sessions.d.ts.map +1 -0
- package/dist/src/tui/recent-sessions.js +150 -0
- package/dist/src/tui/recent-sessions.js.map +1 -0
- package/dist/src/tui/starters.d.ts +92 -0
- package/dist/src/tui/starters.d.ts.map +1 -0
- package/dist/src/tui/starters.js +196 -0
- package/dist/src/tui/starters.js.map +1 -0
- package/dist/src/tui/theme.d.ts +2 -2
- package/dist/src/tui/theme.d.ts.map +1 -1
- package/dist/src/tui/theme.js +2 -2
- package/dist/src/tui/theme.js.map +1 -1
- package/dist/src/tui/transcript-log.d.ts +45 -0
- package/dist/src/tui/transcript-log.d.ts.map +1 -0
- package/dist/src/tui/transcript-log.js +76 -0
- package/dist/src/tui/transcript-log.js.map +1 -0
- package/dist/src/turn-runner/tools.d.ts +28 -1
- package/dist/src/turn-runner/tools.d.ts.map +1 -1
- package/dist/src/turn-runner/tools.js +135 -3
- package/dist/src/turn-runner/tools.js.map +1 -1
- package/dist/src/turn-runner/turn-runner.d.ts +1 -0
- package/dist/src/turn-runner/turn-runner.d.ts.map +1 -1
- package/dist/src/turn-runner/turn-runner.js +70 -3
- package/dist/src/turn-runner/turn-runner.js.map +1 -1
- package/dist/src/types/config.d.ts +12 -0
- package/dist/src/types/config.d.ts.map +1 -1
- package/dist/src/types/memory.d.ts +59 -21
- package/dist/src/types/memory.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/src/memory/schema.d.ts +0 -7
- package/dist/src/memory/schema.d.ts.map +0 -1
- package/dist/src/memory/schema.js +0 -21
- package/dist/src/memory/schema.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/session/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/session/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/tui/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/tui/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAyBlE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAMV,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAiC9B,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1F,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EACV,iBAAiB,EACjB,iBAAiB,IAAI,sBAAsB,EAC3C,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,uBAAuB,EACvB,+BAA+B,EAC/B,kCAAkC,EAClC,2BAA2B,EAC3B,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACnD,6DAA6D;IAC7D,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAUD;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAg2DvF"}
|
package/dist/src/tui/app.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { BoxRenderable, createCliRenderer, decodePasteBytes, fg, ScrollBoxRenderable, t, TextRenderable, TextareaRenderable, } from "@opentui/core";
|
|
2
|
+
import { writeClipboardText } from "./clipboard.js";
|
|
2
3
|
import { describeMacClipboardTypes, loadImageFromPath, looksLikeImageFilePath, persistPastedImage, sniffImageMimeType, tryReadClipboardImage, tryReadClipboardText, } from "./paste.js";
|
|
4
|
+
import { parseCopyArgument, selectCopyText } from "./transcript-log.js";
|
|
3
5
|
import { activeFileAutocompleteToken, activeSkillAutocompleteToken, AUTOCOMPLETE_LIMITS, BUILT_IN_SLASH_COMMANDS, fileAutocompleteMatches, formatQuestionOptionDescription, formatSkillAutocompleteDescription, moveQuestionOptionSelection, moveSkillAutocompleteSelection, questionPickerAnswerPayload, skillAutocompleteMatches, } from "./autocomplete.js";
|
|
6
|
+
import { homedir } from "node:os";
|
|
4
7
|
import { buildFileIndex } from "./file-index.js";
|
|
5
|
-
import {
|
|
8
|
+
import { DUET_BANNER_LINES_COMPACT, historyDisplayBlocks, limitHistoryDisplayBlocks, } from "./history.js";
|
|
9
|
+
import { listRecentSessions } from "./recent-sessions.js";
|
|
6
10
|
import { createSidebar, SIDEBAR_WIDTH } from "./sidebar.js";
|
|
11
|
+
import { orderedSelectableStarters, selectStarters } from "./starters.js";
|
|
7
12
|
import { COLORS, HINT_IDLE, HINT_RUNNING } from "./theme.js";
|
|
8
13
|
// Re-exports preserve the historical `tui/app.js` entry point used by tests
|
|
9
14
|
// and external callers; the implementations live in focused leaf modules.
|
|
@@ -24,8 +29,15 @@ const QUESTION_OPTION_LIMIT = AUTOCOMPLETE_LIMITS.questionOption;
|
|
|
24
29
|
*/
|
|
25
30
|
export async function runTui(input) {
|
|
26
31
|
const previousWindow = Object.getOwnPropertyDescriptor(globalThis, "window");
|
|
32
|
+
// useMouse: true so the scroll wheel reaches the transcript
|
|
33
|
+
// ScrollBoxRenderable. Drag-select for native copy still works in every
|
|
34
|
+
// mainstream terminal by holding Option (macOS) or Shift (most Linux
|
|
35
|
+
// terminals) while dragging, which bypasses the terminal's mouse
|
|
36
|
+
// capture. PageUp/PageDown and Shift+Up/Down keyboard bindings below are
|
|
37
|
+
// the no-mouse fallback.
|
|
27
38
|
const renderer = await createCliRenderer({
|
|
28
39
|
exitOnCtrlC: true,
|
|
40
|
+
useMouse: true,
|
|
29
41
|
useKittyKeyboard: {},
|
|
30
42
|
targetFps: 60,
|
|
31
43
|
});
|
|
@@ -258,6 +270,17 @@ export async function runTui(input) {
|
|
|
258
270
|
// Monotonic counter for the next `[Image #N]` placeholder. Reset alongside
|
|
259
271
|
// `pendingImages` so users see a fresh `#1` label after each submit.
|
|
260
272
|
let nextImageId = 1;
|
|
273
|
+
// Parallel record of user/agent message bodies driven by the same code
|
|
274
|
+
// paths that render them into the transcript. The `/copy` slash command
|
|
275
|
+
// and Ctrl+Y keystroke read from this log instead of trying to walk the
|
|
276
|
+
// ScrollBoxRenderable, which only stores presentation lines.
|
|
277
|
+
const transcriptLog = [];
|
|
278
|
+
function recordTranscriptEntry(kind, text) {
|
|
279
|
+
const trimmed = text.trim();
|
|
280
|
+
if (!trimmed)
|
|
281
|
+
return;
|
|
282
|
+
transcriptLog.push({ kind, text: trimmed });
|
|
283
|
+
}
|
|
261
284
|
let lastTerminal;
|
|
262
285
|
let latestContextUsage;
|
|
263
286
|
// Running USD total across every settled turn in this session. Reset only
|
|
@@ -415,12 +438,18 @@ export async function runTui(input) {
|
|
|
415
438
|
}
|
|
416
439
|
});
|
|
417
440
|
function renderSetupIntro(skills, agentFiles) {
|
|
418
|
-
|
|
441
|
+
// Compact 3-row wordmark. The full DUET_BANNER_LINES is ~6 rows tall
|
|
442
|
+
// and pushed the starter list off-screen on small terminals; this one
|
|
443
|
+
// keeps the brand mark visible while leaving room for the ice-break
|
|
444
|
+
// prompts to land above the fold.
|
|
445
|
+
for (const line of DUET_BANNER_LINES_COMPACT)
|
|
419
446
|
appendLine(line, COLORS.status);
|
|
420
|
-
|
|
421
|
-
appendLine(
|
|
422
|
-
|
|
423
|
-
|
|
447
|
+
appendLine(" ", COLORS.hint);
|
|
448
|
+
appendLine(" ", COLORS.hint);
|
|
449
|
+
// One-line header. Keeps cwd/model context visible without burning
|
|
450
|
+
// another five rows. Provenance (env/file source) is intentionally
|
|
451
|
+
// dropped here — surface it via /whoami later.
|
|
452
|
+
appendLine(formatBootHeader(input), COLORS.status);
|
|
424
453
|
if (input.versionNoticePromise) {
|
|
425
454
|
const versionLine = new TextRenderable(renderer, {
|
|
426
455
|
content: "[version] checking for updates…",
|
|
@@ -438,19 +467,174 @@ export async function runTui(input) {
|
|
|
438
467
|
}
|
|
439
468
|
});
|
|
440
469
|
}
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
else {
|
|
470
|
+
// Only mention agent files when one is actually loaded; "[agent file]
|
|
471
|
+
// none" is noise on every empty boot.
|
|
472
|
+
if (agentFiles.length > 0) {
|
|
445
473
|
appendLine(`[agent file] ${agentFiles.map((file) => file.name).join(", ")}`, COLORS.hint);
|
|
446
474
|
}
|
|
447
|
-
|
|
448
|
-
|
|
475
|
+
renderStarters(skills);
|
|
476
|
+
}
|
|
477
|
+
function formatBootHeader(headerInput) {
|
|
478
|
+
const cwdLabel = shortenCwd(headerInput.workDir);
|
|
479
|
+
return `DUET AGENT v${headerInput.packageVersion} · ${cwdLabel} · ${headerInput.modelName} + ${headerInput.memoryModelName}`;
|
|
480
|
+
}
|
|
481
|
+
function shortenCwd(cwd) {
|
|
482
|
+
const home = homedir();
|
|
483
|
+
if (cwd === home)
|
|
484
|
+
return "~";
|
|
485
|
+
if (cwd.startsWith(`${home}/`))
|
|
486
|
+
return `~${cwd.slice(home.length)}`;
|
|
487
|
+
return cwd;
|
|
488
|
+
}
|
|
489
|
+
const starterEntries = [];
|
|
490
|
+
// Lines we render for the starter section so we can repaint highlights
|
|
491
|
+
// and tear them all down on dismissal. Includes the headline, numbered
|
|
492
|
+
// rows, the optional resume row, and the two trailing hint rows.
|
|
493
|
+
const starterRefs = [];
|
|
494
|
+
// Indexes within `starterRefs` that correspond to numbered rows; used
|
|
495
|
+
// to repaint highlight on arrow / digit navigation.
|
|
496
|
+
const starterRowIndexes = [];
|
|
497
|
+
let highlightedStarterIndex = 0;
|
|
498
|
+
let startersVisible = false;
|
|
499
|
+
function startersAreVisible() {
|
|
500
|
+
return startersVisible;
|
|
501
|
+
}
|
|
502
|
+
function renderStarters(skills) {
|
|
503
|
+
// Read recent sessions off disk synchronously. The helper swallows fs
|
|
504
|
+
// errors and returns an empty list; a missing/empty ~/.duet/sessions
|
|
505
|
+
// directory is the common first-boot case.
|
|
506
|
+
const recentSessions = listRecentSessions({
|
|
507
|
+
excludeId: input.sessionId,
|
|
508
|
+
limit: 4,
|
|
509
|
+
});
|
|
510
|
+
const result = selectStarters({
|
|
511
|
+
cwd: input.workDir,
|
|
512
|
+
sessionHistory: input.history,
|
|
513
|
+
recentSessions,
|
|
514
|
+
});
|
|
515
|
+
// Selectable rows in render order. Recent sessions lead so returning
|
|
516
|
+
// users hit "pick up the thread" first; new users see the cwd starters
|
|
517
|
+
// under the original "what should we work on today?" headline.
|
|
518
|
+
const ordered = orderedSelectableStarters(result);
|
|
519
|
+
starterEntries.length = 0;
|
|
520
|
+
for (const row of ordered) {
|
|
521
|
+
if (row.kind === "recent" && row.sessionId !== undefined) {
|
|
522
|
+
starterEntries.push({
|
|
523
|
+
kind: "recent",
|
|
524
|
+
label: row.label,
|
|
525
|
+
submit: row.submit,
|
|
526
|
+
sessionId: row.sessionId,
|
|
527
|
+
});
|
|
528
|
+
}
|
|
529
|
+
else {
|
|
530
|
+
starterEntries.push({ kind: "prompt", label: row.label, submit: row.submit });
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
const hasRecent = result.recentSessions.length > 0;
|
|
534
|
+
starterRowIndexes.length = 0;
|
|
535
|
+
appendLine(" ", COLORS.hint);
|
|
536
|
+
if (hasRecent) {
|
|
537
|
+
// Returning user: continuity first.
|
|
538
|
+
starterRefs.push(addLine("pick up the thread", COLORS.agent));
|
|
539
|
+
appendLine(" ", COLORS.hint);
|
|
540
|
+
for (let i = 0; i < result.recentSessions.length; i += 1) {
|
|
541
|
+
const ref = addLine(formatStarterRow(i, false), COLORS.hint);
|
|
542
|
+
starterRowIndexes.push(starterRefs.length);
|
|
543
|
+
starterRefs.push(ref);
|
|
544
|
+
}
|
|
545
|
+
appendLine(" ", COLORS.hint);
|
|
546
|
+
starterRefs.push(addLine("or start something new", COLORS.agent));
|
|
547
|
+
appendLine(" ", COLORS.hint);
|
|
548
|
+
for (let j = 0; j < result.starters.length; j += 1) {
|
|
549
|
+
const i = result.recentSessions.length + j;
|
|
550
|
+
const ref = addLine(formatStarterRow(i, false), COLORS.hint);
|
|
551
|
+
starterRowIndexes.push(starterRefs.length);
|
|
552
|
+
starterRefs.push(ref);
|
|
553
|
+
}
|
|
449
554
|
}
|
|
450
555
|
else {
|
|
451
|
-
|
|
452
|
-
|
|
556
|
+
// New user: original cwd-only ice-break.
|
|
557
|
+
starterRefs.push(addLine("what should we work on today?", COLORS.agent));
|
|
558
|
+
appendLine(" ", COLORS.hint);
|
|
559
|
+
for (let i = 0; i < starterEntries.length; i += 1) {
|
|
560
|
+
const ref = addLine(formatStarterRow(i, false), COLORS.hint);
|
|
561
|
+
starterRowIndexes.push(starterRefs.length);
|
|
562
|
+
starterRefs.push(ref);
|
|
563
|
+
}
|
|
453
564
|
}
|
|
565
|
+
appendLine(" ", COLORS.hint);
|
|
566
|
+
starterRefs.push(addLine("type a number to run, ↑/↓ to highlight, or just start typing.", COLORS.hint));
|
|
567
|
+
starterRefs.push(addLine(`✦ ${skills.length} skill${skills.length === 1 ? "" : "s"} · /help`, COLORS.hint));
|
|
568
|
+
startersVisible = starterEntries.length > 0;
|
|
569
|
+
if (startersVisible) {
|
|
570
|
+
highlightedStarterIndex = 0;
|
|
571
|
+
paintStarterHighlight();
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
function addLine(content, fg) {
|
|
575
|
+
const line = new TextRenderable(renderer, { content: content || " ", fg });
|
|
576
|
+
transcript.add(line);
|
|
577
|
+
return line;
|
|
578
|
+
}
|
|
579
|
+
function formatStarterRow(index, highlighted) {
|
|
580
|
+
const entry = starterEntries[index];
|
|
581
|
+
const text = entry?.label ?? "";
|
|
582
|
+
const number = index + 1;
|
|
583
|
+
const arrow = highlighted ? "▶" : "→";
|
|
584
|
+
const numberCell = highlighted ? `[${number}]` : ` ${number} `;
|
|
585
|
+
return ` ${numberCell} ${arrow} ${text}`;
|
|
586
|
+
}
|
|
587
|
+
function paintStarterHighlight() {
|
|
588
|
+
for (let i = 0; i < starterRowIndexes.length; i += 1) {
|
|
589
|
+
const ref = starterRefs[starterRowIndexes[i]];
|
|
590
|
+
const isHighlighted = i === highlightedStarterIndex;
|
|
591
|
+
ref.content = formatStarterRow(i, isHighlighted);
|
|
592
|
+
ref.fg = isHighlighted ? COLORS.user : COLORS.hint;
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
function moveStarterHighlight(delta) {
|
|
596
|
+
if (!startersVisible || starterEntries.length === 0)
|
|
597
|
+
return;
|
|
598
|
+
const next = (highlightedStarterIndex + delta + starterEntries.length) % starterEntries.length;
|
|
599
|
+
highlightedStarterIndex = next;
|
|
600
|
+
paintStarterHighlight();
|
|
601
|
+
}
|
|
602
|
+
function jumpStarterHighlight(targetIndex) {
|
|
603
|
+
if (!startersVisible)
|
|
604
|
+
return false;
|
|
605
|
+
if (targetIndex < 0 || targetIndex >= starterEntries.length)
|
|
606
|
+
return false;
|
|
607
|
+
highlightedStarterIndex = targetIndex;
|
|
608
|
+
paintStarterHighlight();
|
|
609
|
+
return true;
|
|
610
|
+
}
|
|
611
|
+
function dismissStarters() {
|
|
612
|
+
if (!startersVisible && starterRefs.length === 0)
|
|
613
|
+
return;
|
|
614
|
+
for (const ref of starterRefs) {
|
|
615
|
+
transcript.remove(ref.id);
|
|
616
|
+
ref.destroy();
|
|
617
|
+
}
|
|
618
|
+
starterRefs.length = 0;
|
|
619
|
+
starterRowIndexes.length = 0;
|
|
620
|
+
starterEntries.length = 0;
|
|
621
|
+
startersVisible = false;
|
|
622
|
+
}
|
|
623
|
+
function submitHighlightedStarter() {
|
|
624
|
+
if (!startersVisible)
|
|
625
|
+
return false;
|
|
626
|
+
const entry = starterEntries[highlightedStarterIndex];
|
|
627
|
+
if (!entry)
|
|
628
|
+
return false;
|
|
629
|
+
dismissStarters();
|
|
630
|
+
// Recent-session rows reuse the prompt text in the *current* session
|
|
631
|
+
// rather than tearing down the runtime to switch sessions. The agent
|
|
632
|
+
// won't have prior context, but the user lands on the same task with
|
|
633
|
+
// one keystroke instead of typing it again. Documented tradeoff: a
|
|
634
|
+
// future iteration can swap this for true cross-session resume once
|
|
635
|
+
// the session manager exposes a hot-swap API.
|
|
636
|
+
submit(entry.submit);
|
|
637
|
+
return true;
|
|
454
638
|
}
|
|
455
639
|
function renderUsage(usage) {
|
|
456
640
|
if (!usage)
|
|
@@ -501,6 +685,7 @@ export async function runTui(input) {
|
|
|
501
685
|
activeReasoningStream = renderDelta(activeReasoningStream, "[reasoning]", step.delta, COLORS.reasoning, true);
|
|
502
686
|
}
|
|
503
687
|
else if (step.type === "text") {
|
|
688
|
+
recordTranscriptEntry("agent", step.text);
|
|
504
689
|
if (activeTextStream) {
|
|
505
690
|
finalizeDelta(activeTextStream, step.text);
|
|
506
691
|
activeTextStream = undefined;
|
|
@@ -650,10 +835,6 @@ export async function runTui(input) {
|
|
|
650
835
|
return truncateToolText(`${event.message}\n${content}`);
|
|
651
836
|
}
|
|
652
837
|
// ---- input handling --------------------------------------------------------
|
|
653
|
-
// Track shift state for the most recent Enter keypress. The focused
|
|
654
|
-
// InputRenderable handles its own `enter` event after onKeyDown fires, so we
|
|
655
|
-
// capture the modifier here and read it during the ENTER event below.
|
|
656
|
-
let lastEnterShift = false;
|
|
657
838
|
let skillAutocompleteSkills = [];
|
|
658
839
|
let skillAutocompleteToken;
|
|
659
840
|
let skillAutocompleteItems = [];
|
|
@@ -770,7 +951,9 @@ export async function runTui(input) {
|
|
|
770
951
|
const answers = questionPickerAnswerPayload(pendingQuestions, questionOptionSelectedIndex);
|
|
771
952
|
if (!answers)
|
|
772
953
|
return false;
|
|
773
|
-
|
|
954
|
+
const answerText = Object.values(answers).join("\n");
|
|
955
|
+
recordTranscriptEntry("user", answerText);
|
|
956
|
+
appendBlock("you:", answerText, COLORS.user);
|
|
774
957
|
void input.session
|
|
775
958
|
.answer({ questions: pendingQuestions, answers, behavior: "follow_up" })
|
|
776
959
|
.catch(reportError);
|
|
@@ -968,10 +1151,71 @@ export async function runTui(input) {
|
|
|
968
1151
|
key.preventDefault();
|
|
969
1152
|
void requestExit();
|
|
970
1153
|
});
|
|
1154
|
+
// Keyboard scroll bindings for the transcript. Mirrors the mouse wheel
|
|
1155
|
+
// for terminals that swallow mouse events (tmux without mouse mode, ssh
|
|
1156
|
+
// sessions where the local terminal owns the wheel, screen readers).
|
|
1157
|
+
// Page = one viewport; Shift+arrow = three lines, matching wheel cadence.
|
|
1158
|
+
function scrollTranscriptByLines(delta) {
|
|
1159
|
+
transcript.scrollBy({ x: 0, y: delta });
|
|
1160
|
+
}
|
|
1161
|
+
function scrollTranscriptByPage(direction) {
|
|
1162
|
+
// Subtract 2 to account for the top+bottom border rows; padding lives
|
|
1163
|
+
// inside the scroll viewport and does not need to be deducted.
|
|
1164
|
+
const viewport = Math.max(1, transcript.height - 2);
|
|
1165
|
+
transcript.scrollBy({ x: 0, y: direction * viewport });
|
|
1166
|
+
}
|
|
971
1167
|
// Attach directly to the focused InputRenderable. The Textarea-based input
|
|
972
1168
|
// consumes escape via its own keybindings before any global keypress handler
|
|
973
1169
|
// fires, so we intercept at the Renderable's onKeyDown hook which runs first.
|
|
974
1170
|
inputField.onKeyDown = (key) => {
|
|
1171
|
+
if (key.name === "pageup") {
|
|
1172
|
+
scrollTranscriptByPage(-1);
|
|
1173
|
+
key.preventDefault();
|
|
1174
|
+
return;
|
|
1175
|
+
}
|
|
1176
|
+
if (key.name === "pagedown") {
|
|
1177
|
+
scrollTranscriptByPage(1);
|
|
1178
|
+
key.preventDefault();
|
|
1179
|
+
return;
|
|
1180
|
+
}
|
|
1181
|
+
if (key.shift && key.name === "up" && !key.ctrl && !key.meta && !key.super) {
|
|
1182
|
+
scrollTranscriptByLines(-3);
|
|
1183
|
+
key.preventDefault();
|
|
1184
|
+
return;
|
|
1185
|
+
}
|
|
1186
|
+
if (key.shift && key.name === "down" && !key.ctrl && !key.meta && !key.super) {
|
|
1187
|
+
scrollTranscriptByLines(3);
|
|
1188
|
+
key.preventDefault();
|
|
1189
|
+
return;
|
|
1190
|
+
}
|
|
1191
|
+
// Boot starter navigation. Only intercepts when the starter section is
|
|
1192
|
+
// still on screen; once dismissed (by composition or first submit) all
|
|
1193
|
+
// of these branches no-op and keys flow normally to the input.
|
|
1194
|
+
if (startersAreVisible() && inputField.plainText.length === 0) {
|
|
1195
|
+
if (key.name === "up") {
|
|
1196
|
+
moveStarterHighlight(-1);
|
|
1197
|
+
key.preventDefault();
|
|
1198
|
+
return;
|
|
1199
|
+
}
|
|
1200
|
+
if (key.name === "down") {
|
|
1201
|
+
moveStarterHighlight(1);
|
|
1202
|
+
key.preventDefault();
|
|
1203
|
+
return;
|
|
1204
|
+
}
|
|
1205
|
+
if (key.name &&
|
|
1206
|
+
key.name.length === 1 &&
|
|
1207
|
+
key.name >= "1" &&
|
|
1208
|
+
key.name <= "9" &&
|
|
1209
|
+
!key.ctrl &&
|
|
1210
|
+
!key.meta &&
|
|
1211
|
+
!key.super) {
|
|
1212
|
+
const target = Number.parseInt(key.name, 10) - 1;
|
|
1213
|
+
if (jumpStarterHighlight(target)) {
|
|
1214
|
+
key.preventDefault();
|
|
1215
|
+
return;
|
|
1216
|
+
}
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
975
1219
|
// Cmd+V / Ctrl+V keystroke trigger. Many terminals (Warp in particular,
|
|
976
1220
|
// and macOS Terminal.app for binary clipboards) do not forward a paste
|
|
977
1221
|
// event to TUI programs on Cmd+V — they handle the clipboard at the app
|
|
@@ -988,6 +1232,15 @@ export async function runTui(input) {
|
|
|
988
1232
|
void triggerClipboardProbe("keystroke");
|
|
989
1233
|
return;
|
|
990
1234
|
}
|
|
1235
|
+
// Ctrl+Y — emacs-style "yank," repurposed here as the keyboard hotkey
|
|
1236
|
+
// for the `/copy` slash command. macOS Cmd+C is owned by the terminal
|
|
1237
|
+
// emulator and never reaches the TUI, so Ctrl+Y is the closest thing
|
|
1238
|
+
// to a real copy keystroke we can deliver across all terminals.
|
|
1239
|
+
if (key.name === "y" && key.ctrl && !key.shift && !key.super && !key.meta) {
|
|
1240
|
+
key.preventDefault();
|
|
1241
|
+
void handleCopySlashCommand("/copy");
|
|
1242
|
+
return;
|
|
1243
|
+
}
|
|
991
1244
|
if (skillAutocompleteIsOpen()) {
|
|
992
1245
|
if (key.name === "up") {
|
|
993
1246
|
skillAutocompleteSelectedIndex = moveSkillAutocompleteSelection(skillAutocompleteSelectedIndex, skillAutocompleteItems.length, -1);
|
|
@@ -1059,17 +1312,26 @@ export async function runTui(input) {
|
|
|
1059
1312
|
}
|
|
1060
1313
|
}
|
|
1061
1314
|
if (key.name === "return" || key.name === "enter") {
|
|
1062
|
-
|
|
1315
|
+
// Shift+Enter inserts a literal newline at the cursor, matching every
|
|
1316
|
+
// modern chat composer (Slack, Claude Code, ChatGPT, Discord). Plain
|
|
1317
|
+
// Enter always submits — when the agent is running the submit path
|
|
1318
|
+
// queues the message as a follow-up; otherwise it kicks off a new turn.
|
|
1319
|
+
key.preventDefault();
|
|
1320
|
+
if (key.shift) {
|
|
1321
|
+
inputField.insertText("\n");
|
|
1322
|
+
return;
|
|
1323
|
+
}
|
|
1063
1324
|
const value = inputField.plainText.trim();
|
|
1064
1325
|
inputField.clear();
|
|
1065
|
-
key.preventDefault();
|
|
1066
1326
|
if (value) {
|
|
1067
|
-
submit(value
|
|
1327
|
+
submit(value);
|
|
1068
1328
|
}
|
|
1069
1329
|
else if (questionPickerIsOpen()) {
|
|
1070
1330
|
submitSelectedQuestionOption();
|
|
1071
1331
|
}
|
|
1072
|
-
|
|
1332
|
+
else if (startersAreVisible()) {
|
|
1333
|
+
submitHighlightedStarter();
|
|
1334
|
+
}
|
|
1073
1335
|
return;
|
|
1074
1336
|
}
|
|
1075
1337
|
if (key.name === "escape") {
|
|
@@ -1077,7 +1339,14 @@ export async function runTui(input) {
|
|
|
1077
1339
|
return;
|
|
1078
1340
|
}
|
|
1079
1341
|
};
|
|
1080
|
-
inputField.onContentChange = () =>
|
|
1342
|
+
inputField.onContentChange = () => {
|
|
1343
|
+
// First real keystroke into the input collapses the starter section
|
|
1344
|
+
// — the user is composing their own prompt, so the suggestions get
|
|
1345
|
+
// out of the way for the rest of the session.
|
|
1346
|
+
if (startersAreVisible() && inputField.plainText.length > 0)
|
|
1347
|
+
dismissStarters();
|
|
1348
|
+
refreshAutocomplete();
|
|
1349
|
+
};
|
|
1081
1350
|
inputField.onCursorChange = () => refreshAutocomplete();
|
|
1082
1351
|
// Paste handling. Terminals that forward binary clipboard contents (kitty,
|
|
1083
1352
|
// ghostty, recent iTerm2 builds) deliver image bytes directly via the paste
|
|
@@ -1222,7 +1491,11 @@ export async function runTui(input) {
|
|
|
1222
1491
|
appendBlock("[paste]", `clipboard probe failed: ${error instanceof Error ? error.message : String(error)}`, COLORS.error);
|
|
1223
1492
|
}
|
|
1224
1493
|
}
|
|
1225
|
-
function submit(message
|
|
1494
|
+
function submit(message) {
|
|
1495
|
+
// First user submit collapses the boot starter section permanently for
|
|
1496
|
+
// this session, even when the prompt came from autocomplete or paste.
|
|
1497
|
+
if (startersAreVisible())
|
|
1498
|
+
dismissStarters();
|
|
1226
1499
|
// Slash-style attach commands run locally and never reach the runner so
|
|
1227
1500
|
// users on terminals that do not forward image bytes still have a way to
|
|
1228
1501
|
// attach images by path.
|
|
@@ -1239,7 +1512,12 @@ export async function runTui(input) {
|
|
|
1239
1512
|
appendBlock("[paste]", "cleared pending image attachments", COLORS.system);
|
|
1240
1513
|
return;
|
|
1241
1514
|
}
|
|
1515
|
+
if (message === "/copy" || message.startsWith("/copy ")) {
|
|
1516
|
+
void handleCopySlashCommand(message);
|
|
1517
|
+
return;
|
|
1518
|
+
}
|
|
1242
1519
|
const submittedImages = pendingImages;
|
|
1520
|
+
recordTranscriptEntry("user", message);
|
|
1243
1521
|
appendBlock("you:", message, COLORS.user);
|
|
1244
1522
|
// Render attachments as a separate hint-colored footnote rather than
|
|
1245
1523
|
// inlining them into the user-message block. Keeps the transcript
|
|
@@ -1255,13 +1533,49 @@ export async function runTui(input) {
|
|
|
1255
1533
|
// Reset before dispatch so an in-flight error does not leave the user
|
|
1256
1534
|
// double-charged with the same attachments on retry.
|
|
1257
1535
|
clearPendingImages();
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1536
|
+
// Every submit — running or idle — is a follow_up. While the agent is
|
|
1537
|
+
// running this queues; while idle it kicks off a fresh turn. Single
|
|
1538
|
+
// mental model: type, press Enter, your message lands.
|
|
1539
|
+
void input.session.prompt({ message, behavior: "follow_up", images }).catch(reportError);
|
|
1540
|
+
if (!running) {
|
|
1541
|
+
markRunning();
|
|
1542
|
+
}
|
|
1543
|
+
}
|
|
1544
|
+
/**
|
|
1545
|
+
* Resolve a `/copy ...` invocation to clipboard text and pipe it to the
|
|
1546
|
+
* OS clipboard. Surfaces every failure mode in the transcript so users on
|
|
1547
|
+
* minimal Linux installs see exactly which writer is missing (e.g.
|
|
1548
|
+
* "install xclip or wl-clipboard").
|
|
1549
|
+
*/
|
|
1550
|
+
async function handleCopySlashCommand(raw) {
|
|
1551
|
+
const argumentRaw = raw === "/copy" ? "" : raw.slice("/copy ".length);
|
|
1552
|
+
const argument = parseCopyArgument(argumentRaw);
|
|
1553
|
+
if (argument === undefined) {
|
|
1554
|
+
appendBlock("[copy]", "Usage: /copy [last|all|<N>] — last (default) copies the most recent agent reply", COLORS.system);
|
|
1261
1555
|
return;
|
|
1262
1556
|
}
|
|
1263
|
-
|
|
1264
|
-
|
|
1557
|
+
const text = selectCopyText(transcriptLog, argument);
|
|
1558
|
+
if (!text) {
|
|
1559
|
+
appendBlock("[copy]", "nothing to copy yet", COLORS.system);
|
|
1560
|
+
return;
|
|
1561
|
+
}
|
|
1562
|
+
const result = await writeClipboardText(text);
|
|
1563
|
+
if (result.ok) {
|
|
1564
|
+
const summary = describeCopySelection(argument, text.length);
|
|
1565
|
+
appendBlock("[copy]", `copied ${summary} to clipboard via ${result.via}`, COLORS.system);
|
|
1566
|
+
}
|
|
1567
|
+
else {
|
|
1568
|
+
appendBlock("[copy]", `clipboard write failed: ${result.error ?? "unknown error"}` +
|
|
1569
|
+
(process.platform === "linux" ? "\nInstall one of: wl-clipboard, xclip, xsel" : ""), COLORS.error);
|
|
1570
|
+
}
|
|
1571
|
+
}
|
|
1572
|
+
function describeCopySelection(argument, length) {
|
|
1573
|
+
const chars = `${length} char${length === 1 ? "" : "s"}`;
|
|
1574
|
+
if (argument === "last")
|
|
1575
|
+
return `last message (${chars})`;
|
|
1576
|
+
if (argument === "all")
|
|
1577
|
+
return `full transcript (${chars})`;
|
|
1578
|
+
return `last ${argument} messages (${chars})`;
|
|
1265
1579
|
}
|
|
1266
1580
|
async function handleImageSlashCommand(raw) {
|
|
1267
1581
|
const rest = raw.slice("/image".length).trim();
|
|
@@ -1323,8 +1637,25 @@ export async function runTui(input) {
|
|
|
1323
1637
|
appendDisplayBlock(block);
|
|
1324
1638
|
}
|
|
1325
1639
|
}
|
|
1640
|
+
// Seed the copy-out log from full resumed history (not the trimmed display
|
|
1641
|
+
// slice) so `/copy all` and `/copy <N>` can reach back further than what is
|
|
1642
|
+
// actually rendered in the transcript on resume.
|
|
1643
|
+
if (input.history && input.history.length > 0) {
|
|
1644
|
+
for (const block of historyDisplayBlocks(input.history)) {
|
|
1645
|
+
if (block.kind === "user") {
|
|
1646
|
+
// History blocks for users are formatted as `you:\n<text>`; strip the
|
|
1647
|
+
// label so the clipboard text matches what the user originally typed.
|
|
1648
|
+
const stripped = block.content.replace(/^you:\n?/, "");
|
|
1649
|
+
recordTranscriptEntry("user", stripped);
|
|
1650
|
+
}
|
|
1651
|
+
else if (block.kind === "agent") {
|
|
1652
|
+
recordTranscriptEntry("agent", block.content);
|
|
1653
|
+
}
|
|
1654
|
+
}
|
|
1655
|
+
}
|
|
1326
1656
|
// ---- bootstrap initial prompt ----------------------------------------------
|
|
1327
1657
|
if (input.initialPrompt) {
|
|
1658
|
+
recordTranscriptEntry("user", input.initialPrompt);
|
|
1328
1659
|
appendBlock("you:", input.initialPrompt, COLORS.user);
|
|
1329
1660
|
void input.session
|
|
1330
1661
|
.prompt({ message: input.initialPrompt, behavior: "follow_up" })
|