@namzu/cli 28.0.0 → 28.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/integrations/sessions/transcript-export.js +3 -1
- package/dist/integrations/sessions/transcript-export.js.map +1 -1
- package/dist/permissions/live-mode.d.ts +73 -0
- package/dist/permissions/live-mode.d.ts.map +1 -0
- package/dist/permissions/live-mode.js +62 -0
- package/dist/permissions/live-mode.js.map +1 -0
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +176 -74
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/Checklist.d.ts +56 -0
- package/dist/tui/Checklist.d.ts.map +1 -0
- package/dist/tui/Checklist.js +90 -0
- package/dist/tui/Checklist.js.map +1 -0
- package/dist/tui/StatusBar.d.ts +10 -0
- package/dist/tui/StatusBar.d.ts.map +1 -1
- package/dist/tui/StatusBar.js +8 -1
- package/dist/tui/StatusBar.js.map +1 -1
- package/dist/tui/TaskList.d.ts +18 -25
- package/dist/tui/TaskList.d.ts.map +1 -1
- package/dist/tui/TaskList.js +34 -58
- package/dist/tui/TaskList.js.map +1 -1
- package/dist/tui/Transcript.d.ts.map +1 -1
- package/dist/tui/Transcript.js +8 -1
- package/dist/tui/Transcript.js.map +1 -1
- package/dist/tui/agent.d.ts +29 -3
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +38 -5
- package/dist/tui/agent.js.map +1 -1
- package/dist/tui/live-window.d.ts +22 -0
- package/dist/tui/live-window.d.ts.map +1 -1
- package/dist/tui/live-window.js +34 -0
- package/dist/tui/live-window.js.map +1 -1
- package/dist/tui/notices.d.ts +27 -0
- package/dist/tui/notices.d.ts.map +1 -0
- package/dist/tui/notices.js +27 -0
- package/dist/tui/notices.js.map +1 -0
- package/dist/tui/task-activity.d.ts +71 -0
- package/dist/tui/task-activity.d.ts.map +1 -0
- package/dist/tui/task-activity.js +157 -0
- package/dist/tui/task-activity.js.map +1 -0
- package/dist/tui/types.d.ts +13 -0
- package/dist/tui/types.d.ts.map +1 -1
- package/package.json +7 -7
package/dist/tui/live-window.js
CHANGED
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
* again. Rows therefore leave the window in one direction, oldest first, and a
|
|
41
41
|
* row that has settled never comes back.
|
|
42
42
|
*/
|
|
43
|
+
import { checklistBlockRows, checklistLine } from './Checklist.js';
|
|
43
44
|
import { renderedDetailLines } from './Transcript.js';
|
|
44
45
|
import { statusPanelLayout } from './status-panel-layout.js';
|
|
45
46
|
import { terminalDisplayText } from './terminal-display.js';
|
|
@@ -71,6 +72,7 @@ function messageLines(message, hasPrev, raw) {
|
|
|
71
72
|
return [
|
|
72
73
|
...(hasPrev ? [''] : []),
|
|
73
74
|
`${content}${meta ? ` · ${meta}` : ''}`,
|
|
75
|
+
...(message.checklist ?? []).map(checklistLine),
|
|
74
76
|
...(message.detail && message.detail.length > 0
|
|
75
77
|
? ['', ...message.detail.map(terminalDisplayText)]
|
|
76
78
|
: []),
|
|
@@ -197,4 +199,36 @@ export function liveWindow(input) {
|
|
|
197
199
|
}
|
|
198
200
|
return { settled: messages.length - held, rows: height };
|
|
199
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* Whether the newest checklist block is still wholly on screen.
|
|
204
|
+
*
|
|
205
|
+
* The current-step row above the composer stands in for a checklist that has
|
|
206
|
+
* scrolled away. The block is in view when it, every row printed after it,
|
|
207
|
+
* and the live furniture together fit the terminal's height; a reply that
|
|
208
|
+
* follows the block does not by itself push it out. Rows below are measured
|
|
209
|
+
* with the same over-count the live window uses, so the answer errs towards
|
|
210
|
+
* "out of view": at worst the step is named once more, never lost.
|
|
211
|
+
*/
|
|
212
|
+
export function checklistInView(input) {
|
|
213
|
+
const { messages, rows, columns, furnitureRows, raw = false } = input;
|
|
214
|
+
if (rows === undefined || !Number.isFinite(rows))
|
|
215
|
+
return false;
|
|
216
|
+
let index = -1;
|
|
217
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
218
|
+
if (messages[i]?.taskBlock !== undefined) {
|
|
219
|
+
index = i;
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
const block = messages[index];
|
|
224
|
+
if (block === undefined)
|
|
225
|
+
return false;
|
|
226
|
+
let below = 0;
|
|
227
|
+
for (let i = index + 1; i < messages.length; i++) {
|
|
228
|
+
const message = messages[i];
|
|
229
|
+
if (message)
|
|
230
|
+
below += messageHeight(message, true, columns, raw);
|
|
231
|
+
}
|
|
232
|
+
return furnitureRows + checklistBlockRows(block, columns ?? 80) + below < rows;
|
|
233
|
+
}
|
|
200
234
|
//# sourceMappingURL=live-window.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-window.js","sourceRoot":"","sources":["../../src/tui/live-window.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAG3D,6EAA6E;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAA;AAExC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAA;AAwB9B;;;;;;;;GAQG;AACH,SAAS,YAAY,CAAC,OAA0B,EAAE,OAAgB,EAAE,GAAY;IAC/E,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAClE,IAAI,GAAG,EAAE,CAAC;QACT,OAAO;YACN,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YACvC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBAC9C,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBAClD,CAAC,CAAC,EAAE,CAAC;SACN,CAAA;IACF,CAAC;IACD,OAAO;QACN,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,KAAK,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACzC,GAAG,mBAAmB,CAAC,OAAO,CAAC;KAC/B,CAAA;AACF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC9B,QAAsC,EACtC,GAAG,GAAG,KAAK;IAEX,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACpD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;AAC5E,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,KAAa;IACvC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,IAAI,KAAK,IAAI;YAAE,KAAK,IAAI,CAAC,CAAA;aACxB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI;YAAE,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtE,CAAC;IACD,OAAO,KAAK,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACpC,UAA6B,EAC7B,OAA2B;IAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA;IACzC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAA;QACjE,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAA;AACb,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,oBAAoB,GAAG,CAAC,CAAA;AAE9B;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,OAA0B,EAAE,GAAY;IACxE,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,CAAC,CAAA;IACjD,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAA;AACnF,CAAC;AAED,0DAA0D;AAC1D,SAAS,aAAa,CACrB,OAA0B,EAC1B,OAAgB,EAChB,OAA2B,EAC3B,GAAY;IAEZ,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,UAAU;QAAE,OAAO,iBAAiB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IAChG,OAAO,CACN,qBAAqB,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;QACnE,oBAAoB;QACpB,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC,CACrC,CAAA;AACF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAChD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,KAAK,CAAA;IAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IAE7D,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;IAC9F,MAAM,MAAM,GAAG,IAAI,GAAG,aAAa,GAAG,uBAAuB,CAAA;IAC7D,IAAI,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;IAE5D,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,OAAO;YAAE,MAAK;QACnB,MAAM,IAAI,GAAG,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;QACjE,IAAI,IAAI,GAAG,MAAM;YAAE,MAAK;QACxB,MAAM,GAAG,IAAI,CAAA;QACb,IAAI,IAAI,CAAC,CAAA;IACV,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;AACzD,CAAC"}
|
|
1
|
+
{"version":3,"file":"live-window.js","sourceRoot":"","sources":["../../src/tui/live-window.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { TranscriptMessage } from './types.js';
|
|
2
|
+
/** The fields of a row about to be written that decide whether it repeats the last one. */
|
|
3
|
+
export interface NoticeCandidate {
|
|
4
|
+
readonly role: TranscriptMessage['role'];
|
|
5
|
+
readonly content: string;
|
|
6
|
+
readonly pending?: boolean;
|
|
7
|
+
readonly glyph?: string;
|
|
8
|
+
readonly detail?: readonly string[];
|
|
9
|
+
readonly activity?: TranscriptMessage['activity'];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Whether `candidate` is a system notice identical to the row just before it.
|
|
13
|
+
*
|
|
14
|
+
* A notice printed twice in a row reads as two events. The refusal an
|
|
15
|
+
* operator saw after pressing a key twice — "Permissions were not changed…"
|
|
16
|
+
* on two consecutive lines — said nothing the first line had not, and made
|
|
17
|
+
* the key look as if it had been handled twice. So the notice layer drops
|
|
18
|
+
* the second copy; the caller does not have to remember.
|
|
19
|
+
*
|
|
20
|
+
* Deliberately narrow. Only `system` rows, only when the text, mark and
|
|
21
|
+
* (absent) body match exactly, and only against the LAST row: the same notice
|
|
22
|
+
* after anything else in between is news again, and a tool row or a reply
|
|
23
|
+
* that happens to repeat itself is the model's output, which this layer never
|
|
24
|
+
* edits.
|
|
25
|
+
*/
|
|
26
|
+
export declare function isRepeatedNotice(last: TranscriptMessage | undefined, candidate: NoticeCandidate): boolean;
|
|
27
|
+
//# sourceMappingURL=notices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notices.d.ts","sourceRoot":"","sources":["../../src/tui/notices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,2FAA2F;AAC3F,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAA;CACjD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,iBAAiB,GAAG,SAAS,EACnC,SAAS,EAAE,eAAe,GACxB,OAAO,CAMT"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether `candidate` is a system notice identical to the row just before it.
|
|
3
|
+
*
|
|
4
|
+
* A notice printed twice in a row reads as two events. The refusal an
|
|
5
|
+
* operator saw after pressing a key twice — "Permissions were not changed…"
|
|
6
|
+
* on two consecutive lines — said nothing the first line had not, and made
|
|
7
|
+
* the key look as if it had been handled twice. So the notice layer drops
|
|
8
|
+
* the second copy; the caller does not have to remember.
|
|
9
|
+
*
|
|
10
|
+
* Deliberately narrow. Only `system` rows, only when the text, mark and
|
|
11
|
+
* (absent) body match exactly, and only against the LAST row: the same notice
|
|
12
|
+
* after anything else in between is news again, and a tool row or a reply
|
|
13
|
+
* that happens to repeat itself is the model's output, which this layer never
|
|
14
|
+
* edits.
|
|
15
|
+
*/
|
|
16
|
+
export function isRepeatedNotice(last, candidate) {
|
|
17
|
+
if (!last || candidate.role !== 'system' || last.role !== 'system')
|
|
18
|
+
return false;
|
|
19
|
+
if (candidate.pending || last.pending)
|
|
20
|
+
return false;
|
|
21
|
+
if ((candidate.detail?.length ?? 0) > 0 || (last.detail?.length ?? 0) > 0)
|
|
22
|
+
return false;
|
|
23
|
+
if (candidate.activity || last.activity || last.statusRows || last.checklist)
|
|
24
|
+
return false;
|
|
25
|
+
return last.content === candidate.content && last.glyph === candidate.glyph;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=notices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notices.js","sourceRoot":"","sources":["../../src/tui/notices.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAC/B,IAAmC,EACnC,SAA0B;IAE1B,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAChF,IAAI,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IACnD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACvF,IAAI,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAA;IAC1F,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,CAAA;AAC5E,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task operations as transcript blocks.
|
|
3
|
+
*
|
|
4
|
+
* A planning step is usually several task calls in a row — three
|
|
5
|
+
* `task_create`s, or a `task_update` closing one step and another opening the
|
|
6
|
+
* next. Each used to leave its own tool row, with the tool's arguments and the
|
|
7
|
+
* model's receipt (ids, owner, JSON) as its text. An operator reading that
|
|
8
|
+
* learns the protocol and not the plan.
|
|
9
|
+
*
|
|
10
|
+
* So consecutive task operations in one step fold into ONE block: a header
|
|
11
|
+
* saying what changed, in words (`Added 3 tasks`, `Completed · Write the
|
|
12
|
+
* parser`), and the checklist as it stood afterwards. "Consecutive" is literal:
|
|
13
|
+
* the block keeps growing only while it is the last row of the transcript and
|
|
14
|
+
* belongs to the same turn. Anything else written in between — the model's
|
|
15
|
+
* text, another tool — closes it, and the next task operation opens a new
|
|
16
|
+
* one, so the transcript reads in the order things happened.
|
|
17
|
+
*
|
|
18
|
+
* Pure, so the grouping is testable without rendering.
|
|
19
|
+
*/
|
|
20
|
+
import { type ChecklistItem } from './Checklist.js';
|
|
21
|
+
import type { TranscriptMessage } from './types.js';
|
|
22
|
+
export declare function isTaskTool(toolName: string): boolean;
|
|
23
|
+
export type TaskOperationKind = 'added' | 'started' | 'completed' | 'failed' | 'reopened' | 'renamed' | 'removed';
|
|
24
|
+
export interface TaskOperation {
|
|
25
|
+
readonly kind: TaskOperationKind;
|
|
26
|
+
readonly subject: string;
|
|
27
|
+
}
|
|
28
|
+
/** What one task event did, given what the task was before it; `null` for no visible change. */
|
|
29
|
+
export declare function taskOperationFor(previous: ChecklistItem | undefined, next: ChecklistItem): TaskOperation | null;
|
|
30
|
+
/**
|
|
31
|
+
* The plan after a task left it, and what the block says about it; `null`
|
|
32
|
+
* operation when the task was never on this checklist (nothing visible changed).
|
|
33
|
+
*/
|
|
34
|
+
export declare function removeTask(tasks: readonly ChecklistItem[], id: string, subject: string): {
|
|
35
|
+
readonly tasks: readonly ChecklistItem[];
|
|
36
|
+
readonly operation: TaskOperation | null;
|
|
37
|
+
};
|
|
38
|
+
/** Replace the task with the same id, or append it. */
|
|
39
|
+
export declare function upsertTask(tasks: readonly ChecklistItem[], item: ChecklistItem): readonly ChecklistItem[];
|
|
40
|
+
/** The header line of a block: what changed, else where the plan stands. */
|
|
41
|
+
export declare function taskBlockHeader(operations: readonly TaskOperation[], checklist: readonly ChecklistItem[]): string;
|
|
42
|
+
export interface TaskBlockInput {
|
|
43
|
+
/** Identifies the turn; a block from another turn is never extended. */
|
|
44
|
+
readonly key: string;
|
|
45
|
+
/** Id for the row if a new one is opened. */
|
|
46
|
+
readonly id: string;
|
|
47
|
+
/** What happened; `null` refreshes the checklist without naming a change (a `task_list`). */
|
|
48
|
+
readonly operation: TaskOperation | null;
|
|
49
|
+
/** The whole plan after the operation. */
|
|
50
|
+
readonly checklist: readonly ChecklistItem[];
|
|
51
|
+
/**
|
|
52
|
+
* How many finalized rows are already in native scrollback. A row printed
|
|
53
|
+
* there is never redrawn, so a block that has reached it is closed: updating
|
|
54
|
+
* it would change state nobody can see.
|
|
55
|
+
*/
|
|
56
|
+
readonly settled: number;
|
|
57
|
+
readonly glyphColor?: string;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The transcript after one task operation: the open block grown, or a new
|
|
61
|
+
* block appended. A refresh with no open block and no tasks writes nothing.
|
|
62
|
+
*/
|
|
63
|
+
export declare function applyTaskOperation(messages: readonly TranscriptMessage[], input: TaskBlockInput): readonly TranscriptMessage[];
|
|
64
|
+
/**
|
|
65
|
+
* The kernel's `/tasks` report as a checklist, or `undefined` when its rows
|
|
66
|
+
* are not task rows. The report carries id and owner columns for hosts that
|
|
67
|
+
* want them; this terminal draws the plan the way the transcript does, so
|
|
68
|
+
* `/tasks` shows the same marks and the same words and never an id.
|
|
69
|
+
*/
|
|
70
|
+
export declare function taskReportChecklist(rows: readonly Readonly<Record<string, unknown>>[]): readonly ChecklistItem[] | undefined;
|
|
71
|
+
//# sourceMappingURL=task-activity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-activity.d.ts","sourceRoot":"","sources":["../../src/tui/task-activity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,KAAK,aAAa,EAA2C,MAAM,gBAAgB,CAAA;AAC5F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAKnD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,MAAM,MAAM,iBAAiB,GAC1B,OAAO,GACP,SAAS,GACT,WAAW,GACX,QAAQ,GACR,UAAU,GACV,SAAS,GACT,SAAS,CAAA;AAEZ,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACxB;AAED,gGAAgG;AAChG,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,IAAI,EAAE,aAAa,GACjB,aAAa,GAAG,IAAI,CAiBtB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACzB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,GACb;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAA;CAAE,CAOxF;AAED,uDAAuD;AACvD,wBAAgB,UAAU,CACzB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,IAAI,EAAE,aAAa,GACjB,SAAS,aAAa,EAAE,CAG1B;AA0BD,4EAA4E;AAC5E,wBAAgB,eAAe,CAC9B,UAAU,EAAE,SAAS,aAAa,EAAE,EACpC,SAAS,EAAE,SAAS,aAAa,EAAE,GACjC,MAAM,CASR;AAED,MAAM,WAAW,cAAc;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,6FAA6F;IAC7F,QAAQ,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAA;IACxC,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,CAAA;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC5B;AAaD;;;GAGG;AACH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,EACtC,KAAK,EAAE,cAAc,GACnB,SAAS,iBAAiB,EAAE,CAiB9B;AASD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,GAChD,SAAS,aAAa,EAAE,GAAG,SAAS,CAatC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task operations as transcript blocks.
|
|
3
|
+
*
|
|
4
|
+
* A planning step is usually several task calls in a row — three
|
|
5
|
+
* `task_create`s, or a `task_update` closing one step and another opening the
|
|
6
|
+
* next. Each used to leave its own tool row, with the tool's arguments and the
|
|
7
|
+
* model's receipt (ids, owner, JSON) as its text. An operator reading that
|
|
8
|
+
* learns the protocol and not the plan.
|
|
9
|
+
*
|
|
10
|
+
* So consecutive task operations in one step fold into ONE block: a header
|
|
11
|
+
* saying what changed, in words (`Added 3 tasks`, `Completed · Write the
|
|
12
|
+
* parser`), and the checklist as it stood afterwards. "Consecutive" is literal:
|
|
13
|
+
* the block keeps growing only while it is the last row of the transcript and
|
|
14
|
+
* belongs to the same turn. Anything else written in between — the model's
|
|
15
|
+
* text, another tool — closes it, and the next task operation opens a new
|
|
16
|
+
* one, so the transcript reads in the order things happened.
|
|
17
|
+
*
|
|
18
|
+
* Pure, so the grouping is testable without rendering.
|
|
19
|
+
*/
|
|
20
|
+
import { checklistProgress } from './Checklist.js';
|
|
21
|
+
/** The kernel's planning tools, whose rows this module owns. */
|
|
22
|
+
const TASK_TOOLS = new Set(['task_create', 'task_update', 'task_list']);
|
|
23
|
+
export function isTaskTool(toolName) {
|
|
24
|
+
return TASK_TOOLS.has(toolName);
|
|
25
|
+
}
|
|
26
|
+
/** What one task event did, given what the task was before it; `null` for no visible change. */
|
|
27
|
+
export function taskOperationFor(previous, next) {
|
|
28
|
+
const subject = next.subject;
|
|
29
|
+
if (!previous)
|
|
30
|
+
return { kind: 'added', subject };
|
|
31
|
+
if (previous.status !== next.status) {
|
|
32
|
+
switch (next.status) {
|
|
33
|
+
case 'in_progress':
|
|
34
|
+
return { kind: 'started', subject };
|
|
35
|
+
case 'completed':
|
|
36
|
+
return { kind: 'completed', subject };
|
|
37
|
+
case 'failed':
|
|
38
|
+
return { kind: 'failed', subject };
|
|
39
|
+
case 'pending':
|
|
40
|
+
return { kind: 'reopened', subject };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (previous.subject !== next.subject)
|
|
44
|
+
return { kind: 'renamed', subject };
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The plan after a task left it, and what the block says about it; `null`
|
|
49
|
+
* operation when the task was never on this checklist (nothing visible changed).
|
|
50
|
+
*/
|
|
51
|
+
export function removeTask(tasks, id, subject) {
|
|
52
|
+
const known = tasks.find((task) => task.id === id);
|
|
53
|
+
if (!known)
|
|
54
|
+
return { tasks, operation: null };
|
|
55
|
+
return {
|
|
56
|
+
tasks: tasks.filter((task) => task.id !== id),
|
|
57
|
+
operation: { kind: 'removed', subject: subject || known.subject },
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/** Replace the task with the same id, or append it. */
|
|
61
|
+
export function upsertTask(tasks, item) {
|
|
62
|
+
const index = tasks.findIndex((task) => task.id === item.id);
|
|
63
|
+
return index < 0 ? [...tasks, item] : tasks.map((task, i) => (i === index ? item : task));
|
|
64
|
+
}
|
|
65
|
+
const SINGLE = {
|
|
66
|
+
added: 'Added task',
|
|
67
|
+
started: 'Started',
|
|
68
|
+
completed: 'Completed',
|
|
69
|
+
failed: 'Failed',
|
|
70
|
+
reopened: 'Reopened',
|
|
71
|
+
renamed: 'Renamed task',
|
|
72
|
+
removed: 'Removed task',
|
|
73
|
+
};
|
|
74
|
+
const MANY = {
|
|
75
|
+
added: 'Added',
|
|
76
|
+
started: 'Started',
|
|
77
|
+
completed: 'Completed',
|
|
78
|
+
failed: 'Failed',
|
|
79
|
+
reopened: 'Reopened',
|
|
80
|
+
renamed: 'Renamed',
|
|
81
|
+
removed: 'Removed',
|
|
82
|
+
};
|
|
83
|
+
function countTasks(count) {
|
|
84
|
+
return `${count} task${count === 1 ? '' : 's'}`;
|
|
85
|
+
}
|
|
86
|
+
/** The header line of a block: what changed, else where the plan stands. */
|
|
87
|
+
export function taskBlockHeader(operations, checklist) {
|
|
88
|
+
const [first] = operations;
|
|
89
|
+
if (!first)
|
|
90
|
+
return checklist.length === 0 ? 'No tasks yet' : checklistProgress(checklist);
|
|
91
|
+
if (operations.length === 1)
|
|
92
|
+
return `${SINGLE[first.kind]} · ${first.subject.replace(/\s+/g, ' ').trim()}`;
|
|
93
|
+
if (operations.every((operation) => operation.kind === first.kind)) {
|
|
94
|
+
return `${MANY[first.kind]} ${countTasks(operations.length)}`;
|
|
95
|
+
}
|
|
96
|
+
return checklistProgress(checklist);
|
|
97
|
+
}
|
|
98
|
+
/** Whether `message` is a task block this input may still extend. */
|
|
99
|
+
function extendable(messages, input) {
|
|
100
|
+
const last = messages.at(-1);
|
|
101
|
+
if (!last?.taskBlock || last.taskBlock.key !== input.key || last.pending)
|
|
102
|
+
return undefined;
|
|
103
|
+
const finalizedIndex = messages.slice(0, -1).filter((message) => !message.pending).length;
|
|
104
|
+
return finalizedIndex >= input.settled ? last : undefined;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* The transcript after one task operation: the open block grown, or a new
|
|
108
|
+
* block appended. A refresh with no open block and no tasks writes nothing.
|
|
109
|
+
*/
|
|
110
|
+
export function applyTaskOperation(messages, input) {
|
|
111
|
+
const open = extendable(messages, input);
|
|
112
|
+
const operations = [
|
|
113
|
+
...(open?.taskBlock?.operations ?? []),
|
|
114
|
+
...(input.operation ? [input.operation] : []),
|
|
115
|
+
];
|
|
116
|
+
if (!open && operations.length === 0 && input.checklist.length === 0)
|
|
117
|
+
return messages;
|
|
118
|
+
const row = {
|
|
119
|
+
id: open?.id ?? input.id,
|
|
120
|
+
role: 'tool',
|
|
121
|
+
content: taskBlockHeader(operations, input.checklist),
|
|
122
|
+
glyph: '✓',
|
|
123
|
+
...(input.glyphColor ? { glyphColor: input.glyphColor } : {}),
|
|
124
|
+
checklist: input.checklist,
|
|
125
|
+
taskBlock: { key: input.key, operations },
|
|
126
|
+
};
|
|
127
|
+
return open ? [...messages.slice(0, -1), row] : [...messages, row];
|
|
128
|
+
}
|
|
129
|
+
const CHECKLIST_STATUSES = new Set([
|
|
130
|
+
'pending',
|
|
131
|
+
'in_progress',
|
|
132
|
+
'completed',
|
|
133
|
+
'failed',
|
|
134
|
+
]);
|
|
135
|
+
/**
|
|
136
|
+
* The kernel's `/tasks` report as a checklist, or `undefined` when its rows
|
|
137
|
+
* are not task rows. The report carries id and owner columns for hosts that
|
|
138
|
+
* want them; this terminal draws the plan the way the transcript does, so
|
|
139
|
+
* `/tasks` shows the same marks and the same words and never an id.
|
|
140
|
+
*/
|
|
141
|
+
export function taskReportChecklist(rows) {
|
|
142
|
+
const items = [];
|
|
143
|
+
for (const [index, row] of rows.entries()) {
|
|
144
|
+
const { subject, status, id } = row;
|
|
145
|
+
if (typeof subject !== 'string' || typeof status !== 'string')
|
|
146
|
+
return undefined;
|
|
147
|
+
if (!CHECKLIST_STATUSES.has(status))
|
|
148
|
+
return undefined;
|
|
149
|
+
items.push({
|
|
150
|
+
id: typeof id === 'string' ? id : String(index),
|
|
151
|
+
subject,
|
|
152
|
+
status: status,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return items;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=task-activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-activity.js","sourceRoot":"","sources":["../../src/tui/task-activity.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/types.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ import type { CompactionCliConfig, HooksConfig, MemoryCliConfig, PluginConfig, S
|
|
|
9
9
|
import type { ToolResultScreenConfig } from '../config/tool-result-screens.js';
|
|
10
10
|
import type { McpServersConfig } from '../integrations/mcp/servers.js';
|
|
11
11
|
import type { ResolvedLogging } from '../logging.js';
|
|
12
|
+
import type { ChecklistItem } from './Checklist.js';
|
|
13
|
+
import type { TaskOperation } from './task-activity.js';
|
|
12
14
|
export type MessageRole = 'user' | 'assistant' | 'system' | 'tool';
|
|
13
15
|
export interface TranscriptMessage {
|
|
14
16
|
readonly id: string;
|
|
@@ -41,6 +43,17 @@ export interface TranscriptMessage {
|
|
|
41
43
|
* Ctrl+O toggles this on live rows; a settled body is reprinted in a new row.
|
|
42
44
|
*/
|
|
43
45
|
readonly detailExpanded?: boolean;
|
|
46
|
+
/** The model's plan as it stood when this row was written, drawn by `Checklist`. */
|
|
47
|
+
readonly checklist?: readonly ChecklistItem[];
|
|
48
|
+
/**
|
|
49
|
+
* Marks a row as a block of consecutive task operations (see
|
|
50
|
+
* `task-activity.ts`): which turn it belongs to, and the operations folded
|
|
51
|
+
* into it so far. Never rendered itself.
|
|
52
|
+
*/
|
|
53
|
+
readonly taskBlock?: {
|
|
54
|
+
readonly key: string;
|
|
55
|
+
readonly operations: readonly TaskOperation[];
|
|
56
|
+
};
|
|
44
57
|
}
|
|
45
58
|
export interface TuiContext {
|
|
46
59
|
readonly structuredOutput?: import('@namzu/sdk').StructuredOutputConfig;
|
package/dist/tui/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EACX,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,YAAY,EACZ,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@namzu/cli",
|
|
3
|
-
"version": "28.
|
|
3
|
+
"version": "28.1.0",
|
|
4
4
|
"description": "Interactive and headless terminal agent for Namzu, with provider discovery, durable sessions, tools and diagnostics.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"namzu",
|
|
@@ -46,16 +46,16 @@
|
|
|
46
46
|
"react": "19.2.6",
|
|
47
47
|
"string-width": "8.2.1",
|
|
48
48
|
"yaml": "^2.9.0",
|
|
49
|
-
"@namzu/anthropic": "6.0.1",
|
|
50
|
-
"@namzu/computer-use": "1.4.3",
|
|
51
49
|
"@namzu/deepseek": "^2.0.0",
|
|
52
|
-
"@namzu/
|
|
50
|
+
"@namzu/computer-use": "1.4.3",
|
|
53
51
|
"@namzu/files": "1.1.1",
|
|
52
|
+
"@namzu/ollama": "2.2.4",
|
|
53
|
+
"@namzu/anthropic": "6.0.1",
|
|
54
54
|
"@namzu/openai": "4.0.0",
|
|
55
|
-
"@namzu/
|
|
56
|
-
"@namzu/
|
|
55
|
+
"@namzu/sdk": "^44.1.0",
|
|
56
|
+
"@namzu/zen": "^2.5.0",
|
|
57
57
|
"@namzu/google": "^1.0.0",
|
|
58
|
-
"@namzu/
|
|
58
|
+
"@namzu/openrouter": "3.0.1"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@biomejs/biome": "^1.9.4",
|