@sagmans/dsh-tui 0.7.0 → 0.9.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/.agents/skills/dsh-tui-dogfood/SKILL.md +5 -1
- package/.agents/skills/dsh-tui-dogfood/scripts/run-plugin-from-worktree.sh +26 -2
- package/.agents/skills/dsh-tui-update-models/SKILL.md +95 -17
- package/.agents/skills/dsh-tui-update-models/references/model-wiring.md +158 -28
- package/.agents/skills/dsh-tui-update-models/scripts/dump-model-catalog.mjs +152 -16
- package/README.md +117 -53
- package/lib/agent/history.d.ts +0 -2
- package/lib/agent/history.d.ts.map +1 -1
- package/lib/agent/history.js +1 -1
- package/lib/agent/history.js.map +1 -1
- package/lib/agent/host.d.ts +0 -25
- package/lib/agent/host.d.ts.map +1 -1
- package/lib/agent/host.js +2 -2
- package/lib/agent/host.js.map +1 -1
- package/lib/agent/model.d.ts +38 -6
- package/lib/agent/model.d.ts.map +1 -1
- package/lib/agent/model.js +38 -14
- package/lib/agent/model.js.map +1 -1
- package/lib/agent/prompt-history.d.ts +7 -12
- package/lib/agent/prompt-history.d.ts.map +1 -1
- package/lib/agent/prompt-history.js +10 -31
- package/lib/agent/prompt-history.js.map +1 -1
- package/lib/cards/composition.d.ts +1 -1
- package/lib/cards/composition.d.ts.map +1 -1
- package/lib/cards/composition.js +7 -0
- package/lib/cards/composition.js.map +1 -1
- package/lib/cards/presenter.d.ts.map +1 -1
- package/lib/cards/presenter.js +32 -2
- package/lib/cards/presenter.js.map +1 -1
- package/lib/cards.d.ts +27 -2
- package/lib/cards.d.ts.map +1 -1
- package/lib/cards.js +17 -3
- package/lib/cards.js.map +1 -1
- package/lib/compat/probe.js +1 -1
- package/lib/compat/probe.js.map +1 -1
- package/lib/config.d.ts +10 -0
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +18 -0
- package/lib/config.js.map +1 -1
- package/lib/contracts.d.ts +2 -0
- package/lib/contracts.d.ts.map +1 -1
- package/lib/export.d.ts +12 -0
- package/lib/export.d.ts.map +1 -1
- package/lib/export.js +34 -3
- package/lib/export.js.map +1 -1
- package/lib/herdr/client.d.ts +8 -9
- package/lib/herdr/client.d.ts.map +1 -1
- package/lib/herdr/client.js +14 -2
- package/lib/herdr/client.js.map +1 -1
- package/lib/herdr/constants.d.ts +18 -0
- package/lib/herdr/constants.d.ts.map +1 -1
- package/lib/herdr/constants.js +18 -0
- package/lib/herdr/constants.js.map +1 -1
- package/lib/herdr/reporter.d.ts +20 -4
- package/lib/herdr/reporter.d.ts.map +1 -1
- package/lib/herdr/reporter.js +70 -20
- package/lib/herdr/reporter.js.map +1 -1
- package/lib/herdr/state.d.ts +10 -10
- package/lib/herdr/state.d.ts.map +1 -1
- package/lib/herdr/state.js +22 -5
- package/lib/herdr/state.js.map +1 -1
- package/lib/identity.d.ts +0 -2
- package/lib/identity.d.ts.map +1 -1
- package/lib/identity.js +0 -1
- package/lib/identity.js.map +1 -1
- package/lib/index.d.ts +1 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +15 -5
- package/lib/index.js.map +1 -1
- package/lib/input/keymap.d.ts +1 -7
- package/lib/input/keymap.d.ts.map +1 -1
- package/lib/input/keymap.js +3 -11
- package/lib/input/keymap.js.map +1 -1
- package/lib/input/submission.js +2 -2
- package/lib/input/submission.js.map +1 -1
- package/lib/install-skills.d.ts +20 -1
- package/lib/install-skills.d.ts.map +1 -1
- package/lib/install-skills.js +84 -9
- package/lib/install-skills.js.map +1 -1
- package/lib/model-list.d.ts.map +1 -1
- package/lib/model-list.js +17 -5
- package/lib/model-list.js.map +1 -1
- package/lib/queue.d.ts +0 -2
- package/lib/queue.d.ts.map +1 -1
- package/lib/queue.js +1 -1
- package/lib/queue.js.map +1 -1
- package/lib/settings-notice.d.ts +10 -1
- package/lib/settings-notice.d.ts.map +1 -1
- package/lib/settings-notice.js +17 -7
- package/lib/settings-notice.js.map +1 -1
- package/lib/spacing.d.ts +40 -0
- package/lib/spacing.d.ts.map +1 -0
- package/lib/spacing.js +54 -0
- package/lib/spacing.js.map +1 -0
- package/lib/stash/paths.d.ts +19 -10
- package/lib/stash/paths.d.ts.map +1 -1
- package/lib/stash/paths.js +52 -23
- package/lib/stash/paths.js.map +1 -1
- package/lib/stash/schema.d.ts +13 -12
- package/lib/stash/schema.d.ts.map +1 -1
- package/lib/stash/schema.js +11 -9
- package/lib/stash/schema.js.map +1 -1
- package/lib/stash/store.d.ts.map +1 -1
- package/lib/stash/store.js +9 -19
- package/lib/stash/store.js.map +1 -1
- package/lib/stash.d.ts +17 -10
- package/lib/stash.d.ts.map +1 -1
- package/lib/stash.js +31 -20
- package/lib/stash.js.map +1 -1
- package/lib/subagents.d.ts +0 -4
- package/lib/subagents.d.ts.map +1 -1
- package/lib/subagents.js +2 -2
- package/lib/subagents.js.map +1 -1
- package/lib/surface/appearance.d.ts +3 -0
- package/lib/surface/appearance.d.ts.map +1 -1
- package/lib/surface/appearance.js +5 -0
- package/lib/surface/appearance.js.map +1 -1
- package/lib/surface/background-work.d.ts +2 -0
- package/lib/surface/background-work.d.ts.map +1 -1
- package/lib/surface/background-work.js +45 -3
- package/lib/surface/background-work.js.map +1 -1
- package/lib/surface/commands.d.ts +2 -0
- package/lib/surface/commands.d.ts.map +1 -1
- package/lib/surface/commands.js +32 -6
- package/lib/surface/commands.js.map +1 -1
- package/lib/surface/modal-input.d.ts +3 -2
- package/lib/surface/modal-input.d.ts.map +1 -1
- package/lib/surface/modal-input.js +25 -8
- package/lib/surface/modal-input.js.map +1 -1
- package/lib/surface/model-choice.d.ts.map +1 -1
- package/lib/surface/model-choice.js +18 -18
- package/lib/surface/model-choice.js.map +1 -1
- package/lib/surface/preset-choice.d.ts.map +1 -1
- package/lib/surface/preset-choice.js +18 -10
- package/lib/surface/preset-choice.js.map +1 -1
- package/lib/surface/prompt-memory.d.ts +3 -1
- package/lib/surface/prompt-memory.d.ts.map +1 -1
- package/lib/surface/prompt-memory.js +10 -11
- package/lib/surface/prompt-memory.js.map +1 -1
- package/lib/surface/session-lifecycle.d.ts +6 -1
- package/lib/surface/session-lifecycle.d.ts.map +1 -1
- package/lib/surface/session-lifecycle.js +30 -8
- package/lib/surface/session-lifecycle.js.map +1 -1
- package/lib/surface/session-view.d.ts.map +1 -1
- package/lib/surface/session-view.js +1 -3
- package/lib/surface/session-view.js.map +1 -1
- package/lib/surface/staged-turns.d.ts +0 -2
- package/lib/surface/staged-turns.d.ts.map +1 -1
- package/lib/surface/staged-turns.js +37 -6
- package/lib/surface/staged-turns.js.map +1 -1
- package/lib/terminal/external-editor.d.ts +16 -0
- package/lib/terminal/external-editor.d.ts.map +1 -1
- package/lib/terminal/external-editor.js +38 -6
- package/lib/terminal/external-editor.js.map +1 -1
- package/lib/terminal/host-writes.d.ts +15 -2
- package/lib/terminal/host-writes.d.ts.map +1 -1
- package/lib/terminal/host-writes.js +10 -1
- package/lib/terminal/host-writes.js.map +1 -1
- package/lib/terminal/restore.d.ts +1 -2
- package/lib/terminal/restore.d.ts.map +1 -1
- package/lib/terminal/restore.js +1 -9
- package/lib/terminal/restore.js.map +1 -1
- package/lib/terminal/signals.d.ts +0 -1
- package/lib/terminal/signals.d.ts.map +1 -1
- package/lib/terminal/signals.js +1 -1
- package/lib/terminal/signals.js.map +1 -1
- package/lib/terminal/title.d.ts.map +1 -1
- package/lib/terminal/title.js +14 -3
- package/lib/terminal/title.js.map +1 -1
- package/lib/terminal/warning-screen.d.ts.map +1 -1
- package/lib/terminal/warning-screen.js +12 -1
- package/lib/terminal/warning-screen.js.map +1 -1
- package/lib/theme-capability.d.ts +0 -2
- package/lib/theme-capability.d.ts.map +1 -1
- package/lib/theme-capability.js +1 -1
- package/lib/theme-capability.js.map +1 -1
- package/lib/theme-defaults.d.ts.map +1 -1
- package/lib/theme-defaults.js +7 -0
- package/lib/theme-defaults.js.map +1 -1
- package/lib/theme-files.d.ts +1 -1
- package/lib/theme-files.d.ts.map +1 -1
- package/lib/theme-files.js +1 -1
- package/lib/theme-files.js.map +1 -1
- package/lib/theme-schema.d.ts +6 -6
- package/lib/theme-settings.d.ts +13 -8
- package/lib/theme-settings.d.ts.map +1 -1
- package/lib/theme-settings.js +17 -3
- package/lib/theme-settings.js.map +1 -1
- package/lib/theme-tokens.d.ts +1 -1
- package/lib/theme-tokens.d.ts.map +1 -1
- package/lib/theme-tokens.js +7 -2
- package/lib/theme-tokens.js.map +1 -1
- package/lib/transcript.d.ts +2 -2
- package/lib/transcript.d.ts.map +1 -1
- package/lib/transcript.js +9 -4
- package/lib/transcript.js.map +1 -1
- package/lib/ui/dock.d.ts +2 -0
- package/lib/ui/dock.d.ts.map +1 -1
- package/lib/ui/dock.js +18 -3
- package/lib/ui/dock.js.map +1 -1
- package/lib/ui/gap.d.ts +28 -0
- package/lib/ui/gap.d.ts.map +1 -0
- package/lib/ui/gap.js +47 -0
- package/lib/ui/gap.js.map +1 -0
- package/lib/ui/gutter.d.ts +25 -0
- package/lib/ui/gutter.d.ts.map +1 -0
- package/lib/ui/gutter.js +31 -0
- package/lib/ui/gutter.js.map +1 -0
- package/lib/ui/layout.d.ts +13 -1
- package/lib/ui/layout.d.ts.map +1 -1
- package/lib/ui/layout.js +32 -6
- package/lib/ui/layout.js.map +1 -1
- package/lib/ui/queue.d.ts +0 -4
- package/lib/ui/queue.d.ts.map +1 -1
- package/lib/ui/queue.js +2 -2
- package/lib/ui/queue.js.map +1 -1
- package/lib/ui/rows.d.ts +0 -8
- package/lib/ui/rows.d.ts.map +1 -1
- package/lib/ui/rows.js +1 -9
- package/lib/ui/rows.js.map +1 -1
- package/lib/ui/stash-picker.d.ts +2 -2
- package/lib/ui/stash-picker.d.ts.map +1 -1
- package/lib/ui/stash-picker.js +3 -3
- package/lib/ui/stash-picker.js.map +1 -1
- package/lib/ui/view/gate-card.d.ts.map +1 -1
- package/lib/ui/view/gate-card.js +4 -1
- package/lib/ui/view/gate-card.js.map +1 -1
- package/lib/ui/view/tool-card.d.ts +17 -2
- package/lib/ui/view/tool-card.d.ts.map +1 -1
- package/lib/ui/view/tool-card.js +40 -8
- package/lib/ui/view/tool-card.js.map +1 -1
- package/lib/ui/view/transcript-message.d.ts +3 -0
- package/lib/ui/view/transcript-message.d.ts.map +1 -1
- package/lib/ui/view/transcript-message.js +8 -1
- package/lib/ui/view/transcript-message.js.map +1 -1
- package/lib/ui/view.d.ts +36 -9
- package/lib/ui/view.d.ts.map +1 -1
- package/lib/ui/view.js +90 -32
- package/lib/ui/view.js.map +1 -1
- package/package.json +3 -1
- package/themes/deepseek-blue.yaml +3 -0
- package/themes/violet-orbit.yaml +16 -9
package/lib/ui/view.js
CHANGED
|
@@ -3,9 +3,11 @@ import {} from "./picker.js";
|
|
|
3
3
|
import { pickerCardLines } from "./picker-card.js";
|
|
4
4
|
import { ANSWER_FACE } from "./markdown.js";
|
|
5
5
|
import {} from "./frame.js";
|
|
6
|
+
import { gapRows, placeGap, pushGap } from "./gap.js";
|
|
6
7
|
import {} from "../theme.js";
|
|
7
8
|
import {} from "../theme-tokens.js";
|
|
8
9
|
import { DEFAULT_TOOL_DISPLAY } from "../tool-display.js";
|
|
10
|
+
import { DEFAULT_SPACING } from "../spacing.js";
|
|
9
11
|
import { SECOND_MS } from "../transcript/tool-calls.js";
|
|
10
12
|
import {} from "../transcript.js";
|
|
11
13
|
import {} from "../gates.js";
|
|
@@ -21,15 +23,27 @@ const CARD_OPEN_FALLBACK = 'ctrl+o';
|
|
|
21
23
|
* The state a reader gets before opening anything, and the view's own fallback.
|
|
22
24
|
*
|
|
23
25
|
* Thoughts start folded because they can be long enough to push the answer off
|
|
24
|
-
* the screen. Cards
|
|
25
|
-
*
|
|
26
|
-
*
|
|
26
|
+
* the screen. Cards start from the reader's own `tools:` settings, which ship
|
|
27
|
+
* folded — one clipped line each — and a program's calls start folded with them:
|
|
28
|
+
* one line per dispatch is a wall of rows over the answer, and those rows answer
|
|
29
|
+
* to a click on the card's own header or to the nested-calls key.
|
|
27
30
|
*/
|
|
28
|
-
export const DEFAULT_VIEW_STATE = { expandCards: false, expandReasoning: false, expandSubCalls:
|
|
31
|
+
export const DEFAULT_VIEW_STATE = { expandCards: false, expandReasoning: false, expandSubCalls: false };
|
|
29
32
|
/** Keys are prefixed because cards, thoughts, and dispatches all share one map. */
|
|
30
33
|
const toolClickKey = (id) => (id === '' ? undefined : `tool:${id}`);
|
|
31
34
|
const reasoningClickKey = (id) => (id === '' ? undefined : `reason:${id}`);
|
|
32
35
|
const subCallClickKey = (parentId, id) => `sub:${parentId}/${id}`;
|
|
36
|
+
/**
|
|
37
|
+
* The key one card's own answer about its dispatched calls is remembered under.
|
|
38
|
+
*
|
|
39
|
+
* Beside the card's own key rather than inside it, because the two are different
|
|
40
|
+
* questions: the card's key folds the row, this one says whether the calls under
|
|
41
|
+
* it are worth the rows they cost. A reader who clicked one program's header is
|
|
42
|
+
* answering for that program, and folding a card is not an answer about what it
|
|
43
|
+
* dispatched.
|
|
44
|
+
*/
|
|
45
|
+
const NESTED_CALLS_CLICK_PREFIX = 'subcalls:';
|
|
46
|
+
const nestedCallsClickKey = (id) => (id === '' ? undefined : `${NESTED_CALLS_CLICK_PREFIX}${id}`);
|
|
33
47
|
export class TranscriptView {
|
|
34
48
|
model;
|
|
35
49
|
theme;
|
|
@@ -73,10 +87,10 @@ export class TranscriptView {
|
|
|
73
87
|
this.theme = theme;
|
|
74
88
|
this.markdown = markdown;
|
|
75
89
|
this.options = options;
|
|
76
|
-
this.cards = new ToolCards({ theme: this.theme,
|
|
77
|
-
this.messages = new Messages({ theme: this.theme, markdown: this.markdown, reasoningOpen: entry => this.reasoningOpen(entry), reasoningFoldHint: () => this.reasoningFoldHint(), reasoningKey: id => reasoningClickKey(id), pushWrapped: (lines, text, width, prefix, token) => this.pushWrapped(lines, text, width, prefix, token) });
|
|
90
|
+
this.cards = new ToolCards({ theme: this.theme, keymap: () => this.keymap(), toolDisplay: tool => this.toolDisplay(tool), expansionOf: entry => this.expansionOf(entry), subCallsOpen: entry => this.subCallsOpen(entry), liveCall: callId => this.model.liveCall(callId), cardOpenHint: () => hintKeys(this.keymap(), 'surface.toolDetail') || CARD_OPEN_FALLBACK, toolKey: id => toolClickKey(id), subCallsKey: id => nestedCallsClickKey(id), subCallKey: (parentId, id) => subCallClickKey(parentId, id), subCallOpen: (parentId, id) => this.subCallOpen(parentId, id) });
|
|
91
|
+
this.messages = new Messages({ theme: this.theme, markdown: this.markdown, reasoningOpen: entry => this.reasoningOpen(entry), reasoningFoldHint: () => this.reasoningFoldHint(), reasoningKey: id => reasoningClickKey(id), spacing: () => this.air(), pushWrapped: (lines, text, width, prefix, token) => this.pushWrapped(lines, text, width, prefix, token) });
|
|
78
92
|
this.gates = new GateCards({ theme: this.theme, pushWrapped: (lines, text, width, prefix, token) => this.pushWrapped(lines, text, width, prefix, token) });
|
|
79
|
-
this.rows =
|
|
93
|
+
this.rows = new RowCache();
|
|
80
94
|
}
|
|
81
95
|
get viewState() {
|
|
82
96
|
return this.options.state?.() ?? DEFAULT_VIEW_STATE;
|
|
@@ -85,6 +99,10 @@ export class TranscriptView {
|
|
|
85
99
|
toolDisplay(tool) {
|
|
86
100
|
return this.options.toolDisplay?.(tool) ?? DEFAULT_TOOL_DISPLAY;
|
|
87
101
|
}
|
|
102
|
+
/** The air in force, or the shipped spacing for a caller that lent none. */
|
|
103
|
+
air() {
|
|
104
|
+
return this.options.spacing?.() ?? DEFAULT_SPACING;
|
|
105
|
+
}
|
|
88
106
|
/**
|
|
89
107
|
* Whether one tool message draws open.
|
|
90
108
|
*
|
|
@@ -107,6 +125,27 @@ export class TranscriptView {
|
|
|
107
125
|
subCallOpen(parentId, id) {
|
|
108
126
|
return this.clicked.get(subCallClickKey(parentId, id)) ?? false;
|
|
109
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Whether one card draws the calls its program dispatched.
|
|
130
|
+
*
|
|
131
|
+
* A click on the card's header outranks the nested-calls key, which stays the
|
|
132
|
+
* one press that shows or hides every program at once; a card nobody clicked
|
|
133
|
+
* follows it. The answer is remembered per card rather than folded into the
|
|
134
|
+
* shared key, because a reader reading one program's work should not have to
|
|
135
|
+
* open every other card in the session to see it.
|
|
136
|
+
*
|
|
137
|
+
* The card's own fold is a different question, answered by a different click:
|
|
138
|
+
* a folded program is one row, and its calls are the work that row summarised
|
|
139
|
+
* — which is what a reader unrolls it for, whether or not the program's own
|
|
140
|
+
* return value is on screen with them.
|
|
141
|
+
*/
|
|
142
|
+
subCallsOpen(entry) {
|
|
143
|
+
if (entry.card.subCalls === undefined)
|
|
144
|
+
return false;
|
|
145
|
+
const key = nestedCallsClickKey(entry.id);
|
|
146
|
+
const clicked = key === undefined ? undefined : this.clicked.get(key);
|
|
147
|
+
return clicked ?? this.viewState.expandSubCalls;
|
|
148
|
+
}
|
|
110
149
|
/**
|
|
111
150
|
* Answer a click on a message by folding or unfolding that one row.
|
|
112
151
|
*
|
|
@@ -128,13 +167,18 @@ export class TranscriptView {
|
|
|
128
167
|
}
|
|
129
168
|
if (span === undefined)
|
|
130
169
|
return undefined;
|
|
170
|
+
// One click on a program's header opens the one level under it: the calls the
|
|
171
|
+
// program dispatched, each still the single row it is read at. The program's
|
|
172
|
+
// own body is the level below that, and it stays folded here because a click
|
|
173
|
+
// that drew both would spend rows the reader never asked for, with nothing
|
|
174
|
+
// left to click for less. Ctrl+O is what opens a card's own rows.
|
|
175
|
+
if (span.key.startsWith(NESTED_CALLS_CLICK_PREFIX)) {
|
|
176
|
+
this.clicked.set(span.key, this.clicked.get(span.key) !== true);
|
|
177
|
+
return { handled: true, render: true };
|
|
178
|
+
}
|
|
131
179
|
this.clicked.set(span.key, !span.expanded);
|
|
132
180
|
return { handled: true, render: true };
|
|
133
181
|
}
|
|
134
|
-
/** The cache's own account of the work it avoided; a test reads this. */
|
|
135
|
-
rowStats() {
|
|
136
|
-
return this.rows.stats();
|
|
137
|
-
}
|
|
138
182
|
invalidate() {
|
|
139
183
|
// The rows are keyed by width and expansion state, so a real change misses
|
|
140
184
|
// anyway; an explicit invalidate means the caller wants them rebuilt.
|
|
@@ -180,7 +224,9 @@ export class TranscriptView {
|
|
|
180
224
|
return this.model.liveCall(entry.id).running || (entry.card.subCalls ?? []).some(call => call.running);
|
|
181
225
|
}
|
|
182
226
|
pushPicker(lines, picker, width) {
|
|
183
|
-
|
|
227
|
+
// The overlay opens under the transcript on one row of air, unless the row
|
|
228
|
+
// above is already air: the break belongs between the two, not to each.
|
|
229
|
+
pushGap(lines);
|
|
184
230
|
// The rows come from the renderer a popup also draws through, so a card
|
|
185
231
|
// reads the same whether it sits at the end of the transcript or in a box
|
|
186
232
|
// over it, and a field added to a card reaches both at once.
|
|
@@ -195,6 +241,12 @@ export class TranscriptView {
|
|
|
195
241
|
case 'reasoning':
|
|
196
242
|
this.messages.pushReasoning(lines, entry, width, spans);
|
|
197
243
|
return;
|
|
244
|
+
case 'step':
|
|
245
|
+
// The log opened a step of the turn here, so the rows it costs are the air
|
|
246
|
+
// that keeps one step's thought and calls from reading as the next step's
|
|
247
|
+
// tail. Nothing else is drawn: the step is a boundary, not a thing said.
|
|
248
|
+
lines.push(...gapRows(this.air().steps));
|
|
249
|
+
return;
|
|
198
250
|
case 'assistant':
|
|
199
251
|
// The reply is boxed the way the prompt that asked for it is, so one
|
|
200
252
|
// exchange reads as two objects rather than as a box and then a stream.
|
|
@@ -203,9 +255,8 @@ export class TranscriptView {
|
|
|
203
255
|
case 'user': {
|
|
204
256
|
if (!this.theme.visible('transcript.user'))
|
|
205
257
|
return;
|
|
206
|
-
// A prompt
|
|
207
|
-
|
|
208
|
-
this.messages.pushFramed(lines, copy, entry.text, width, false, this.messages.userFace(), 'editor.border');
|
|
258
|
+
// A sent prompt keeps its frame without inheriting changes to the input bar.
|
|
259
|
+
this.messages.pushFramed(lines, copy, entry.text, width, false, this.messages.userFace(), 'transcript.user.border');
|
|
209
260
|
return;
|
|
210
261
|
}
|
|
211
262
|
case 'notice':
|
|
@@ -227,7 +278,10 @@ export class TranscriptView {
|
|
|
227
278
|
// The revision is part of the key: rows drawn under an older theme table
|
|
228
279
|
// must miss, or a settings change would restyle only the rows that happened
|
|
229
280
|
// to be redrawn for another reason.
|
|
230
|
-
|
|
281
|
+
// The air the reader asked for is part of the key for the same reason: the rows
|
|
282
|
+
// an entry holds are its own air plus its own body.
|
|
283
|
+
const gaps = this.air();
|
|
284
|
+
const baseTag = `${width}|${state.expandCards ? 'c' : '-'}${state.expandReasoning ? 'r' : '-'}${state.expandSubCalls ? 'p' : '-'}|${this.theme.revision}|${gaps.messages}${gaps.steps}`;
|
|
231
285
|
const lines = [];
|
|
232
286
|
const spans = [];
|
|
233
287
|
const liveCopy = [];
|
|
@@ -239,8 +293,13 @@ export class TranscriptView {
|
|
|
239
293
|
// message — or one call inside it — rebuilds that message alone while the
|
|
240
294
|
// rows around it stay cached.
|
|
241
295
|
const open = entry.kind === 'tool' ? this.expansionOf(entry) : entry.kind === 'reasoning' ? this.reasoningOpen(entry) : undefined;
|
|
296
|
+
// Whether a program's calls are drawn is part of the key, because it moves
|
|
297
|
+
// rows the card's own fold does not: the calls come and go under a header
|
|
298
|
+
// that stays where it is, and a cached entry would keep answering with what
|
|
299
|
+
// the reader had already clicked away from.
|
|
300
|
+
const shape = entry.kind === 'tool' && this.subCallsOpen(entry) ? 'P' : 'p';
|
|
242
301
|
const marks = entry.kind === 'tool'
|
|
243
|
-
? `${open === true ? '+' : '-'}${(entry.card.subCalls ?? []).map(call => (this.subCallOpen(entry.id, call.id) ? '1' : '0')).join('')}`
|
|
302
|
+
? `${open === true ? '+' : '-'}${shape}${(entry.card.subCalls ?? []).map(call => (this.subCallOpen(entry.id, call.id) ? '1' : '0')).join('')}`
|
|
244
303
|
: open === true ? '+' : '-';
|
|
245
304
|
// A running row is drawn from a clock the rest of the row is not, so its
|
|
246
305
|
// cache is spent every second: the entries after it stay put, and a card
|
|
@@ -249,40 +308,39 @@ export class TranscriptView {
|
|
|
249
308
|
const tag = `${baseTag}|${marks}${this.isLive(entry) ? `|${Math.floor(this.model.now() / SECOND_MS)}` : ''}`;
|
|
250
309
|
const local = [];
|
|
251
310
|
const copy = [];
|
|
311
|
+
const rows = [];
|
|
252
312
|
// The in-flight rows change on every frame, so caching them would only
|
|
253
313
|
// fill the cache with objects nobody will ask for again.
|
|
254
314
|
if (index >= settled) {
|
|
255
|
-
this.renderEntry(entry,
|
|
315
|
+
this.renderEntry(entry, rows, width, true, local, copy);
|
|
256
316
|
// A row still arriving is drawn every frame, so it is never cached: its
|
|
257
317
|
// copy account goes to the frame rather than to an entry nobody can name.
|
|
258
318
|
liveCopy.push(...copy);
|
|
259
|
-
// An in-flight entry draws straight into the transcript, so the spans it
|
|
260
|
-
// recorded already name transcript rows; offsetting them again would move
|
|
261
|
-
// every hit target as many rows down as the entry's own start.
|
|
262
|
-
spans.push(...local);
|
|
263
319
|
}
|
|
264
320
|
else {
|
|
265
321
|
const cached = this.rows.lookup(entry, tag);
|
|
266
322
|
const saved = this.entrySpans.get(entry);
|
|
267
323
|
const savedCopy = this.entryCopy.get(entry);
|
|
268
324
|
if (cached !== undefined && saved !== undefined && savedCopy !== undefined) {
|
|
269
|
-
|
|
325
|
+
rows.push(...cached);
|
|
270
326
|
local.push(...saved);
|
|
271
327
|
}
|
|
272
328
|
else {
|
|
273
|
-
|
|
274
|
-
this.
|
|
275
|
-
this.rows.store(entry, tag, rendered);
|
|
329
|
+
this.renderEntry(entry, rows, width, false, local, copy);
|
|
330
|
+
this.rows.store(entry, tag, rows);
|
|
276
331
|
this.entrySpans.set(entry, local);
|
|
277
332
|
this.entryCopy.set(entry, copy);
|
|
278
|
-
lines.push(...rendered);
|
|
279
|
-
}
|
|
280
|
-
// A cached span is kept relative to its entry so the entry can hand it
|
|
281
|
-
// back; a click needs it in transcript rows.
|
|
282
|
-
for (const span of local) {
|
|
283
|
-
spans.push({ key: span.key, start: span.start + start, end: span.end + start, expanded: span.expanded });
|
|
284
333
|
}
|
|
285
334
|
}
|
|
335
|
+
// The entry goes in through the seam rather than straight onto the rows drawn
|
|
336
|
+
// so far: the air it opens with is given up when the row above is already air,
|
|
337
|
+
// so a break between two things stays one break however many asked for one.
|
|
338
|
+
const base = start - placeGap(lines, rows);
|
|
339
|
+
// A span is kept relative to its entry so a cached entry can still hand it
|
|
340
|
+
// back, and the row of air a seam dropped moves it with the rows that stayed.
|
|
341
|
+
for (const span of local) {
|
|
342
|
+
spans.push({ ...span, start: span.start + base, end: span.end + base });
|
|
343
|
+
}
|
|
286
344
|
}
|
|
287
345
|
this.spans = spans;
|
|
288
346
|
this.liveCopy = liveCopy;
|
package/lib/ui/view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/ui/view.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/ui/view.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sagmans/dsh-tui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Terminal (CLI TUI) surface for DeepSeek Harness: interactive dsh in a terminal, no browser required",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
|
@@ -72,6 +72,7 @@
|
|
|
72
72
|
"build": "tsc -p tsconfig.json",
|
|
73
73
|
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json",
|
|
74
74
|
"test": "vitest run",
|
|
75
|
+
"coverage": "vitest run --coverage",
|
|
75
76
|
"test:release": "python3 -m unittest discover -s tests/release -p 'test_*.py'",
|
|
76
77
|
"prepare": "npm run build",
|
|
77
78
|
"prepack": "npm run build",
|
|
@@ -147,6 +148,7 @@
|
|
|
147
148
|
"@deepseek-ai/dsh-user-approval": "0.1.5-rc.3",
|
|
148
149
|
"@deepseek-ai/dsh-user-questions": "0.1.5-rc.3",
|
|
149
150
|
"@types/node": "^24.0.0",
|
|
151
|
+
"@vitest/coverage-v8": "4.1.11",
|
|
150
152
|
"node-pty": "1.1.0",
|
|
151
153
|
"typescript": "^5.9.0",
|
|
152
154
|
"vitest": "^4.1.0"
|
|
@@ -44,6 +44,8 @@ palette:
|
|
|
44
44
|
tokens:
|
|
45
45
|
# A row of the conversation.
|
|
46
46
|
transcript.user: { fg: default, bg: user } # the product marks your own turn with a bubble, not a hue
|
|
47
|
+
# The sent prompt keeps the brand shade without inheriting editor overrides.
|
|
48
|
+
transcript.user.border: { fg: accent }
|
|
47
49
|
# The reply's own frame. A border is a container rather than a fact, so it may
|
|
48
50
|
# not take a signal shade; a warm neutral keeps the answer held without moving
|
|
49
51
|
# it into the amber the surface reserves for state.
|
|
@@ -58,6 +60,7 @@ tokens:
|
|
|
58
60
|
# the loudest thing on the row, so it carries the brand instead.
|
|
59
61
|
tool.title: { fg: accent }
|
|
60
62
|
tool.glyph: { fg: accent } # follows the label it sits beside
|
|
63
|
+
tool.skill: { fg: accent } # follows the label it sits beside
|
|
61
64
|
tool.args: { fg: arg }
|
|
62
65
|
tool.stat.added: { fg: added }
|
|
63
66
|
tool.stat.changed: { fg: warn }
|
package/themes/violet-orbit.yaml
CHANGED
|
@@ -25,21 +25,25 @@ palette:
|
|
|
25
25
|
assistant: '#e8e9ff' # text
|
|
26
26
|
# Pi has no argument colour of its own, and its link blue — the shade that
|
|
27
27
|
# first came over — shares a family with the label pi gives a tool name, so
|
|
28
|
-
# the two halves of one row could not be told apart.
|
|
29
|
-
#
|
|
30
|
-
#
|
|
31
|
-
# one green.
|
|
32
|
-
|
|
28
|
+
# the two halves of one row could not be told apart. Separating them by family
|
|
29
|
+
# costs a hue, and the obvious one is already spent: a sage that differs from
|
|
30
|
+
# the label also differs from nothing on a diff card, where an argument and an
|
|
31
|
+
# added line read as two shades of one green. Separating by value costs no hue
|
|
32
|
+
# at all — the argument sits dark enough to recede under the label it belongs
|
|
33
|
+
# to, and the shades that mean something arrived go on being the only ones.
|
|
34
|
+
arg: '#4B5680' # no pi key: see the note below
|
|
33
35
|
|
|
34
36
|
tokens:
|
|
35
37
|
# A reader's own turn. Pi fills the row, but this surface already frames it,
|
|
36
38
|
# and a band inside that frame treats one fact twice: it reads as a selected
|
|
37
39
|
# row rather than as the reader's own words. The shade carries over alone.
|
|
38
40
|
transcript.user: { fg: user } # userMessageText
|
|
41
|
+
# A submitted prompt keeps its current shade without borrowing the editor setting.
|
|
42
|
+
transcript.user.border: { fg: '#6f76c9' }
|
|
39
43
|
# The reply's own frame. Pi has no box around a reply, so there is no pi key to
|
|
40
44
|
# carry over; the violet family it would otherwise borrow disappears against the
|
|
41
45
|
# answer it holds, and a neutral gold is what keeps the frame a container.
|
|
42
|
-
transcript.assistant.border: { fg: '#
|
|
46
|
+
transcript.assistant.border: { fg: '#a89771' }
|
|
43
47
|
transcript.notice: { fg: muted } # unchanged from the shipped table
|
|
44
48
|
transcript.marker: { fg: muted } # unchanged from the shipped table
|
|
45
49
|
transcript.reasoning.summary: { fg: faint, italic: true } # unchanged from the shipped table
|
|
@@ -49,6 +53,10 @@ tokens:
|
|
|
49
53
|
# which is the single change that moves the card family into the theme.
|
|
50
54
|
tool.title: { fg: '#8197f7' } # toolTitle
|
|
51
55
|
tool.glyph: { fg: '#8197f7' } # toolTitle
|
|
56
|
+
# The skill name rides beside the label on the same row, so it needs a violet
|
|
57
|
+
# the periwinkle label can be read against — neither the label's own hue nor
|
|
58
|
+
# the argument's dark slate, which is chosen for a path rather than a name.
|
|
59
|
+
tool.skill: { fg: '#C9A3D9' }
|
|
52
60
|
tool.args: { fg: arg } # unchanged from the shipped table
|
|
53
61
|
tool.stat.added: { fg: added } # unchanged from the shipped table
|
|
54
62
|
tool.stat.changed: { fg: warn } # unchanged from the shipped table
|
|
@@ -172,9 +180,8 @@ tokens:
|
|
|
172
180
|
# Pi draws its borders a shade above its background, which is what a
|
|
173
181
|
# separator between facts is; the shipped muted grey reads as a fact itself.
|
|
174
182
|
status.separator: { fg: '#343652' } # border
|
|
175
|
-
# The
|
|
176
|
-
|
|
177
|
-
editor.border: { fg: '#8a8aff' } # borderAccent
|
|
183
|
+
# The input bar owns its border even when the sent prompt starts at the same shade.
|
|
184
|
+
editor.border: { fg: '#6f76c9' }
|
|
178
185
|
editor.queued: { fg: faint, italic: true }
|
|
179
186
|
editor.queued.more: { fg: faint }
|
|
180
187
|
editor.ghost: { dim: true } # unchanged from the shipped table
|