@duetso/agent 0.1.115 → 0.1.116
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +1 -1
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +66 -6
- package/dist/src/tui/app.js.map +1 -1
- package/dist/src/tui/controllers.d.ts +1 -0
- package/dist/src/tui/controllers.d.ts.map +1 -1
- package/dist/src/tui/controllers.js +1 -2
- package/dist/src/tui/controllers.js.map +1 -1
- package/dist/src/tui/history-replay.d.ts +5 -1
- package/dist/src/tui/history-replay.d.ts.map +1 -1
- package/dist/src/tui/history-replay.js +3 -1
- package/dist/src/tui/history-replay.js.map +1 -1
- package/dist/src/tui/initial-prompt.d.ts +1 -3
- package/dist/src/tui/initial-prompt.d.ts.map +1 -1
- package/dist/src/tui/initial-prompt.js +2 -4
- package/dist/src/tui/initial-prompt.js.map +1 -1
- package/dist/src/tui/layout.d.ts +6 -0
- package/dist/src/tui/layout.d.ts.map +1 -1
- package/dist/src/tui/layout.js +44 -4
- package/dist/src/tui/layout.js.map +1 -1
- package/dist/src/tui/question-picker.d.ts +4 -8
- package/dist/src/tui/question-picker.d.ts.map +1 -1
- package/dist/src/tui/question-picker.js +1 -2
- package/dist/src/tui/question-picker.js.map +1 -1
- package/dist/src/tui/transcript-writer.d.ts +16 -4
- package/dist/src/tui/transcript-writer.d.ts.map +1 -1
- package/dist/src/tui/transcript-writer.js +34 -7
- package/dist/src/tui/transcript-writer.js.map +1 -1
- package/package.json +1 -1
package/dist/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/tui/app.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,KAAK,WAAW,EAAmC,MAAM,eAAe,CAAC;AAiBlF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,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;AAE3B,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,uBAAuB,EACvB,+BAA+B,EAC/B,kCAAkC,EAClC,qBAAqB,EACrB,8BAA8B,EAC9B,YAAY,EACZ,oBAAoB,EACpB,4BAA4B,EAC5B,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAEtB,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,WAAW,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/tui/app.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,KAAK,WAAW,EAAmC,MAAM,eAAe,CAAC;AAiBlF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,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;AAE3B,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,uBAAuB,EACvB,+BAA+B,EAC/B,kCAAkC,EAClC,qBAAqB,EACrB,8BAA8B,EAC9B,YAAY,EACZ,oBAAoB,EACpB,4BAA4B,EAC5B,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAEtB,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,WAAW,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAsSvF"}
|
package/dist/src/tui/app.js
CHANGED
|
@@ -30,11 +30,53 @@ export async function runTui(input) {
|
|
|
30
30
|
let lastSelectionText = "";
|
|
31
31
|
const transcriptWriter = new TranscriptWriter(renderer, ui.transcript, {
|
|
32
32
|
getLastSelectionText: () => lastSelectionText,
|
|
33
|
-
onBufferDestroyed: () =>
|
|
33
|
+
onBufferDestroyed: () => {
|
|
34
|
+
statusController.shutdown();
|
|
35
|
+
clearInterval(bannerWatcher);
|
|
36
|
+
},
|
|
34
37
|
});
|
|
38
|
+
// Record + render a user-attributed transcript block. Centralized so every
|
|
39
|
+
// code path that shows a `you:` block also refreshes the banner anchor
|
|
40
|
+
// and body. Returns the rendered lines so callers that want to group
|
|
41
|
+
// trailing rows (e.g. attachment summaries) with the user block can do so.
|
|
42
|
+
function appendUserBlock(message) {
|
|
43
|
+
transcriptWriter.recordEntry("user", message);
|
|
44
|
+
const lines = transcriptWriter.appendBlock("you:", message, COLORS.user);
|
|
45
|
+
transcriptWriter.setLatestUserBlock(lines);
|
|
46
|
+
ui.latestUserBannerText.content = clampBannerBody(message);
|
|
47
|
+
refreshLatestUserBannerVisibility();
|
|
48
|
+
return lines;
|
|
49
|
+
}
|
|
35
50
|
const appendLine = (content, fg) => transcriptWriter.appendLine(content, fg);
|
|
36
51
|
const appendBlock = (label, body, fg) => transcriptWriter.appendBlock(label, body, fg);
|
|
37
52
|
const recordTranscriptEntry = (kind, text) => transcriptWriter.recordEntry(kind, text);
|
|
53
|
+
// Show the sticky banner only when the latest `you:` block has scrolled
|
|
54
|
+
// off the top of the transcript viewport (i.e. the user scrolled the
|
|
55
|
+
// transcript down past their last message). When the block is still on
|
|
56
|
+
// screen or sits below the viewport (user scrolled up to read earlier
|
|
57
|
+
// history), the banner stays hidden. OpenTUI's `Renderable#y` getter
|
|
58
|
+
// walks the parent chain and already folds in `content.translateY =
|
|
59
|
+
// -scrollTop`, so child `screenY` values are in the same root-cumulative
|
|
60
|
+
// coordinate space as `viewport.screenY`; comparing against `scrollTop`
|
|
61
|
+
// (content-space) would mix coordinate systems.
|
|
62
|
+
function refreshLatestUserBannerVisibility() {
|
|
63
|
+
const lines = transcriptWriter.getLatestUserBlock();
|
|
64
|
+
if (lines.length === 0) {
|
|
65
|
+
ui.latestUserBanner.visible = false;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const last = lines[lines.length - 1];
|
|
69
|
+
const viewTop = ui.transcript.viewport.screenY;
|
|
70
|
+
const scrolledAboveViewport = last.screenY + last.height <= viewTop;
|
|
71
|
+
ui.latestUserBanner.visible = scrolledAboveViewport;
|
|
72
|
+
}
|
|
73
|
+
// Yoga lays out children asynchronously and ScrollBoxRenderable does not
|
|
74
|
+
// emit a scroll event, so poll on a short interval to keep the banner in
|
|
75
|
+
// sync with both new content (which shifts the sticky-bottom view) and
|
|
76
|
+
// manual scrolling. 100 ms is fast enough to feel responsive while staying
|
|
77
|
+
// well below the per-frame cost; the visibility check is just a handful
|
|
78
|
+
// of property reads.
|
|
79
|
+
const bannerWatcher = setInterval(refreshLatestUserBannerVisibility, 100);
|
|
38
80
|
const statusController = new StatusController({
|
|
39
81
|
renderer,
|
|
40
82
|
status: ui.status,
|
|
@@ -82,6 +124,7 @@ export async function runTui(input) {
|
|
|
82
124
|
transcriptWriter,
|
|
83
125
|
statusController,
|
|
84
126
|
appendBlock,
|
|
127
|
+
appendUserBlock,
|
|
85
128
|
recordTranscriptEntry,
|
|
86
129
|
reportError,
|
|
87
130
|
onPickerEscapeClose: setEscapeSuppress,
|
|
@@ -115,8 +158,7 @@ export async function runTui(input) {
|
|
|
115
158
|
// chrome to "running".
|
|
116
159
|
function dispatchTurn(message, behavior) {
|
|
117
160
|
const pending = pasteController.consume();
|
|
118
|
-
|
|
119
|
-
appendBlock("you:", message, COLORS.user);
|
|
161
|
+
appendUserBlock(message);
|
|
120
162
|
if (pending.length > 0) {
|
|
121
163
|
const lines = pending.map((p) => `📎 ${p.label}: ${p.path}`).join("\n");
|
|
122
164
|
appendBlock(null, lines, COLORS.hint);
|
|
@@ -219,14 +261,18 @@ export async function runTui(input) {
|
|
|
219
261
|
memoryModelName: input.memoryModelName,
|
|
220
262
|
upgradeStatus$: input.upgradeStatus$,
|
|
221
263
|
});
|
|
222
|
-
replayResumeHistory({
|
|
264
|
+
replayResumeHistory({
|
|
265
|
+
appendLine,
|
|
266
|
+
appendBlock,
|
|
267
|
+
recordTranscriptEntry,
|
|
268
|
+
setLatestUserBlock: (lines) => transcriptWriter.setLatestUserBlock(lines),
|
|
269
|
+
}, { history: input.history, resumeHistoryMessages: input.resumeHistoryMessages });
|
|
223
270
|
bootstrapInitialPrompt({
|
|
224
271
|
session: input.session,
|
|
225
272
|
initialPrompt: input.initialPrompt,
|
|
226
273
|
statusController,
|
|
227
274
|
stepRenderer,
|
|
228
|
-
|
|
229
|
-
recordTranscriptEntry,
|
|
275
|
+
appendUserBlock,
|
|
230
276
|
reportError,
|
|
231
277
|
});
|
|
232
278
|
await waitForRendererDestroy(renderer, () => {
|
|
@@ -236,7 +282,21 @@ export async function runTui(input) {
|
|
|
236
282
|
transcriptWriter.markDestroyed();
|
|
237
283
|
statusController.shutdown();
|
|
238
284
|
});
|
|
285
|
+
clearInterval(bannerWatcher);
|
|
239
286
|
unsubscribe();
|
|
240
287
|
return statusController.lastTerminal();
|
|
241
288
|
}
|
|
289
|
+
/**
|
|
290
|
+
* Clamp the body of the sticky "latest user message" banner so it does not
|
|
291
|
+
* dominate the screen for long pastes. We keep at most {@link BANNER_MAX_LINES}
|
|
292
|
+
* raw lines and append an ellipsis when more was trimmed; the banner itself
|
|
293
|
+
* soft-wraps so visual height may still exceed the raw line count.
|
|
294
|
+
*/
|
|
295
|
+
const BANNER_MAX_LINES = 3;
|
|
296
|
+
function clampBannerBody(text) {
|
|
297
|
+
const lines = text.split("\n");
|
|
298
|
+
if (lines.length <= BANNER_MAX_LINES)
|
|
299
|
+
return text;
|
|
300
|
+
return `${lines.slice(0, BANNER_MAX_LINES).join("\n")}…`;
|
|
301
|
+
}
|
|
242
302
|
//# sourceMappingURL=app.js.map
|
package/dist/src/tui/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/tui/app.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAA8B,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAe1D,wEAAwE;AACxE,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,uBAAuB,EACvB,+BAA+B,EAC/B,kCAAkC,EAClC,qBAAqB,EACrB,8BAA8B,EAC9B,YAAY,EACZ,oBAAoB,EACpB,4BAA4B,EAC5B,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAqEtB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAkB;IAC7C,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEjC,qEAAqE;IACrE,kEAAkE;IAClE,uEAAuE;IACvE,kCAAkC;IAClC,IAAI,iBAAiB,GAAG,EAAE,CAAC;IAE3B,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,EAAE;QACrE,oBAAoB,EAAE,GAAG,EAAE,CAAC,iBAAiB;QAC7C,iBAAiB,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/tui/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ export interface TuiControllerDeps {
|
|
|
23
23
|
transcriptWriter: TranscriptWriter;
|
|
24
24
|
statusController: StatusController;
|
|
25
25
|
appendBlock(label: string | null, body: string, fg: string): void;
|
|
26
|
+
appendUserBlock(message: string): void;
|
|
26
27
|
recordTranscriptEntry(kind: TranscriptEntry["kind"], text: string): void;
|
|
27
28
|
reportError(error: unknown): void;
|
|
28
29
|
onPickerEscapeClose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controllers.d.ts","sourceRoot":"","sources":["../../../src/tui/controllers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,sBAAsB,CAAC;IACrC,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,WAAW,CAAC;IACtB,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClE,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzE,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,mBAAmB,IAAI,IAAI,CAAC;IAC5B,oBAAoB,IAAI,MAAM,CAAC;IAC/B,sBAAsB,IAAI,IAAI,CAAC;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"controllers.d.ts","sourceRoot":"","sources":["../../../src/tui/controllers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,sBAAsB,CAAC;IACrC,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,WAAW,CAAC;IACtB,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClE,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzE,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,mBAAmB,IAAI,IAAI,CAAC;IAC5B,oBAAoB,IAAI,MAAM,CAAC;IAC/B,sBAAsB,IAAI,IAAI,CAAC;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,cAAc,CA4C5E"}
|
|
@@ -28,8 +28,7 @@ export function createTuiControllers(deps) {
|
|
|
28
28
|
inputField: deps.ui.inputField,
|
|
29
29
|
session: deps.session,
|
|
30
30
|
onEscapeClose: deps.onPickerEscapeClose,
|
|
31
|
-
|
|
32
|
-
recordTranscriptEntry: deps.recordTranscriptEntry,
|
|
31
|
+
appendUserBlock: deps.appendUserBlock,
|
|
33
32
|
reportError: deps.reportError,
|
|
34
33
|
markRunning: () => deps.statusController.markRunning(),
|
|
35
34
|
isRunning: () => deps.statusController.isRunning(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../../src/tui/controllers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../../src/tui/controllers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA8BtD;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAuB;IAC1D,MAAM,YAAY,GAAG,IAAI,sBAAsB,CAAC;QAC9C,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU;QAC9B,sBAAsB,EAAE,IAAI,CAAC,EAAE,CAAC,sBAAsB;QACtD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW;QAChC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa;QACpC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS;QAC5B,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW;QAChC,qBAAqB,EAAE,IAAI,CAAC,EAAE,CAAC,qBAAqB;QACpD,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC,oBAAoB;QAClD,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,mBAAmB;KACxC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;QACxC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa;QACpC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa;QACpC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,YAAY;QAClC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU;QAC9B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,mBAAmB;QACvC,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;QACtD,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;KACnD,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC;QAC1C,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU;QAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;KACxC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;QACxC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;KACpD,CAAC,CAAC;IAEH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;AAC3E,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AgentMessage } from "@earendil-works/pi-agent-core";
|
|
2
|
+
import type { TextRenderable } from "@opentui/core";
|
|
2
3
|
import type { TranscriptEntry } from "./transcript-log.js";
|
|
3
4
|
import { type HistoryDisplayBlock } from "./history.js";
|
|
4
5
|
/**
|
|
@@ -7,8 +8,11 @@ import { type HistoryDisplayBlock } from "./history.js";
|
|
|
7
8
|
*/
|
|
8
9
|
export interface HistoryReplayDeps {
|
|
9
10
|
appendLine(content: string, fg: string): void;
|
|
10
|
-
appendBlock(label: string | null, body: string, fg: string):
|
|
11
|
+
appendBlock(label: string | null, body: string, fg: string): TextRenderable[];
|
|
11
12
|
recordTranscriptEntry(kind: TranscriptEntry["kind"], text: string): void;
|
|
13
|
+
/** Capture the rendered lines of the most recently replayed user block
|
|
14
|
+
* so the sticky banner watcher can track its viewport visibility. */
|
|
15
|
+
setLatestUserBlock(lines: readonly TextRenderable[]): void;
|
|
12
16
|
}
|
|
13
17
|
/**
|
|
14
18
|
* Subset of `RunTuiInput` consumed by the replay coordinator. Kept structural
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-replay.d.ts","sourceRoot":"","sources":["../../../src/tui/history-replay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAEL,KAAK,mBAAmB,EAGzB,MAAM,cAAc,CAAC;AAGtB;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"history-replay.d.ts","sourceRoot":"","sources":["../../../src/tui/history-replay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAEL,KAAK,mBAAmB,EAGzB,MAAM,cAAc,CAAC;AAGtB;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;IAC9E,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzE;0EACsE;IACtE,kBAAkB,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI,CAAC;CAC5D;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,CA+B5F;AAUD,YAAY,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -13,7 +13,9 @@ export function replayResumeHistory(deps, input) {
|
|
|
13
13
|
deps.appendLine(`[resume] showing last ${messages} message${messages === 1 ? "" : "s"} of prior session history`, COLORS.hint);
|
|
14
14
|
}
|
|
15
15
|
for (const block of limited.blocks) {
|
|
16
|
-
deps.appendBlock(null, block.content, colorForHistoryBlock(block.kind));
|
|
16
|
+
const lines = deps.appendBlock(null, block.content, colorForHistoryBlock(block.kind));
|
|
17
|
+
if (block.kind === "user")
|
|
18
|
+
deps.setLatestUserBlock(lines);
|
|
17
19
|
}
|
|
18
20
|
}
|
|
19
21
|
// Seed the copy-out log from full resumed history (not the trimmed display
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-replay.js","sourceRoot":"","sources":["../../../src/tui/history-replay.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"history-replay.js","sourceRoot":"","sources":["../../../src/tui/history-replay.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AA6BpC;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAuB,EAAE,KAAyB;IACpF,MAAM,QAAQ,GAAG,KAAK,CAAC,qBAAqB,IAAI,MAAM,CAAC,iBAAiB,CAAC;IACzE,IAAI,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,2BAA2B,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC3F,IAAI,OAAO,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,CACb,yBAAyB,QAAQ,WAAW,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,2BAA2B,EAChG,MAAM,CAAC,IAAI,CACZ,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACtF,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;gBAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,4EAA4E;IAC5E,iDAAiD;IACjD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,sEAAsE;gBACtE,sEAAsE;gBACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC/C,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAClC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAsB;IAClD,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IACxC,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC;IAClD,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IACxC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAC1C,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { Session } from "../session/session.js";
|
|
2
|
-
import type { TranscriptEntry } from "./transcript-log.js";
|
|
3
2
|
import type { StatusController } from "./status-controller.js";
|
|
4
3
|
import type { StepRenderer } from "./step-renderer.js";
|
|
5
4
|
export interface BootstrapInitialPromptDeps {
|
|
@@ -7,8 +6,7 @@ export interface BootstrapInitialPromptDeps {
|
|
|
7
6
|
initialPrompt?: string;
|
|
8
7
|
statusController: StatusController;
|
|
9
8
|
stepRenderer: StepRenderer;
|
|
10
|
-
|
|
11
|
-
recordTranscriptEntry(kind: TranscriptEntry["kind"], text: string): void;
|
|
9
|
+
appendUserBlock(message: string): void;
|
|
12
10
|
reportError(error: unknown): void;
|
|
13
11
|
}
|
|
14
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initial-prompt.d.ts","sourceRoot":"","sources":["../../../src/tui/initial-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"initial-prompt.d.ts","sourceRoot":"","sources":["../../../src/tui/initial-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,GAAG,IAAI,CAgB7E"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { COLORS } from "./theme.js";
|
|
2
1
|
/**
|
|
3
2
|
* Kicks off the first turn (when `--prompt` was supplied) or paints the
|
|
4
3
|
* appropriate idle/sleep banner when no initial prompt was provided.
|
|
@@ -9,10 +8,9 @@ import { COLORS } from "./theme.js";
|
|
|
9
8
|
* when the next wake will fire.
|
|
10
9
|
*/
|
|
11
10
|
export function bootstrapInitialPrompt(deps) {
|
|
12
|
-
const { session, initialPrompt, statusController, stepRenderer,
|
|
11
|
+
const { session, initialPrompt, statusController, stepRenderer, appendUserBlock, reportError } = deps;
|
|
13
12
|
if (initialPrompt) {
|
|
14
|
-
|
|
15
|
-
appendBlock("you:", initialPrompt, COLORS.user);
|
|
13
|
+
appendUserBlock(initialPrompt);
|
|
16
14
|
void session.prompt({ message: initialPrompt, behavior: "follow_up" }).catch(reportError);
|
|
17
15
|
statusController.markRunning();
|
|
18
16
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initial-prompt.js","sourceRoot":"","sources":["../../../src/tui/initial-prompt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"initial-prompt.js","sourceRoot":"","sources":["../../../src/tui/initial-prompt.ts"],"names":[],"mappings":"AAaA;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAgC;IACrE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,GAC5F,IAAI,CAAC;IACP,IAAI,aAAa,EAAE,CAAC;QAClB,eAAe,CAAC,aAAa,CAAC,CAAC;QAC/B,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC1F,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAC1C,IAAI,OAAO,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC"}
|
package/dist/src/tui/layout.d.ts
CHANGED
|
@@ -19,6 +19,12 @@ export interface LayoutRefs {
|
|
|
19
19
|
layout: BoxRenderable;
|
|
20
20
|
/** Right-side panel with todos, follow-up queue, state machine, and context usage. */
|
|
21
21
|
sidebar: SidebarHandle;
|
|
22
|
+
/** Sticky banner at the top of the main column that surfaces the most
|
|
23
|
+
* recent user message so it stays visible as the transcript scrolls. */
|
|
24
|
+
latestUserBanner: BoxRenderable;
|
|
25
|
+
/** Body text of {@link latestUserBanner}; updated by app.ts whenever a
|
|
26
|
+
* user message is recorded. */
|
|
27
|
+
latestUserBannerText: TextRenderable;
|
|
22
28
|
/** Scrollable transcript that pins to the bottom while the user has not manually scrolled. */
|
|
23
29
|
transcript: ScrollBoxRenderable;
|
|
24
30
|
/** Single-line working-status row below the transcript (spinner, elapsed, queue size). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/tui/layout.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,WAAW,EAChB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAO7C;;;;GAIG;AACH,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,IAAI,EAAE,aAAa,CAAC;IACpB,6DAA6D;IAC7D,MAAM,EAAE,aAAa,CAAC;IACtB,sFAAsF;IACtF,OAAO,EAAE,aAAa,CAAC;IACvB,8FAA8F;IAC9F,UAAU,EAAE,mBAAmB,CAAC;IAChC,0FAA0F;IAC1F,MAAM,EAAE,cAAc,CAAC;IACvB,+EAA+E;IAC/E,IAAI,EAAE,cAAc,CAAC;IACrB,gGAAgG;IAChG,sBAAsB,EAAE,aAAa,CAAC;IACtC,uEAAuE;IACvE,aAAa,EAAE,cAAc,CAAC;IAC9B,iEAAiE;IACjE,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,qEAAqE;IACrE,WAAW,EAAE,cAAc,CAAC;IAC5B,wDAAwD;IACxD,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,kEAAkE;IAClE,qBAAqB,EAAE,aAAa,CAAC;IACrC,oDAAoD;IACpD,qBAAqB,EAAE,cAAc,CAAC;IACtC,uDAAuD;IACvD,oBAAoB,EAAE,cAAc,EAAE,CAAC;IACvC,qFAAqF;IACrF,aAAa,EAAE,aAAa,CAAC;IAC7B,2EAA2E;IAC3E,aAAa,EAAE,cAAc,CAAC;IAC9B,mEAAmE;IACnE,cAAc,EAAE,cAAc,CAAC;IAC/B,uEAAuE;IACvE,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,uEAAuE;IACvE,QAAQ,EAAE,aAAa,CAAC;IACxB,kFAAkF;IAClF,MAAM,EAAE,cAAc,CAAC;IACvB,6EAA6E;IAC7E,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/tui/layout.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,WAAW,EAChB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAO7C;;;;GAIG;AACH,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,IAAI,EAAE,aAAa,CAAC;IACpB,6DAA6D;IAC7D,MAAM,EAAE,aAAa,CAAC;IACtB,sFAAsF;IACtF,OAAO,EAAE,aAAa,CAAC;IACvB;6EACyE;IACzE,gBAAgB,EAAE,aAAa,CAAC;IAChC;oCACgC;IAChC,oBAAoB,EAAE,cAAc,CAAC;IACrC,8FAA8F;IAC9F,UAAU,EAAE,mBAAmB,CAAC;IAChC,0FAA0F;IAC1F,MAAM,EAAE,cAAc,CAAC;IACvB,+EAA+E;IAC/E,IAAI,EAAE,cAAc,CAAC;IACrB,gGAAgG;IAChG,sBAAsB,EAAE,aAAa,CAAC;IACtC,uEAAuE;IACvE,aAAa,EAAE,cAAc,CAAC;IAC9B,iEAAiE;IACjE,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,qEAAqE;IACrE,WAAW,EAAE,cAAc,CAAC;IAC5B,wDAAwD;IACxD,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,kEAAkE;IAClE,qBAAqB,EAAE,aAAa,CAAC;IACrC,oDAAoD;IACpD,qBAAqB,EAAE,cAAc,CAAC;IACtC,uDAAuD;IACvD,oBAAoB,EAAE,cAAc,EAAE,CAAC;IACvC,qFAAqF;IACrF,aAAa,EAAE,aAAa,CAAC;IAC7B,2EAA2E;IAC3E,aAAa,EAAE,cAAc,CAAC;IAC9B,mEAAmE;IACnE,cAAc,EAAE,cAAc,CAAC;IAC/B,uEAAuE;IACvE,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,uEAAuE;IACvE,QAAQ,EAAE,aAAa,CAAC;IACxB,kFAAkF;IAClF,MAAM,EAAE,cAAc,CAAC;IACvB,6EAA6E;IAC7E,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,UAAU,CAmS7D"}
|
package/dist/src/tui/layout.js
CHANGED
|
@@ -31,6 +31,45 @@ export function buildLayout(renderer) {
|
|
|
31
31
|
height: "100%",
|
|
32
32
|
});
|
|
33
33
|
const sidebar = createSidebar(renderer);
|
|
34
|
+
// Sticky banner that mirrors the most recent user message above the
|
|
35
|
+
// transcript. Hidden until the first user message lands; app.ts sets
|
|
36
|
+
// the body text whenever a user block is recorded and a short-interval
|
|
37
|
+
// watcher toggles `visible` based on whether that block has scrolled
|
|
38
|
+
// above the transcript viewport.
|
|
39
|
+
// The banner sits directly above the transcript inside the shared
|
|
40
|
+
// bordered frame below. The frame's `padding: 1` already gives it equal
|
|
41
|
+
// 1-row gaps above the banner text and below the transcript content;
|
|
42
|
+
// this `paddingBottom: 1` adds a matching 1-row gap between the banner
|
|
43
|
+
// text and the transcript content so the banner is symmetrically inset
|
|
44
|
+
// rather than glued to the scrolling area.
|
|
45
|
+
const latestUserBanner = new BoxRenderable(renderer, {
|
|
46
|
+
flexDirection: "column",
|
|
47
|
+
paddingBottom: 1,
|
|
48
|
+
flexShrink: 0,
|
|
49
|
+
});
|
|
50
|
+
latestUserBanner.visible = false;
|
|
51
|
+
const latestUserBannerText = new TextRenderable(renderer, {
|
|
52
|
+
content: "",
|
|
53
|
+
fg: COLORS.user,
|
|
54
|
+
wrapMode: "word",
|
|
55
|
+
flexShrink: 0,
|
|
56
|
+
selectable: false,
|
|
57
|
+
});
|
|
58
|
+
latestUserBanner.add(latestUserBannerText);
|
|
59
|
+
// Shared bordered frame around the banner and the transcript so they
|
|
60
|
+
// read as one main-content surface. The border/padding live here rather
|
|
61
|
+
// than on the transcript so the banner inherits the same chrome.
|
|
62
|
+
// `toolBlockColumns()` in step-renderer.ts assumes a 5-column transcript
|
|
63
|
+
// chrome budget (2 border + 2 padding + 1 scrollbar gutter); keep this
|
|
64
|
+
// wrapper's border+padding aligned with that math.
|
|
65
|
+
const transcriptFrame = new BoxRenderable(renderer, {
|
|
66
|
+
flexDirection: "column",
|
|
67
|
+
flexGrow: 1,
|
|
68
|
+
flexShrink: 1,
|
|
69
|
+
border: true,
|
|
70
|
+
borderColor: COLORS.border,
|
|
71
|
+
padding: 1,
|
|
72
|
+
});
|
|
34
73
|
const transcript = new ScrollBoxRenderable(renderer, {
|
|
35
74
|
flexGrow: 1,
|
|
36
75
|
flexShrink: 1,
|
|
@@ -42,9 +81,6 @@ export function buildLayout(renderer) {
|
|
|
42
81
|
// down while the user is reading history.
|
|
43
82
|
stickyScroll: true,
|
|
44
83
|
stickyStart: "bottom",
|
|
45
|
-
border: true,
|
|
46
|
-
borderColor: COLORS.border,
|
|
47
|
-
padding: 1,
|
|
48
84
|
});
|
|
49
85
|
// Keep keyboard focus pinned to the composer. ScrollBoxRenderable is
|
|
50
86
|
// focusable by default, so a mouse click on the transcript would steal
|
|
@@ -216,7 +252,9 @@ export function buildLayout(renderer) {
|
|
|
216
252
|
});
|
|
217
253
|
inputBox.add(prompt);
|
|
218
254
|
inputBox.add(inputField);
|
|
219
|
-
|
|
255
|
+
transcriptFrame.add(latestUserBanner);
|
|
256
|
+
transcriptFrame.add(transcript);
|
|
257
|
+
layout.add(transcriptFrame);
|
|
220
258
|
layout.add(status);
|
|
221
259
|
layout.add(hint);
|
|
222
260
|
layout.add(skillAutocompletePanel);
|
|
@@ -231,6 +269,8 @@ export function buildLayout(renderer) {
|
|
|
231
269
|
root,
|
|
232
270
|
layout,
|
|
233
271
|
sidebar,
|
|
272
|
+
latestUserBanner,
|
|
273
|
+
latestUserBannerText,
|
|
234
274
|
transcript,
|
|
235
275
|
status,
|
|
236
276
|
hint,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/tui/layout.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,mBAAmB,EACnB,cAAc,EACd,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,wBAAwB,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAC3D,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACzD,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/tui/layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type BoxRenderable, type KeyEvent, type TextareaRenderable, type TextRenderable } from "@opentui/core";
|
|
2
2
|
import type { Session } from "../session/session.js";
|
|
3
|
-
import type { TranscriptEntryKind } from "./transcript-log.js";
|
|
4
3
|
import type { TurnPromptImage, TurnQuestion } from "../types/protocol.js";
|
|
5
4
|
export interface QuestionPickerOptions {
|
|
6
5
|
/** Bordered panel that wraps the title + option rows; toggled visible
|
|
@@ -23,13 +22,10 @@ export interface QuestionPickerOptions {
|
|
|
23
22
|
* global escape-to-exit handler suppresses the next Escape it sees and
|
|
24
23
|
* doesn't double-handle the keystroke. */
|
|
25
24
|
onEscapeClose: () => void;
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
|
|
30
|
-
/** Mirror committed answers into the in-memory transcript log so /copy
|
|
31
|
-
* and resume snapshots include them in order. */
|
|
32
|
-
recordTranscriptEntry: (kind: TranscriptEntryKind, text: string) => void;
|
|
25
|
+
/** Render the `you:` echo when the user confirms an answer (mirroring
|
|
26
|
+
* how free-form prompts render), record it in the transcript log, and
|
|
27
|
+
* refresh the sticky latest-user-message banner. */
|
|
28
|
+
appendUserBlock: (message: string) => void;
|
|
33
29
|
/** Surface a dispatch failure (rejected `session.answer` promise) the
|
|
34
30
|
* same way the rest of runTui does. */
|
|
35
31
|
reportError: (error: unknown) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"question-picker.d.ts","sourceRoot":"","sources":["../../../src/tui/question-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,QAAQ,EAEb,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AASvB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"question-picker.d.ts","sourceRoot":"","sources":["../../../src/tui/question-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,QAAQ,EAEb,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AASvB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAI1E,MAAM,WAAW,qBAAqB;IACpC;kCAC8B;IAC9B,aAAa,EAAE,aAAa,CAAC;IAC7B;4DACwD;IACxD,aAAa,EAAE,cAAc,CAAC;IAC9B;;0DAEsD;IACtD,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B;iFAC6E;IAC7E,UAAU,EAAE,kBAAkB,CAAC;IAC/B;6CACyC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB;;+CAE2C;IAC3C,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B;;yDAEqD;IACrD,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C;4CACwC;IACxC,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC;4DACwD;IACxD,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB;iEAC6D;IAC7D,SAAS,EAAE,MAAM,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAc;IAiBb,OAAO,CAAC,QAAQ,CAAC,IAAI;IAhBjC,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,WAAW,CAAK;IAKxB,OAAO,CAAC,mBAAmB,CAAgB;IAI3C,OAAO,CAAC,kBAAkB,CAAqB;IAI/C,OAAO,CAAC,kBAAkB,CAAgC;gBAE7B,IAAI,EAAE,qBAAqB;IAExD,MAAM,IAAI,OAAO;IAKjB,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,IAAI;IASrC,IAAI,IAAI,IAAI;IAaZ;;;;;;OAMG;IACH,gBAAgB,IAAI,OAAO;IAW3B;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI;IAclE;;;;;OAKG;IACH,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;IA8CjC,OAAO,CAAC,cAAc;IAItB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAQtB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,MAAM;IAyDd,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,6BAA6B;IAiBrC,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,eAAe;CA6BxB"}
|
|
@@ -282,8 +282,7 @@ export class QuestionPicker {
|
|
|
282
282
|
const accumulatedForActive = this.accumulatedAnswers[question.question] ?? [];
|
|
283
283
|
const transcriptText = this.describeAnswerLabels(question, accumulatedForActive);
|
|
284
284
|
if (transcriptText) {
|
|
285
|
-
this.opts.
|
|
286
|
-
this.opts.appendBlock("you:", transcriptText, COLORS.user);
|
|
285
|
+
this.opts.appendUserBlock(transcriptText);
|
|
287
286
|
}
|
|
288
287
|
if (this.activeIndex < this.pendingQuestions.length - 1) {
|
|
289
288
|
this.activeIndex += 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"question-picker.js","sourceRoot":"","sources":["../../../src/tui/question-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,EAAE,EAEF,CAAC,GAGF,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,+BAA+B,EAC/B,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"question-picker.js","sourceRoot":"","sources":["../../../src/tui/question-picker.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,14 +24,20 @@ export declare class TranscriptWriter {
|
|
|
24
24
|
private hasRenderedAnyBlock;
|
|
25
25
|
private keyDiagnostics;
|
|
26
26
|
private readonly log;
|
|
27
|
+
private latestUserBlock;
|
|
27
28
|
constructor(renderer: CliRenderer, transcript: ScrollBoxRenderable, options: TranscriptWriterOptions);
|
|
28
29
|
/** Append a single line. Empty content is ignored so callers can guard with
|
|
29
30
|
* raw input without producing blank rows; use `addLine` instead when a
|
|
30
|
-
* spacer is wanted and a renderable handle is needed.
|
|
31
|
-
|
|
31
|
+
* spacer is wanted and a renderable handle is needed. Returns the
|
|
32
|
+
* rendered renderable when one was created, so callers that need to
|
|
33
|
+
* later inspect layout (e.g. the sticky user-message banner) can keep a
|
|
34
|
+
* handle to it. */
|
|
35
|
+
appendLine(content: string, fg: string): TextRenderable | undefined;
|
|
32
36
|
/** Append a labelled block. `beginBlock()` inserts a blank separator before
|
|
33
|
-
* every block except the first so distinct steps stay visually distinct.
|
|
34
|
-
|
|
37
|
+
* every block except the first so distinct steps stay visually distinct.
|
|
38
|
+
* Returns the rendered body lines (no leading spacer) so callers can
|
|
39
|
+
* track their layout position; empty lines are dropped by appendLine. */
|
|
40
|
+
appendBlock(label: string | null, body: string, fg: string): TextRenderable[];
|
|
35
41
|
beginBlock(): void;
|
|
36
42
|
/** Append a line and return the renderable handle. Used by the starter
|
|
37
43
|
* block (which destroys its own refs on dismiss) and substitutes a single
|
|
@@ -42,6 +48,12 @@ export declare class TranscriptWriter {
|
|
|
42
48
|
* presentation-only writes (spacers, etc.) do not pollute the log. */
|
|
43
49
|
recordEntry(kind: TranscriptEntry["kind"], text: string): void;
|
|
44
50
|
entries(): readonly TranscriptEntry[];
|
|
51
|
+
/** Remember which rendered lines make up the most recent user block.
|
|
52
|
+
* Callers pass the array returned by {@link appendBlock} so the banner
|
|
53
|
+
* watcher can read live `y` / `height` values without re-traversing the
|
|
54
|
+
* transcript tree. */
|
|
55
|
+
setLatestUserBlock(lines: readonly TextRenderable[]): void;
|
|
56
|
+
getLatestUserBlock(): readonly TextRenderable[];
|
|
45
57
|
/** Flipped from the renderer `destroy` handler. Subsequent transcript
|
|
46
58
|
* writes short-circuit instead of throwing from a destroyed buffer. */
|
|
47
59
|
markDestroyed(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcript-writer.d.ts","sourceRoot":"","sources":["../../../src/tui/transcript-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,cAAc,EACf,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,uBAAuB;IACtC;2EACuE;IACvE,oBAAoB,EAAE,MAAM,MAAM,CAAC;IACnC;;;uCAGmC;IACnC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"transcript-writer.d.ts","sourceRoot":"","sources":["../../../src/tui/transcript-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,cAAc,EACf,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,uBAAuB;IACtC;2EACuE;IACvE,oBAAoB,EAAE,MAAM,MAAM,CAAC;IACnC;;;uCAGmC;IACnC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAazB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAd1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAyB;IAM7C,OAAO,CAAC,eAAe,CAAiC;gBAGrC,QAAQ,EAAE,WAAW,EACrB,UAAU,EAAE,mBAAmB,EAC/B,OAAO,EAAE,uBAAuB;IAKnD;;;;;wBAKoB;IACpB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAgBnE;;;8EAG0E;IAC1E,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,EAAE;IAW7E,UAAU,IAAI,IAAI;IAKlB;;0EAEsE;IACtE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc;IAQpD;;2EAEuE;IACvE,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAM9D,OAAO,IAAI,SAAS,eAAe,EAAE;IAIrC;;;2BAGuB;IACvB,kBAAkB,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI;IAI1D,kBAAkB,IAAI,SAAS,cAAc,EAAE;IAM/C;4EACwE;IACxE,aAAa,IAAI,IAAI;IAIrB,WAAW,IAAI,OAAO;IAMtB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIhD,uBAAuB,IAAI,OAAO;IAIlC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI;IAgB1C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAShC,OAAO,CAAC,qBAAqB;CAI9B;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAElE"}
|
|
@@ -14,6 +14,12 @@ export class TranscriptWriter {
|
|
|
14
14
|
hasRenderedAnyBlock = false;
|
|
15
15
|
keyDiagnostics = false;
|
|
16
16
|
log = [];
|
|
17
|
+
// Rendered lines of the most recent `you:` block in the transcript.
|
|
18
|
+
// Consulted by the sticky user-message banner watcher to decide whether
|
|
19
|
+
// the block is still visible in the scroll viewport; the lines stay
|
|
20
|
+
// valid until the next user block is appended (their layout y/height
|
|
21
|
+
// are updated by Yoga as more content is added below them).
|
|
22
|
+
latestUserBlock = [];
|
|
17
23
|
constructor(renderer, transcript, options) {
|
|
18
24
|
this.renderer = renderer;
|
|
19
25
|
this.transcript = transcript;
|
|
@@ -22,31 +28,42 @@ export class TranscriptWriter {
|
|
|
22
28
|
// ---- transcript writes ---------------------------------------------------
|
|
23
29
|
/** Append a single line. Empty content is ignored so callers can guard with
|
|
24
30
|
* raw input without producing blank rows; use `addLine` instead when a
|
|
25
|
-
* spacer is wanted and a renderable handle is needed.
|
|
31
|
+
* spacer is wanted and a renderable handle is needed. Returns the
|
|
32
|
+
* rendered renderable when one was created, so callers that need to
|
|
33
|
+
* later inspect layout (e.g. the sticky user-message banner) can keep a
|
|
34
|
+
* handle to it. */
|
|
26
35
|
appendLine(content, fg) {
|
|
27
36
|
if (!content)
|
|
28
|
-
return;
|
|
37
|
+
return undefined;
|
|
29
38
|
if (this.destroyed)
|
|
30
|
-
return;
|
|
39
|
+
return undefined;
|
|
31
40
|
try {
|
|
32
41
|
const line = new TextRenderable(this.renderer, { content, fg });
|
|
33
42
|
this.transcript.add(line);
|
|
43
|
+
return line;
|
|
34
44
|
}
|
|
35
45
|
catch (error) {
|
|
36
46
|
if (isTextBufferDestroyedError(error)) {
|
|
37
47
|
this.handleBufferDestroyed();
|
|
38
|
-
return;
|
|
48
|
+
return undefined;
|
|
39
49
|
}
|
|
40
50
|
throw error;
|
|
41
51
|
}
|
|
42
52
|
}
|
|
43
53
|
/** Append a labelled block. `beginBlock()` inserts a blank separator before
|
|
44
|
-
* every block except the first so distinct steps stay visually distinct.
|
|
54
|
+
* every block except the first so distinct steps stay visually distinct.
|
|
55
|
+
* Returns the rendered body lines (no leading spacer) so callers can
|
|
56
|
+
* track their layout position; empty lines are dropped by appendLine. */
|
|
45
57
|
appendBlock(label, body, fg) {
|
|
46
58
|
this.beginBlock();
|
|
47
59
|
const text = label ? `${label}\n${body}` : body;
|
|
48
|
-
|
|
49
|
-
|
|
60
|
+
const lines = [];
|
|
61
|
+
for (const part of text.split("\n")) {
|
|
62
|
+
const line = this.appendLine(part, fg);
|
|
63
|
+
if (line)
|
|
64
|
+
lines.push(line);
|
|
65
|
+
}
|
|
66
|
+
return lines;
|
|
50
67
|
}
|
|
51
68
|
beginBlock() {
|
|
52
69
|
if (this.hasRenderedAnyBlock)
|
|
@@ -74,6 +91,16 @@ export class TranscriptWriter {
|
|
|
74
91
|
entries() {
|
|
75
92
|
return this.log;
|
|
76
93
|
}
|
|
94
|
+
/** Remember which rendered lines make up the most recent user block.
|
|
95
|
+
* Callers pass the array returned by {@link appendBlock} so the banner
|
|
96
|
+
* watcher can read live `y` / `height` values without re-traversing the
|
|
97
|
+
* transcript tree. */
|
|
98
|
+
setLatestUserBlock(lines) {
|
|
99
|
+
this.latestUserBlock = lines;
|
|
100
|
+
}
|
|
101
|
+
getLatestUserBlock() {
|
|
102
|
+
return this.latestUserBlock;
|
|
103
|
+
}
|
|
77
104
|
// ---- teardown ------------------------------------------------------------
|
|
78
105
|
/** Flipped from the renderer `destroy` handler. Subsequent transcript
|
|
79
106
|
* writes short-circuit instead of throwing from a destroyed buffer. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcript-writer.js","sourceRoot":"","sources":["../../../src/tui/transcript-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAcpC;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"transcript-writer.js","sourceRoot":"","sources":["../../../src/tui/transcript-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAcpC;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IAaR;IACA;IACA;IAdX,SAAS,GAAG,KAAK,CAAC;IAClB,mBAAmB,GAAG,KAAK,CAAC;IAC5B,cAAc,GAAG,KAAK,CAAC;IACd,GAAG,GAAsB,EAAE,CAAC;IAC7C,oEAAoE;IACpE,wEAAwE;IACxE,oEAAoE;IACpE,qEAAqE;IACrE,4DAA4D;IACpD,eAAe,GAA8B,EAAE,CAAC;IAExD,YACmB,QAAqB,EACrB,UAA+B,EAC/B,OAAgC;QAFhC,aAAQ,GAAR,QAAQ,CAAa;QACrB,eAAU,GAAV,UAAU,CAAqB;QAC/B,YAAO,GAAP,OAAO,CAAyB;IAChD,CAAC;IAEJ,6EAA6E;IAE7E;;;;;wBAKoB;IACpB,UAAU,CAAC,OAAe,EAAE,EAAU;QACpC,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;8EAG0E;IAC1E,WAAW,CAAC,KAAoB,EAAE,IAAY,EAAE,EAAU;QACxD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAChD,MAAM,KAAK,GAAqB,EAAE,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,mBAAmB;YAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAClC,CAAC;IAED;;0EAEsE;IACtE,OAAO,CAAC,OAAe,EAAE,EAAU;QACjC,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6EAA6E;IAE7E;;2EAEuE;IACvE,WAAW,CAAC,IAA6B,EAAE,IAAY;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;;2BAGuB;IACvB,kBAAkB,CAAC,KAAgC;QACjD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,6EAA6E;IAE7E;4EACwE;IACxE,aAAa;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,6EAA6E;IAE7E,wBAAwB,CAAC,OAAgB;QACvC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,uBAAuB;QACrB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,GAAa;QACjC,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QACjC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,GAAG,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,GAAG,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,GAAG,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,GAAG,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACtD,IAAI,CAAC,WAAW,CACd,QAAQ,EACR,GAAG,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,MAAM,oBAAoB,SAAS,CAAC,MAAM,iBAAiB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAClO,MAAM,CAAC,IAAI,CACZ,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QACjC,IAAI,CAAC,WAAW,CACd,QAAQ,EACR,oBAAoB,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAC9E,MAAM,CAAC,IAAI,CACZ,CAAC;IACJ,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;IACrC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,OAAO,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,yBAAyB,CAAC;AAC/E,CAAC"}
|