@aiwayds/dsh-tui-pi 0.1.0 → 0.3.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.
Files changed (67) hide show
  1. package/README.md +205 -68
  2. package/lib/agent-manager.d.ts +125 -0
  3. package/lib/agent-manager.js +298 -0
  4. package/lib/agent-manager.js.map +1 -0
  5. package/lib/agents.d.ts +30 -0
  6. package/lib/agents.js +468 -0
  7. package/lib/agents.js.map +1 -0
  8. package/lib/append-system.d.ts +2 -0
  9. package/lib/append-system.js +1 -1
  10. package/lib/append-system.js.map +1 -1
  11. package/lib/dsh-events.d.ts +12 -0
  12. package/lib/editor.d.ts +58 -0
  13. package/lib/editor.js +92 -0
  14. package/lib/editor.js.map +1 -1
  15. package/lib/footer.d.ts +8 -0
  16. package/lib/footer.js +8 -0
  17. package/lib/footer.js.map +1 -1
  18. package/lib/hotkeys.d.ts +93 -0
  19. package/lib/hotkeys.js +305 -0
  20. package/lib/hotkeys.js.map +1 -0
  21. package/lib/index.js +342 -38
  22. package/lib/index.js.map +1 -1
  23. package/lib/keymap.d.ts +177 -0
  24. package/lib/keymap.js +189 -0
  25. package/lib/keymap.js.map +1 -0
  26. package/lib/live-widgets.d.ts +82 -29
  27. package/lib/live-widgets.js +222 -92
  28. package/lib/live-widgets.js.map +1 -1
  29. package/lib/messages.d.ts +4 -2
  30. package/lib/messages.js +8 -3
  31. package/lib/messages.js.map +1 -1
  32. package/lib/panels.d.ts +177 -0
  33. package/lib/panels.js +331 -0
  34. package/lib/panels.js.map +1 -0
  35. package/lib/provider-catalog.d.ts +31 -8
  36. package/lib/provider-catalog.js +63 -8
  37. package/lib/provider-catalog.js.map +1 -1
  38. package/lib/selectors.d.ts +12 -1
  39. package/lib/selectors.js +5 -2
  40. package/lib/selectors.js.map +1 -1
  41. package/lib/session.d.ts +36 -0
  42. package/lib/session.js +171 -10
  43. package/lib/session.js.map +1 -1
  44. package/lib/settings.d.ts +1 -2
  45. package/lib/settings.js +29 -2
  46. package/lib/settings.js.map +1 -1
  47. package/lib/subagent-policy.d.ts +58 -0
  48. package/lib/subagent-policy.js +137 -0
  49. package/lib/subagent-policy.js.map +1 -0
  50. package/lib/subagent-viewer.d.ts +49 -0
  51. package/lib/subagent-viewer.js +523 -0
  52. package/lib/subagent-viewer.js.map +1 -0
  53. package/lib/theme/index.js +4 -0
  54. package/lib/theme/index.js.map +1 -1
  55. package/lib/theme/palette.d.ts +21 -3
  56. package/lib/theme/palette.js +27 -6
  57. package/lib/theme/palette.js.map +1 -1
  58. package/lib/theme-settings.d.ts +39 -4
  59. package/lib/theme-settings.js +69 -12
  60. package/lib/theme-settings.js.map +1 -1
  61. package/lib/tui.d.ts +32 -12
  62. package/lib/tui.js +109 -36
  63. package/lib/tui.js.map +1 -1
  64. package/package.json +3 -4
  65. package/patches/@earendil-works__pi-tui.patch +206 -2
  66. package/scripts/dev-install.mjs +87 -0
  67. package/scripts/link-dsh-closure.mjs +85 -0
