@sagmans/dsh-tui 0.12.1 → 0.13.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.
Files changed (58) hide show
  1. package/lib/gates/questions.d.ts.map +1 -1
  2. package/lib/gates/questions.js +9 -6
  3. package/lib/gates/questions.js.map +1 -1
  4. package/lib/input/completion.js +4 -2
  5. package/lib/input/completion.js.map +1 -1
  6. package/lib/input/file-search.d.ts +3 -1
  7. package/lib/input/file-search.d.ts.map +1 -1
  8. package/lib/input/file-search.js +22 -6
  9. package/lib/input/file-search.js.map +1 -1
  10. package/lib/input.d.ts +6 -0
  11. package/lib/input.d.ts.map +1 -1
  12. package/lib/input.js +32 -1
  13. package/lib/input.js.map +1 -1
  14. package/lib/surface/modal-input.d.ts +1 -0
  15. package/lib/surface/modal-input.d.ts.map +1 -1
  16. package/lib/surface/modal-input.js +77 -45
  17. package/lib/surface/modal-input.js.map +1 -1
  18. package/lib/terminal/host-writes.d.ts.map +1 -1
  19. package/lib/terminal/host-writes.js +15 -9
  20. package/lib/terminal/host-writes.js.map +1 -1
  21. package/lib/terminal/warning-screen.d.ts +9 -2
  22. package/lib/terminal/warning-screen.d.ts.map +1 -1
  23. package/lib/terminal/warning-screen.js +148 -22
  24. package/lib/terminal/warning-screen.js.map +1 -1
  25. package/lib/terminal-text.d.ts.map +1 -1
  26. package/lib/terminal-text.js +12 -6
  27. package/lib/terminal-text.js.map +1 -1
  28. package/lib/transcript.d.ts +5 -0
  29. package/lib/transcript.d.ts.map +1 -1
  30. package/lib/transcript.js +30 -13
  31. package/lib/transcript.js.map +1 -1
  32. package/lib/ui/dock.d.ts +8 -0
  33. package/lib/ui/dock.d.ts.map +1 -1
  34. package/lib/ui/dock.js +17 -0
  35. package/lib/ui/dock.js.map +1 -1
  36. package/lib/ui/editor.d.ts +1 -1
  37. package/lib/ui/editor.d.ts.map +1 -1
  38. package/lib/ui/editor.js +15 -7
  39. package/lib/ui/editor.js.map +1 -1
  40. package/lib/ui/layout.d.ts.map +1 -1
  41. package/lib/ui/layout.js +6 -9
  42. package/lib/ui/layout.js.map +1 -1
  43. package/lib/ui/picker.d.ts +1 -0
  44. package/lib/ui/picker.d.ts.map +1 -1
  45. package/lib/ui/picker.js +22 -9
  46. package/lib/ui/picker.js.map +1 -1
  47. package/lib/ui/queue.d.ts.map +1 -1
  48. package/lib/ui/queue.js +11 -1
  49. package/lib/ui/queue.js.map +1 -1
  50. package/lib/ui/view/document.d.ts +30 -0
  51. package/lib/ui/view/document.d.ts.map +1 -0
  52. package/lib/ui/view/document.js +87 -0
  53. package/lib/ui/view/document.js.map +1 -0
  54. package/lib/ui/view.d.ts +45 -76
  55. package/lib/ui/view.d.ts.map +1 -1
  56. package/lib/ui/view.js +69 -146
  57. package/lib/ui/view.js.map +1 -1
  58. package/package.json +2 -1
package/lib/ui/view.js CHANGED
@@ -1,9 +1,9 @@
1
- import { RowCache } from "./rows.js";
1
+ import { TranscriptDocument } from "./view/document.js";
2
2
  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
+ import { gapRows, pushGap } from "./gap.js";
7
7
  import {} from "../theme.js";
8
8
  import {} from "../theme-tokens.js";
9
9
  import { DEFAULT_TOOL_DISPLAY } from "../tool-display.js";
