@sagmans/dsh-tui 0.1.2 → 0.2.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 (94) hide show
  1. package/README.md +82 -8
  2. package/cordis.patch.yml +4 -2
  3. package/lib/agent/host.d.ts +14 -0
  4. package/lib/agent/host.d.ts.map +1 -1
  5. package/lib/agent/host.js +20 -4
  6. package/lib/agent/host.js.map +1 -1
  7. package/lib/agent/model.d.ts +24 -0
  8. package/lib/agent/model.d.ts.map +1 -1
  9. package/lib/agent/model.js +46 -1
  10. package/lib/agent/model.js.map +1 -1
  11. package/lib/agent/present.d.ts +7 -1
  12. package/lib/agent/present.d.ts.map +1 -1
  13. package/lib/agent/present.js +33 -4
  14. package/lib/agent/present.js.map +1 -1
  15. package/lib/agent/presets.d.ts +7 -1
  16. package/lib/agent/presets.d.ts.map +1 -1
  17. package/lib/agent/presets.js +7 -3
  18. package/lib/agent/presets.js.map +1 -1
  19. package/lib/cards.d.ts +127 -7
  20. package/lib/cards.d.ts.map +1 -1
  21. package/lib/cards.js +380 -52
  22. package/lib/cards.js.map +1 -1
  23. package/lib/export.d.ts +5 -4
  24. package/lib/export.d.ts.map +1 -1
  25. package/lib/export.js +62 -13
  26. package/lib/export.js.map +1 -1
  27. package/lib/fold-cursor.d.ts +23 -0
  28. package/lib/fold-cursor.d.ts.map +1 -0
  29. package/lib/fold-cursor.js +31 -0
  30. package/lib/fold-cursor.js.map +1 -0
  31. package/lib/index.d.ts +7 -1
  32. package/lib/index.d.ts.map +1 -1
  33. package/lib/index.js +310 -32
  34. package/lib/index.js.map +1 -1
  35. package/lib/input/submission.d.ts +3 -1
  36. package/lib/input/submission.d.ts.map +1 -1
  37. package/lib/input/submission.js +5 -2
  38. package/lib/input/submission.js.map +1 -1
  39. package/lib/terminal/warning-screen.d.ts +8 -0
  40. package/lib/terminal/warning-screen.d.ts.map +1 -0
  41. package/lib/terminal/warning-screen.js +66 -0
  42. package/lib/terminal/warning-screen.js.map +1 -0
  43. package/lib/theme-capability.d.ts +36 -0
  44. package/lib/theme-capability.d.ts.map +1 -0
  45. package/lib/theme-capability.js +190 -0
  46. package/lib/theme-capability.js.map +1 -0
  47. package/lib/theme-command.d.ts +10 -0
  48. package/lib/theme-command.d.ts.map +1 -0
  49. package/lib/theme-command.js +61 -0
  50. package/lib/theme-command.js.map +1 -0
  51. package/lib/theme-settings.d.ts +161 -0
  52. package/lib/theme-settings.d.ts.map +1 -0
  53. package/lib/theme-settings.js +166 -0
  54. package/lib/theme-settings.js.map +1 -0
  55. package/lib/theme-tokens.d.ts +110 -0
  56. package/lib/theme-tokens.d.ts.map +1 -0
  57. package/lib/theme-tokens.js +401 -0
  58. package/lib/theme-tokens.js.map +1 -0
  59. package/lib/theme.d.ts +32 -35
  60. package/lib/theme.d.ts.map +1 -1
  61. package/lib/theme.js +112 -63
  62. package/lib/theme.js.map +1 -1
  63. package/lib/tokens.d.ts +15 -0
  64. package/lib/tokens.d.ts.map +1 -0
  65. package/lib/tokens.js +29 -0
  66. package/lib/tokens.js.map +1 -0
  67. package/lib/transcript.d.ts +26 -1
  68. package/lib/transcript.d.ts.map +1 -1
  69. package/lib/transcript.js +153 -25
  70. package/lib/transcript.js.map +1 -1
  71. package/lib/ui/dock.d.ts.map +1 -1
  72. package/lib/ui/dock.js +67 -28
  73. package/lib/ui/dock.js.map +1 -1
  74. package/lib/ui/editor.d.ts +34 -0
  75. package/lib/ui/editor.d.ts.map +1 -0
  76. package/lib/ui/editor.js +98 -0
  77. package/lib/ui/editor.js.map +1 -0
  78. package/lib/ui/markdown.d.ts +8 -0
  79. package/lib/ui/markdown.d.ts.map +1 -1
  80. package/lib/ui/markdown.js +12 -0
  81. package/lib/ui/markdown.js.map +1 -1
  82. package/lib/ui/picker.d.ts +37 -0
  83. package/lib/ui/picker.d.ts.map +1 -1
  84. package/lib/ui/picker.js +53 -0
  85. package/lib/ui/picker.js.map +1 -1
  86. package/lib/ui/status.d.ts +3 -1
  87. package/lib/ui/status.d.ts.map +1 -1
  88. package/lib/ui/status.js +76 -24
  89. package/lib/ui/status.js.map +1 -1
  90. package/lib/ui/view.d.ts +43 -0
  91. package/lib/ui/view.d.ts.map +1 -1
  92. package/lib/ui/view.js +254 -54
  93. package/lib/ui/view.js.map +1 -1
  94. package/package.json +3 -1
