dsh-ssh-tui 0.8.1 → 0.8.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/CHANGELOG.md +158 -0
- package/README.en.md +118 -15
- package/README.md +78 -13
- package/docs/release-notes-0.7.4.md +91 -0
- package/docs/release-notes-0.8.0.md +56 -0
- package/docs/release-notes-0.8.1.md +79 -0
- package/docs/release-notes-0.8.2-rc.1.md +159 -0
- package/docs/release-notes-0.8.2.md +62 -0
- package/docs/screenshots/reconnect.gif +0 -0
- package/docs/terminals.md +23 -0
- package/docs/windows.md +13 -0
- package/lib/approval-state.js +148 -0
- package/lib/approval-state.js.map +1 -0
- package/lib/auth-failure.js +38 -0
- package/lib/auth-failure.js.map +1 -1
- package/lib/color-depth.js +26 -0
- package/lib/color-depth.js.map +1 -1
- package/lib/copy-text.js +30 -8
- package/lib/copy-text.js.map +1 -1
- package/lib/dialogs.js +81 -0
- package/lib/dialogs.js.map +1 -1
- package/lib/display-sock.js +138 -23
- package/lib/display-sock.js.map +1 -1
- package/lib/footer-accents.js +28 -0
- package/lib/footer-accents.js.map +1 -0
- package/lib/footer-budget.js +328 -0
- package/lib/footer-budget.js.map +1 -0
- package/lib/footer-format.js +433 -0
- package/lib/footer-format.js.map +1 -0
- package/lib/footer-layout.js +407 -0
- package/lib/footer-layout.js.map +1 -0
- package/lib/footer-meters.js +185 -0
- package/lib/footer-meters.js.map +1 -0
- package/lib/footer.js +19 -558
- package/lib/footer.js.map +1 -1
- package/lib/i18n/en.js +65 -5
- package/lib/i18n/en.js.map +1 -1
- package/lib/i18n/zh.js +67 -5
- package/lib/i18n/zh.js.map +1 -1
- package/lib/paint.js +53 -8
- package/lib/paint.js.map +1 -1
- package/lib/plan-projection.js +291 -0
- package/lib/plan-projection.js.map +1 -0
- package/lib/plan.js +50 -0
- package/lib/plan.js.map +1 -1
- package/lib/question-state.js +83 -0
- package/lib/question-state.js.map +1 -0
- package/lib/representation.js +283 -0
- package/lib/representation.js.map +1 -0
- package/lib/screen.js +105 -0
- package/lib/screen.js.map +1 -0
- package/lib/selection.js +5 -3
- package/lib/selection.js.map +1 -1
- package/lib/startup.js +49 -0
- package/lib/startup.js.map +1 -1
- package/lib/stats.js +101 -3
- package/lib/stats.js.map +1 -1
- package/lib/term-text.js +154 -55
- package/lib/term-text.js.map +1 -1
- package/lib/theme.js +20 -3
- package/lib/theme.js.map +1 -1
- package/lib/throughput.js +305 -0
- package/lib/throughput.js.map +1 -0
- package/lib/tool-present.js +57 -7
- package/lib/tool-present.js.map +1 -1
- package/lib/tui.js +3776 -1105
- package/lib/tui.js.map +1 -1
- package/lib/types/approval-state.d.ts +75 -0
- package/lib/types/auth-failure.d.ts +25 -0
- package/lib/types/color-depth.d.ts +21 -0
- package/lib/types/copy-text.d.ts +18 -1
- package/lib/types/dialogs.d.ts +111 -1
- package/lib/types/display-sock.d.ts +15 -0
- package/lib/types/footer-accents.d.ts +22 -0
- package/lib/types/footer-budget.d.ts +204 -0
- package/lib/types/footer-format.d.ts +221 -0
- package/lib/types/footer-layout.d.ts +292 -0
- package/lib/types/footer-meters.d.ts +151 -0
- package/lib/types/footer.d.ts +19 -269
- package/lib/types/paint.d.ts +48 -0
- package/lib/types/plan-projection.d.ts +162 -0
- package/lib/types/plan.d.ts +13 -0
- package/lib/types/question-state.d.ts +96 -0
- package/lib/types/representation.d.ts +498 -0
- package/lib/types/screen.d.ts +126 -0
- package/lib/types/startup.d.ts +24 -0
- package/lib/types/stats.d.ts +64 -1
- package/lib/types/term-text.d.ts +45 -1
- package/lib/types/throughput.d.ts +163 -0
- package/lib/types/tool-present.d.ts +41 -0
- package/lib/types/transcript-types.d.ts +63 -2
- package/lib/types/tui.d.ts +862 -11
- package/package.json +16 -6
package/lib/paint.js
CHANGED
|
@@ -91,6 +91,34 @@ export function paintIntervalForRtt(rttMs) {
|
|
|
91
91
|
return 250;
|
|
92
92
|
return 400;
|
|
93
93
|
}
|
|
94
|
+
/** The redraw budget a drag assumes on a link whose round trip was never measured. */
|
|
95
|
+
export const RESIZE_UNKNOWN_LINK_BUDGET_MS = 200;
|
|
96
|
+
/**
|
|
97
|
+
* How long one frame takes to reach the terminal, for pacing a drag.
|
|
98
|
+
*
|
|
99
|
+
* Two of the four sources are an *answer*: `paintIntervalForRtt` already turned a
|
|
100
|
+
* measured round trip into a cadence, and an explicit `DSH_TUI_PAINT_MS` is the
|
|
101
|
+
* user's own. The other two are not, and they are not the same kind of guess:
|
|
102
|
+
*
|
|
103
|
+
* - a local TTY's cadence is a constant about a link that is not a link, so it is
|
|
104
|
+
* used as it stands;
|
|
105
|
+
* - an **unprobed** link's interval is the SSH default — a number nobody measured
|
|
106
|
+
* — and pacing frames by it composes them faster than the link can deliver them,
|
|
107
|
+
* which queues stale geometries behind each other and reads as a drag that
|
|
108
|
+
* freezes and jumps. That case gets a deliberately slow budget instead.
|
|
109
|
+
*
|
|
110
|
+
* Nothing here claims a round trip: the status row keeps painting `SSH ○○○○ 160ms`
|
|
111
|
+
* when the probe never answered, and this budget stays an internal pacing floor.
|
|
112
|
+
* @param link - which kind of link the session is on.
|
|
113
|
+
* @param source - where the cadence came from.
|
|
114
|
+
* @param intervalMs - the cadence in force.
|
|
115
|
+
* @returns milliseconds one frame needs, at least.
|
|
116
|
+
*/
|
|
117
|
+
export function linkRedrawBudgetMs(link, source, intervalMs) {
|
|
118
|
+
if (link === 'ssh' && source === 'unprobed')
|
|
119
|
+
return RESIZE_UNKNOWN_LINK_BUDGET_MS;
|
|
120
|
+
return intervalMs;
|
|
121
|
+
}
|
|
94
122
|
/**
|
|
95
123
|
* How many measurements the link's reported round-trip is taken over.
|
|
96
124
|
*
|
|
@@ -254,15 +282,22 @@ export function composePaintFrame(options) {
|
|
|
254
282
|
// higher of the two chrome starts so leftover tool-body glyphs cannot sit
|
|
255
283
|
// on the prompt.
|
|
256
284
|
const dirtyChromeStart = Math.min(chromeStart, previousChromeStart);
|
|
285
|
+
// A partial frame keeps every row above `dirtyFrom` as it is, on the screen and
|
|
286
|
+
// in the comparison: it must not clear, and it must not treat the rows it is
|
|
287
|
+
// leaving alone as size-changed dirt either.
|
|
288
|
+
const partial = options.dirtyFrom !== undefined;
|
|
289
|
+
const dirtyFrom = options.dirtyFrom ?? 0;
|
|
257
290
|
let out = '\x1b[?25l';
|
|
258
|
-
const prev = sizeChanged ? [] : previousRows;
|
|
259
|
-
if (sizeChanged)
|
|
291
|
+
const prev = sizeChanged && !partial ? [] : previousRows;
|
|
292
|
+
if (sizeChanged && !partial)
|
|
260
293
|
out += '\x1b[H\x1b[J';
|
|
261
294
|
// Never address row height+1: that scrolls the SSH viewport and leaves
|
|
262
295
|
// thinking/tool/assistant glyphs sitting on the next card.
|
|
263
296
|
const rowCount = Math.min(height, paintRows.length);
|
|
264
297
|
const dirty = [];
|
|
265
298
|
for (let index = 0; index < rowCount; index += 1) {
|
|
299
|
+
if (index < dirtyFrom)
|
|
300
|
+
continue;
|
|
266
301
|
const current = paintRows[index] ?? '';
|
|
267
302
|
if (current === prev[index] && !(chromeChanged && index >= dirtyChromeStart))
|
|
268
303
|
continue;
|
|
@@ -277,6 +312,16 @@ export function composePaintFrame(options) {
|
|
|
277
312
|
const deferred = [];
|
|
278
313
|
let rows = '';
|
|
279
314
|
let used = out.length;
|
|
315
|
+
// Where the caret belongs when this frame is done (the composer's own caret). A
|
|
316
|
+
// terminal draws an IME composition *where the caret is*, and writing a row parks
|
|
317
|
+
// the caret at the end of that row's text — so a frame that repaints the live
|
|
318
|
+
// region above the input box left the pre-edit flashing at the end of the
|
|
319
|
+
// processing row (Windows Terminal, reported twice). While the composer owns the
|
|
320
|
+
// caret, every row that is not the caret's own row hands it straight back. The
|
|
321
|
+
// moves cost a few bytes each and are what keeps the composition in one place.
|
|
322
|
+
const caretRow = Math.min(height, Math.max(1, options.cursorRow));
|
|
323
|
+
const caretColumn = Math.min(width, Math.max(1, options.cursorColumn));
|
|
324
|
+
const caret = options.hideCursor === true ? '' : `\x1b[${caretRow};${caretColumn}H`;
|
|
280
325
|
for (const index of order) {
|
|
281
326
|
// Pin first, then pad: the padder measures with `visibleWidth`, which does
|
|
282
327
|
// not know that a symbol like ⚠ will gain a variation selector and a
|
|
@@ -290,15 +335,17 @@ export function composePaintFrame(options) {
|
|
|
290
335
|
deferred.push(index);
|
|
291
336
|
continue;
|
|
292
337
|
}
|
|
293
|
-
rows += row;
|
|
338
|
+
rows += index + 1 === caretRow ? row : row + caret;
|
|
294
339
|
used += row.length;
|
|
295
340
|
painted.push(index);
|
|
296
341
|
}
|
|
297
|
-
|
|
342
|
+
// Never on a partial frame: erasing below the content would take the rows this
|
|
343
|
+
// frame was written to leave alone.
|
|
344
|
+
if (!partial && rowCount < height && (sizeChanged || previousRows.length !== paintRows.length)) {
|
|
298
345
|
rows += `\x1b[${rowCount + 1};1H\x1b[J`;
|
|
299
346
|
}
|
|
300
347
|
painted.sort((left, right) => left - right);
|
|
301
|
-
const paintedAny = painted.length > 0 || sizeChanged;
|
|
348
|
+
const paintedAny = painted.length > 0 || (sizeChanged && !partial);
|
|
302
349
|
if (!paintedAny && options.hideCursor === true) {
|
|
303
350
|
return { output: '', painted, deferred, resume: undefined, bytes: 0 };
|
|
304
351
|
}
|
|
@@ -320,13 +367,11 @@ export function composePaintFrame(options) {
|
|
|
320
367
|
if (painted.length > 2)
|
|
321
368
|
out = `\x1b[?2026h${out}\x1b[?2026l`;
|
|
322
369
|
if (options.hideCursor !== true) {
|
|
323
|
-
const cursorRow = Math.min(height, Math.max(1, options.cursorRow));
|
|
324
370
|
// Column `width + 1` (and writing into the last cell then parking past
|
|
325
371
|
// it) trips DEC auto-margin: the hardware cursor wraps onto the next
|
|
326
372
|
// row and the caret punches through the last glyph. Keep the caret on
|
|
327
373
|
// this row, in a real cell.
|
|
328
|
-
|
|
329
|
-
out += `\x1b[${cursorRow};${cursorColumn}H\x1b[?25h`;
|
|
374
|
+
out += `${caret}\x1b[?25h`;
|
|
330
375
|
}
|
|
331
376
|
return {
|
|
332
377
|
output: out,
|
package/lib/paint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paint.js","sourceRoot":"","sources":["../src/paint.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"paint.js","sourceRoot":"","sources":["../src/paint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import { parsePlanTodos } from './plan.js';
|
|
2
|
+
const PLAN_TOOL = 'exit_plan_mode';
|
|
3
|
+
/**
|
|
4
|
+
* The harness's own refusal sentences for a plan review.
|
|
5
|
+
*
|
|
6
|
+
* Matched exactly, because they are the *only* durable evidence that a review was
|
|
7
|
+
* refused rather than never asked: `keep planning` (with or without feedback) and the
|
|
8
|
+
* dismissal that happens when the reader speaks instead of answering.
|
|
9
|
+
*/
|
|
10
|
+
export function reviewRefusal(text) {
|
|
11
|
+
if (text.includes('dismissed the plan review'))
|
|
12
|
+
return { outcome: 'dismissed' };
|
|
13
|
+
if (!text.includes('chose to keep planning'))
|
|
14
|
+
return undefined;
|
|
15
|
+
const match = /their feedback:\s*(.*)$/u.exec(text);
|
|
16
|
+
const feedback = match?.[1]?.trim() ?? '';
|
|
17
|
+
return { outcome: 'rejected', ...(feedback === '' ? {} : { feedback }) };
|
|
18
|
+
}
|
|
19
|
+
/** The plan markdown a call carried, when the arguments are readable. */
|
|
20
|
+
function planBodyOf(args) {
|
|
21
|
+
const parsed = typeof args === 'string' ? safeParse(args) : args;
|
|
22
|
+
if (parsed === undefined || typeof parsed !== 'object' || parsed === null)
|
|
23
|
+
return undefined;
|
|
24
|
+
const plan = parsed.plan;
|
|
25
|
+
return typeof plan === 'string' && plan.trim() !== '' ? plan : undefined;
|
|
26
|
+
}
|
|
27
|
+
function safeParse(text) {
|
|
28
|
+
try {
|
|
29
|
+
return JSON.parse(text);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** The text one tool result carries, joined. */
|
|
36
|
+
function resultText(data) {
|
|
37
|
+
const content = data?.message?.content;
|
|
38
|
+
if (!Array.isArray(content))
|
|
39
|
+
return '';
|
|
40
|
+
return content
|
|
41
|
+
.map(block => (typeof block === 'object' && block !== null && typeof block.text === 'string'
|
|
42
|
+
? String(block.text)
|
|
43
|
+
: ''))
|
|
44
|
+
.join('');
|
|
45
|
+
}
|
|
46
|
+
/** Whether the result is an error, either way the harness can say it. */
|
|
47
|
+
function resultFailed(data) {
|
|
48
|
+
if (data?.error !== undefined)
|
|
49
|
+
return true;
|
|
50
|
+
return data?.message?.isError === true;
|
|
51
|
+
}
|
|
52
|
+
function allCompleted(steps) {
|
|
53
|
+
return steps.length > 0 && steps.every(step => step.status === 'completed');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Fold the durable events of one session into its plan artifacts.
|
|
57
|
+
*
|
|
58
|
+
* Deterministic by construction: ids are derived from event `seq` alone, and every
|
|
59
|
+
* decision reads only events that precede it. The same log (live or replayed) folds
|
|
60
|
+
* to the same list, which is what lets one artifact feed the transcript, the dock and
|
|
61
|
+
* the review Surface without any of them keeping state.
|
|
62
|
+
*
|
|
63
|
+
* @param events - the session's events, in order. Unknown types are ignored.
|
|
64
|
+
* @param options - `live` marks a fold whose last events come from a running Host, so
|
|
65
|
+
* an unresolved review may be called `reviewing`; a replay leaves it `unknown`.
|
|
66
|
+
* @returns every artifact the session accounts for, oldest first.
|
|
67
|
+
*/
|
|
68
|
+
export function foldPlanArtifacts(events, options = {}) {
|
|
69
|
+
const artifacts = [];
|
|
70
|
+
let open;
|
|
71
|
+
let modeActive = false;
|
|
72
|
+
let pendingCommandId;
|
|
73
|
+
let pendingWanted;
|
|
74
|
+
// The current event's anchors: a real `seq` when the log has one, otherwise its
|
|
75
|
+
// position in the log (a distinct namespace, so the two can never collide).
|
|
76
|
+
let anchor = 0;
|
|
77
|
+
let anchorId = '0';
|
|
78
|
+
const close = (state, provenance = 'inferred') => {
|
|
79
|
+
if (open === undefined)
|
|
80
|
+
return;
|
|
81
|
+
if (state !== undefined) {
|
|
82
|
+
open.state = state;
|
|
83
|
+
open.provenance = provenance;
|
|
84
|
+
}
|
|
85
|
+
// The anchor, not the raw `seq`: a log without sequence numbers still closes its
|
|
86
|
+
// artifacts (an undefined `closedSeq` read as "still open" and kept a finished
|
|
87
|
+
// plan in the dock).
|
|
88
|
+
open.closedSeq = anchor;
|
|
89
|
+
open = undefined;
|
|
90
|
+
};
|
|
91
|
+
const openArtifact = (openedBy) => {
|
|
92
|
+
const artifact = {
|
|
93
|
+
id: `plan@${anchorId}`,
|
|
94
|
+
openedBy,
|
|
95
|
+
openSeq: anchor,
|
|
96
|
+
state: 'draft',
|
|
97
|
+
provenance: 'durable',
|
|
98
|
+
steps: [],
|
|
99
|
+
revisions: [],
|
|
100
|
+
active: openedBy === 'plan-mode',
|
|
101
|
+
pending: false,
|
|
102
|
+
};
|
|
103
|
+
artifacts.push(artifact);
|
|
104
|
+
return artifact;
|
|
105
|
+
};
|
|
106
|
+
for (const [index, event] of events.entries()) {
|
|
107
|
+
const seq = typeof event.seq === 'number' ? event.seq : undefined;
|
|
108
|
+
// Events without a `seq` (a harness that omits it, a hand-written fixture) still
|
|
109
|
+
// need distinct, replay-stable anchors: the position in the log is exactly that,
|
|
110
|
+
// as long as it never collides with a real sequence number — hence the separate
|
|
111
|
+
// `#` namespace rather than a bare index.
|
|
112
|
+
anchor = seq ?? index;
|
|
113
|
+
anchorId = seq === undefined ? `#${index}` : String(seq);
|
|
114
|
+
const data = event.data;
|
|
115
|
+
switch (event.type) {
|
|
116
|
+
case 'plan/mode': {
|
|
117
|
+
const active = data?.active === true;
|
|
118
|
+
modeActive = active;
|
|
119
|
+
pendingCommandId = undefined;
|
|
120
|
+
pendingWanted = undefined;
|
|
121
|
+
if (active) {
|
|
122
|
+
if (open === undefined)
|
|
123
|
+
open = openArtifact('plan-mode');
|
|
124
|
+
open.active = true;
|
|
125
|
+
open.pending = false;
|
|
126
|
+
open.state = open.state === 'draft' ? 'draft' : open.state;
|
|
127
|
+
open.provenance = 'durable';
|
|
128
|
+
}
|
|
129
|
+
else if (open !== undefined) {
|
|
130
|
+
open.active = false;
|
|
131
|
+
open.pending = false;
|
|
132
|
+
// Leaving plan mode is not "completed" and not "abandoned" on its own: with
|
|
133
|
+
// an approved review behind it the plan is being carried out, and with a
|
|
134
|
+
// refusal behind it the reader kept planning. Only a plan nobody approved
|
|
135
|
+
// and nobody finished is abandoned — and that reading says so.
|
|
136
|
+
if (open.review?.outcome === 'approved') {
|
|
137
|
+
open.state = allCompleted(open.steps) ? 'completed' : 'executing';
|
|
138
|
+
open.provenance = allCompleted(open.steps) ? 'inferred' : 'durable';
|
|
139
|
+
}
|
|
140
|
+
else if (open.review?.outcome === 'rejected' || open.review?.outcome === 'dismissed') {
|
|
141
|
+
open.state = 'rejected';
|
|
142
|
+
open.provenance = 'durable';
|
|
143
|
+
close();
|
|
144
|
+
}
|
|
145
|
+
else if (allCompleted(open.steps)) {
|
|
146
|
+
open.state = 'completed';
|
|
147
|
+
open.provenance = 'inferred';
|
|
148
|
+
close('completed', 'inferred');
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
open.state = 'abandoned';
|
|
152
|
+
open.provenance = 'inferred';
|
|
153
|
+
close('abandoned', 'inferred');
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
case 'command/run': {
|
|
159
|
+
if (String(data?.name ?? '') !== 'plan')
|
|
160
|
+
break;
|
|
161
|
+
if (data?.args === undefined)
|
|
162
|
+
break;
|
|
163
|
+
pendingCommandId = String(data?.commandId ?? '');
|
|
164
|
+
pendingWanted = String(data.args).trim() !== 'off';
|
|
165
|
+
if (open !== undefined) {
|
|
166
|
+
open.pending = pendingWanted !== modeActive;
|
|
167
|
+
}
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
case 'command/done': {
|
|
171
|
+
if (pendingCommandId === undefined || String(data?.commandId ?? '') !== pendingCommandId)
|
|
172
|
+
break;
|
|
173
|
+
const succeeded = data?.kind === 'success';
|
|
174
|
+
const wanted = pendingWanted;
|
|
175
|
+
pendingCommandId = undefined;
|
|
176
|
+
pendingWanted = undefined;
|
|
177
|
+
if (open !== undefined && wanted !== undefined)
|
|
178
|
+
open.pending = succeeded && wanted !== modeActive;
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
case 'todo/write': {
|
|
182
|
+
const steps = parsePlanTodos(data?.todos);
|
|
183
|
+
if (steps.length === 0)
|
|
184
|
+
break;
|
|
185
|
+
const artifact = open ?? openArtifact('todos');
|
|
186
|
+
artifact.revisions.push({ id: `${artifact.id}#${anchorId}`, seq: anchor, steps });
|
|
187
|
+
artifact.steps = steps;
|
|
188
|
+
if (allCompleted(steps) && !artifact.active) {
|
|
189
|
+
// The list is done and plan mode is not holding it: the next write is a new
|
|
190
|
+
// plan, so this artifact closes here. Re-opening it (which this did, by
|
|
191
|
+
// assigning `open` unconditionally) merged every later list into the first
|
|
192
|
+
// plan — the "two plans in one session" case the projection exists for.
|
|
193
|
+
artifact.state = 'completed';
|
|
194
|
+
artifact.provenance = 'inferred';
|
|
195
|
+
close('completed', 'inferred');
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
if (artifact.state === 'draft') {
|
|
199
|
+
artifact.state = artifact.active ? 'draft' : 'executing';
|
|
200
|
+
artifact.provenance = artifact.active ? 'durable' : 'inferred';
|
|
201
|
+
}
|
|
202
|
+
if (allCompleted(steps)) {
|
|
203
|
+
artifact.state = 'completed';
|
|
204
|
+
artifact.provenance = 'inferred';
|
|
205
|
+
}
|
|
206
|
+
open = artifact;
|
|
207
|
+
}
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
case 'tool/call': {
|
|
211
|
+
if (String(data?.name ?? '') !== PLAN_TOOL)
|
|
212
|
+
break;
|
|
213
|
+
const body = planBodyOf(data?.arguments);
|
|
214
|
+
const callId = String(data?.callId ?? '');
|
|
215
|
+
const artifact = open ?? openArtifact('todos');
|
|
216
|
+
const review = {
|
|
217
|
+
id: callId === '' ? `review@${anchorId}` : callId,
|
|
218
|
+
seq: anchor,
|
|
219
|
+
body: body ?? artifact.body ?? '',
|
|
220
|
+
outcome: (event.live ?? options.live) === true ? 'pending' : 'unknown',
|
|
221
|
+
};
|
|
222
|
+
artifact.review = review;
|
|
223
|
+
if (body !== undefined)
|
|
224
|
+
artifact.body = body;
|
|
225
|
+
artifact.state = (event.live ?? options.live) === true ? 'reviewing' : 'unknown';
|
|
226
|
+
artifact.provenance = 'durable';
|
|
227
|
+
open = artifact;
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
case 'tool/result': {
|
|
231
|
+
const callId = String(data?.message?.source?.callId ?? '');
|
|
232
|
+
const artifact = artifacts.findLast(candidate => candidate.review?.id === callId);
|
|
233
|
+
if (artifact?.review === undefined)
|
|
234
|
+
break;
|
|
235
|
+
if (resultFailed(data)) {
|
|
236
|
+
const refusal = reviewRefusal(`${resultText(data)} ${String(data?.error?.message ?? '')}`);
|
|
237
|
+
artifact.review.outcome = refusal?.outcome ?? 'unknown';
|
|
238
|
+
if (refusal?.feedback !== undefined)
|
|
239
|
+
artifact.review.feedback = refusal.feedback;
|
|
240
|
+
artifact.state = refusal === undefined ? 'unknown' : 'rejected';
|
|
241
|
+
artifact.provenance = refusal === undefined ? 'inferred' : 'durable';
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
artifact.review.outcome = 'approved';
|
|
245
|
+
artifact.state = allCompleted(artifact.steps) ? 'completed' : 'approved';
|
|
246
|
+
artifact.provenance = 'durable';
|
|
247
|
+
}
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
default:
|
|
251
|
+
break;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// The fold is over: whatever is still open is the artifact a reader is looking at.
|
|
255
|
+
for (const artifact of artifacts) {
|
|
256
|
+
if (artifact === open)
|
|
257
|
+
continue;
|
|
258
|
+
artifact.active = false;
|
|
259
|
+
}
|
|
260
|
+
if (open !== undefined)
|
|
261
|
+
open.active = modeActive;
|
|
262
|
+
return artifacts;
|
|
263
|
+
}
|
|
264
|
+
/** The artifact a workspace should dock: the newest one that is still live. */
|
|
265
|
+
export function livePlanArtifact(artifacts) {
|
|
266
|
+
return artifacts.findLast(artifact => artifactIsLive(artifact));
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Whether the artifact still describes work in progress.
|
|
270
|
+
*
|
|
271
|
+
* The same question `planIsLive` asked of a row, asked of the projection instead:
|
|
272
|
+
* plan mode on, a switch queued, a step not finished, or a review awaiting its
|
|
273
|
+
* answer. Everything else is history, and history belongs in the transcript.
|
|
274
|
+
*/
|
|
275
|
+
export function artifactIsLive(artifact) {
|
|
276
|
+
if (artifact.closedSeq !== undefined)
|
|
277
|
+
return false;
|
|
278
|
+
if (artifact.active || artifact.pending)
|
|
279
|
+
return true;
|
|
280
|
+
if (artifact.review?.outcome === 'pending')
|
|
281
|
+
return true;
|
|
282
|
+
return artifact.steps.some(step => step.status !== 'completed');
|
|
283
|
+
}
|
|
284
|
+
/** `3/7`-style progress over the latest revision. */
|
|
285
|
+
export function artifactProgress(artifact) {
|
|
286
|
+
const total = artifact.steps.length;
|
|
287
|
+
const done = artifact.steps.filter(step => step.status === 'completed').length;
|
|
288
|
+
const current = artifact.steps.find(step => step.status === 'in_progress');
|
|
289
|
+
return current === undefined ? { done, total } : { done, total, current };
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=plan-projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-projection.js","sourceRoot":"","sources":["../src/plan-projection.ts"],"names":[],"mappings":"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"}
|
package/lib/plan.js
CHANGED
|
@@ -399,6 +399,56 @@ export function askSummary(value) {
|
|
|
399
399
|
: t('question.waiting');
|
|
400
400
|
return questions.length > 1 ? t('ask.multi', { text, count: questions.length }) : text;
|
|
401
401
|
}
|
|
402
|
+
/**
|
|
403
|
+
* The questions one `ask_user_question` call recorded, for the durable fold.
|
|
404
|
+
*
|
|
405
|
+
* The Session's own reader (`questionsOf` in `@deepseek-ai/dsh-user-questions`)
|
|
406
|
+
* validates against the tool's schema and returns nothing when it does not match.
|
|
407
|
+
* This one only has to be faithful enough to draw a card from a log entry this
|
|
408
|
+
* process did not witness, so it takes the fields it can use and drops the rest
|
|
409
|
+
* rather than refusing the whole call.
|
|
410
|
+
* @param value - the tool call's arguments, raw JSON or already parsed.
|
|
411
|
+
* @returns the questions, or an empty list when the shape is unusable.
|
|
412
|
+
*/
|
|
413
|
+
export function askQuestions(value) {
|
|
414
|
+
const root = typeof value === 'string' ? parseJsonArgs(value) : value;
|
|
415
|
+
const questions = root !== null && typeof root === 'object' && !Array.isArray(root)
|
|
416
|
+
? root.questions
|
|
417
|
+
: undefined;
|
|
418
|
+
if (!Array.isArray(questions))
|
|
419
|
+
return [];
|
|
420
|
+
const out = [];
|
|
421
|
+
for (const entry of questions) {
|
|
422
|
+
if (typeof entry !== 'object' || entry === null)
|
|
423
|
+
continue;
|
|
424
|
+
const item = entry;
|
|
425
|
+
if (typeof item.id !== 'string' || typeof item.question !== 'string')
|
|
426
|
+
continue;
|
|
427
|
+
const options = Array.isArray(item.options)
|
|
428
|
+
? item.options.flatMap((option) => {
|
|
429
|
+
if (typeof option !== 'object' || option === null)
|
|
430
|
+
return [];
|
|
431
|
+
const shape = option;
|
|
432
|
+
if (typeof shape.label !== 'string')
|
|
433
|
+
return [];
|
|
434
|
+
return [{
|
|
435
|
+
label: shape.label,
|
|
436
|
+
...(typeof shape.description === 'string' ? { description: shape.description } : {}),
|
|
437
|
+
}];
|
|
438
|
+
})
|
|
439
|
+
: undefined;
|
|
440
|
+
const multi = item.multi_select === true || item.multiSelect === true;
|
|
441
|
+
out.push({
|
|
442
|
+
id: item.id,
|
|
443
|
+
question: item.question,
|
|
444
|
+
...(typeof item.header === 'string' ? { header: item.header } : {}),
|
|
445
|
+
...(typeof item.detail === 'string' ? { detail: item.detail } : {}),
|
|
446
|
+
...(options === undefined ? {} : { options }),
|
|
447
|
+
...(multi ? { multiSelect: true } : {}),
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
return out;
|
|
451
|
+
}
|
|
402
452
|
/** First non-empty line, collapsed to a single scan line. */
|
|
403
453
|
export function firstDisplayLine(text) {
|
|
404
454
|
return text.replace(/\s+/gu, ' ').trim();
|