@@ -0,0 +1,49 @@
1
+ /**
2
+ * The subagent viewer — the Ctrl+G surface. Two levels, both on the shared
3
+ * PanelHost overlay (80%): a SelectList picker over the bridge's child views,
4
+ * then a live transcript panel for one child's buffered event log.
5
+ *
6
+ * Picker rows (running first, then the five most recent settled) carry the
7
+ * full picture of a delegation: status icon, label, delegation mode, rounds
8
+ * against the policy cap (`maxRounds` from `readSubagentLimits`, only shown
9
+ * when > 0), token spend (k) and elapsed time. Settled rows read as faded
10
+ * because their status icon and the muted description column mark the outcome.
11
+ *
12
+ * Transcript panel: one human-readable line per buffered SessionEvent
13
+ * (user/assistant messages, tool calls + truncated results, turns, descriptor,
14
+ * todos). The log is a capped per-child ring buffer (2000 events); a dropped
15
+ * head is reported at the top. While the panel is open a ~300ms timer rebuilds
16
+ * the lines from the bridge and re-renders, and the view follows the tail like
17
+ * a ScrollView follow:'end' (an explicit scroll-up detaches; reaching the
18
+ * bottom re-attaches). Esc closes, or a deliberate double-`x` within
19
+ * `DOUBLE_PRESS_MS`.
20
+ */
21
+ import type { Context } from '@deepseek-ai/cordis';
22
+ import { type SelectItem, type TUI } from '@earendil-works/pi-tui';
23
+ import type { AgentView } from './dsh-events.ts';
24
+ import type { DshSessionBridge } from './session.ts';
25
+ import { type TuiTheme } from './theme/index.ts';
26
+ /**
27
+ * The picker rows: running children first (the live items the key is for),
28
+ * then the five most recent settled ones (newest settle first). Each row
29
+ * reads `⠋ label [mode] · rounds N[/max]` with the token spend and elapsed
30
+ * seconds in the muted description column.
31
+ */
32
+ export declare function pickerItems(views: readonly AgentView[], getTurnCount: (childId: string) => number, maxRounds: number): SelectItem[];
33
+ /**
34
+ * The next selected index after a picker items swap, preserving the selection
35
+ * by item value. `previous === undefined` (no selection yet) starts at 0; a
36
+ * value that dropped off the new list (e.g. a settled child fell out of the
37
+ * recent-settled cap) clamps to the last row rather than resetting the user
38
+ * to the top. Pure and exported for the regression test.
39
+ */
40
+ export declare function nextSelectedIndex(items: readonly SelectItem[], previous: string | undefined): number;
41
+ /**
42
+ * Open the subagent picker / viewer. A SelectList of the bridge's child views
43
+ * (running first, then the five recent settled) opens; Enter opens a
44
+ * live-refreshing transcript panel for that child. An empty list (no running,
45
+ * no settled) closes immediately. Focus returns to `restoreFocus` on close;
46
+ * the promise settles when the viewer closes (value is meaningless — index.ts
47
+ * never branches on it).
48
+ */
49
+ export declare function openSubagentViewer(ctx: Context, tui: TUI, theme: TuiTheme, bridge: DshSessionBridge, restoreFocus: () => void): Promise<void>;
@@ -0,0 +1,523 @@
1
+ /**
2
+ * The subagent viewer — the Ctrl+G surface. Two levels, both on the shared
3
+ * PanelHost overlay (80%): a SelectList picker over the bridge's child views,
4
+ * then a live transcript panel for one child's buffered event log.
5
+ *
6
+ * Picker rows (running first, then the five most recent settled) carry the
7
+ * full picture of a delegation: status icon, label, delegation mode, rounds
8
+ * against the policy cap (`maxRounds` from `readSubagentLimits`, only shown
9
+ * when > 0), token spend (k) and elapsed time. Settled rows read as faded
10
+ * because their status icon and the muted description column mark the outcome.
11
+ *
12
+ * Transcript panel: one human-readable line per buffered SessionEvent
13
+ * (user/assistant messages, tool calls + truncated results, turns, descriptor,
14
+ * todos). The log is a capped per-child ring buffer (2000 events); a dropped
15
+ * head is reported at the top. While the panel is open a ~300ms timer rebuilds
16
+ * the lines from the bridge and re-renders, and the view follows the tail like
17
+ * a ScrollView follow:'end' (an explicit scroll-up detaches; reaching the
18
+ * bottom re-attaches). Esc closes, or a deliberate double-`x` within
19
+ * `DOUBLE_PRESS_MS`.
20
+ */
21
+ import { getKeybindings, SelectList, } from '@earendil-works/pi-tui';
22
+ import { DOUBLE_PRESS_MS, MIN_DOUBLE_PRESS_GAP_MS } from "./keymap.js";
23
+ import { readSubagentLimits } from "./theme-settings.js";
24
+ import { PanelHost, panelThemeFns } from "./panels.js";
25
+ import { normalizePreview } from "./sessions.js";
26
+ import { toolSubject } from "./messages.js";
27
+ import { ansiFg, BOLD, RESET } from "./theme/index.js";
28
+ import { clipToWidth } from "./text.js";
29
+ /** Live-refresh interval of the transcript panel while it is open. */
30
+ const VIEWER_TICK_MS = 300;
31
+ /** How many recent settled children appear after the running ones. */
32
+ const SETTLED_CAP = 5;
33
+ /** Rows of the picker SelectList visible without scrolling (single source). */
34
+ const PICKER_MAX_VISIBLE = 12;
35
+ /** Running-agent spinner glyph (first frame of the live widget's cycle). */
36
+ const RUNNING_GLYPH = '⠋';
37
+ /** The per-child log cap the bridge applies (mirrors the truncation hint). */
38
+ const CHILD_LOG_CAP = 2000;
39
+ // ---------------------------------------------------------------- helpers --
40
+ /** Join an unknown message content into one trimmed text string. */
41
+ function textOfContent(content) {
42
+ if (typeof content === 'string')
43
+ return content.trim();
44
+ if (!Array.isArray(content))
45
+ return '';
46
+ let text = '';
47
+ for (const block of content) {
48
+ if (block && typeof block === 'object' && block.type === 'text') {
49
+ const blockText = block.text;
50
+ if (typeof blockText === 'string')
51
+ text += blockText + ' ';
52
+ }
53
+ }
54
+ return text.trim();
55
+ }
56
+ /** First text block of a tool result body, collapsed to one line. */
57
+ function resultPreview(content) {
58
+ if (!Array.isArray(content))
59
+ return '';
60
+ for (const block of content) {
61
+ if (block && typeof block === 'object') {
62
+ const typed = block;
63
+ if (typed.type === 'text' && typeof typed.text === 'string' && typed.text.trim() !== '') {
64
+ return normalizePreview(typed.text);
65
+ }
66
+ }
67
+ }
68
+ return '';
69
+ }
70
+ /** Human token display: thousands read as `1.2k tok`. */
71
+ function formatTokens(tokens) {
72
+ return tokens >= 1000 ? `${(tokens / 1000).toFixed(1)}k tok` : `${tokens} tok`;
73
+ }
74
+ /** Status glyph for one child view: running / completed / failed / cancelled. */
75
+ function statusGlyph(view) {
76
+ if (view.outcome === undefined)
77
+ return RUNNING_GLYPH;
78
+ if (view.outcome === 'completed')
79
+ return '✓';
80
+ if (view.outcome === 'failed')
81
+ return '✗';
82
+ return '—';
83
+ }
84
+ /**
85
+ * The one human-readable line per buffered event. `callNames` pairs
86
+ * `tool/result` rows back to their `tool/call` name (call ids are opaque).
87
+ * Returns undefined to skip events that carry no readable surface (raw
88
+ * `assistant/chunk` deltas fold into the assembled message, command nodes
89
+ * render in the parent's transcript only).
90
+ */
91
+ function eventLine(event, callNames) {
92
+ switch (event.type) {
93
+ case 'turn/start':
94
+ return `– turn ${event.data.turn} start`;
95
+ case 'turn/end': {
96
+ const reason = event.data.reason;
97
+ const detail = reason.kind === 'error'
98
+ ? `error${reason.error !== undefined ? `: ${reason.error.message ?? ''}` : ''}`
99
+ : reason.kind;
100
+ return `– turn ${event.data.turn} end · ${detail}`;
101
+ }
102
+ case 'user/message': {
103
+ const message = event.data;
104
+ const text = normalizePreview(textOfContent(message.content));
105
+ if (text === '')
106
+ return undefined;
107
+ return message.source?.kind === 'user' ? `▎ ${text}` : `ⓘ ${text}`;
108
+ }
109
+ case 'assistant/message': {
110
+ const blocks = event.data.message?.content;
111
+ const parts = [];
112
+ if (Array.isArray(blocks)) {
113
+ for (const raw of blocks) {
114
+ if (!raw || typeof raw !== 'object')
115
+ continue;
116
+ const block = raw;
117
+ if (block.type === 'text' && typeof block.text === 'string' && block.text.trim() !== '') {
118
+ parts.push(normalizePreview(block.text));
119
+ }
120
+ else if (block.type === 'tool-call') {
121
+ const name = block.name ?? 'tool';
122
+ const subject = block.arguments !== undefined && block.arguments !== ''
123
+ ? ` ${toolSubject(block.arguments)}`
124
+ : '';
125
+ parts.push(`⚙ ${name}${subject}`);
126
+ }
127
+ }
128
+ }
129
+ const line = parts.length > 0 ? `🐳 ${parts.join(' ')}` : '🐳 …';
130
+ return line;
131
+ }
132
+ case 'tool/call':
133
+ callNames.set(event.data.callId, event.data.name);
134
+ return `⚙ ${event.data.name}${event.data.arguments !== '' ? ` ${toolSubject(event.data.arguments)}` : ''}`;
135
+ case 'tool/result': {
136
+ const block = event.data.message.content[0];
137
+ const toolCallId = block?.toolCallId ?? '';
138
+ const name = callNames.get(toolCallId) ?? `tool:${toolCallId.slice(0, 8)}`;
139
+ const isError = event.data.error !== undefined || (block?.isError ?? false);
140
+ const text = resultPreview(block?.content);
141
+ return `${isError ? '✘' : '✔'} ${name}${text !== '' ? `: ${text}` : ''}`;
142
+ }
143
+ case 'subagent/descriptor': {
144
+ const descriptor = event.data;
145
+ const parts = ['⭘ subagent'];
146
+ if (descriptor.provider !== undefined && descriptor.provider !== '')
147
+ parts.push(descriptor.provider);
148
+ if (descriptor.mode !== undefined)
149
+ parts.push(`[${descriptor.mode}]`);
150
+ return parts.join(' ');
151
+ }
152
+ case 'todo/write': {
153
+ const todos = event.data.todos;
154
+ const done = todos.filter(todo => todo.status === 'completed').length;
155
+ const summary = todos
156
+ .map(todo => `${todo.status === 'in_progress' ? '◐' : '☐'} ${todo.content}`)
157
+ .join(' ');
158
+ return `☑ todos ${done}/${todos.length}: ${normalizePreview(summary)}`;
159
+ }
160
+ default:
161
+ return undefined;
162
+ }
163
+ }
164
+ /** All readable lines of one child's buffered log, in log order. */
165
+ function eventLines(events) {
166
+ const lines = [];
167
+ const callNames = new Map();
168
+ for (const event of events) {
169
+ const line = eventLine(event, callNames);
170
+ if (line !== undefined)
171
+ lines.push(line);
172
+ }
173
+ return lines;
174
+ }
175
+ /**
176
+ * The picker rows: running children first (the live items the key is for),
177
+ * then the five most recent settled ones (newest settle first). Each row
178
+ * reads `⠋ label [mode] · rounds N[/max]` with the token spend and elapsed
179
+ * seconds in the muted description column.
180
+ */
181
+ export function pickerItems(views, getTurnCount, maxRounds) {
182
+ const running = views.filter(view => view.outcome === undefined);
183
+ const settled = views
184
+ .filter((view) => view.outcome !== undefined && view.endedAt !== undefined)
185
+ .sort((a, b) => b.endedAt - a.endedAt)
186
+ .slice(0, SETTLED_CAP);
187
+ return [...running, ...settled].map(view => {
188
+ const rounds = getTurnCount(view.childId);
189
+ const roundsText = maxRounds > 0 ? `rounds ${rounds}/${maxRounds}` : `rounds ${rounds}`;
190
+ const mode = view.mode === undefined ? '' : ` [${view.mode}]`;
191
+ const elapsedMs = (view.outcome === undefined ? Date.now() : view.endedAt ?? Date.now()) - view.startedAt;
192
+ const description = [
193
+ ...(view.tokens > 0 ? [formatTokens(view.tokens)] : []),
194
+ `${(elapsedMs / 1000).toFixed(1)}s`,
195
+ ].join(' · ');
196
+ return {
197
+ value: view.childId,
198
+ label: `${statusGlyph(view)} ${view.label}${mode}: ${roundsText}`,
199
+ ...(description !== '' ? { description } : {}),
200
+ };
201
+ });
202
+ }
203
+ /**
204
+ * The next selected index after a picker items swap, preserving the selection
205
+ * by item value. `previous === undefined` (no selection yet) starts at 0; a
206
+ * value that dropped off the new list (e.g. a settled child fell out of the
207
+ * recent-settled cap) clamps to the last row rather than resetting the user
208
+ * to the top. Pure and exported for the regression test.
209
+ */
210
+ export function nextSelectedIndex(items, previous) {
211
+ if (previous === undefined)
212
+ return 0;
213
+ const index = items.findIndex(item => item.value === previous);
214
+ return index < 0 ? Math.max(0, items.length - 1) : index;
215
+ }
216
+ /**
217
+ * A SelectList with a footer hint line — the SelectList component has no
218
+ * footer slot, so the hint rides below its rows inside the framed overlay.
219
+ *
220
+ * The picker rows are live: a ~300ms timer re-runs `buildItems` (re-reading
221
+ * the bridge's turn counts, token spend and elapsed time) and swaps in a
222
+ * fresh SelectList — pi-tui's SelectList takes items only at construction
223
+ * and exposes no setItems, so it would otherwise hold a frozen snapshot for
224
+ * the whole open duration. The selection follows the highlighted child
225
+ * across the swap via its public `getSelectedItem`/`setSelectedIndex`; the
226
+ * tick only starts once the overlay actually mounted (mirroring the
227
+ * transcript panel).
228
+ */
229
+ class SelectListWithFooter {
230
+ theme;
231
+ list;
232
+ footer;
233
+ buildItems;
234
+ requestRender;
235
+ /** Close flow for the live-tick empty case (mirrors the open-time one). */
236
+ onEmpty;
237
+ timer;
238
+ constructor(theme, list, footer, buildItems, requestRender, onEmpty) {
239
+ this.theme = theme;
240
+ this.list = list;
241
+ this.footer = footer;
242
+ this.buildItems = buildItems;
243
+ this.requestRender = requestRender;
244
+ this.onEmpty = onEmpty;
245
+ }
246
+ invalidate() {
247
+ this.list.invalidate();
248
+ }
249
+ startTicking() {
250
+ if (this.timer !== undefined)
251
+ return;
252
+ this.timer = setInterval(() => {
253
+ try {
254
+ this.refresh();
255
+ }
256
+ catch {
257
+ // A throwing tick must never take the process down — skip the frame
258
+ // and let the next tick retry.
259
+ }
260
+ }, VIEWER_TICK_MS);
261
+ this.timer.unref?.();
262
+ }
263
+ dispose() {
264
+ if (this.timer !== undefined) {
265
+ clearInterval(this.timer);
266
+ this.timer = undefined;
267
+ }
268
+ }
269
+ /**
270
+ * Rebuild the rows from the bridge and swap in a fresh list, keeping focus.
271
+ * An empty rebuild (the tracker cleared, or the last settled fell out of
272
+ * the recent cap) closes exactly like the open-time empty path — it must
273
+ * not park a stale "No matching commands" SelectList over a dead tracker.
274
+ */
275
+ refresh() {
276
+ const items = this.buildItems();
277
+ if (items.length === 0) {
278
+ this.dispose();
279
+ this.onEmpty();
280
+ return;
281
+ }
282
+ const previous = this.list.getSelectedItem()?.value;
283
+ const next = new SelectList(items, PICKER_MAX_VISIBLE, this.theme.selectList);
284
+ next.onSelect = this.list.onSelect;
285
+ next.onCancel = this.list.onCancel;
286
+ next.onSelectionChange = this.list.onSelectionChange;
287
+ next.setSelectedIndex(nextSelectedIndex(items, previous));
288
+ this.list = next;
289
+ this.requestRender();
290
+ }
291
+ render(width) {
292
+ return [
293
+ ...this.list.render(width),
294
+ '',
295
+ ansiFg(this.theme.palette.fgSubtle) + clipToWidth(this.footer, width) + RESET,
296
+ ];
297
+ }
298
+ handleInput(data) {
299
+ this.list.handleInput(data);
300
+ }
301
+ }
302
+ /**
303
+ * The live transcript panel: header (label · provider · mode · status ·
304
+ * rounds · tokens) over a scrollable window of the child's event lines. A
305
+ * ~300ms timer re-reads the bridge log and re-renders; the view follows the
306
+ * tail until the user scrolls up (re-detached on reaching the bottom again).
307
+ * Esc closes; a double-`x` within `DOUBLE_PRESS_MS` closes too (single `x`
308
+ * only arms the window).
309
+ */
310
+ class SubagentViewerPanel {
311
+ theme;
312
+ bridge;
313
+ childId;
314
+ /** Live reader of the round cap — re-read on every render (hot maxRounds). */
315
+ readMaxRounds;
316
+ onClose;
317
+ requestRender;
318
+ timer;
319
+ /** Timestamp of the last handled `x` press; 0 = none (the double-press arm). */
320
+ lastXPress = 0;
321
+ /** Current scroll offset into the transcript lines. */
322
+ scrollTop = 0;
323
+ /** Whether the view is pinned to the log tail (default, re-set on the bottom). */
324
+ followEnd = true;
325
+ /** Line count of the last render (the scroll range), for input handling. */
326
+ lineCount = 0;
327
+ /** Body-window rows of the last render, for input handling. */
328
+ bodyRows = 0;
329
+ constructor(theme, bridge, childId, readMaxRounds, onClose, requestRender) {
330
+ this.theme = theme;
331
+ this.bridge = bridge;
332
+ this.childId = childId;
333
+ this.readMaxRounds = readMaxRounds;
334
+ this.onClose = onClose;
335
+ this.requestRender = requestRender;
336
+ }
337
+ startTicking() {
338
+ if (this.timer !== undefined)
339
+ return;
340
+ this.timer = setInterval(() => {
341
+ try {
342
+ this.requestRender();
343
+ }
344
+ catch {
345
+ // A throwing tick must never take the process down — skip the frame.
346
+ }
347
+ }, VIEWER_TICK_MS);
348
+ this.timer.unref?.();
349
+ }
350
+ dispose() {
351
+ if (this.timer !== undefined) {
352
+ clearInterval(this.timer);
353
+ this.timer = undefined;
354
+ }
355
+ }
356
+ invalidate() { }
357
+ render(width) {
358
+ const fns = panelThemeFns(this.theme);
359
+ const view = this.bridge.getAgentViews().find(agent => agent.childId === this.childId);
360
+ const lines = eventLines(this.bridge.getChildLog(this.childId));
361
+ const truncated = this.bridge.isChildLogTruncated(this.childId);
362
+ this.lineCount = lines.length;
363
+ this.bodyRows = bodyRowsFor(truncated);
364
+ const maxScroll = Math.max(0, this.lineCount - this.bodyRows);
365
+ this.scrollTop = this.followEnd ? maxScroll : Math.max(0, Math.min(this.scrollTop, maxScroll));
366
+ const wrap = Math.max(2, width - 2);
367
+ const out = [this.headerLine(view)];
368
+ if (truncated)
369
+ out.push(fns.subtle(`…history truncated (${CHILD_LOG_CAP} event cap)`));
370
+ const slice = lines.slice(this.scrollTop, this.scrollTop + this.bodyRows);
371
+ if (slice.length === 0) {
372
+ out.push(fns.subtle(' — no events yet —'));
373
+ }
374
+ else {
375
+ for (const line of slice)
376
+ out.push(fns.muted(clipToWidth(line === '' ? ' ' : line, wrap)));
377
+ }
378
+ out.push('');
379
+ out.push(fns.subtle('↑↓ scroll · Esc close · x ×2 close'));
380
+ return out;
381
+ }
382
+ handleInput(data) {
383
+ const kb = getKeybindings();
384
+ if (kb.matches(data, 'tui.select.cancel')) {
385
+ this.onClose();
386
+ return;
387
+ }
388
+ if (data.toLowerCase() === 'x') {
389
+ const now = Date.now();
390
+ // Auto-repeat of a held x (~30-50ms gaps) never completes the double
391
+ // press — only a deliberate second press within the window closes.
392
+ if (this.lastXPress !== 0 && now - this.lastXPress < MIN_DOUBLE_PRESS_GAP_MS)
393
+ return;
394
+ if (this.lastXPress !== 0 && now - this.lastXPress <= DOUBLE_PRESS_MS) {
395
+ this.onClose();
396
+ }
397
+ else {
398
+ this.lastXPress = now;
399
+ }
400
+ return;
401
+ }
402
+ if (kb.matches(data, 'tui.select.up'))
403
+ this.scrollBy(-1);
404
+ else if (kb.matches(data, 'tui.select.down'))
405
+ this.scrollBy(1);
406
+ }
407
+ /** Scroll the window; re-attach to the tail when it reaches the bottom. */
408
+ scrollBy(lines) {
409
+ const maxScroll = Math.max(0, this.lineCount - this.bodyRows);
410
+ const start = this.followEnd ? maxScroll : this.scrollTop;
411
+ const next = Math.max(0, Math.min(maxScroll, start + lines));
412
+ this.scrollTop = next;
413
+ this.followEnd = next === maxScroll;
414
+ this.requestRender();
415
+ }
416
+ /** One-line child summary: colored status, the rest in the accent bold. */
417
+ headerLine(view) {
418
+ const p = this.theme.palette;
419
+ if (view === undefined) {
420
+ return ansiFg(p.accent) + BOLD + `ⓘ subagent ${clipToWidth(this.childId, 8)}` + RESET;
421
+ }
422
+ const status = view.outcome === undefined ? 'running'
423
+ : view.outcome === 'completed' ? 'completed'
424
+ : view.outcome === 'failed' ? 'failed'
425
+ : 'cancelled';
426
+ const statusColor = view.outcome === undefined ? p.accent
427
+ : view.outcome === 'completed' ? p.success
428
+ : view.outcome === 'failed' ? p.danger
429
+ : p.fgMuted;
430
+ const tail = [view.label];
431
+ if (view.provider !== undefined)
432
+ tail.push(view.provider);
433
+ if (view.mode !== undefined)
434
+ tail.push(view.mode);
435
+ const maxRounds = this.readMaxRounds();
436
+ tail.push(`rounds ${this.bridge.getTurnCount(this.childId)}${maxRounds > 0 ? `/${maxRounds}` : ''}`);
437
+ if (view.tokens > 0)
438
+ tail.push(formatTokens(view.tokens));
439
+ // Budget the plain text so the status suffix (its own color) still fits.
440
+ const budget = Math.max(20, 140 - status.length - 3);
441
+ const base = clipToWidth(tail.join(' · '), budget);
442
+ return ansiFg(p.accent) + BOLD + base + RESET + ' · ' + ansiFg(statusColor) + status + RESET;
443
+ }
444
+ }
445
+ /**
446
+ * Body-window rows for the transcript panel: the framed overlay adds 4 rows
447
+ * of chrome and slices anything taller, so the rendered child budget is 80%
448
+ * of the terminal minus the frame; the header, footer and the optional
449
+ * truncation hint take theirs, everything else is the transcript window.
450
+ */
451
+ function bodyRowsFor(truncated) {
452
+ const childBudget = Math.max(1, Math.floor((process.stdout.rows ?? 24) * 0.8) - 4);
453
+ return Math.max(1, childBudget - 3 - (truncated ? 1 : 0));
454
+ }
455
+ // --------------------------------------------------------------- the flow --
456
+ /**
457
+ * Open the subagent picker / viewer. A SelectList of the bridge's child views
458
+ * (running first, then the five recent settled) opens; Enter opens a
459
+ * live-refreshing transcript panel for that child. An empty list (no running,
460
+ * no settled) closes immediately. Focus returns to `restoreFocus` on close;
461
+ * the promise settles when the viewer closes (value is meaningless — index.ts
462
+ * never branches on it).
463
+ */
464
+ export async function openSubagentViewer(ctx, tui, theme, bridge, restoreFocus) {
465
+ let settle;
466
+ const host = new PanelHost(tui, theme, () => {
467
+ // A half-mounted overlay must not strand the keyboard.
468
+ restoreFocus();
469
+ settle?.();
470
+ });
471
+ const finish = () => {
472
+ host.close();
473
+ restoreFocus();
474
+ settle?.();
475
+ };
476
+ const showPicker = () => {
477
+ // `bridge.getTurnCount` reads instance state — wrap instead of passing the
478
+ // unbound method through to the pure item builder. `buildItems` re-reads
479
+ // the limits live on every tick, so a maxRounds change hot-applies while
480
+ // the picker stays open (no more open-time snapshot).
481
+ const buildItems = () => pickerItems(bridge.getAgentViews(), childId => bridge.getTurnCount(childId), readSubagentLimits(ctx).maxRounds);
482
+ const items = buildItems();
483
+ if (items.length === 0) {
484
+ finish();
485
+ return;
486
+ }
487
+ const list = new SelectList(items, PICKER_MAX_VISIBLE, theme.selectList);
488
+ list.setSelectedIndex(0);
489
+ const panel = new SelectListWithFooter(theme, list, '↑↓ navigate · Enter open · Esc close', buildItems, () => tui.requestRender(), () => finish());
490
+ list.onSelect = item => {
491
+ // Opening a viewer leaves the picker behind — stop its live refresh.
492
+ panel.dispose();
493
+ showViewer(item.value);
494
+ };
495
+ list.onCancel = () => {
496
+ panel.dispose();
497
+ finish();
498
+ };
499
+ // Tick only when the overlay mounted: a failed showOverlay already fired
500
+ // the host's onError (restoreFocus + settle) — an orphaned interval would
501
+ // re-render forever against nothing.
502
+ const handle = host.open(panel);
503
+ if (handle !== undefined)
504
+ panel.startTicking();
505
+ };
506
+ const showViewer = (childId) => {
507
+ const panel = new SubagentViewerPanel(theme, bridge, childId, () => readSubagentLimits(ctx).maxRounds, () => {
508
+ panel.dispose();
509
+ finish();
510
+ }, () => tui.requestRender());
511
+ // Tick only when the overlay mounted: a failed showOverlay already fired
512
+ // the host's onError (restoreFocus + settle) — an orphaned interval would
513
+ // re-render forever against nothing.
514
+ const handle = host.open(panel);
515
+ if (handle !== undefined)
516
+ panel.startTicking();
517
+ };
518
+ return new Promise(resolve => {
519
+ settle = resolve;
520
+ showPicker();
521
+ });
522
+ }
523
+ //# sourceMappingURL=subagent-viewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-viewer.js","sourceRoot":"","sources":["../src/subagent-viewer.ts"],"names":[],"mappings":"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"}
@@ -64,6 +64,10 @@ export function buildTheme(palette) {
64
64
  };
65
65
  const editor = {
66
66
  borderColor: fg(palette.borderDefault),
67
+ // The editor's input rows are otherwise unstyled (terminal default
68
+ // foreground), which is invisible on the app-painted dark canvas — theme
69
+ // the typed text with the palette's body color (light text on dark).
70
+ textColor: fg(palette.fgDefault),
67
71
  selectList,
68
72
  };
69
73
  const markdown = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"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"}