package/lib/cards.js CHANGED
@@ -1,5 +1,12 @@
1
- /** Detail rows a settled card shows before it is summarized. */
2
- export const CARD_DETAIL_LIMIT = 10;
1
+ import { countTokens, formatTokens } from "./tokens.js";
2
+ /** A row drawn in a single style. */
3
+ export function cardRow(cls, text) {
4
+ return { parts: [{ class: cls, text }] };
5
+ }
6
+ /** The words of a row with no styling, for callers that only need the text. */
7
+ export function rowText(row) {
8
+ return row.parts.map(part => part.text).join('');
9
+ }
3
10
  /**
4
11
  * Detail rows retained on a card at all.
5
12
  *
@@ -8,13 +15,172 @@ export const CARD_DETAIL_LIMIT = 10;
8
15
  * memory for a reader who will never scroll that far.
9
16
  */
10
17
  export const CARD_DETAIL_MAX = 200;
18
+ /**
19
+ * Output rows a folded shell card keeps on screen, counted from the end.
20
+ *
21
+ * A shell command is the one card whose output is the result the reader asked
22
+ * for, so folding it to its header would hide the answer. The tail is the part
23
+ * that carries the outcome of a long run, and the retention cap still bounds
24
+ * what ctrl+o can reveal.
25
+ */
26
+ export const CARD_SHELL_PREVIEW = 20;
27
+ /**
28
+ * Nested calls retained on one PTC card.
29
+ *
30
+ * A program can dispatch in a loop, and one line each is small but not free;
31
+ * the cap keeps a card bounded while {@link ToolCard.subCallsTotal} still
32
+ * reports everything the program ran.
33
+ */
34
+ export const SUBCALL_MAX = 100;
35
+ /**
36
+ * The tail of the hint a folded shell card draws when it dropped rows.
37
+ *
38
+ * "more" rather than "them": retention caps detail rows, so a command that
39
+ * printed thousands of lines cannot promise ctrl+o will reveal every dropped
40
+ * one.
41
+ */
42
+ const CARD_HINT_EARLIER = 'earlier lines · ctrl+o shows more';
43
+ /**
44
+ * The tail of the hint an opened shell card draws when retention dropped rows.
45
+ *
46
+ * Retention keeps the tail of a run, so the rows it refused are always the
47
+ * beginning; a hint that only counted them would send the reader looking past
48
+ * the end of the output for rows that are not there.
49
+ */
50
+ const CARD_HINT_UNRETAINED_EARLIER = 'earlier lines not shown';
11
51
  /** Character budget for one detail row, so a minified file cannot flood the viewport. */
12
52
  export const CARD_LINE_LIMIT = 200;
13
53
  function clipLine(text) {
14
54
  return text.length <= CARD_LINE_LIMIT ? text : `${text.slice(0, CARD_LINE_LIMIT - 1)}…`;
15
55
  }
