@sagmans/dsh-tui 0.5.2 → 0.6.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/README.md +32 -12
- package/lib/agent/host.d.ts +11 -0
- package/lib/agent/host.d.ts.map +1 -1
- package/lib/agent/host.js +16 -2
- package/lib/agent/host.js.map +1 -1
- package/lib/agent/undo.d.ts +52 -0
- package/lib/agent/undo.d.ts.map +1 -0
- package/lib/agent/undo.js +106 -0
- package/lib/agent/undo.js.map +1 -0
- package/lib/cards.d.ts +57 -2
- package/lib/cards.d.ts.map +1 -1
- package/lib/cards.js +38 -8
- package/lib/cards.js.map +1 -1
- package/lib/herdr/reporter.d.ts +9 -4
- package/lib/herdr/reporter.d.ts.map +1 -1
- package/lib/herdr/reporter.js +5 -9
- package/lib/herdr/reporter.js.map +1 -1
- package/lib/herdr/state.d.ts +35 -4
- package/lib/herdr/state.d.ts.map +1 -1
- package/lib/herdr/state.js +37 -4
- package/lib/herdr/state.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +349 -14
- package/lib/index.js.map +1 -1
- package/lib/input/actions.d.ts.map +1 -1
- package/lib/input/actions.js +4 -0
- package/lib/input/actions.js.map +1 -1
- package/lib/input/completion.d.ts +10 -0
- package/lib/input/completion.d.ts.map +1 -1
- package/lib/input/completion.js +15 -0
- package/lib/input/completion.js.map +1 -1
- package/lib/input/keymap.d.ts.map +1 -1
- package/lib/input/keymap.js +2 -0
- package/lib/input/keymap.js.map +1 -1
- package/lib/input/submission.d.ts +11 -1
- package/lib/input/submission.d.ts.map +1 -1
- package/lib/input/submission.js +10 -1
- package/lib/input/submission.js.map +1 -1
- package/lib/terminal/warning-screen.d.ts +8 -1
- package/lib/terminal/warning-screen.d.ts.map +1 -1
- package/lib/terminal/warning-screen.js +9 -0
- package/lib/terminal/warning-screen.js.map +1 -1
- package/lib/theme-schema.d.ts +6 -6
- package/lib/theme-settings.d.ts +8 -8
- package/lib/theme-tokens.d.ts +1 -1
- package/lib/theme-tokens.d.ts.map +1 -1
- package/lib/theme-tokens.js +27 -1
- package/lib/theme-tokens.js.map +1 -1
- package/lib/transcript.d.ts +50 -14
- package/lib/transcript.d.ts.map +1 -1
- package/lib/transcript.js +82 -47
- package/lib/transcript.js.map +1 -1
- package/lib/ui/copy.d.ts +17 -0
- package/lib/ui/copy.d.ts.map +1 -0
- package/lib/ui/copy.js +104 -0
- package/lib/ui/copy.js.map +1 -0
- package/lib/ui/dock.d.ts +21 -1
- package/lib/ui/dock.d.ts.map +1 -1
- package/lib/ui/dock.js +75 -16
- package/lib/ui/dock.js.map +1 -1
- package/lib/ui/frame.d.ts +31 -0
- package/lib/ui/frame.d.ts.map +1 -1
- package/lib/ui/frame.js +27 -4
- package/lib/ui/frame.js.map +1 -1
- package/lib/ui/view.d.ts +73 -2
- package/lib/ui/view.d.ts.map +1 -1
- package/lib/ui/view.js +180 -20
- package/lib/ui/view.js.map +1 -1
- package/package.json +1 -1
- package/themes/deepseek-blue.yaml +9 -0
- package/themes/violet-orbit.yaml +7 -0
package/lib/transcript.d.ts
CHANGED
|
@@ -25,6 +25,8 @@ export type TranscriptEntry = {
|
|
|
25
25
|
};
|
|
26
26
|
/** Reasoning kept per settled block, so one runaway thought cannot grow the transcript without bound. */
|
|
27
27
|
export declare const REASONING_CHAR_LIMIT = 20000;
|
|
28
|
+
/** One second in milliseconds, which is the unit a duration is reported in. */
|
|
29
|
+
export declare const SECOND_MS = 1000;
|
|
28
30
|
/**
|
|
29
31
|
* Minimal durable-input shape the fold needs.
|
|
30
32
|
*
|
|
@@ -36,6 +38,17 @@ export interface FoldableEvent {
|
|
|
36
38
|
readonly type: string;
|
|
37
39
|
readonly data?: unknown;
|
|
38
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* What is known about one call the fold has seen requested and not answered.
|
|
43
|
+
*
|
|
44
|
+
* A settled call reads as nothing rather than as a zero elapsed time: "started
|
|
45
|
+
* now" and "waiting an unknown time" are different things to say, and only the
|
|
46
|
+
* fold can tell which one is true.
|
|
47
|
+
*/
|
|
48
|
+
export interface LiveCallState {
|
|
49
|
+
readonly running: boolean;
|
|
50
|
+
readonly elapsed: number;
|
|
51
|
+
}
|
|
39
52
|
/**
|
|
40
53
|
* Fold durable session events into readable rows, and hold the in-flight
|
|
41
54
|
* assistant text and reasoning apart from them.
|
|
@@ -47,8 +60,12 @@ export interface FoldableEvent {
|
|
|
47
60
|
*/
|
|
48
61
|
export declare class TranscriptModel {
|
|
49
62
|
private readonly presenter?;
|
|
50
|
-
/**
|
|
51
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Clock for "how long has this been thinking or running"; injected so a test
|
|
65
|
+
* can pin it and reachable through {@link now} so a renderer keys its rows
|
|
66
|
+
* to the same one.
|
|
67
|
+
*/
|
|
68
|
+
private readonly clock;
|
|
52
69
|
private readonly settled;
|
|
53
70
|
private readonly pending;
|
|
54
71
|
/**
|
|
@@ -77,8 +94,20 @@ export declare class TranscriptModel {
|
|
|
77
94
|
private thoughtSeq;
|
|
78
95
|
private liveReasoningId;
|
|
79
96
|
constructor(presenter?: ToolPresenter | undefined,
|
|
80
|
-
/**
|
|
81
|
-
|
|
97
|
+
/**
|
|
98
|
+
* Clock for "how long has this been thinking or running"; injected so a test
|
|
99
|
+
* can pin it and reachable through {@link now} so a renderer keys its rows
|
|
100
|
+
* to the same one.
|
|
101
|
+
*/
|
|
102
|
+
clock?: () => number);
|
|
103
|
+
/**
|
|
104
|
+
* The clock every duration on a row is measured with.
|
|
105
|
+
*
|
|
106
|
+
* A renderer that caches rows has to know when a running row's duration would
|
|
107
|
+
* have changed, and reading the same clock the fold timed the call with is the
|
|
108
|
+
* only way for the number on screen and the cache key to agree.
|
|
109
|
+
*/
|
|
110
|
+
now(): number;
|
|
82
111
|
/** Rows to render: settled rows, the in-flight reasoning, then the in-flight text. */
|
|
83
112
|
entries(): readonly TranscriptEntry[];
|
|
84
113
|
/**
|
|
@@ -89,6 +118,21 @@ export declare class TranscriptModel {
|
|
|
89
118
|
* changing.
|
|
90
119
|
*/
|
|
91
120
|
settledCount(): number;
|
|
121
|
+
/**
|
|
122
|
+
* How long one call has been in flight, or that it is not.
|
|
123
|
+
*
|
|
124
|
+
* The fold owns the request-to-result window, so a renderer asks here rather
|
|
125
|
+
* than timing the row itself: a row read twice in one frame would otherwise
|
|
126
|
+
* report two durations for one call.
|
|
127
|
+
*/
|
|
128
|
+
liveCall(callId: string): LiveCallState;
|
|
129
|
+
/**
|
|
130
|
+
* Whole seconds since a moment the fold read the clock at.
|
|
131
|
+
*
|
|
132
|
+
* Floored, not rounded: a duration that claims a second it has not waited yet
|
|
133
|
+
* would tick up before the call has been waiting that long.
|
|
134
|
+
*/
|
|
135
|
+
private secondsSince;
|
|
92
136
|
/** Whether any row exists, so a caller can decide to clear or redraw. */
|
|
93
137
|
isEmpty(): boolean;
|
|
94
138
|
reset(): void;
|
|
@@ -122,15 +166,7 @@ export declare class TranscriptModel {
|
|
|
122
166
|
*/
|
|
123
167
|
private applySubCall;
|
|
124
168
|
/**
|
|
125
|
-
* The
|
|
126
|
-
*
|
|
127
|
-
* A row that failed keeps only what still holds: its declared change never
|
|
128
|
-
* happened, so those rows go with the outcome that never came, while the
|
|
129
|
-
* outcome stays because the reason it failed is what a reader opens it to read.
|
|
130
|
-
*/
|
|
131
|
-
private settledSubCall;
|
|
132
|
-
/**
|
|
133
|
-
* The outcome a dispatched call opens to, from the view its result presented.
|
|
169
|
+
* The card a dispatched call's log answers with.
|
|
134
170
|
*
|
|
135
171
|
* A presenter can only rebuild the view it declared when the logged content is
|
|
136
172
|
* enough for it: a shell's output is, while a read's numbered window and a
|
|
@@ -138,7 +174,7 @@ export declare class TranscriptModel {
|
|
|
138
174
|
* the content the program was actually shown, so a row whose tool cannot be
|
|
139
175
|
* re-presented still opens to its outcome rather than to nothing.
|
|
140
176
|
*/
|
|
141
|
-
private
|
|
177
|
+
private subCallResult;
|
|
142
178
|
private settleToolResult;
|
|
143
179
|
}
|
|
144
180
|
//# sourceMappingURL=transcript.d.ts.map
|
package/lib/transcript.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"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"}
|
package/lib/transcript.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cardFromLines, carriedFields, contentLines, mergeCards,
|
|
1
|
+
import { cardFromLines, carriedFields, contentLines, mergeCards, subCallRow, subCallRows, SUBCALL_MAX } from "./cards.js";
|
|
2
2
|
import { injectionSummary } from "./injection.js";
|
|
3
3
|
import { sliceGraphemes, tailGraphemes } from "./text.js";
|
|
4
4
|
import { countTokens } from "./tokens.js";
|
|
@@ -11,6 +11,8 @@ export const REASONING_CHAR_LIMIT = 20_000;
|
|
|
11
11
|
* thought rather than on every delta that crosses the limit.
|
|
12
12
|
*/
|
|
13
13
|
const LIVE_THOUGHT_SLACK = 2;
|
|
14
|
+
/** One second in milliseconds, which is the unit a duration is reported in. */
|
|
15
|
+
export const SECOND_MS = 1000;
|
|
14
16
|
/** The token count with its noun, because "1 tokens" reads as a bug. */
|
|
15
17
|
function describeTokens(text) {
|
|
16
18
|
const tokens = countTokens(text);
|
|
@@ -99,7 +101,7 @@ function messageOf(value) {
|
|
|
99
101
|
*/
|
|
100
102
|
export class TranscriptModel {
|
|
101
103
|
presenter;
|
|
102
|
-
|
|
104
|
+
clock;
|
|
103
105
|
settled = [];
|
|
104
106
|
pending = new Map();
|
|
105
107
|
/**
|
|
@@ -128,16 +130,30 @@ export class TranscriptModel {
|
|
|
128
130
|
thoughtSeq = 0;
|
|
129
131
|
liveReasoningId;
|
|
130
132
|
constructor(presenter,
|
|
131
|
-
/**
|
|
132
|
-
|
|
133
|
+
/**
|
|
134
|
+
* Clock for "how long has this been thinking or running"; injected so a test
|
|
135
|
+
* can pin it and reachable through {@link now} so a renderer keys its rows
|
|
136
|
+
* to the same one.
|
|
137
|
+
*/
|
|
138
|
+
clock = () => Date.now()) {
|
|
133
139
|
this.presenter = presenter;
|
|
134
|
-
this.
|
|
140
|
+
this.clock = clock;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* The clock every duration on a row is measured with.
|
|
144
|
+
*
|
|
145
|
+
* A renderer that caches rows has to know when a running row's duration would
|
|
146
|
+
* have changed, and reading the same clock the fold timed the call with is the
|
|
147
|
+
* only way for the number on screen and the cache key to agree.
|
|
148
|
+
*/
|
|
149
|
+
now() {
|
|
150
|
+
return this.clock();
|
|
135
151
|
}
|
|
136
152
|
/** Rows to render: settled rows, the in-flight reasoning, then the in-flight text. */
|
|
137
153
|
entries() {
|
|
138
154
|
const entries = [...this.settled];
|
|
139
155
|
if (this.liveReasoning !== '') {
|
|
140
|
-
const ranFor = this.reasoningStartedAt === undefined ? undefined : this.
|
|
156
|
+
const ranFor = this.reasoningStartedAt === undefined ? undefined : this.clock() - this.reasoningStartedAt;
|
|
141
157
|
entries.push({
|
|
142
158
|
kind: 'reasoning',
|
|
143
159
|
// The live row and the row it settles into share an id, so a click made
|
|
@@ -162,6 +178,28 @@ export class TranscriptModel {
|
|
|
162
178
|
settledCount() {
|
|
163
179
|
return this.settled.length;
|
|
164
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* How long one call has been in flight, or that it is not.
|
|
183
|
+
*
|
|
184
|
+
* The fold owns the request-to-result window, so a renderer asks here rather
|
|
185
|
+
* than timing the row itself: a row read twice in one frame would otherwise
|
|
186
|
+
* report two durations for one call.
|
|
187
|
+
*/
|
|
188
|
+
liveCall(callId) {
|
|
189
|
+
const call = callId === '' ? undefined : this.pending.get(callId);
|
|
190
|
+
if (call === undefined)
|
|
191
|
+
return { running: false, elapsed: 0 };
|
|
192
|
+
return { running: true, elapsed: this.secondsSince(call.startedAt) };
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Whole seconds since a moment the fold read the clock at.
|
|
196
|
+
*
|
|
197
|
+
* Floored, not rounded: a duration that claims a second it has not waited yet
|
|
198
|
+
* would tick up before the call has been waiting that long.
|
|
199
|
+
*/
|
|
200
|
+
secondsSince(startedAt) {
|
|
201
|
+
return Math.max(0, Math.floor((this.clock() - startedAt) / SECOND_MS));
|
|
202
|
+
}
|
|
165
203
|
/** Whether any row exists, so a caller can decide to clear or redraw. */
|
|
166
204
|
isEmpty() {
|
|
167
205
|
return this.settled.length === 0 && this.live === '' && this.liveReasoning === '';
|
|
@@ -200,7 +238,7 @@ export class TranscriptModel {
|
|
|
200
238
|
case 'reasoning-delta':
|
|
201
239
|
if (typeof record.text !== 'string')
|
|
202
240
|
return;
|
|
203
|
-
this.reasoningStartedAt ??= this.
|
|
241
|
+
this.reasoningStartedAt ??= this.clock();
|
|
204
242
|
this.liveReasoningId ??= String(++this.thoughtSeq);
|
|
205
243
|
this.liveReasoning += record.text;
|
|
206
244
|
// A live thought is not bounded until the block it belongs to ends, and
|
|
@@ -274,7 +312,7 @@ export class TranscriptModel {
|
|
|
274
312
|
if (this.liveReasoning === '')
|
|
275
313
|
return;
|
|
276
314
|
const text = this.liveReasoning;
|
|
277
|
-
const ranFor = this.reasoningStartedAt === undefined ? undefined : this.
|
|
315
|
+
const ranFor = this.reasoningStartedAt === undefined ? undefined : this.clock() - this.reasoningStartedAt;
|
|
278
316
|
this.liveReasoning = '';
|
|
279
317
|
this.reasoningStartedAt = undefined;
|
|
280
318
|
this.paintReasoning(text, ranFor);
|
|
@@ -368,7 +406,7 @@ export class TranscriptModel {
|
|
|
368
406
|
card: card ?? cardFromLines('generic', name, name, argumentsJson === '' ? [] : argumentsJson.split('\n'), false),
|
|
369
407
|
});
|
|
370
408
|
if (callId !== '')
|
|
371
|
-
this.pending.set(callId, { name, argumentsJson, index: this.settled.length - 1, subs: [] });
|
|
409
|
+
this.pending.set(callId, { name, argumentsJson, index: this.settled.length - 1, startedAt: this.clock(), subs: [] });
|
|
372
410
|
return;
|
|
373
411
|
}
|
|
374
412
|
case 'tool/ptc-dispatch-start': {
|
|
@@ -411,29 +449,36 @@ export class TranscriptModel {
|
|
|
411
449
|
// row shows of the call itself, so two asks could disagree about one call.
|
|
412
450
|
const view = this.presenter?.call(name, argumentsJson);
|
|
413
451
|
const isError = data.isError === true;
|
|
414
|
-
const
|
|
452
|
+
const result = settled ? this.subCallResult(name, argumentsJson, data, view) : undefined;
|
|
453
|
+
const output = result === undefined ? undefined : subCallRows(result);
|
|
454
|
+
// A call that answered has told the surface how it went, and that is what the
|
|
455
|
+
// row reports from then on — a program's calls are read by their outcomes.
|
|
456
|
+
const failed = settled && (isError || result?.failed === true);
|
|
415
457
|
const known = this.pendingSub.get(subCallId);
|
|
416
458
|
if (known !== undefined) {
|
|
417
|
-
// A settle restates the row its start drew: it
|
|
418
|
-
//
|
|
459
|
+
// A settle restates the row its start drew: it ends the claim that the
|
|
460
|
+
// call is still in flight, adds the outcome a reader opens the row for, and
|
|
461
|
+
// a failure takes back what the call only declared. A call that produced
|
|
462
|
+
// nothing to open still has to be restated, or its row would keep saying it
|
|
463
|
+
// is running for as long as the card lives.
|
|
419
464
|
if (!settled || known.childIndex < 0)
|
|
420
465
|
return;
|
|
421
|
-
|
|
466
|
+
const drawn = (card.subCalls ?? [])[known.childIndex];
|
|
467
|
+
if (!isError && output === undefined && drawn?.running !== true)
|
|
422
468
|
return;
|
|
469
|
+
// A settle that reports nothing to open leaves the row's own outcome in
|
|
470
|
+
// place; only a failure takes it back, because the rows it drew as applied
|
|
471
|
+
// never happened.
|
|
472
|
+
const settledOutput = isError ? output : output ?? drawn?.output;
|
|
423
473
|
const subCalls = (card.subCalls ?? []).map((call, at) => at === known.childIndex
|
|
424
|
-
?
|
|
474
|
+
? subCallRow(subCallId, name, argumentsJson, { view, output: settledOutput, status: result?.status, running: false, failed }, call)
|
|
425
475
|
: call);
|
|
426
476
|
this.settled[root.index] = { kind: 'tool', id: rootCallId, card: { ...card, subCalls } };
|
|
427
477
|
return;
|
|
428
478
|
}
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
const call = {
|
|
432
|
-
...subCallOf(subCallId, name, argumentsJson, view),
|
|
433
|
-
failed,
|
|
434
|
-
...(presented === undefined || failed ? {} : { presented }),
|
|
435
|
-
...(output === undefined ? {} : { output }),
|
|
436
|
-
};
|
|
479
|
+
// A dispatch log arrives only once the call has settled, so a row that no
|
|
480
|
+
// settle has restated yet is the one still running.
|
|
481
|
+
const call = subCallRow(subCallId, name, argumentsJson, { view, output, status: result?.status, running: !settled, failed });
|
|
437
482
|
const kept = card.subCalls ?? [];
|
|
438
483
|
const total = (card.subCallsTotal ?? 0) + 1;
|
|
439
484
|
if (kept.length >= SUBCALL_MAX) {
|
|
@@ -451,26 +496,7 @@ export class TranscriptModel {
|
|
|
451
496
|
this.settled[root.index] = { kind: 'tool', id: rootCallId, card: { ...card, subCalls: [...kept, call], subCallsTotal: total } };
|
|
452
497
|
}
|
|
453
498
|
/**
|
|
454
|
-
* The
|
|
455
|
-
*
|
|
456
|
-
* A row that failed keeps only what still holds: its declared change never
|
|
457
|
-
* happened, so those rows go with the outcome that never came, while the
|
|
458
|
-
* outcome stays because the reason it failed is what a reader opens it to read.
|
|
459
|
-
*/
|
|
460
|
-
settledSubCall(call, isError, output) {
|
|
461
|
-
const outcome = output === undefined ? {} : { output };
|
|
462
|
-
if (!isError)
|
|
463
|
-
return { ...call, ...outcome };
|
|
464
|
-
return {
|
|
465
|
-
id: call.id,
|
|
466
|
-
title: call.title,
|
|
467
|
-
...(call.argument === undefined ? {} : { argument: call.argument }),
|
|
468
|
-
failed: true,
|
|
469
|
-
...outcome,
|
|
470
|
-
};
|
|
471
|
-
}
|
|
472
|
-
/**
|
|
473
|
-
* The outcome a dispatched call opens to, from the view its result presented.
|
|
499
|
+
* The card a dispatched call's log answers with.
|
|
474
500
|
*
|
|
475
501
|
* A presenter can only rebuild the view it declared when the logged content is
|
|
476
502
|
* enough for it: a shell's output is, while a read's numbered window and a
|
|
@@ -478,11 +504,10 @@ export class TranscriptModel {
|
|
|
478
504
|
* the content the program was actually shown, so a row whose tool cannot be
|
|
479
505
|
* re-presented still opens to its outcome rather than to nothing.
|
|
480
506
|
*/
|
|
481
|
-
|
|
507
|
+
subCallResult(name, argumentsJson, data, view) {
|
|
482
508
|
const failed = data.isError === true;
|
|
483
|
-
|
|
509
|
+
return this.presenter?.result(name, { argumentsJson, content: data.content, isError: failed, meta: data.meta })
|
|
484
510
|
?? cardFromLines(view?.kind ?? 'generic', name, view?.title ?? name, contentLines(data.content), failed);
|
|
485
|
-
return subCallRows(card);
|
|
486
511
|
}
|
|
487
512
|
settleToolResult(data) {
|
|
488
513
|
const message = asRecord(data.message);
|
|
@@ -491,6 +516,12 @@ export class TranscriptModel {
|
|
|
491
516
|
const pending = callId === '' ? undefined : this.pending.get(callId);
|
|
492
517
|
if (callId !== '')
|
|
493
518
|
this.pending.delete(callId);
|
|
519
|
+
// The length of the run is readable here and nowhere else: the surface saw
|
|
520
|
+
// the call logged and now sees it answered, and this is the only moment the
|
|
521
|
+
// fold holds both readings of the clock.
|
|
522
|
+
const ranFor = pending === undefined ? undefined : this.secondsSince(pending.startedAt);
|
|
523
|
+
/** The card that reports this result, carrying the seconds the call took. */
|
|
524
|
+
const finished = (card) => (ranFor === undefined ? card : { ...card, elapsed: ranFor });
|
|
494
525
|
// The root is done dispatching, so its bookkeeping goes with it; the rows it
|
|
495
526
|
// already drew stay on the card.
|
|
496
527
|
if (pending !== undefined)
|
|
@@ -523,10 +554,14 @@ export class TranscriptModel {
|
|
|
523
554
|
const rebuilt = reported.length === 0
|
|
524
555
|
? { ...base, failed: isError }
|
|
525
556
|
: { ...cardFromLines(base.kind, base.tool, base.title, reported, isError), ...carriedFields(base) };
|
|
526
|
-
this.settled[pending.index] = { kind: 'tool', id: callId, card: rebuilt };
|
|
557
|
+
this.settled[pending.index] = { kind: 'tool', id: callId, card: finished(rebuilt) };
|
|
527
558
|
return;
|
|
528
559
|
}
|
|
529
|
-
|
|
560
|
+
// Two readings decide this, and either is enough: the log says whether the tool
|
|
561
|
+
// raised, and the card the presenter built says how the call itself ended — a
|
|
562
|
+
// shell's non-zero exit is a failure the log's flag never carries.
|
|
563
|
+
const settledCard = mergeCards(call, { ...result, failed: result.failed || isError });
|
|
564
|
+
this.settled[pending.index] = { kind: 'tool', id: callId, card: finished(settledCard) };
|
|
530
565
|
}
|
|
531
566
|
}
|
|
532
567
|
//# sourceMappingURL=transcript.js.map
|
package/lib/transcript.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"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"}
|
package/lib/ui/copy.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { FrameRow } from './frame.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Read a copied selection back out of the rows the surface drew.
|
|
4
|
+
*
|
|
5
|
+
* A terminal copies the screen, so a reader who drags across a message takes the
|
|
6
|
+
* frame the surface drew around it as well: the sides, the padding between a side
|
|
7
|
+
* and the words, and the rules above and below. None of that is the reader's text
|
|
8
|
+
* and none of it was asked for, so a copy is read back through the account the
|
|
9
|
+
* surface kept of its own drawing — a row it recognises gives up its text, a row
|
|
10
|
+
* that is frame alone is dropped, and a line it cannot place is handed back
|
|
11
|
+
* exactly as the terminal gave it. Copying is no place to be clever: the frame is
|
|
12
|
+
* only ever removed, never rewritten, so the worst a copy can lose is the shape
|
|
13
|
+
* the reader was trying to get rid of — and a selection that was nothing but frame
|
|
14
|
+
* comes back as it read, because a copy is never emptied.
|
|
15
|
+
*/
|
|
16
|
+
export declare function cleanCopied(text: string, rows: readonly FrameRow[]): string;
|
|
17
|
+
//# sourceMappingURL=copy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../src/ui/copy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,MAAM,CAc3E"}
|
package/lib/ui/copy.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { sliceByColumn, visibleWidth } from '@earendil-works/pi-tui';
|
|
2
|
+
/**
|
|
3
|
+
* Read a copied selection back out of the rows the surface drew.
|
|
4
|
+
*
|
|
5
|
+
* A terminal copies the screen, so a reader who drags across a message takes the
|
|
6
|
+
* frame the surface drew around it as well: the sides, the padding between a side
|
|
7
|
+
* and the words, and the rules above and below. None of that is the reader's text
|
|
8
|
+
* and none of it was asked for, so a copy is read back through the account the
|
|
9
|
+
* surface kept of its own drawing — a row it recognises gives up its text, a row
|
|
10
|
+
* that is frame alone is dropped, and a line it cannot place is handed back
|
|
11
|
+
* exactly as the terminal gave it. Copying is no place to be clever: the frame is
|
|
12
|
+
* only ever removed, never rewritten, so the worst a copy can lose is the shape
|
|
13
|
+
* the reader was trying to get rid of — and a selection that was nothing but frame
|
|
14
|
+
* comes back as it read, because a copy is never emptied.
|
|
15
|
+
*/
|
|
16
|
+
export function cleanCopied(text, rows) {
|
|
17
|
+
if (text === '' || rows.length === 0)
|
|
18
|
+
return text;
|
|
19
|
+
const whole = byText(rows);
|
|
20
|
+
const kept = [];
|
|
21
|
+
for (const line of text.split('\n')) {
|
|
22
|
+
const read = readLine(line, rows, whole);
|
|
23
|
+
// A rule is not a line of text: a selection that crossed one loses the row
|
|
24
|
+
// rather than gaining an empty line where it stood.
|
|
25
|
+
if (read !== undefined)
|
|
26
|
+
kept.push(read);
|
|
27
|
+
}
|
|
28
|
+
// Every line was frame, so there was no text to keep. Handing the selection back
|
|
29
|
+
// is the one answer that loses nothing: dropping it would clear a clipboard the
|
|
30
|
+
// reader never asked to have cleared.
|
|
31
|
+
return kept.length === 0 ? text : kept.join('\n');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The rows a whole copied line can match, keyed by the text that line carries.
|
|
35
|
+
*
|
|
36
|
+
* A copy comes back trimmed, so a row that is all text matches on its trimmed
|
|
37
|
+
* form. Built once per copy: a long transcript has one row per message line, and
|
|
38
|
+
* reading each copied line against all of them would trim the whole transcript
|
|
39
|
+
* again for every line the reader selected.
|
|
40
|
+
*/
|
|
41
|
+
function byText(rows) {
|
|
42
|
+
const index = new Map();
|
|
43
|
+
for (const row of rows) {
|
|
44
|
+
const text = row.drawn.trimEnd();
|
|
45
|
+
// The first row wins, so the same line is read the same way twice.
|
|
46
|
+
if (!index.has(text))
|
|
47
|
+
index.set(text, row);
|
|
48
|
+
}
|
|
49
|
+
return index;
|
|
50
|
+
}
|
|
51
|
+
/** One copied line as the row it came from says it should read, or nothing when it came from the frame. */
|
|
52
|
+
function readLine(line, rows, whole) {
|
|
53
|
+
// A blank line is a blank line: no row of a frame reads as nothing, so there is
|
|
54
|
+
// nothing here to recognise, and nothing to take away.
|
|
55
|
+
if (line === '')
|
|
56
|
+
return line;
|
|
57
|
+
const hit = locate(line, rows, whole);
|
|
58
|
+
if (hit === undefined)
|
|
59
|
+
return line;
|
|
60
|
+
const drawn = hit.row.drawn;
|
|
61
|
+
const frame = hit.row.frame;
|
|
62
|
+
if (frame === undefined) {
|
|
63
|
+
// A rule is the frame itself: the reader selected the shape, not any text. The
|
|
64
|
+
// whole row is that shape, and so is a piece of one that runs to either end —
|
|
65
|
+
// which is what a drag across the frame leaves above and below a message. A
|
|
66
|
+
// line that merely reads like the middle of a rule came from somewhere else,
|
|
67
|
+
// and nothing here is entitled to take it away.
|
|
68
|
+
if (hit.whole)
|
|
69
|
+
return undefined;
|
|
70
|
+
const end = hit.column + visibleWidth(line);
|
|
71
|
+
return hit.column === 0 || end >= visibleWidth(drawn) ? undefined : line;
|
|
72
|
+
}
|
|
73
|
+
const own = sliceByColumn(drawn, frame.lead, Math.max(0, visibleWidth(drawn) - frame.lead - frame.trail));
|
|
74
|
+
// A drag selects columns, so the first and last rows of a selection arrive as
|
|
75
|
+
// fragments. Reading the fragment's own columns back out of the row it came from
|
|
76
|
+
// is what takes the frame columns with it: the span the fragment spends inside the
|
|
77
|
+
// frame is not part of the text this returns, and a fragment that spent all of
|
|
78
|
+
// itself there was the shape and nothing more.
|
|
79
|
+
const from = Math.max(hit.column, frame.lead);
|
|
80
|
+
const to = Math.min(hit.column + visibleWidth(line), visibleWidth(drawn) - frame.trail);
|
|
81
|
+
if (to <= from)
|
|
82
|
+
return undefined;
|
|
83
|
+
return sliceByColumn(own, from - frame.lead, to - from, true).trimEnd();
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The row a copied line came from: the row that reads exactly as the line does,
|
|
87
|
+
* or else the one row holding it as a fragment.
|
|
88
|
+
*/
|
|
89
|
+
function locate(line, rows, whole) {
|
|
90
|
+
const exact = whole.get(line);
|
|
91
|
+
if (exact !== undefined)
|
|
92
|
+
return { row: exact, column: 0, whole: true };
|
|
93
|
+
for (const row of rows) {
|
|
94
|
+
const offset = row.drawn.indexOf(line);
|
|
95
|
+
if (offset === -1)
|
|
96
|
+
continue;
|
|
97
|
+
// A fragment matches inside the row as it was drawn, which is where the frame's
|
|
98
|
+
// own columns are still countable: the column it began at is measured in cells,
|
|
99
|
+
// not characters, so a wide glyph before it costs the width it was drawn at.
|
|
100
|
+
return { row, column: visibleWidth(row.drawn.slice(0, offset)), whole: false };
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.js","sourceRoot":"","sources":["../../src/ui/copy.ts"],"names":[],"mappings":"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"}
|
package/lib/ui/dock.d.ts
CHANGED
|
@@ -9,7 +9,9 @@ export declare const DOCK_TODO_LIMIT = 4;
|
|
|
9
9
|
* The dock above the editor: what the agent is working on right now.
|
|
10
10
|
*
|
|
11
11
|
* It renders nothing when there is nothing to say, so a plain conversation
|
|
12
|
-
* keeps its rows for the conversation.
|
|
12
|
+
* keeps its rows for the conversation. Each list it draws opens on a rule that
|
|
13
|
+
* names it, in that section's own hue: the dock is several boards stacked, and
|
|
14
|
+
* which board a row belongs to has to be readable without reading the row.
|
|
13
15
|
*/
|
|
14
16
|
export declare class WorkDock implements Component {
|
|
15
17
|
private readonly state;
|
|
@@ -28,6 +30,24 @@ export declare class WorkDock implements Component {
|
|
|
28
30
|
/** Clock for elapsed times, so a frame can be pinned in a test. */
|
|
29
31
|
now?: () => number);
|
|
30
32
|
invalidate(): void;
|
|
33
|
+
/**
|
|
34
|
+
* The dashed rule that opens a section, with the section's name on it.
|
|
35
|
+
*
|
|
36
|
+
* A name with no room left for a dash after it is drawn as the heading it
|
|
37
|
+
* would otherwise have been: a rule earns its row by being the edge of a
|
|
38
|
+
* list, and an edge a reader cannot tell from a name is not one.
|
|
39
|
+
*/
|
|
40
|
+
private sectionRule;
|
|
41
|
+
/**
|
|
42
|
+
* One section as the dock draws it: the rule that names it, then its rows.
|
|
43
|
+
*
|
|
44
|
+
* The rows arrive already built and are pushed as they are, so a section costs
|
|
45
|
+
* the rows it always cost and no column of them. The name's element is what
|
|
46
|
+
* spends the row: a hidden rule leaves the heading it replaced, and a hidden
|
|
47
|
+
* name leaves the section exactly as it stood before the sections were edged —
|
|
48
|
+
* a rule with no name to carry would be an edge that says nothing.
|
|
49
|
+
*/
|
|
50
|
+
private pushSection;
|
|
31
51
|
private pushTodos;
|
|
32
52
|
private pushSubagents;
|
|
33
53
|
private pushJobs;
|
package/lib/ui/dock.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dock.d.ts","sourceRoot":"","sources":["../../src/ui/dock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACjF,OAAO,EAAyC,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAEzF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtD,mEAAmE;AACnE,eAAO,MAAM,eAAe,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"dock.d.ts","sourceRoot":"","sources":["../../src/ui/dock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACjF,OAAO,EAAyC,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAEzF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtD,mEAAmE;AACnE,eAAO,MAAM,eAAe,IAAI,CAAA;AA4DhC;;;;;;;GAOG;AACH,qBAAa,QAAS,YAAW,SAAS;IAEtC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAPH,KAAK,EAAE,MAAM,SAAS,EACtB,KAAK,EAAE,QAAQ;IAChC,8EAA8E;IAC7D,IAAI,GAAE,MAAM,SAAS,UAAU,EAAa;IAC7D,yDAAyD;IACxC,SAAS,GAAE,MAAM,SAAS,WAAW,EAAa;IACnE,mEAAmE;IAClD,GAAG,GAAE,MAAM,MAAyB;IAGvD,UAAU,IAAI,IAAI;IAIlB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAcnB;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,QAAQ;IAwBhB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CA2BhC"}
|