@aiwayds/dsh-tui-pi 0.3.0 → 0.4.2
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 +20 -10
- package/cordis.patch.yml +12 -0
- package/lib/activity.d.ts +175 -0
- package/lib/activity.js +426 -0
- package/lib/activity.js.map +1 -0
- package/lib/agents.js +26 -5
- package/lib/agents.js.map +1 -1
- package/lib/dsh-events.d.ts +7 -4
- package/lib/footer.d.ts +43 -5
- package/lib/footer.js +62 -5
- package/lib/footer.js.map +1 -1
- package/lib/index.js +64 -56
- package/lib/index.js.map +1 -1
- package/lib/keymap.d.ts +81 -15
- package/lib/keymap.js +84 -28
- package/lib/keymap.js.map +1 -1
- package/lib/live-widgets.d.ts +105 -74
- package/lib/live-widgets.js +251 -155
- package/lib/live-widgets.js.map +1 -1
- package/lib/messages.d.ts +22 -171
- package/lib/messages.js +37 -417
- package/lib/messages.js.map +1 -1
- package/lib/session.d.ts +7 -0
- package/lib/session.js +109 -8
- package/lib/session.js.map +1 -1
- package/lib/subagent-policy.d.ts +32 -2
- package/lib/subagent-policy.js +54 -2
- package/lib/subagent-policy.js.map +1 -1
- package/lib/subagent-viewer.js +1 -1
- package/lib/text.d.ts +7 -0
- package/lib/text.js +17 -0
- package/lib/text.js.map +1 -1
- package/lib/theme-settings.d.ts +42 -15
- package/lib/theme-settings.js +94 -24
- package/lib/theme-settings.js.map +1 -1
- package/lib/tui.js +32 -20
- package/lib/tui.js.map +1 -1
- package/package.json +2 -1
- package/templates/agents/ArtyDuck.md +11 -0
- package/templates/agents/oldfox.md +33 -0
- package/templates/agents/workhorse.md +34 -0
package/lib/live-widgets.js
CHANGED
|
@@ -1,44 +1,46 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Live widgets
|
|
3
|
-
* running-subagent activity merged into the last-request area BELOW the
|
|
4
|
-
* editor. Two separate plain containers keep the two live surfaces apart:
|
|
2
|
+
* Live widgets — every fixed live surface around the chat window:
|
|
5
3
|
*
|
|
6
|
-
* - `todosDoc`
|
|
7
|
-
* bordered Todos
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* - `activityDoc`
|
|
12
|
-
*
|
|
13
|
-
* agent
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* (the last running agent closes the list with `└─ `). Auto height — it
|
|
18
|
-
* collapses to zero rows when both the last-request line is cleared and no
|
|
19
|
-
* agent runs.
|
|
4
|
+
* - `todosDoc` (the widgets slot ABOVE the chat input) hosts THREE pinned
|
|
5
|
+
* panels: the bordered Todos table, the ThinkPanel and the ToolPanel
|
|
6
|
+
* (src/activity.ts). Think/tool activity NEVER creates transcript blocks
|
|
7
|
+
* — one panel of each kind exists for the whole run, every event
|
|
8
|
+
* refreshes it in place, and a panel with no content renders zero rows.
|
|
9
|
+
* - `activityDoc` (the lastRequest container BELOW the editor): the
|
|
10
|
+
* ` ● <last request>` line (persisting across agent churn) followed by one
|
|
11
|
+
* compact line PER RUNNING agent — `├─ ⠋ <name> · ↻N≤M · 21k/1m · 13.6s ·
|
|
12
|
+
* <content tail>`. The tail is the child's latest CONTENT line (assistant
|
|
13
|
+
* text/reasoning, live-refreshed — never a tool name) and takes whatever
|
|
14
|
+
* the row has left, truncated at the right edge: one row, no wrap.
|
|
20
15
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
16
|
+
* Event flow: index.ts routes every parent-session event through
|
|
17
|
+
* `applyEvent` (think/tool phase machine) and todo/write snapshots through
|
|
18
|
+
* `renderTodos`; the bridge's onLive fold feeds `renderAgents`. Phase rules
|
|
19
|
+
* for the panels: a reasoning delta shows the think panel; a tool call
|
|
20
|
+
* refreshes the tool panel (pending); a matching result settles it (status
|
|
21
|
+
* icon, frozen time, result tail); a text delta / assembled message / user
|
|
22
|
+
* message / turn end hides the finished phases. `clear()` (/new, resume)
|
|
23
|
+
* hides both panels.
|
|
26
24
|
*
|
|
27
|
-
* Live refresh: `tickLive` (the AGENT_TICK_MS timer in index.ts) advances
|
|
28
|
-
* spinner and
|
|
29
|
-
*
|
|
30
|
-
*
|
|
25
|
+
* Live refresh: `tickLive` (the AGENT_TICK_MS timer in index.ts) advances
|
|
26
|
+
* the spinner and repaints while any agent runs OR either panel is visible
|
|
27
|
+
* (the elapsed columns re-read the clock each frame); no-op otherwise.
|
|
28
|
+
* `setTheme` recolors in place on a theme hot-switch (the panels re-render
|
|
29
|
+
* each frame through their theme getters — no replay buffer, they are live
|
|
30
|
+
* state, not transcript history).
|
|
31
31
|
*/
|
|
32
32
|
import { Container, Text } from '@earendil-works/pi-tui';
|
|
33
|
-
import {
|
|
33
|
+
import { DEFAULT_PANEL_HEIGHT, ThinkPanel, ToolPanel, borderedRow, clipPanelLine, panelBottomBorder, panelBoxWidth, panelTopBorder, } from "./activity.js";
|
|
34
|
+
import { columnWidths, padCell, TABLE_SEP } from "./panels.js";
|
|
35
|
+
import { SPAWN_TOOLS } from "./subagent-policy.js";
|
|
34
36
|
import { ansiFg, RESET } from "./theme/index.js";
|
|
35
37
|
import { clipToWidth, visibleWidth } from "./text.js";
|
|
36
|
-
/** Refresh interval of the live
|
|
38
|
+
/** Refresh interval of the live surfaces (spinner + elapsed columns). */
|
|
37
39
|
export const AGENT_TICK_MS = 100;
|
|
38
40
|
/** Braille spinner cycle; the frame index advances once per tick. */
|
|
39
41
|
export const AGENT_SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
40
42
|
/**
|
|
41
|
-
* Compact human-readable size: 1_500_000
|
|
43
|
+
* Compact human-readable size: 1_500_000 -> `1.5m`, 20_965 -> `20k`, 999 -> `999`.
|
|
42
44
|
* Millions keep one decimal (a trailing `.0` dropped), thousands floor to `k`.
|
|
43
45
|
*/
|
|
44
46
|
export function fmtCompact(n) {
|
|
@@ -50,26 +52,91 @@ export function fmtCompact(n) {
|
|
|
50
52
|
return `${Math.floor(n / 1_000)}k`;
|
|
51
53
|
return String(n);
|
|
52
54
|
}
|
|
53
|
-
/**
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
/** The todos table columns: right-aligned row number, status icon, flex content. */
|
|
56
|
+
const TODO_COLUMNS = [
|
|
57
|
+
{ key: 'idx', title: '#', width: 3, align: 'right' },
|
|
58
|
+
{ key: 'status', title: '✓', width: 2 },
|
|
59
|
+
{ key: 'content', title: 'Task', flex: true },
|
|
60
|
+
];
|
|
61
|
+
/** Status icon of one todo: pending / in-progress / completed. */
|
|
62
|
+
function todoIcon(status) {
|
|
63
|
+
if (status === 'completed')
|
|
64
|
+
return '☑';
|
|
65
|
+
if (status === 'in_progress')
|
|
66
|
+
return '◐';
|
|
67
|
+
return '☐';
|
|
57
68
|
}
|
|
58
|
-
/**
|
|
59
|
-
|
|
60
|
-
|
|
69
|
+
/**
|
|
70
|
+
* The live Todos panel - a self-drawing table on the panel framework
|
|
71
|
+
* (padCell/columnWidths from panels.ts), rendered at the CURRENT width on
|
|
72
|
+
* every frame. pi-tui's Container calls `render(width)` per frame with no
|
|
73
|
+
* caching, so a terminal resize re-lays the table out (clip + column widths)
|
|
74
|
+
* automatically - no stale baked rows, no word-wrap. Renders zero rows while
|
|
75
|
+
* the list is empty or every todo is completed (clear-when-done).
|
|
76
|
+
*/
|
|
77
|
+
export class TodosPanel {
|
|
78
|
+
todos = [];
|
|
79
|
+
getTheme;
|
|
80
|
+
constructor(getTheme) {
|
|
81
|
+
this.getTheme = getTheme;
|
|
82
|
+
}
|
|
83
|
+
invalidate() { }
|
|
84
|
+
/** Replace the todos snapshot (`todo/write` events, replay, /new). */
|
|
85
|
+
setTodos(todos) {
|
|
86
|
+
this.todos = todos;
|
|
87
|
+
}
|
|
88
|
+
render(width) {
|
|
89
|
+
if (this.todos.length === 0 || this.todos.every(todo => todo.status === 'completed'))
|
|
90
|
+
return [];
|
|
91
|
+
const theme = this.getTheme();
|
|
92
|
+
const p = theme.palette;
|
|
93
|
+
const boxWidth = panelBoxWidth(width);
|
|
94
|
+
const borderFg = ansiFg(p.borderDefault);
|
|
95
|
+
const innerWidth = boxWidth - 4;
|
|
96
|
+
const colWidths = columnWidths(innerWidth, TODO_COLUMNS);
|
|
97
|
+
const subtle = (text) => ansiFg(p.fgSubtle) + text + RESET;
|
|
98
|
+
// Header row of the panel: `● Todos (done/total)` in the accent/subtle pair.
|
|
99
|
+
const done = this.todos.filter(todo => todo.status === 'completed').length;
|
|
100
|
+
const headerInner = ansiFg(p.accent) + '● Todos ' + RESET
|
|
101
|
+
+ subtle(`(${done}/${this.todos.length})`);
|
|
102
|
+
const out = [panelTopBorder(boxWidth, borderFg), borderedRow(boxWidth, borderFg, headerInner)];
|
|
103
|
+
// Table header: every cell padded to its column so the rows align.
|
|
104
|
+
out.push(borderedRow(boxWidth, borderFg, TODO_COLUMNS.map((column, i) => padCell(column.title, colWidths[i], column.align)).join(TABLE_SEP)));
|
|
105
|
+
for (let i = 0; i < this.todos.length; i++) {
|
|
106
|
+
const todo = this.todos[i];
|
|
107
|
+
// Plain (clipped+padded) cells FIRST, ANSI after - the panel-line rule.
|
|
108
|
+
const idxCell = padCell(String(i + 1), colWidths[0], 'right');
|
|
109
|
+
const iconCell = padCell(todoIcon(todo.status), colWidths[1]);
|
|
110
|
+
const contentCell = padClip(todo.content, colWidths[2]);
|
|
111
|
+
// One color per status across the icon and content cells (the icon has
|
|
112
|
+
// its own column here - no baked-in prefix from theme.chat.todo*).
|
|
113
|
+
const color = todo.status === 'completed'
|
|
114
|
+
? p.success
|
|
115
|
+
: todo.status === 'in_progress' ? p.attention : p.fgSubtle;
|
|
116
|
+
const statusStyle = (text) => ansiFg(color) + text + RESET;
|
|
117
|
+
out.push(borderedRow(boxWidth, borderFg, subtle(idxCell) + TABLE_SEP + statusStyle(iconCell) + TABLE_SEP + statusStyle(contentCell)));
|
|
118
|
+
}
|
|
119
|
+
out.push(panelBottomBorder(boxWidth, borderFg));
|
|
120
|
+
return out;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** Clip one todo's content (a possibly multiline model string) to one row. */
|
|
124
|
+
function padClip(content, width) {
|
|
125
|
+
const flat = content.replace(/\r/g, '').replace(/\n/g, ' ').trim();
|
|
126
|
+
return padCell(flat, width);
|
|
61
127
|
}
|
|
62
128
|
export class LiveWidgets {
|
|
63
129
|
todosDoc;
|
|
64
130
|
activityDoc;
|
|
65
131
|
theme;
|
|
66
132
|
requestRender;
|
|
67
|
-
/**
|
|
68
|
-
|
|
133
|
+
/** The self-drawing Todos table, mounted once in `todosDoc`. */
|
|
134
|
+
todosPanel;
|
|
135
|
+
/** The fixed think/tool status panels, mounted once in `todosDoc`. */
|
|
136
|
+
thinkPanel;
|
|
137
|
+
toolPanel;
|
|
69
138
|
/** Latest subagent views from the bridge's onLive fold. */
|
|
70
139
|
liveAgents = [];
|
|
71
|
-
/** The Todos panel Text in `todosDoc`, replaced on rebuild. */
|
|
72
|
-
todosText;
|
|
73
140
|
/** The merged running-agent Text in `activityDoc`, replaced on rebuild. */
|
|
74
141
|
agentsText;
|
|
75
142
|
/** The ` ● <last request>` Text in `activityDoc` (persists across churn). */
|
|
@@ -79,16 +146,30 @@ export class LiveWidgets {
|
|
|
79
146
|
/** Spinner frame counter, advanced by tickLive while any agent runs. */
|
|
80
147
|
spinnerFrame = 0;
|
|
81
148
|
/**
|
|
82
|
-
* @param todosDoc The dock slot ABOVE the chat input
|
|
83
|
-
*
|
|
84
|
-
* @param activityDoc The lastRequest container BELOW the editor
|
|
149
|
+
* @param todosDoc The dock slot ABOVE the chat input - the Todos table and
|
|
150
|
+
* the think/tool status panels live here.
|
|
151
|
+
* @param activityDoc The lastRequest container BELOW the editor - the ` ● `
|
|
85
152
|
* last-request line plus the compact running-agent lines live here.
|
|
153
|
+
* @param panelHeight Configured think/tool panel height ('1' one row, or a
|
|
154
|
+
* boxed budget - see activity.ts).
|
|
86
155
|
*/
|
|
87
|
-
constructor(todosDoc, activityDoc, theme, requestRender) {
|
|
156
|
+
constructor(todosDoc, activityDoc, theme, requestRender, panelHeight = DEFAULT_PANEL_HEIGHT) {
|
|
88
157
|
this.todosDoc = todosDoc;
|
|
89
158
|
this.activityDoc = activityDoc;
|
|
90
159
|
this.theme = theme;
|
|
91
160
|
this.requestRender = requestRender;
|
|
161
|
+
// Mounted once, in display order: Todos (persistent plan) above the
|
|
162
|
+
// transient think/tool activity. The panels re-render at the live width
|
|
163
|
+
// every frame and read the theme through their getters, so theme swaps
|
|
164
|
+
// and terminal resizes need no rebuild wiring here.
|
|
165
|
+
this.todosPanel = new TodosPanel(() => this.theme);
|
|
166
|
+
this.thinkPanel = new ThinkPanel(() => this.theme);
|
|
167
|
+
this.toolPanel = new ToolPanel(() => this.theme);
|
|
168
|
+
this.thinkPanel.setHeight(panelHeight);
|
|
169
|
+
this.toolPanel.setHeight(panelHeight);
|
|
170
|
+
todosDoc.addChild(this.todosPanel);
|
|
171
|
+
todosDoc.addChild(this.thinkPanel);
|
|
172
|
+
todosDoc.addChild(this.toolPanel);
|
|
92
173
|
}
|
|
93
174
|
/**
|
|
94
175
|
* Render the ` ● <text>` last-request line in `activityDoc`, UNDER which the
|
|
@@ -129,8 +210,74 @@ export class LiveWidgets {
|
|
|
129
210
|
}
|
|
130
211
|
/** Replace the todos snapshot (`todo/write` events and replay). */
|
|
131
212
|
renderTodos(todos) {
|
|
132
|
-
this.
|
|
133
|
-
this.
|
|
213
|
+
this.todosPanel.setTodos(todos);
|
|
214
|
+
this.requestRender();
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* One parent-session session event, driving the think/tool phase machine:
|
|
218
|
+
* a reasoning delta opens/feeds the think panel; a tool call refreshes the
|
|
219
|
+
* tool panel (pending, replacing any tracked tool) — except delegation
|
|
220
|
+
* spawn tools (`use_agent`/`subagent`/`workflow`/`ralph`), whose children
|
|
221
|
+
* already render in the running-agent lines below the editor and never
|
|
222
|
+
* open a tool block; a matching result settles the tracked tool; a text
|
|
223
|
+
* delta, an assembled assistant message, a user message or a turn end
|
|
224
|
+
* hides the finished phases. Called for every event AND for replayed
|
|
225
|
+
* history (a resumed session replays its tool calls; its final turn/end
|
|
226
|
+
* leaves the panels hidden).
|
|
227
|
+
*/
|
|
228
|
+
applyEvent(event) {
|
|
229
|
+
switch (event.type) {
|
|
230
|
+
case 'assistant/chunk': {
|
|
231
|
+
const chunk = event.data.chunk;
|
|
232
|
+
if (chunk.type === 'reasoning-delta') {
|
|
233
|
+
if ((chunk.text ?? '') !== '') {
|
|
234
|
+
this.thinkPanel.feed(chunk.text);
|
|
235
|
+
this.toolPanel.hide();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
else if (chunk.type === 'text-delta' && (chunk.text ?? '') !== '') {
|
|
239
|
+
// The answer streams into the transcript — the panels are done.
|
|
240
|
+
this.thinkPanel.hide();
|
|
241
|
+
this.toolPanel.hide();
|
|
242
|
+
}
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
case 'assistant/message':
|
|
246
|
+
this.thinkPanel.hide();
|
|
247
|
+
break;
|
|
248
|
+
case 'tool/call':
|
|
249
|
+
// Delegation spawn tools (`use_agent`, `subagent`, `workflow`, …)
|
|
250
|
+
// surface their children in the running-agent lines BELOW the editor
|
|
251
|
+
// — showing them again as a tool block above it would duplicate the
|
|
252
|
+
// display. They never open the tool panel, and a stale settled tool
|
|
253
|
+
// is cleared when the delegation starts.
|
|
254
|
+
if (SPAWN_TOOLS.includes(event.data.name)) {
|
|
255
|
+
this.toolPanel.hide();
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
this.toolPanel.begin(event.data.callId, event.data.name, event.data.arguments);
|
|
259
|
+
}
|
|
260
|
+
this.thinkPanel.hide();
|
|
261
|
+
break;
|
|
262
|
+
case 'tool/result': {
|
|
263
|
+
const block = event.data.message.content[0];
|
|
264
|
+
this.toolPanel.settle(block?.toolCallId ?? '', {
|
|
265
|
+
error: event.data.error === undefined
|
|
266
|
+
? undefined
|
|
267
|
+
: { name: event.data.error.name, code: event.data.error.code },
|
|
268
|
+
block: block === undefined ? undefined : { isError: block.isError, content: block.content },
|
|
269
|
+
});
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
case 'user/message':
|
|
273
|
+
case 'turn/end':
|
|
274
|
+
this.thinkPanel.hide();
|
|
275
|
+
this.toolPanel.hide();
|
|
276
|
+
break;
|
|
277
|
+
default:
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
this.requestRender();
|
|
134
281
|
}
|
|
135
282
|
/** Replace the subagent views (the bridge's onLive fold). */
|
|
136
283
|
renderAgents(agents) {
|
|
@@ -138,18 +285,33 @@ export class LiveWidgets {
|
|
|
138
285
|
this.rebuild();
|
|
139
286
|
}
|
|
140
287
|
/**
|
|
141
|
-
* Live refresh ~10x/sec while any subagent runs
|
|
142
|
-
* repaint (the elapsed
|
|
143
|
-
* — the activity area then holds
|
|
288
|
+
* Live refresh ~10x/sec while any subagent runs or either status panel is
|
|
289
|
+
* visible: advance the spinner and repaint (the elapsed columns re-read
|
|
290
|
+
* Date.now() each frame). No-op otherwise — the activity area then holds
|
|
291
|
+
* its final (empty) state.
|
|
144
292
|
*/
|
|
145
293
|
tickLive() {
|
|
146
|
-
|
|
294
|
+
const agentsLive = this.liveAgents.some(view => view.outcome === undefined);
|
|
295
|
+
const panelsLive = this.thinkPanel.isVisible() || this.toolPanel.isVisible();
|
|
296
|
+
if (!agentsLive && !panelsLive)
|
|
147
297
|
return;
|
|
148
|
-
|
|
298
|
+
if (agentsLive)
|
|
299
|
+
this.spinnerFrame += 1;
|
|
149
300
|
this.rebuild();
|
|
150
301
|
}
|
|
151
|
-
/**
|
|
152
|
-
*
|
|
302
|
+
/**
|
|
303
|
+
* Switch the configured think/tool panel height (the settings watch sink).
|
|
304
|
+
* The panels re-render at the new budget on the next frame — no rebuild
|
|
305
|
+
* wiring, they are self-drawing.
|
|
306
|
+
*/
|
|
307
|
+
setPanelHeight(panelHeight) {
|
|
308
|
+
this.thinkPanel.setHeight(panelHeight);
|
|
309
|
+
this.toolPanel.setHeight(panelHeight);
|
|
310
|
+
this.requestRender();
|
|
311
|
+
}
|
|
312
|
+
/** Recolor the widget (Todos panel, think/tool panels, ● line and agent
|
|
313
|
+
* lines) under a theme hot-switch (no-op on the same bundle). The panels
|
|
314
|
+
* read the theme through their getters, so the swap needs only a repaint. */
|
|
153
315
|
setTheme(theme) {
|
|
154
316
|
if (theme === this.theme)
|
|
155
317
|
return;
|
|
@@ -163,17 +325,15 @@ export class LiveWidgets {
|
|
|
163
325
|
}
|
|
164
326
|
/**
|
|
165
327
|
* Drop everything except the last-request echo (`/new`): clears the Todos
|
|
166
|
-
* panel and the running-agent lines,
|
|
167
|
-
* fires `renderAgents([])`.
|
|
328
|
+
* panel, hides the think/tool panels and drops the running-agent lines,
|
|
329
|
+
* keeps the ` ● ` line. The bridge also fires `renderAgents([])`.
|
|
168
330
|
*/
|
|
169
331
|
clear() {
|
|
170
|
-
this.liveTodos = [];
|
|
171
332
|
this.liveAgents = [];
|
|
172
333
|
this.spinnerFrame = 0;
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
334
|
+
this.todosPanel.setTodos([]);
|
|
335
|
+
this.thinkPanel.hide();
|
|
336
|
+
this.toolPanel.hide();
|
|
177
337
|
if (this.agentsText !== undefined) {
|
|
178
338
|
this.activityDoc.removeChild(this.agentsText);
|
|
179
339
|
this.agentsText = undefined;
|
|
@@ -181,28 +341,14 @@ export class LiveWidgets {
|
|
|
181
341
|
this.requestRender();
|
|
182
342
|
}
|
|
183
343
|
/**
|
|
184
|
-
* Rebuild the
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
* Clear-when-done: the
|
|
190
|
-
* model writes the whole-list snapshot and rarely clears it — an
|
|
191
|
-
* all-completed list is the end-of-work signal); the agent lines hide once
|
|
192
|
-
* no child is running.
|
|
344
|
+
* Rebuild the running-agent surface of `activityDoc`: the ` ● ` line
|
|
345
|
+
* (managed separately, persists) followed by ONE Text holding the compact
|
|
346
|
+
* running-agent lines joined by '\n' (or nothing when no agent runs - the
|
|
347
|
+
* slot collapses to the ● line). The pinned panels are NOT rebuilt here -
|
|
348
|
+
* they are self-drawing components that re-render each frame.
|
|
349
|
+
* Clear-when-done: the agent lines hide once no child is running.
|
|
193
350
|
*/
|
|
194
351
|
rebuild() {
|
|
195
|
-
if (this.liveTodos.some(todo => todo.status !== 'completed')) {
|
|
196
|
-
const panel = this.boxedPanel(this.todosHeader(), this.todoLines());
|
|
197
|
-
if (this.todosText !== undefined)
|
|
198
|
-
this.todosDoc.removeChild(this.todosText);
|
|
199
|
-
this.todosText = new Text(panel, 1, 0);
|
|
200
|
-
this.todosDoc.addChild(this.todosText);
|
|
201
|
-
}
|
|
202
|
-
else if (this.todosText !== undefined) {
|
|
203
|
-
this.todosDoc.removeChild(this.todosText);
|
|
204
|
-
this.todosText = undefined;
|
|
205
|
-
}
|
|
206
352
|
const running = this.liveAgents.filter(view => view.outcome === undefined);
|
|
207
353
|
if (running.length > 0) {
|
|
208
354
|
const lines = running.map((view, i) => this.compactAgentLine(view, i === running.length - 1));
|
|
@@ -222,59 +368,18 @@ export class LiveWidgets {
|
|
|
222
368
|
}
|
|
223
369
|
this.requestRender();
|
|
224
370
|
}
|
|
225
|
-
/** One bordered panel: top border + header row + body rows + bottom border. */
|
|
226
|
-
boxedPanel(headerInner, bodyLines) {
|
|
227
|
-
const boxWidth = panelBoxWidth(process.stdout.columns);
|
|
228
|
-
const borderFg = ansiFg(this.theme.palette.borderDefault);
|
|
229
|
-
const top = panelTopBorder(boxWidth, borderFg);
|
|
230
|
-
const header = borderedRow(boxWidth, borderFg, clipPanelLine(headerInner));
|
|
231
|
-
// 'all' body: every line kept verbatim (each already clipped to one
|
|
232
|
-
// physical row), bottom border appended.
|
|
233
|
-
const body = panelBodyText(bodyLines, boxWidth, borderFg, 'all');
|
|
234
|
-
return `${top}\n${header}\n${body}`;
|
|
235
|
-
}
|
|
236
|
-
/** `● Todos (done/total)`, styled for the panel header row. */
|
|
237
|
-
todosHeader() {
|
|
238
|
-
const done = this.liveTodos.filter(todo => todo.status === 'completed').length;
|
|
239
|
-
return ansiFg(this.theme.palette.accent) + '● Todos ' + RESET
|
|
240
|
-
+ ansiFg(this.theme.palette.fgSubtle) + `(${done}/${this.liveTodos.length})` + RESET;
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Tree-style todo body lines: `├─`/`└─` connectors with `☐`/`◐`/`☑` status
|
|
244
|
-
* icons. Content is model-controlled: clipped BEFORE styling to the boxed
|
|
245
|
-
* row's inner budget minus the tree chrome (connector 3 cols + icon+space
|
|
246
|
-
* 2 cols) — see clipPanelLine's contract.
|
|
247
|
-
*/
|
|
248
|
-
todoLines() {
|
|
249
|
-
const innerCap = panelBoxWidth(process.stdout.columns) - 4;
|
|
250
|
-
const lines = [];
|
|
251
|
-
const total = this.liveTodos.length;
|
|
252
|
-
for (let i = 0; i < total; i++) {
|
|
253
|
-
const todo = this.liveTodos[i];
|
|
254
|
-
const content = clipToWidth(todo.content, Math.max(10, innerCap - 5));
|
|
255
|
-
const connector = ansiFg(this.theme.palette.fgSubtle) + (i === total - 1 ? '└─ ' : '├─ ') + RESET;
|
|
256
|
-
const statusStyled = todo.status === 'completed'
|
|
257
|
-
? this.theme.chat.todoDone(content)
|
|
258
|
-
: todo.status === 'in_progress'
|
|
259
|
-
? ansiFg(this.theme.palette.attention) + `◐ ${content}` + RESET
|
|
260
|
-
: this.theme.chat.todoOpen(content);
|
|
261
|
-
lines.push(connector + statusStyled);
|
|
262
|
-
}
|
|
263
|
-
return lines;
|
|
264
|
-
}
|
|
265
371
|
/**
|
|
266
372
|
* One compact running-agent line for the last-request area, todo-style:
|
|
267
373
|
* `├─ `/`└─ ` connector (same column as the todo rows and the request
|
|
268
|
-
* ` ● `) + spinner + the agent NAME (`view.label
|
|
269
|
-
*
|
|
270
|
-
*
|
|
271
|
-
*
|
|
272
|
-
* chrome, NO provider
|
|
273
|
-
*
|
|
274
|
-
*
|
|
275
|
-
*
|
|
276
|
-
*
|
|
277
|
-
* counts SGR fragments as visible columns — style last).
|
|
374
|
+
* ` ● `) + spinner + the agent NAME (`view.label`) + the exact meta the
|
|
375
|
+
* boxed board showed (`↻retries≤max`, compact `tokens[/contextWindow]`,
|
|
376
|
+
* elapsed) + the child's latest CONTENT line — live-refreshed assistant
|
|
377
|
+
* text/reasoning, NEVER a tool name — as the ` · <tail>` suffix. NO box
|
|
378
|
+
* chrome, NO provider. Layout against the terminal width: the name caps at
|
|
379
|
+
* 40% of the space the meta leaves; the tail takes EVERYTHING else and is
|
|
380
|
+
* truncated at the right edge (single row, never wrapped). The assembled
|
|
381
|
+
* plain line is clipped to the terminal width BEFORE any ANSI is applied
|
|
382
|
+
* (clipToWidth counts SGR fragments as visible columns — style last).
|
|
278
383
|
*/
|
|
279
384
|
compactAgentLine(view, isLast) {
|
|
280
385
|
// Todo-style tree connector: `├─ ` for non-final rows, `└─ ` for the last
|
|
@@ -295,46 +400,37 @@ export class LiveWidgets {
|
|
|
295
400
|
}
|
|
296
401
|
const elapsed = (Date.now() - view.startedAt) / 1000;
|
|
297
402
|
metaParts.push(`${elapsed.toFixed(1)}s`);
|
|
298
|
-
|
|
299
|
-
// Tail: the child's latest visible output line, appended after the elapsed
|
|
300
|
-
// column so the user knows it is alive. Budget ≤30% of the terminal width
|
|
301
|
-
// (clamped 20..60 cols); when the folded line is wider, clip to
|
|
302
|
-
// tailBudget-2 and end with `..` (clipToWidth's own `…` is stripped).
|
|
303
|
-
const lastLine = view.lastLine;
|
|
304
|
-
if (lastLine !== undefined && lastLine !== '') {
|
|
305
|
-
const folded = lastLine.replace(/\s+/g, ' ').trim();
|
|
306
|
-
if (folded !== '') {
|
|
307
|
-
const tailBudget = Math.min(60, Math.max(20, Math.floor(width * 0.3)));
|
|
308
|
-
if (visibleWidth(folded) > tailBudget) {
|
|
309
|
-
const clipped = clipToWidth(folded, tailBudget - 2).replace(/…$/, '');
|
|
310
|
-
metaPlain += ` · ${clipped}..`;
|
|
311
|
-
}
|
|
312
|
-
else {
|
|
313
|
-
metaPlain += ` · ${folded}`;
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
}
|
|
403
|
+
const metaPlain = ' · ' + metaParts.join(' · ');
|
|
317
404
|
// Defensive: never render an empty name — fall back to `subagent`.
|
|
318
405
|
const rawLabel = clipPanelLine(view.label, 0).replace(/\r/g, '').trim();
|
|
319
406
|
const namePlain = rawLabel === ''
|
|
320
407
|
? 'subagent'
|
|
321
408
|
: rawLabel;
|
|
322
409
|
// Fixed chrome: prefix (3) + spinner (1) + following space (1) + a safety
|
|
323
|
-
// column. The
|
|
410
|
+
// column. The name caps at 40% of what the meta leaves; the tail gets the
|
|
411
|
+
// remainder of the width budget.
|
|
324
412
|
const fixed = visibleWidth(PREFIX) + 1 + 1 + 1;
|
|
325
|
-
const
|
|
326
|
-
const
|
|
413
|
+
const avail = width - fixed - visibleWidth(metaPlain);
|
|
414
|
+
const nameCap = Math.max(10, Math.floor(avail * 0.4));
|
|
415
|
+
const nameClipped = clipToWidth(namePlain, Math.max(0, nameCap));
|
|
416
|
+
const tailBudget = avail - visibleWidth(nameClipped) - 3;
|
|
417
|
+
let tailText = '';
|
|
418
|
+
const folded = view.lastLine === undefined ? '' : view.lastLine.replace(/\s+/g, ' ').trim();
|
|
419
|
+
if (folded !== '' && tailBudget >= 4) {
|
|
420
|
+
tailText = ` · ${clipToWidth(folded, tailBudget - 3)}`;
|
|
421
|
+
}
|
|
327
422
|
// The full PLAIN line, clipped to the terminal width BEFORE styling.
|
|
328
|
-
const plain = PREFIX + glyph + ' ' + nameClipped + metaPlain;
|
|
423
|
+
const plain = PREFIX + glyph + ' ' + nameClipped + metaPlain + tailText;
|
|
329
424
|
const clipped = clipToWidth(plain, width);
|
|
330
425
|
// Style segments from the (clipped, guaranteed-identical-when-it-fits)
|
|
331
426
|
// plain pieces: connector subtle, spinner muted, NAME default (prominent),
|
|
332
|
-
// meta (
|
|
427
|
+
// meta subtle, content tail muted (the live signal the user watches).
|
|
333
428
|
const connector = ansiFg(this.theme.palette.fgSubtle) + PREFIX + RESET;
|
|
334
429
|
const spinner = ansiFg(this.theme.palette.fgMuted) + glyph + RESET;
|
|
335
430
|
const metaStyled = ansiFg(this.theme.palette.fgSubtle) + metaPlain + RESET;
|
|
431
|
+
const tailStyled = ansiFg(this.theme.palette.fgMuted) + tailText + RESET;
|
|
336
432
|
const nameStyled = ansiFg(this.theme.palette.fgDefault) + nameClipped + RESET;
|
|
337
|
-
const base = connector + spinner + ' ' + nameStyled + metaStyled;
|
|
433
|
+
const base = connector + spinner + ' ' + nameStyled + metaStyled + tailStyled;
|
|
338
434
|
// If clipping truncated the plain line (pathological meta), re-clip the
|
|
339
435
|
// assembled styled line's visible width too; otherwise base is exact.
|
|
340
436
|
if (visibleWidth(clipped) < visibleWidth(plain)) {
|
package/lib/live-widgets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-widgets.js","sourceRoot":"","sources":["../src/live-widgets.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"live-widgets.js","sourceRoot":"","sources":["../src/live-widgets.ts"],"names":[],"mappings":"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"}
|