16
- function bound(lines) {
17
- return { detail: lines.slice(0, CARD_DETAIL_MAX).map(clipLine), totalLines: lines.length };
56
+ /**
57
+ * The one-line row for one nested call.
58
+ *
59
+ * A tool that declares a call view is drawn exactly as its own header would be;
60
+ * only a tool with no view at all falls back to its registry name and raw call,
61
+ * because the surface cannot name a salient argument for a schema it never saw.
62
+ */
63
+ export function subCallOf(name, argumentsJson, view) {
64
+ if (view !== undefined) {
65
+ return { title: view.title, ...(view.argument === undefined ? {} : { argument: view.argument }), failed: false };
66
+ }
67
+ const raw = argumentsJson === '' ? '' : clipLine(argumentsJson);
68
+ return { title: name, ...(raw === '' ? {} : { argument: raw }), failed: false };
69
+ }
70
+ function clipRow(row) {
71
+ return { parts: row.parts.map(part => ({ class: part.class, text: clipLine(part.text) })) };
72
+ }
73
+ function bound(rows) {
74
+ return { detail: rows.slice(0, CARD_DETAIL_MAX).map(clipRow), totalLines: rows.length };
75
+ }
76
+ /**
77
+ * Bound a card to its retained rows from the END.
78
+ *
79
+ * A command's answer is its last lines, so keeping the head would show a long
80
+ * run's middle and lose the ending the reader asked for; the tail is also what
81
+ * a folded shell card tails again.
82
+ */
83
+ function boundTail(rows) {
84
+ return { detail: rows.slice(-CARD_DETAIL_MAX).map(clipRow), totalLines: rows.length };
85
+ }
86
+ /** A text with the newline that only terminates its last line removed. */
87
+ function withoutTrailingBreaks(text) {
88
+ return text.replace(/\n+$/, '');
89
+ }
90
+ /** How many lines a text holds, ignoring the newline that only terminates the last one. */
91
+ function lineCount(text) {
92
+ const body = withoutTrailingBreaks(text);
93
+ return body === '' ? 0 : body.split('\n').length;
94
+ }
95
+ /**
96
+ * The size of a text a card presents, in lines and in tokens.
97
+ *
98
+ * A reader deciding whether to open a file cares about both: lines say how tall
99
+ * it is, tokens say what it cost to put in the conversation.
100
+ */
101
+ function sizeStats(text) {
102
+ const body = withoutTrailingBreaks(text);
103
+ const lines = lineCount(body);
104
+ const tokens = countTokens(body);
105
+ const stats = [];
106
+ if (lines > 0)
107
+ stats.push({ kind: 'size', text: `${lines} line${lines === 1 ? '' : 's'}` });
108
+ if (tokens > 0)
109
+ stats.push({ kind: 'size', text: `${formatTokens(tokens)} tok` });
110
+ return stats;
111
+ }
112
+ /**
113
+ * A file change's split into added, changed, and removed lines.
114
+ *
115
+ * A replacement is one changed line, not an add plus a remove, so the smaller
116
+ * of the two sides is the changed count and only the excess counts as pure
117
+ * additions or deletions — otherwise every edit reads as twice its size. Each
118
+ * file is netted on its own for the same reason: one file's additions must not
119
+ * cancel another file's deletions, or a change to two files reads as a rewrite
120
+ * of neither.
121
+ */
122
+ function changeStats(diffs) {
123
+ let added = 0;
124
+ let changed = 0;
125
+ let removed = 0;
126
+ for (const diff of diffs) {
127
+ let fileAdded = 0;
128
+ let fileRemoved = 0;
129
+ for (const row of renderFileDiff(diff)) {
130
+ const cls = row.parts[0]?.class;
131
+ if (cls === 'added')
132
+ fileAdded += 1;
133
+ else if (cls === 'removed')
134
+ fileRemoved += 1;
135
+ }
136
+ const fileChanged = Math.min(fileAdded, fileRemoved);
137
+ added += fileAdded - fileChanged;
138
+ changed += fileChanged;
139
+ removed += fileRemoved - fileChanged;
140
+ }
141
+ const stats = [];
142
+ if (added > 0)
143
+ stats.push({ kind: 'added', text: String(added) });
144
+ if (changed > 0)
145
+ stats.push({ kind: 'changed', text: String(changed) });
146
+ if (removed > 0)
147
+ stats.push({ kind: 'removed', text: String(removed) });
148
+ return stats;
149
+ }
150
+ /**
151
+ * The window a read returned: its line range, how many lines, and their token size.
152
+ *
153
+ * An empty window still names the offset it starts at, because the view keeps it
154
+ * for exactly that case, and counts the model-facing content the card falls back
155
+ * to drawing rather than reporting a size of zero.
156
+ */
157
+ function readStats(read) {
158
+ const text = read.lines.length > 0
159
+ ? read.lines.map(line => line.text).join('\n')
160
+ : contentLines(read.content).join('\n');
161
+ const count = read.lines.length > 0 ? read.lines.length : lineCount(text);
162
+ const start = read.offset;
163
+ const stats = [
164
+ { kind: 'size', text: count <= 1 ? `L${start}` : `L${start}–${start + count - 1}` },
165
+ { kind: 'size', text: `${count} line${count === 1 ? '' : 's'}` },
166
+ ];
167
+ const tokens = countTokens(withoutTrailingBreaks(text));
168
+ if (tokens > 0)
169
+ stats.push({ kind: 'size', text: `${formatTokens(tokens)} tok` });
170
+ return stats;
171
+ }
172
+ /**
173
+ * A diff's measured facts: a change with no prior content reports its size,
174
+ * while one that carried prior content reports its line changes.
175
+ *
176
+ * `oldText === null` means the prior content was unavailable at call time — a
177
+ * new file, or a whole-file overwrite — so no diff can be counted and the size
178
+ * is the only honest fact; naming that a *creation* would misread every
179
+ * overwrite as a new file.
180
+ */
181
+ function diffStats(diffs) {
182
+ const withoutPrior = diffs.length > 0 && diffs.every(diff => diff.oldText === null);
183
+ return withoutPrior ? sizeStats(diffs.map(diff => diff.newText).join('\n')) : changeStats(diffs);
18
184
  }
19
185
  /**
20
186
  * The rows a card shows right now, and how many the reader is not seeing.
@@ -22,19 +188,31 @@ function bound(lines) {
22
188
  * Expansion is a view decision rather than a card field so one key press can
23
189
  * change every card at once without rebuilding the transcript.
24
190
  */
25
- export function cardDetailRows(card, expanded) {
26
- const lines = card.detail.slice(0, expanded ? CARD_DETAIL_MAX : CARD_DETAIL_LIMIT);
191
+ export function cardDetailRows(card, preview) {
192
+ const lines = preview.expanded
193
+ ? card.detail.slice(0, CARD_DETAIL_MAX)
194
+ : preview.preview === 'shellTail'
195
+ ? card.detail.slice(-CARD_SHELL_PREVIEW)
196
+ : [];
27
197
  return { lines, hidden: Math.max(0, card.totalLines - lines.length) };
28
198
  }
199
+ /** The hint row for a folded shell card, or undefined when its preview dropped nothing. */
200
+ export function shellFoldHint(hidden) {
201
+ return hidden <= 0 ? undefined : `… ${hidden} ${CARD_HINT_EARLIER}`;
202
+ }
203
+ /** The hint row for an opened shell card whose retention dropped the run's earlier rows. */
204
+ export function shellRetentionHint(hidden) {
205
+ return hidden <= 0 ? undefined : `… ${hidden} ${CARD_HINT_UNRETAINED_EARLIER}`;
206
+ }
29
207
  /**
30
- * Build a card from raw lines.
208
+ * Build a card from raw text lines.
31
209
  *
32
210
  * Every path that turns text into a card goes through here, so a tool with no
33
211
  * presenter — or a result whose presenter declined — cannot keep a hundred
34
212
  * thousand lines alive in the transcript.
35
213
  */
36
214
  export function cardFromLines(kind, title, lines, failed) {
37
- const bounded = bound(lines);
215
+ const bounded = bound(lines.map(line => cardRow('detail', line)));
38
216
  return { kind, title, detail: bounded.detail, failed, totalLines: bounded.totalLines };
39
217
  }
40
218
  /** Text lines carried by model-facing content blocks. */
@@ -55,6 +233,23 @@ export function contentLines(content) {
55
233
  }
56
234
  return lines;
57
235
  }
236
+ /**
237
+ * The header fields a rebuilt card must keep.
238
+ *
239
+ * Replacing a card's rows says nothing about what the call was made with, what
240
+ * it measured, how it ended, or which calls it dispatched, so those fields
241
+ * travel with the rebuild: dropping the argument is how a shell card loses its
242
+ * command the moment a presenter declines the result.
243
+ */
244
+ export function carriedFields(card) {
245
+ return {
246
+ ...(card.argument === undefined ? {} : { argument: card.argument }),
247
+ ...(card.stats === undefined ? {} : { stats: card.stats }),
248
+ ...(card.status === undefined ? {} : { status: card.status }),
249
+ ...(card.subCalls === undefined ? {} : { subCalls: card.subCalls }),
250
+ ...(card.subCallsTotal === undefined ? {} : { subCallsTotal: card.subCallsTotal }),
251
+ };
252
+ }
58
253
  /**
59
254
  * Collapse one call and its result into the single row the reader sees.
60
255
  *
@@ -68,9 +263,25 @@ export function mergeCards(call, result) {
68
263
  throw new Error('mergeCards requires at least one card');
69
264
  if (call === undefined || result === undefined)
70
265
  return base;
266
+ const kind = result.kind === 'generic' ? call.kind : result.kind;
267
+ // The result, when it names one, knows the argument that was actually acted
268
+ // on; a terminal result omits it, so the pending call's command is kept. The
269
+ // result also owns the measured facts, because only it knows the outcome.
270
+ const argument = result.argument ?? call.argument;
271
+ const stats = result.stats ?? call.stats;
272
+ const status = result.status ?? call.status;
273
+ // The nested calls belong to the call, not the outcome: a result never carries
274
+ // them, so the merge has to hand the call's own list through.
275
+ const subCalls = result.subCalls ?? call.subCalls;
276
+ const subCallsTotal = result.subCallsTotal ?? call.subCallsTotal;
71
277
  return {
72
- kind: result.kind === 'generic' ? call.kind : result.kind,
278
+ kind,
73
279
  title: call.title,
280
+ ...(argument === undefined ? {} : { argument }),
281
+ ...(stats === undefined ? {} : { stats }),
282
+ ...(status === undefined ? {} : { status }),
283
+ ...(subCalls === undefined ? {} : { subCalls }),
284
+ ...(subCallsTotal === undefined ? {} : { subCallsTotal }),
74
285
  detail: result.detail.length > 0 ? result.detail : call.detail,
75
286
  failed: result.failed,
76
287
  totalLines: result.detail.length > 0 ? result.totalLines : call.totalLines,
@@ -100,20 +311,46 @@ export function renderFileDiff(diff) {
100
311
  // "new" keys off the absent prior text, not off an empty hunk: an unchanged
101
312
  // file has no removals either and must not read as a creation.
102
313
  const header = diff.oldText === null ? 'new' : `-${removed.length} +${added.length}`;
103
- const lines = [`${diff.path} ${header}`];
314
+ const rows = [cardRow('header', `${diff.path} ${header}`)];
104
315
  if (head > 0)
105
- lines.push(`@@ ${head} unchanged line${head === 1 ? '' : 's'} before`);
316
+ rows.push(cardRow('hunk', `@@ ${head} unchanged line${head === 1 ? '' : 's'} before`));
106
317
  for (const line of removed)
107
- lines.push(`-${line}`);
318
+ rows.push(cardRow('removed', `-${line}`));
108
319
  for (const line of added)
109
- lines.push(`+${line}`);
320
+ rows.push(cardRow('added', `+${line}`));
110
321
  if (tail > 0)
111
- lines.push(`@@ ${tail} unchanged line${tail === 1 ? '' : 's'} after`);
112
- return lines;
322
+ rows.push(cardRow('hunk', `@@ ${tail} unchanged line${tail === 1 ? '' : 's'} after`));
323
+ return rows;
113
324
  }
325
+ /**
326
+ * Verbs a presenter may open its title with that only restate the call.
327
+ *
328
+ * The subject a reader scans for is what follows the verb, so the surface draws
329
+ * the card from there: "skill project-skill" rather than "Load skill
330
+ * project-skill". Only a declared title is normalized — a path or a command is
331
+ * the call's own data, and shortening that would misreport what ran — and the
332
+ * list stays literal because inferring a verb could cut a real title short.
333
+ */
334
+ const REDUNDANT_TITLE_LEADS = ['Load '];
114
335
  function title(view, fallback) {
115
336
  const declared = view.title?.trim() ?? '';
116
- return declared === '' ? fallback : declared;
337
+ const lead = REDUNDANT_TITLE_LEADS.find(prefix => declared.startsWith(prefix));
338
+ const shown = lead === undefined ? declared : declared.slice(lead.length).trim();
339
+ return shown === '' ? fallback : shown;
340
+ }
341
+ /** A read line keeps its number apart from its text, because they read differently. */
342
+ function readLine(number, text) {
343
+ return { parts: [{ class: 'lineNumber', text: `${number}:` }, { class: 'line', text: ` ${text}` }] };
344
+ }
345
+ /** A search hit keeps its location apart from the matching line. */
346
+ function searchHit(path, lineNumber, line) {
347
+ return {
348
+ parts: [
349
+ { class: 'path', text: path },
350
+ { class: 'lineNumber', text: `:${lineNumber}:` },
351
+ { class: 'match', text: ` ${line}` },
352
+ ],
353
+ };
117
354
  }
118
355
  /** Map a tool's pending-call intent to a card, falling back to the raw call name. */
119
356
  export function cardOfCall(view, fallbackName) {
@@ -123,16 +360,38 @@ export function cardOfCall(view, fallbackName) {
123
360
  switch (view.card) {
124
361
  case 'terminal': {
125
362
  const terminal = view;
126
- const lines = terminal.description === undefined || terminal.description === '' ? [] : [terminal.description];
363
+ const rows = [];
364
+ if (terminal.description !== undefined && terminal.description !== '')
365
+ rows.push(cardRow('output', terminal.description));
127
366
  if (terminal.cwd !== undefined && terminal.cwd !== '')
128
- lines.push(`cwd ${terminal.cwd}`);
129
- return { kind: 'terminal', title: title(terminal, fallbackName), detail: bound(lines).detail, failed: false, totalLines: 0 };
367
+ rows.push(cardRow('cwd', `cwd ${terminal.cwd}`));
368
+ // The header names the tool so the command can sit on its own row: a
369
+ // terminal view's own title IS the command, and a fold must not hide it.
370
+ const command = terminal.title?.trim() ?? '';
371
+ return {
372
+ kind: 'terminal',
373
+ title: fallbackName,
374
+ ...(command === '' ? {} : { argument: command }),
375
+ detail: bound(rows).detail,
376
+ failed: false,
377
+ totalLines: 0,
378
+ };
130
379
  }
131
380
  case 'diff': {
132
381
  const diff = view;
133
- const lines = diff.diffs.flatMap(renderFileDiff);
134
- const bounded = bound(lines);
135
- return { kind: 'diff', title: title(diff, fallbackName), detail: bounded.detail, failed: false, totalLines: bounded.totalLines };
382
+ const bounded = bound(diff.diffs.flatMap(renderFileDiff));
383
+ const path = diff.diffs[0]?.path;
384
+ if (path === undefined || path === '') {
385
+ return { kind: 'diff', title: title(diff, fallbackName), detail: bounded.detail, failed: false, totalLines: bounded.totalLines };
386
+ }
387
+ return {
388
+ kind: 'diff',
389
+ title: fallbackName,
390
+ argument: path,
391
+ detail: bounded.detail,
392
+ failed: false,
393
+ totalLines: bounded.totalLines,
394
+ };
136
395
  }
137
396
  default: {
138
397
  const generic = view;
@@ -140,8 +399,21 @@ export function cardOfCall(view, fallbackName) {
140
399
  if (generic.rawInput !== undefined && lines.length === 0) {
141
400
  lines.push(typeof generic.rawInput === 'string' ? generic.rawInput : JSON.stringify(generic.rawInput));
142
401
  }
143
- const bounded = bound(lines);
144
- return { kind: 'generic', title: title(generic, fallbackName), detail: bounded.detail, failed: false, totalLines: bounded.totalLines };
402
+ const bounded = bound(lines.map(line => cardRow('detail', line)));
403
+ // A call that names a file has an argument worth its own colour; one that
404
+ // does not keeps its declared title, which is already the label.
405
+ const location = generic.locations?.[0]?.path;
406
+ if (location === undefined || location === '') {
407
+ return { kind: 'generic', title: title(generic, fallbackName), detail: bounded.detail, failed: false, totalLines: bounded.totalLines };
408
+ }
409
+ return {
410
+ kind: 'generic',
411
+ title: fallbackName,
412
+ argument: location,
413
+ detail: bounded.detail,
414
+ failed: false,
415
+ totalLines: bounded.totalLines,
416
+ };
145
417
  }
146
418
  }
147
419
  }
@@ -149,68 +421,124 @@ export function cardOfCall(view, fallbackName) {
149
421
  export function cardOfResult(view, input) {
150
422
  const failed = input.failed;
151
423
  if (view === undefined) {
152
- const bounded = bound(input.contentLines);
424
+ const bounded = bound(input.contentLines.map(line => cardRow('detail', line)));
153
425
  return { kind: 'generic', title: input.fallbackTitle, detail: bounded.detail, failed, totalLines: bounded.totalLines };
154
426
  }
155
427
  switch (view.card) {
156
428
  case 'terminal': {
157
429
  const terminal = view;
158
- const lines = (terminal.output ?? '').split('\n');
430
+ // A terminating newline is the shell's, not a row: keeping it would spend
431
+ // one slot of the preview window on a blank line the renderer then drops.
432
+ const raw = (terminal.output ?? '').replace(/\n+$/, '');
433
+ const rows = raw === '' ? [] : raw.split('\n').map(line => cardRow('output', line));
159
434
  const status = terminal.signal !== undefined && terminal.signal !== ''
160
435
  ? `signal ${terminal.signal}`
161
436
  : terminal.exitCode === undefined ? undefined : `exit ${terminal.exitCode}`;
162
- if (status !== undefined)
163
- lines.push(status);
164
- const bounded = bound(lines);
165
- return { kind: 'terminal', title: title(terminal, input.fallbackTitle), detail: bounded.detail, failed, totalLines: bounded.totalLines };
437
+ // The output is bounded from its END: a command that printed far more
438
+ // than retention keeps must still show how it finished, and the folded
439
+ // preview tails what is retained again.
440
+ const bounded = boundTail(rows);
441
+ // A terminal result mostly omits the title, because the pending call
442
+ // already carried the command; it is only a fallback for a resumed fold
443
+ // that never saw the call.
444
+ const command = terminal.title?.trim() ?? '';
445
+ return {
446
+ kind: 'terminal',
447
+ title: input.fallbackTitle,
448
+ ...(command === '' ? {} : { argument: command }),
449
+ ...(status === undefined ? {} : { status }),
450
+ detail: bounded.detail,
451
+ failed,
452
+ totalLines: bounded.totalLines,
453
+ };
166
454
  }
167
455
  case 'diff': {
168
456
  const diff = view;
169
457
  const bounded = bound(diff.diffs.flatMap(renderFileDiff));
170
- return { kind: 'diff', title: title(diff, input.fallbackTitle), detail: bounded.detail, failed, totalLines: bounded.totalLines };
458
+ const path = diff.diffs[0]?.path;
459
+ const stats = diffStats(diff.diffs);
460
+ if (path === undefined || path === '') {
461
+ return {
462
+ kind: 'diff',
463
+ title: title(diff, input.fallbackTitle),
464
+ ...(stats.length === 0 ? {} : { stats }),
465
+ detail: bounded.detail,
466
+ failed,
467
+ totalLines: bounded.totalLines,
468
+ };
469
+ }
470
+ return {
471
+ kind: 'diff',
472
+ title: input.fallbackTitle,
473
+ argument: path,
474
+ ...(stats.length === 0 ? {} : { stats }),
475
+ detail: bounded.detail,
476
+ failed,
477
+ totalLines: bounded.totalLines,
478
+ };
171
479
  }
172
480
  case 'search': {
173
481
  const search = view;
174
- const lines = search.shape === 'paths'
175
- ? [...search.paths]
176
- : search.files.flatMap(file => file.matches.map(match => `${file.path}:${match.lineNumber}: ${match.line}`));
482
+ const rows = search.shape === 'paths'
483
+ ? search.paths.map(path => cardRow('path', path))
484
+ : search.files.flatMap(file => file.matches.map(match => searchHit(file.path, match.lineNumber, match.line)));
177
485
  if (search.truncated)
178
- lines.push(`… ${search.total} total`);
179
- const bounded = bound(lines);
486
+ rows.push(cardRow('truncated', `… ${search.total} total`));
487
+ const bounded = bound(rows);
180
488
  return { kind: 'search', title: title(search, input.fallbackTitle), detail: bounded.detail, failed, totalLines: bounded.totalLines };
181
489
  }
182
490
  case 'read': {
183
491
  const read = view;
184
- const lines = read.lines.length > 0
185
- ? read.lines.map(line => `${line.number}: ${line.text}`)
186
- : contentLines(read.content);
187
- lines.unshift(`${read.path} (from line ${read.offset}, ${read.totalLines} total)`);
188
- const bounded = bound(lines);
189
- return { kind: 'read', title: title(read, input.fallbackTitle), detail: bounded.detail, failed, totalLines: bounded.totalLines };
492
+ // The header now carries the path and the size stats, so the detail rows
493
+ // are only the numbered lines themselves.
494
+ const rows = [];
495
+ if (read.lines.length > 0) {
496
+ for (const line of read.lines)
497
+ rows.push(readLine(line.number, line.text));
498
+ }
499
+ else {
500
+ for (const line of contentLines(read.content))
501
+ rows.push(cardRow('line', line));
502
+ }
503
+ const bounded = bound(rows);
504
+ const stats = readStats(read);
505
+ return {
506
+ kind: 'read',
507
+ title: input.fallbackTitle,
508
+ ...(read.path === '' ? {} : { argument: read.path }),
509
+ ...(stats.length === 0 ? {} : { stats }),
510
+ detail: bounded.detail,
511
+ failed,
512
+ totalLines: bounded.totalLines,
513
+ };
190
514
  }
191
515
  case 'web': {
192
516
  const web = view;
193
- const lines = [];
517
+ const rows = [];
194
518
  if (web.kind === 'search') {
195
- if (web.answer !== undefined && web.answer !== '')
196
- lines.push(...web.answer.split('\n'));
197
- for (const source of web.sources)
198
- lines.push(source.title === undefined ? source.url : `${source.title} — ${source.url}`);
519
+ if (web.answer !== undefined && web.answer !== '') {
520
+ for (const line of web.answer.split('\n'))
521
+ rows.push(cardRow('detail', line));
522
+ }
523
+ for (const source of web.sources) {
524
+ rows.push(cardRow('source', source.title === undefined ? source.url : `${source.title} — ${source.url}`));
525
+ }
199
526
  if (web.truncated)
200
- lines.push('… more sources');
527
+ rows.push(cardRow('truncated', '… more sources'));
201
528
  }
202
529
  else {
203
- lines.push(`${web.url} → ${web.statusCode}`);
530
+ rows.push(cardRow('url', `${web.url} → ${web.statusCode}`));
204
531
  if (web.truncated)
205
- lines.push('… body truncated');
532
+ rows.push(cardRow('truncated', '… body truncated'));
206
533
  }
207
- const bounded = bound(lines);
534
+ const bounded = bound(rows);
208
535
  return { kind: 'web', title: title(web, input.fallbackTitle), detail: bounded.detail, failed, totalLines: bounded.totalLines };
209
536
  }
210
537
  default: {
211
538
  const generic = view;
212
539
  const lines = contentLines(generic.content);
213
- const bounded = bound(lines.length > 0 ? lines : input.contentLines);
540
+ const chosen = lines.length > 0 ? lines : input.contentLines;
541
+ const bounded = bound(chosen.map(line => cardRow('detail', line)));
214
542
  return { kind: 'generic', title: title(generic, input.fallbackTitle), detail: bounded.detail, failed, totalLines: bounded.totalLines };
215
543
  }
216
544
  }
package/lib/cards.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cards.js","sourceRoot":"","sources":["../src/cards.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cards.js","sourceRoot":"","sources":["../src/cards.ts"],"names":[],"mappings":"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"}
package/lib/export.d.ts CHANGED
@@ -6,10 +6,11 @@ export declare function defaultExportFile(sessionId: string): string;
6
6
  /**
7
7
  * Render the visible transcript as markdown.
8
8
  *
9
- * The surface's own glyphs are kept so a pasted dump reads like the screen it
10
- * came from, and every fragment is escaped for display for the same reason a
11
- * rendered row is: the file may be opened in a terminal, and it is full of
12
- * model and tool output.
9
+ * The dump outlives the screen it came from, so each row is given the markdown
10
+ * construct that carries its meaning rather than whichever mark the surface
11
+ * happened to draw, and every fragment is escaped for display for the same
12
+ * reason a rendered row is: the file may be opened in a terminal, and it is
13
+ * full of model and tool output.
13
14
  */
14
15
  export declare function transcriptToText(entries: readonly TranscriptEntry[]): string;
15
16
  //# sourceMappingURL=export.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,gBAAgB,CAAA;AAKlD,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAgC5E"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,gBAAgB,CAAA;AAelD,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAmBD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAsD5E"}