@@ -49,39 +49,13 @@ export class TranscriptView {
49
49
  theme;
50
50
  markdown;
51
51
  options;
52
- rows;
53
- /**
54
- * Fold choices the reader made by clicking, per message.
55
- *
56
- * Absent means the key or the tool's own policy decides, so a settings edit
57
- * stays in charge of messages nobody clicked. Keyed by the call or thought id
58
- * rather than by the entry, because a result replaces the entry a click was
59
- * made on and a thought outlives the live row that streamed it.
60
- */
52
+ document;
61
53
  clicked = new Map();
62
- /** The rows each clickable message drew last render, for mapping a click back to it. */
63
- spans = [];
64
- /** The same spans relative to their entry, so a cached entry still answers clicks. */
65
- entrySpans = new WeakMap();
66
- /**
67
- * The framed rows each entry drew last render, for reading a copy back out.
68
- *
69
- * Relative to the entry for the same reason the spans are: a cached entry draws
70
- * no rows this frame and still has to answer for what it drew before.
71
- */
72
- entryCopy = new WeakMap();
73
- /**
74
- * The framed rows the in-flight entries drew this frame.
75
- *
76
- * They cannot be kept by entry the way the settled ones are: every frame builds
77
- * a live entry as a fresh object, so a map keyed by it would never answer. A copy
78
- * is read against the last frame, so it is the render that keeps them.
79
- */
80
- liveCopy = [];
54
+ presentationRevision = 0;
81
55
  cards;
82
56
  messages;
83
57
  gates;
84
- /** The row renderers, each told only what it draws, so the view stays the one owner of view state and row caches. */
58
+ /** Presentation policy stays here; the document retains rows with their hit and copy metadata. */
85
59
  constructor(model, theme, markdown, options = {}) {
86
60
  this.model = model;
87
61
  this.theme = theme;
@@ -90,7 +64,12 @@ export class TranscriptView {
90
64
  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
65
  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) });
92
66
  this.gates = new GateCards({ theme: this.theme, pushWrapped: (lines, text, width, prefix, token) => this.pushWrapped(lines, text, width, prefix, token) });
93
- this.rows = new RowCache();
67
+ this.document = new TranscriptDocument({
68
+ model,
69
+ entryTag: (entry, base) => this.entryTag(entry, base),
70
+ clocked: entry => this.isLive(entry) || (entry.kind === 'reasoning' && entry.live),
71
+ renderEntry: (entry, lines, width, live, spans, copy) => this.renderEntry(entry, lines, width, live, spans, copy),
72
+ });
94
73
  }
95
74
  get viewState() {
96
75
  return this.options.state?.() ?? DEFAULT_VIEW_STATE;
@@ -104,12 +83,12 @@ export class TranscriptView {
104
83
  return this.options.spacing?.() ?? DEFAULT_SPACING;
105
84
  }
106
85
  /**
107
- * Whether one tool message draws open.
108
- *
109
- * A click outranks the key, which outranks the tool's start state: Ctrl+O
110
- * stays "show me everything", while one clicked message keeps the state the
111
- * reader gave it.
112
- */
86
+ * Whether one tool message draws open.
87
+ *
88
+ * A click outranks the key, which outranks the tool's start state: Ctrl+O
89
+ * stays "show me everything", while one clicked message keeps the state the
90
+ * reader gave it.
91
+ */
113
92
  expansionOf(entry) {
114
93
  const key = toolClickKey(entry.id);
115
94
  const clicked = key === undefined ? undefined : this.clicked.get(key);
@@ -147,19 +126,19 @@ export class TranscriptView {
147
126
  return clicked ?? this.viewState.expandSubCalls;
148
127
  }
149
128
  /**
150
- * Answer a click on a message by folding or unfolding that one row.
151
- *
152
- * The tightest span under the point wins, so a click on a dispatched call
153
- * opens that call rather than the card around it. Only a left click is
154
- * consumed: a press, a drag, and a wheel belong to the surface's own
155
- * selection and scrolling, and a row that swallowed them would cost the
156
- * reader the ability to copy the command it just drew.
157
- */
129
+ * Answer a click on a message by folding or unfolding that one row.
130
+ *
131
+ * The tightest span under the point wins, so a click on a dispatched call
132
+ * opens that call rather than the card around it. Only a left click is
133
+ * consumed: a press, a drag, and a wheel belong to the surface's own
134
+ * selection and scrolling, and a row that swallowed them would cost the
135
+ * reader the ability to copy the command it just drew.
136
+ */
158
137
  handleMouse(event) {
159
138
  if (event.type !== 'click' || event.button !== 'left')
160
139
  return undefined;
161
140
  let span;
162
- for (const candidate of this.spans) {
141
+ for (const candidate of this.document.spans) {
163
142
  if (event.y < candidate.start || event.y >= candidate.end)
164
143
  continue;
165
144
  if (span === undefined || candidate.end - candidate.start < span.end - span.start)
@@ -167,6 +146,7 @@ export class TranscriptView {
167
146
  }
168
147
  if (span === undefined)
169
148
  return undefined;
149
+ this.presentationRevision++;
170
150
  // One click on a program's header opens the one level under it: the calls the
171
151
  // program dispatched, each still the single row it is read at. The program's
172
152
  // own body is the level below that, and it stays folded here because a click
@@ -182,16 +162,16 @@ export class TranscriptView {
182
162
  invalidate() {
183
163
  // The rows are keyed by width and expansion state, so a real change misses
184
164
  // anyway; an explicit invalidate means the caller wants them rebuilt.
185
- this.rows.clear();
165
+ this.document.invalidate();
186
166
  }
187
167
  /**
188
- * Wrap one text block under a prefix, keeping the prefix's column budget.
189
- *
190
- * The block is drawn before it is wrapped: a sequence a terminal would have
191
- * acted on has to be gone before pi-tui measures the row, and a tab has to
192
- * land on the stop the writer saw rather than one a wrapper would guess at.
193
- * The prefix seeds that stop, because it is already on the row.
194
- */
168
+ * Wrap one text block under a prefix, keeping the prefix's column budget.
169
+ *
170
+ * The block is drawn before it is wrapped: a sequence a terminal would have
171
+ * acted on has to be gone before pi-tui measures the row, and a tab has to
172
+ * land on the stop the writer saw rather than one a wrapper would guess at.
173
+ * The prefix seeds that stop, because it is already on the row.
174
+ */
195
175
  pushWrapped(lines, text, width, prefix, token) {
196
176
  const lead = visibleWidth(prefix);
197
177
  const indent = ' '.repeat(lead);
@@ -208,12 +188,12 @@ export class TranscriptView {
208
188
  return hintKeys(this.keymap(), 'surface.reasoning') || REASONING_FOLD_FALLBACK;
209
189
  }
210
190
  /**
211
- * Whether any part of one card is still in flight.
212
- *
213
- * Only a card with work outstanding has a clock attached to its cache, so the
214
- * moment the last call settles the row stops being rebuilt: a program that
215
- * came back must not keep spending the cache its result is now stored in.
216
- */
191
+ * Whether any part of one card is still in flight.
192
+ *
193
+ * Only a card with work outstanding has a clock attached to its cache, so the
194
+ * moment the last call settles the row stops being rebuilt: a program that
195
+ * came back must not keep spending the cache its result is now stored in.
196
+ */
217
197
  isLive(entry) {
218
198
  if (entry.kind !== 'tool')
219
199
  return false;
@@ -271,105 +251,48 @@ export class TranscriptView {
271
251
  return;
272
252
  }
273
253
  }
254
+ /** Entry folds remain local so a click does not spend every settled row's cache. */
255
+ entryTag(entry, base) {
256
+ const open = entry.kind === 'tool' ? this.expansionOf(entry) : entry.kind === 'reasoning' ? this.reasoningOpen(entry) : undefined;
257
+ const shape = entry.kind === 'tool' && this.subCallsOpen(entry) ? 'P' : 'p';
258
+ const marks = entry.kind === 'tool'
259
+ ? `${open === true ? '+' : '-'}${shape}${(entry.card.subCalls ?? []).map(call => (this.subCallOpen(entry.id, call.id) ? '1' : '0')).join('')}`
260
+ : open === true ? '+' : '-';
261
+ const clock = this.isLive(entry) ? `|${Math.floor(this.model.now() / SECOND_MS)}` : '';
262
+ return `${base}|${marks}${clock}`;
263
+ }
274
264
  render(width) {
275
265
  if (width <= 0)
276
266
  return [];
277
267
  const state = this.viewState;
278
- // The revision is part of the key: rows drawn under an older theme table
279
- // must miss, or a settings change would restyle only the rows that happened
280
- // to be redrawn for another reason.
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
268
  const gaps = this.air();
284
- const baseTag = `${width}|${state.expandCards ? 'c' : '-'}${state.expandReasoning ? 'r' : '-'}${state.expandSubCalls ? 'p' : '-'}|${this.theme.revision}|${gaps.messages}${gaps.steps}`;
285
- const lines = [];
286
- const spans = [];
287
- const liveCopy = [];
288
- const settled = this.model.settledCount();
289
- const entries = this.model.entries();
290
- for (const [index, entry] of entries.entries()) {
291
- const start = lines.length;
292
- // Every fold this entry can answer to is part of the tag, so clicking one
293
- // message — or one call inside it — rebuilds that message alone while the
294
- // rows around it stay cached.
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';
301
- const marks = entry.kind === 'tool'
302
- ? `${open === true ? '+' : '-'}${shape}${(entry.card.subCalls ?? []).map(call => (this.subCallOpen(entry.id, call.id) ? '1' : '0')).join('')}`
303
- : open === true ? '+' : '-';
304
- // A running row is drawn from a clock the rest of the row is not, so its
305
- // cache is spent every second: the entries after it stay put, and a card
306
- // waiting out a two-minute run keeps saying so instead of freezing at the
307
- // first second it was drawn.
308
- const tag = `${baseTag}|${marks}${this.isLive(entry) ? `|${Math.floor(this.model.now() / SECOND_MS)}` : ''}`;
309
- const local = [];
310
- const copy = [];
311
- const rows = [];
312
- // The in-flight rows change on every frame, so caching them would only
313
- // fill the cache with objects nobody will ask for again.
314
- if (index >= settled) {
315
- this.renderEntry(entry, rows, width, true, local, copy);
316
- // A row still arriving is drawn every frame, so it is never cached: its
317
- // copy account goes to the frame rather than to an entry nobody can name.
318
- liveCopy.push(...copy);
319
- }
320
- else {
321
- const cached = this.rows.lookup(entry, tag);
322
- const saved = this.entrySpans.get(entry);
323
- const savedCopy = this.entryCopy.get(entry);
324
- if (cached !== undefined && saved !== undefined && savedCopy !== undefined) {
325
- rows.push(...cached);
326
- local.push(...saved);
327
- }
328
- else {
329
- this.renderEntry(entry, rows, width, false, local, copy);
330
- this.rows.store(entry, tag, rows);
331
- this.entrySpans.set(entry, local);
332
- this.entryCopy.set(entry, copy);
333
- }
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
- }
344
- }
345
- this.spans = spans;
346
- this.liveCopy = liveCopy;
269
+ const keys = this.keymap();
270
+ // Width, folds, theme, spacing, and key hints can change without a transcript event.
271
+ const base = `${width}|${state.expandCards ? 'c' : '-'}${state.expandReasoning ? 'r' : '-'}${state.expandSubCalls ? 'p' : '-'}|${this.theme.revision}|${gaps.messages}:${gaps.steps}|${hintKeys(keys, 'surface.toolDetail')}|${hintKeys(keys, 'surface.reasoning')}`;
272
+ const retained = this.document.render(width, base, this.presentationRevision);
347
273
  const picker = this.options.picker?.();
274
+ const gate = this.options.gate?.();
275
+ // pi-tui requires string[] but borrows child rows; the native PTY gate protects this pinned boundary.
276
+ if (picker === undefined && gate === undefined)
277
+ return retained;
278
+ // Overlays have independent mutable state and must never enter the retained conversation.
279
+ const lines = [...retained];
348
280
  if (picker !== undefined)
349
281
  this.pushPicker(lines, picker, width);
350
- const gate = this.options.gate?.();
351
282
  if (gate !== undefined)
352
283
  this.gates.pushGate(lines, gate, width);
353
284
  return lines;
354
285
  }
355
286
  /**
356
- * The framed rows the last render drew, in the order the transcript reads.
357
- *
358
- * A copy of a selection is read off the screen, so it carries the frame the
359
- * surface drew around a message — the sides, the padding beside them, and the
360
- * rules above and below. This is the account that lets the surface take its own
361
- * frame back out of a copy without ever touching a character the reader wrote.
362
- */
287
+ * The framed rows the last render drew, in the order the transcript reads.
288
+ *
289
+ * A copy of a selection is read off the screen, so it carries the frame the
290
+ * surface drew around a message — the sides, the padding beside them, and the
291
+ * rules above and below. This is the account that lets the surface take its own
292
+ * frame back out of a copy without ever touching a character the reader wrote.
293
+ */
363
294
  copyRows() {
364
- const rows = [];
365
- for (const entry of this.model.entries()) {
366
- const saved = this.entryCopy.get(entry);
367
- if (saved !== undefined)
368
- rows.push(...saved);
369
- }
370
- // The rows still arriving are not kept by entry, so they come from the frame.
371
- rows.push(...this.liveCopy);
372
- return rows;
295
+ return this.document.copyRows();
373
296
  }
374
297
  }
375
298
  //# sourceMappingURL=view.js.map
@@ -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.12.1",
3
+ "version": "0.13.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",
@@ -84,6 +84,7 @@
84
84
  "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json",
85
85
  "test": "vitest run",
86
86
  "coverage": "vitest run --coverage",
87
+ "test:terminal": "pnpm run build && node tools/terminal-behavior.mjs",
87
88
  "test:release": "python3 -m unittest discover -s tests/release -p 'test_*.py'",
88
89
  "prepare": "npm run build",
89
90
  "prepack": "npm run build",