@namzu/cli 28.1.0 → 29.0.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 (90) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/dist/integrations/subagents/runtime.d.ts +25 -0
  3. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  4. package/dist/integrations/subagents/runtime.js +40 -4
  5. package/dist/integrations/subagents/runtime.js.map +1 -1
  6. package/dist/tui/AgentExplorer.d.ts +28 -4
  7. package/dist/tui/AgentExplorer.d.ts.map +1 -1
  8. package/dist/tui/AgentExplorer.js +177 -35
  9. package/dist/tui/AgentExplorer.js.map +1 -1
  10. package/dist/tui/App.d.ts.map +1 -1
  11. package/dist/tui/App.js +235 -21
  12. package/dist/tui/App.js.map +1 -1
  13. package/dist/tui/Composer.d.ts.map +1 -1
  14. package/dist/tui/Composer.js +10 -4
  15. package/dist/tui/Composer.js.map +1 -1
  16. package/dist/tui/ComposerFrame.d.ts +10 -1
  17. package/dist/tui/ComposerFrame.d.ts.map +1 -1
  18. package/dist/tui/ComposerFrame.js +27 -4
  19. package/dist/tui/ComposerFrame.js.map +1 -1
  20. package/dist/tui/EffortSlider.d.ts +54 -0
  21. package/dist/tui/EffortSlider.d.ts.map +1 -0
  22. package/dist/tui/EffortSlider.js +131 -0
  23. package/dist/tui/EffortSlider.js.map +1 -0
  24. package/dist/tui/LiveActivity.d.ts +23 -3
  25. package/dist/tui/LiveActivity.d.ts.map +1 -1
  26. package/dist/tui/LiveActivity.js +23 -17
  27. package/dist/tui/LiveActivity.js.map +1 -1
  28. package/dist/tui/Markdown.d.ts +29 -2
  29. package/dist/tui/Markdown.d.ts.map +1 -1
  30. package/dist/tui/Markdown.js +74 -36
  31. package/dist/tui/Markdown.js.map +1 -1
  32. package/dist/tui/StatusBar.js +1 -1
  33. package/dist/tui/StatusBar.js.map +1 -1
  34. package/dist/tui/Transcript.d.ts +24 -1
  35. package/dist/tui/Transcript.d.ts.map +1 -1
  36. package/dist/tui/Transcript.js +35 -8
  37. package/dist/tui/Transcript.js.map +1 -1
  38. package/dist/tui/ViewportBound.d.ts +48 -0
  39. package/dist/tui/ViewportBound.d.ts.map +1 -0
  40. package/dist/tui/ViewportBound.js +55 -0
  41. package/dist/tui/ViewportBound.js.map +1 -0
  42. package/dist/tui/agent-transcript-rows.d.ts +59 -0
  43. package/dist/tui/agent-transcript-rows.d.ts.map +1 -0
  44. package/dist/tui/agent-transcript-rows.js +115 -0
  45. package/dist/tui/agent-transcript-rows.js.map +1 -0
  46. package/dist/tui/agent.d.ts +39 -0
  47. package/dist/tui/agent.d.ts.map +1 -1
  48. package/dist/tui/agent.js +86 -5
  49. package/dist/tui/agent.js.map +1 -1
  50. package/dist/tui/live-window.d.ts +16 -0
  51. package/dist/tui/live-window.d.ts.map +1 -1
  52. package/dist/tui/live-window.js +50 -3
  53. package/dist/tui/live-window.js.map +1 -1
  54. package/dist/tui/markdown-block-cache.d.ts +9 -7
  55. package/dist/tui/markdown-block-cache.d.ts.map +1 -1
  56. package/dist/tui/markdown-block-cache.js +9 -7
  57. package/dist/tui/markdown-block-cache.js.map +1 -1
  58. package/dist/tui/markdown-table.d.ts +55 -0
  59. package/dist/tui/markdown-table.d.ts.map +1 -0
  60. package/dist/tui/markdown-table.js +175 -0
  61. package/dist/tui/markdown-table.js.map +1 -0
  62. package/dist/tui/markdown-wrap.d.ts +53 -0
  63. package/dist/tui/markdown-wrap.d.ts.map +1 -0
  64. package/dist/tui/markdown-wrap.js +189 -0
  65. package/dist/tui/markdown-wrap.js.map +1 -0
  66. package/dist/tui/markdownParser.d.ts +6 -0
  67. package/dist/tui/markdownParser.d.ts.map +1 -1
  68. package/dist/tui/markdownParser.js +49 -10
  69. package/dist/tui/markdownParser.js.map +1 -1
  70. package/dist/tui/slashCommands.d.ts.map +1 -1
  71. package/dist/tui/slashCommands.js +3 -0
  72. package/dist/tui/slashCommands.js.map +1 -1
  73. package/dist/tui/stream-blocks.d.ts.map +1 -1
  74. package/dist/tui/stream-blocks.js +32 -3
  75. package/dist/tui/stream-blocks.js.map +1 -1
  76. package/dist/tui/theme.d.ts +13 -0
  77. package/dist/tui/theme.d.ts.map +1 -1
  78. package/dist/tui/theme.js +16 -0
  79. package/dist/tui/theme.js.map +1 -1
  80. package/dist/tui/types.d.ts +7 -2
  81. package/dist/tui/types.d.ts.map +1 -1
  82. package/dist/tui/units.d.ts +6 -0
  83. package/dist/tui/units.d.ts.map +1 -0
  84. package/dist/tui/units.js +20 -0
  85. package/dist/tui/units.js.map +1 -0
  86. package/dist/tui/web-activity.d.ts +58 -0
  87. package/dist/tui/web-activity.d.ts.map +1 -0
  88. package/dist/tui/web-activity.js +105 -0
  89. package/dist/tui/web-activity.js.map +1 -0
  90. package/package.json +8 -8
@@ -7,10 +7,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  */
8
8
  import { Box, Text, useAnimation, useIsScreenReaderEnabled, useStdout } from 'ink';
9
9
  import { useRef } from 'react';
10
+ import { formatCompactCount, formatElapsed } from './units.js';
10
11
  import { terminalDisplayText } from './terminal-display.js';
11
12
  import { theme } from './theme.js';
12
13
  const MAX_VISIBLE_TOOLS = 3;
13
- export function LiveActivity({ compact = false, activeTools, working, agentCount = 0, interruptible = false, animate = true, thinking = null, }) {
14
+ export function LiveActivity({ compact = false, activeTools, working, agentCount = 0, interruptible = false, animate = true, thinking = null, tokens, }) {
14
15
  const { stdout } = useStdout();
15
16
  const screenReader = useIsScreenReaderEnabled();
16
17
  const motion = animate &&
@@ -39,29 +40,34 @@ export function LiveActivity({ compact = false, activeTools, working, agentCount
39
40
  : theme.text.muted, children: char }, column))) }));
40
41
  const now = Date.now();
41
42
  const elapsed = formatElapsed(now - (startedAtRef.current ?? now));
42
- const visibleTools = activeTools.slice(0, MAX_VISIBLE_TOOLS);
43
- const hiddenTools = activeTools.length - visibleTools.length;
43
+ const spent = tokens !== undefined && tokens > 0 ? ` · ↓ ${formatCompactCount(tokens)} tokens` : '';
44
+ const waiting = waitingLine(activeTools);
45
+ const visibleTools = waiting ? [] : activeTools.slice(0, MAX_VISIBLE_TOOLS);
46
+ const hiddenTools = waiting ? 0 : activeTools.length - visibleTools.length;
47
+ const waitingRow = waiting ? (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.text.secondary, wrap: "truncate-end", children: ["\u273B ", terminalDisplayText(waiting)] }) })) : null;
44
48
  if (compact) {
45
49
  const current = activeTools[0];
46
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [mark, _jsxs(Text, { color: theme.text.muted, children: [' · ', elapsed, activeTools.length > 0
50
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [mark, _jsxs(Text, { color: theme.text.muted, children: [' · ', elapsed, spent, activeTools.length > 0
47
51
  ? ` · ${activeTools.length} tool${activeTools.length === 1 ? '' : 's'}`
48
- : ''] })] }), current ? (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.text.secondary, wrap: "truncate-end", children: [terminalDisplayText(current.label), current.progress ? (_jsxs(Text, { color: theme.text.muted, children: [" \u00B7 ", terminalDisplayText(current.progress)] })) : null] }) })) : thinking !== null ? (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.text.muted, wrap: "truncate-end", children: ["thinking", thinking ? ` · ${terminalDisplayText(thinking)}` : '…'] }) })) : null] }));
52
+ : ''] })] }), waitingRow ? (waitingRow) : current ? (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.text.secondary, wrap: "truncate-end", children: [terminalDisplayText(current.label), current.progress ? (_jsxs(Text, { color: theme.text.muted, children: [" \u00B7 ", terminalDisplayText(current.progress)] })) : null] }) })) : thinking !== null ? (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.text.muted, wrap: "truncate-end", children: ["thinking", thinking ? ` · ${terminalDisplayText(thinking)}` : '…'] }) })) : null] }));
49
53
  }
50
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [mark, _jsxs(Text, { color: theme.text.muted, children: [' (', elapsed, agentCount > 0
54
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { flexShrink: 0, children: mark }), _jsxs(Text, { color: theme.text.muted, wrap: "truncate-end", children: [' (', elapsed, spent, agentCount > 0
51
55
  ? ` · ${agentCount} agent${agentCount === 1 ? '' : 's'} · ctrl+t to view`
52
- : '', interruptible ? ' · esc to interrupt' : '', ")"] })] }), visibleTools.map((t, index) => {
56
+ : '', interruptible ? ' · esc to interrupt' : '', ")"] })] }), waitingRow, visibleTools.map((t, index) => {
53
57
  const percent = t.fraction === undefined ? '' : `${Math.round(t.fraction * 100)}% · `;
54
- return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: 2, flexShrink: 0, children: _jsx(Text, { color: theme.text.muted, children: index === visibleTools.length - 1 && hiddenTools === 0 ? '└' : '├' }) }), _jsxs(Text, { color: theme.text.secondary, wrap: "truncate-end", children: [terminalDisplayText(t.label), _jsxs(Text, { color: theme.text.muted, children: [" \u00B7 ", formatElapsed(now - t.startedAt)] })] })] }), t.progress !== undefined ? (_jsx(Box, { flexDirection: "row", paddingLeft: 2, children: _jsxs(Text, { color: theme.text.muted, wrap: "truncate-end", children: [percent, terminalDisplayText(t.progress)] }) })) : null] }, t.id));
58
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: 2, flexShrink: 0, children: _jsx(Text, { color: theme.text.muted, children: index === visibleTools.length - 1 && hiddenTools === 0 ? '└' : '├' }) }), _jsxs(Text, { color: theme.text.secondary, wrap: "truncate-end", children: [terminalDisplayText(t.label), _jsxs(Text, { color: theme.text.muted, children: [" \u00B7 ", formatElapsed(now - t.startedAt)] })] })] }), t.progress !== undefined ? (_jsx(Box, { flexDirection: "row", paddingLeft: 2, children: _jsxs(Text, { color: theme.text.muted, wrap: "truncate-end", children: [t.web ? '⎿ ' : '', percent, terminalDisplayText(t.progress)] }) })) : null] }, t.id));
55
59
  }), hiddenTools > 0 ? (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.text.muted, children: ["\u2514 +", hiddenTools, " more tools"] }) })) : null, thinking !== null && activeTools.length === 0 ? (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.text.muted, wrap: "truncate-end", children: ["\u2514 thinking", thinking.length > 0 ? ` · ${terminalDisplayText(thinking)}` : '…'] }) })) : null] }));
56
60
  }
57
- /** `420ms` → `0.4s`, `3210ms` → `3.2s`, `12000ms` → `12s`, `83000ms` → `1m23s`. */
58
- export function formatElapsed(ms) {
59
- const s = ms / 1000;
60
- if (s < 10)
61
- return `${s.toFixed(1)}s`;
62
- if (s < 60)
63
- return `${Math.round(s)}s`;
64
- const m = Math.floor(s / 60);
65
- return `${m}m${Math.round(s - m * 60)}s`;
61
+ /**
62
+ * One line for a turn that is only waiting on its delegated agents, or
63
+ * `undefined` when any running call is something else — a wait mixed with
64
+ * real work keeps every row, so the work is never hidden behind the wait.
65
+ */
66
+ export function waitingLine(tools) {
67
+ if (tools.length === 0 || !tools.every((tool) => tool.waitingOn !== undefined))
68
+ return undefined;
69
+ const names = [...new Set(tools.map((tool) => tool.waitingOn))];
70
+ return names.length === 1 ? `Waiting for ${names[0]}` : `Waiting for ${names.length} agents to finish`;
66
71
  }
72
+ export { formatElapsed } from './units.js';
67
73
  //# sourceMappingURL=LiveActivity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LiveActivity.js","sourceRoot":"","sources":["../../src/tui/LiveActivity.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LiveActivity.js","sourceRoot":"","sources":["../../src/tui/LiveActivity.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
1
  /**
2
2
  * Renders parsed markdown blocks into Ink elements — the way assistant
3
3
  * replies are shown (code blocks, inline code, bold/italic, headings,
4
- * lists). Only the constructs a terminal can render faithfully: a
5
- * half-rendered table is harder to read than the source it came from.
4
+ * lists, tables). Only the constructs a terminal can render faithfully.
5
+ *
6
+ * Prose is wrapped here, to the width {@link ContentWidth} says the row has,
7
+ * rather than left to Ink: Ink's wrap starts a row with the space it broke at
8
+ * (see `markdown-wrap.ts`). Tables are laid out to the same width by
9
+ * `markdown-table.ts`: a box when it fits, stacked records when it does not.
6
10
  *
7
11
  * Stylistic choices:
8
12
  * - code blocks: a dim left rule + code-colored lines (no syntax
@@ -11,6 +15,19 @@
11
15
  * - headings: bold; H1/H2 take the accent color for hierarchy.
12
16
  * - bullets: a fixed-width marker gutter so wrapped lines hang-indent.
13
17
  */
18
+ import { type DisplaySpan } from './markdown-wrap.js';
19
+ /**
20
+ * How many terminal cells the text beside a transcript gutter has.
21
+ *
22
+ * Provided by the transcript, which knows its padding and gutter and is the
23
+ * one component that listens for resizes. Every row reads it from here rather
24
+ * than subscribing itself: a listener per row put Node's "possible memory
25
+ * leak" warning on the operator's screen past ten rows. Outside a transcript
26
+ * it is an 80-column terminal less a transcript's margins.
27
+ */
28
+ export declare const ContentWidth: import("react").Context<number>;
29
+ /** The width text drawn here has, from the nearest {@link ContentWidth}. */
30
+ export declare function useContentWidth(): number;
14
31
  export interface MarkdownProps {
15
32
  readonly text: string;
16
33
  readonly color?: string;
@@ -32,4 +49,14 @@ export interface MarkdownProps {
32
49
  * the tail of the document is never stored.
33
50
  */
34
51
  export declare function Markdown({ text, color, hyperlinks }: MarkdownProps): import("react/jsx-runtime").JSX.Element;
52
+ /**
53
+ * Spans wrapped to `width` cells, as text with the row breaks in it: Ink
54
+ * finds every row already fits and leaves it alone. Goes inside a `<Text>`.
55
+ */
56
+ export declare function WrappedSpans({ spans, width, color, hyperlinks, }: {
57
+ readonly spans: readonly DisplaySpan[];
58
+ readonly width: number;
59
+ readonly color: string;
60
+ readonly hyperlinks?: boolean;
61
+ }): import("react/jsx-runtime").JSX.Element;
35
62
  //# sourceMappingURL=Markdown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../src/tui/Markdown.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAA0B,EAAE,UAAkB,EAAE,EAAE,aAAa,2CAiB/F"}
1
+ {"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../src/tui/Markdown.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,OAAO,EAAoB,KAAK,WAAW,EAAiC,MAAM,oBAAoB,CAAA;AAMtG;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,iCAA4B,CAAA;AAErD,4EAA4E;AAC5E,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAID,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAA0B,EAAE,UAAkB,EAAE,EAAE,aAAa,2CAmB/F;AA0JD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC5B,KAAK,EACL,KAAK,EACL,KAAK,EACL,UAAkB,GAClB,EAAE;IACF,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAA;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAC7B,2CAqBA"}
@@ -2,8 +2,12 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  /**
3
3
  * Renders parsed markdown blocks into Ink elements — the way assistant
4
4
  * replies are shown (code blocks, inline code, bold/italic, headings,
5
- * lists). Only the constructs a terminal can render faithfully: a
6
- * half-rendered table is harder to read than the source it came from.
5
+ * lists, tables). Only the constructs a terminal can render faithfully.
6
+ *
7
+ * Prose is wrapped here, to the width {@link ContentWidth} says the row has,
8
+ * rather than left to Ink: Ink's wrap starts a row with the space it broke at
9
+ * (see `markdown-wrap.ts`). Tables are laid out to the same width by
10
+ * `markdown-table.ts`: a box when it fits, stacked records when it does not.
7
11
  *
8
12
  * Stylistic choices:
9
13
  * - code blocks: a dim left rule + code-colored lines (no syntax
@@ -13,12 +17,27 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
13
17
  * - bullets: a fixed-width marker gutter so wrapped lines hang-indent.
14
18
  */
15
19
  import { Box, Text } from 'ink';
16
- import { memo, useRef } from 'react';
20
+ import { Fragment, createContext, memo, useContext, useRef } from 'react';
17
21
  import { createBlockCache } from './markdown-block-cache.js';
18
- import { parseInline } from './markdownParser.js';
22
+ import { layoutTable } from './markdown-table.js';
23
+ import { inlineDisplaySpans, wrapSpans } from './markdown-wrap.js';
19
24
  import { terminalDisplayText } from './terminal-display.js';
20
25
  import { terminalWebHyperlink } from './terminal-hyperlinks.js';
21
26
  import { theme } from './theme.js';
27
+ /**
28
+ * How many terminal cells the text beside a transcript gutter has.
29
+ *
30
+ * Provided by the transcript, which knows its padding and gutter and is the
31
+ * one component that listens for resizes. Every row reads it from here rather
32
+ * than subscribing itself: a listener per row put Node's "possible memory
33
+ * leak" warning on the operator's screen past ten rows. Outside a transcript
34
+ * it is an 80-column terminal less a transcript's margins.
35
+ */
36
+ export const ContentWidth = createContext(76);
37
+ /** The width text drawn here has, from the nearest {@link ContentWidth}. */
38
+ export function useContentWidth() {
39
+ return Math.max(10, useContext(ContentWidth));
40
+ }
22
41
  const CODE_COLOR = theme.status.ok;
23
42
  /**
24
43
  * A message's markdown, parsed incrementally.
@@ -38,7 +57,8 @@ export function Markdown({ text, color = theme.text.primary, hyperlinks = false
38
57
  const cache = useRef(undefined);
39
58
  cache.current ??= createBlockCache();
40
59
  const blocks = cache.current.parse(terminalDisplayText(text));
41
- return (_jsx(Box, { flexDirection: "column", children: blocks.map((block, i) => (_jsx(BlockView, { block: block, prev: blocks[i - 1], color: color, hyperlinks: hyperlinks }, `b-${i}`))) }));
60
+ const width = useContentWidth();
61
+ return (_jsx(Box, { flexDirection: "column", children: blocks.map((block, i) => (_jsx(BlockView, { block: block, prev: blocks[i - 1], color: color, hyperlinks: hyperlinks, width: width }, `b-${i}`))) }));
42
62
  }
43
63
  /**
44
64
  * One block.
@@ -49,51 +69,69 @@ export function Markdown({ text, color = theme.text.primary, hyperlinks = false
49
69
  * then throw the saving away — `parseInline` runs here, per span, on every
50
70
  * render, and it is the more expensive half.
51
71
  */
52
- const BlockView = memo(function BlockView({ block, prev, color, hyperlinks, }) {
72
+ const BlockView = memo(function BlockView({ block, prev, color, hyperlinks, width, }) {
53
73
  // One blank line between blocks, except: nothing before the first block,
54
74
  // and consecutive list items stay tight (no gap between bullets).
55
75
  const gap = !prev || (block.type === 'bullet' && prev.type === 'bullet') ? 0 : 1;
56
76
  switch (block.type) {
57
77
  case 'heading':
58
- return (_jsx(Box, { marginTop: gap, children: _jsx(Text, { bold: true, color: block.level <= 2 ? theme.accent.user : color, children: _jsx(Inline, { spans: parseInline(block.text), color: color, hyperlinks: hyperlinks }) }) }));
78
+ return (_jsx(Box, { marginTop: gap, children: _jsx(Text, { bold: true, color: block.level <= 2 ? theme.accent.user : color, children: _jsx(WrappedInline, { source: block.text, width: width, color: color, hyperlinks: hyperlinks }) }) }));
59
79
  case 'bullet': {
60
80
  const marker = block.ordered ? `${block.marker}.` : block.marker;
61
- return (_jsxs(Box, { marginTop: gap, flexDirection: "row", children: [_jsx(Box, { width: marker.length + 1, flexShrink: 0, children: _jsxs(Text, { color: theme.text.muted, children: [marker, " "] }) }), _jsx(Box, { flexGrow: 1, children: _jsx(Text, { color: color, wrap: "wrap", children: _jsx(Inline, { spans: parseInline(block.text), color: color, hyperlinks: hyperlinks }) }) })] }));
81
+ return (_jsxs(Box, { marginTop: gap, flexDirection: "row", children: [_jsx(Box, { width: marker.length + 1, flexShrink: 0, children: _jsxs(Text, { color: theme.text.muted, children: [marker, " "] }) }), _jsx(Box, { flexGrow: 1, children: _jsx(Text, { color: color, wrap: "wrap", children: _jsx(WrappedInline, { source: block.text, width: width - marker.length - 1, color: color, hyperlinks: hyperlinks }) }) })] }));
62
82
  }
63
83
  case 'table':
64
- return (_jsx(Box, { marginTop: gap, children: _jsx(TableView, { headers: block.headers, rows: block.rows, color: color }) }));
84
+ return (_jsx(Box, { marginTop: gap, children: _jsx(TableView, { table: block, width: width, color: color, hyperlinks: hyperlinks }) }));
65
85
  case 'code':
66
86
  return (_jsxs(Box, { marginTop: gap, flexDirection: "column", borderStyle: "round", borderTop: false, borderRight: false, borderBottom: false, borderLeft: true, borderColor: theme.border.default, paddingLeft: 1, children: [block.lang ? _jsx(Text, { color: theme.text.muted, children: block.lang }) : null, (block.lines.length > 0 ? block.lines : ['']).map((line, i) => (_jsx(Text, { color: CODE_COLOR, children: line.length > 0 ? line : ' ' }, `c-${i}`)))] }));
67
87
  default:
68
- return (_jsx(Box, { marginTop: gap, children: _jsx(Text, { color: color, wrap: "wrap", children: _jsx(Inline, { spans: parseInline(block.text), color: color, hyperlinks: hyperlinks }) }) }));
88
+ return (_jsx(Box, { marginTop: gap, children: _jsx(Text, { color: color, wrap: "wrap", children: _jsx(WrappedInline, { source: block.text, width: width, color: color, hyperlinks: hyperlinks }) }) }));
69
89
  }
70
90
  });
71
- const TABLE_MAX_COL = 32;
72
- /** Render a markdown table as an aligned grid (header bold + dim rule). */
73
- function TableView({ headers, rows, color, }) {
74
- const cols = headers.length;
75
- const widths = [];
76
- for (let c = 0; c < cols; c++) {
77
- let w = (headers[c] ?? '').length;
78
- for (const row of rows)
79
- w = Math.max(w, (row[c] ?? '').length);
80
- widths[c] = Math.min(Math.max(w, 1), TABLE_MAX_COL);
81
- }
82
- const pad = (s, w) => (s.length >= w ? s.slice(0, w) : s + ' '.repeat(w - s.length));
83
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { children: headers.map((h, c) => (_jsxs(Text, { bold: true, color: color, children: [pad(h, widths[c] ?? 1), c < cols - 1 ? ' ' : ''] }, `h-${c}`))) }), _jsx(Text, { color: theme.border.default, children: widths.map((w) => '─'.repeat(w)).join(' ') }), rows.map((row, r) => (_jsx(Box, { children: widths.map((w, c) => (_jsxs(Text, { color: color, children: [pad(row[c] ?? '', w), c < cols - 1 ? ' ' : ''] }, `c-${c}`))) }, `r-${r}`)))] }));
91
+ /**
92
+ * A markdown table: a box when it fits the width, stacked `Header: value`
93
+ * records when it does not. The layout is `markdown-table.ts`; this draws it,
94
+ * one Ink row per line, so nothing here is wrapped a second time.
95
+ */
96
+ function TableView({ table, width, color, hyperlinks, }) {
97
+ const layout = layoutTable(table, width, { hyperlinks });
98
+ return (_jsx(Box, { flexDirection: "column", children: layout.lines.map((line, i) => (
99
+ // biome-ignore lint/suspicious/noArrayIndexKey: a table's lines have no identity beyond their position.
100
+ _jsx(Text, { color: color, wrap: "truncate-end", children: line.map((span, j) => (_jsx(SpanView
101
+ // biome-ignore lint/suspicious/noArrayIndexKey: spans are positional.
102
+ , { span: span, color: color, hyperlinks: hyperlinks }, `s-${j}`))) }, `t-${i}`))) }));
103
+ }
104
+ /** Inline markdown wrapped to `width` cells. See {@link WrappedSpans}. */
105
+ function WrappedInline({ source, width, color, hyperlinks, }) {
106
+ return (_jsx(WrappedSpans, { spans: inlineDisplaySpans(source, hyperlinks), width: width, color: color, hyperlinks: hyperlinks }));
84
107
  }
85
- function Inline({ spans, color, hyperlinks, }) {
86
- return (_jsx(_Fragment, { children: spans.map((span, i) => {
87
- if (span.code) {
88
- return (_jsx(Text, { color: CODE_COLOR, children: span.text }, `s-${i}`));
89
- }
90
- if (span.link) {
91
- const linkedLabel = hyperlinks ? terminalWebHyperlink(span.text, span.link) : null;
92
- // Link text in accent + underline; the URL trails dim unless it's
93
- // identical to the text or the terminal owns an admitted click target.
94
- return (_jsxs(Text, { children: [_jsx(Text, { color: theme.accent.user, underline: true, children: linkedLabel ?? span.text }), !linkedLabel && span.link !== span.text ? (_jsxs(Text, { color: theme.text.muted, children: [" (", span.link, ")"] })) : null] }, `s-${i}`));
95
- }
96
- return (_jsx(Text, { color: color, bold: span.bold, italic: span.italic, children: span.text }, `s-${i}`));
97
- }) }));
108
+ /**
109
+ * Spans wrapped to `width` cells, as text with the row breaks in it: Ink
110
+ * finds every row already fits and leaves it alone. Goes inside a `<Text>`.
111
+ */
112
+ export function WrappedSpans({ spans, width, color, hyperlinks = false, }) {
113
+ const lines = wrapSpans(spans, width);
114
+ return (_jsx(_Fragment, { children: lines.map((line, i) => (
115
+ // biome-ignore lint/suspicious/noArrayIndexKey: rows are positional.
116
+ _jsxs(Fragment, { children: [line.map((span, j) => (_jsx(SpanView
117
+ // biome-ignore lint/suspicious/noArrayIndexKey: spans are positional.
118
+ , { span: span, color: color, hyperlinks: hyperlinks }, `s-${j}`))), i < lines.length - 1 ? '\n' : null] }, `l-${i}`))) }));
119
+ }
120
+ /** One drawn span: code, a link, dim text, a rule, or styled prose. */
121
+ function SpanView({ span, color, hyperlinks, }) {
122
+ if (span.border)
123
+ return _jsx(Text, { color: theme.border.default, children: span.text });
124
+ if (span.muted)
125
+ return _jsx(Text, { color: theme.text.muted, children: span.text });
126
+ if (span.code) {
127
+ return (_jsx(Text, { color: CODE_COLOR, bold: span.bold, italic: span.italic, children: span.text }));
128
+ }
129
+ if (span.link) {
130
+ // A wrapped label is drawn a row at a time, each piece its own link to
131
+ // the same address: one OSC 8 sequence cannot span a row break.
132
+ const linked = hyperlinks ? terminalWebHyperlink(span.text, span.link) : null;
133
+ return (_jsx(Text, { color: theme.accent.user, underline: true, bold: span.bold, children: linked ?? span.text }));
134
+ }
135
+ return (_jsx(Text, { color: color, bold: span.bold, italic: span.italic, children: span.text }));
98
136
  }
99
137
  //# sourceMappingURL=Markdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../src/tui/Markdown.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../src/tui/Markdown.tsx"],"names":[],"mappings":"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"}
@@ -48,7 +48,7 @@ export function StatusBar({ cwd, provider, model, effort, orchestrate, goal, sta
48
48
  modeLabel: activeMode ? `${activeMode.icon} ${activeMode.label}` : QUIET_MODE_HINT,
49
49
  cycleSuffix: activeMode && canCycleMode ? CYCLE_SUFFIX : null,
50
50
  });
51
- return (_jsxs(Text, { wrap: "truncate-end", children: [layout.mode ? (_jsx(Text, { color: activeMode ? activeMode.color : theme.text.muted, children: layout.mode })) : null, layout.cycleSuffix ? _jsx(Text, { color: theme.text.muted, children: layout.cycleSuffix }) : null, layout.effort ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: theme.text.muted, children: " \u00B7 " }), _jsx(Text, { color: theme.text.secondary, children: layout.effort })] })) : null, layout.orchestrate ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: theme.text.muted, children: " \u00B7 " }), _jsx(Text, { color: theme.text.secondary, children: layout.orchestrate })] })) : null, layout.cwd ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: theme.text.muted, children: " \u00B7 " }), _jsx(Text, { color: theme.text.secondary, children: layout.cwd })] })) : null, _jsx(Text, { children: layout.gap }), layout.right.kind === 'text' ? (_jsx(Text, { color: layout.right.isGoal ? theme.accent.system : colorForState(state), children: layout.right.text })) : layout.right.model ? (_jsx(Text, { color: theme.text.primary, bold: true, children: layout.right.model })) : null] }));
51
+ return (_jsxs(Text, { wrap: "truncate-end", children: [layout.mode ? (_jsx(Text, { color: activeMode ? activeMode.color : theme.text.muted, children: layout.mode })) : null, layout.cycleSuffix ? _jsx(Text, { color: theme.text.muted, children: layout.cycleSuffix }) : null, layout.effort ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: theme.text.muted, children: " \u00B7 " }), _jsx(Text, { color: theme.text.secondary, children: layout.effort })] })) : null, layout.orchestrate ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: theme.text.muted, children: " \u00B7 " }), _jsx(Text, { color: theme.accent.orchestrate, children: layout.orchestrate })] })) : null, layout.cwd ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: theme.text.muted, children: " \u00B7 " }), _jsx(Text, { color: theme.text.secondary, children: layout.cwd })] })) : null, _jsx(Text, { children: layout.gap }), layout.right.kind === 'text' ? (_jsx(Text, { color: layout.right.isGoal ? theme.accent.system : colorForState(state), children: layout.right.text })) : layout.right.model ? (_jsx(Text, { color: theme.text.primary, bold: true, children: layout.right.model })) : null] }));
52
52
  }
53
53
  function colorForState(state) {
54
54
  switch (state) {
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../src/tui/StatusBar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../src/tui/StatusBar.tsx"],"names":[],"mappings":"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"}
@@ -12,6 +12,18 @@ export interface TranscriptProps {
12
12
  readonly messages: readonly TranscriptMessage[];
13
13
  /** The in-progress streaming message, re-rendered live below the static log. */
14
14
  readonly pending: TranscriptMessage | null;
15
+ /**
16
+ * How many of `messages` came before `pending` in the conversation.
17
+ *
18
+ * A row written while a reply streams — a delegated agent's launch receipt
19
+ * or completion, a notice — belongs after that reply. Drawing the reply
20
+ * after every finalized row instead put such a row above the text that
21
+ * came before it, and the two swapped when the reply finished. The reply is
22
+ * drawn at this position, so no row moves once it is on screen. The caller
23
+ * keeps every row from here on out of `<Static>` (`settledBeforeStreaming`),
24
+ * which is what makes the position reachable. Omitted, the reply is last.
25
+ */
26
+ readonly pendingAt?: number;
15
27
  readonly state: 'idle' | 'thinking' | 'tool' | 'awaiting-permission';
16
28
  /**
17
29
  * How many of `messages` have been handed to scrollback.
@@ -50,8 +62,19 @@ export interface TranscriptProps {
50
62
  * the transcript grows. As the first static row it pins to the top.
51
63
  */
52
64
  readonly header?: ReactNode;
65
+ /**
66
+ * Columns of padding the caller's own box puts left of this transcript.
67
+ *
68
+ * Ink lays `<Static>` out as an absolutely positioned node as wide as
69
+ * the terminal and prints it from that node, so an ancestor's padding
70
+ * never reaches it: a row drawn live at column 1 moved to column 0 the
71
+ * moment it settled, and wrapped two columns wider than it had live. The
72
+ * settled rows are drawn with this padding on both sides themselves,
73
+ * which puts them in the column, and at the width, they had live.
74
+ */
75
+ readonly staticIndent?: number;
53
76
  }
54
- export declare function Transcript({ messages, pending, settled, resetKey, raw, hyperlinks, showLive, header, }: TranscriptProps): import("react/jsx-runtime").JSX.Element;
77
+ export declare function Transcript({ messages, pending, pendingAt, settled, resetKey, raw, hyperlinks, showLive, header, staticIndent, }: TranscriptProps): import("react/jsx-runtime").JSX.Element;
55
78
  /** Whether the preview hides text and App should mark the body as expandable. */
56
79
  export declare function willCollapse(detail: readonly string[] | undefined): boolean;
57
80
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Transcript.d.ts","sourceRoot":"","sources":["../../src/tui/Transcript.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAQtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,WAAW,eAAe;IAC/B,wCAAwC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC/C,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,qBAAqB,CAAA;IACpE;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,0FAA0F;IAC1F,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAC3B;AAaD,wBAAgB,UAAU,CAAC,EAC1B,QAAQ,EACR,OAAO,EACP,OAAO,EACP,QAAQ,EACR,GAAW,EACX,UAAkB,EAClB,QAAe,EACf,MAAM,GACN,EAAE,eAAe,2CAiEjB;AAwKD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,OAAO,CAM3E;AA6BD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,MAAM,EAAE,CAIjF"}
1
+ {"version":3,"file":"Transcript.d.ts","sourceRoot":"","sources":["../../src/tui/Transcript.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAQtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,WAAW,eAAe;IAC/B,wCAAwC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC/C,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC1C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,qBAAqB,CAAA;IACpE;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,0FAA0F;IAC1F,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B;;;;;;;;;OASG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC9B;AAaD,wBAAgB,UAAU,CAAC,EAC1B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAW,EACX,UAAkB,EAClB,QAAe,EACf,MAAM,EACN,YAAgB,GAChB,EAAE,eAAe,2CA8DjB;AA8LD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,OAAO,CAM3E;AA6BD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,MAAM,EAAE,CAIjF"}
@@ -6,16 +6,16 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
6
  * color alone (no separate label line). Role marks stay still while output
7
7
  * streams; the Working row owns the active turn's animation.
8
8
  */
9
- import { Box, Static, Text } from 'ink';
9
+ import { Box, Static, Text, useWindowSize } from 'ink';
10
10
  import { memo } from 'react';
11
11
  import { Checklist, checklistLine } from './Checklist.js';
12
- import { Markdown } from './Markdown.js';
12
+ import { ContentWidth, Markdown, WrappedSpans, useContentWidth } from './Markdown.js';
13
13
  import { StatusPanel } from './StatusPanel.js';
14
14
  import { terminalDisplayText } from './terminal-display.js';
15
15
  import { theme } from './theme.js';
16
16
  const COLLAPSE_LINES = 6;
17
17
  const PREVIEW_LINE_CHARS = 240;
18
- export function Transcript({ messages, pending, settled, resetKey, raw = false, hyperlinks = false, showLive = true, header, }) {
18
+ export function Transcript({ messages, pending, pendingAt, settled, resetKey, raw = false, hyperlinks = false, showLive = true, header, staticIndent = 0, }) {
19
19
  const inScrollback = Math.min(Math.max(settled, 0), messages.length);
20
20
  // The banner is row 0 so it prints to the very top of scrollback; messages
21
21
  // follow it. <Static> renders each row exactly once and never re-renders it,
@@ -33,9 +33,22 @@ export function Transcript({ messages, pending, settled, resetKey, raw = false,
33
33
  // The live window is memoised per row so streamed output does not reparse
34
34
  // Markdown in unchanged history. The row that changed is the one that renders.
35
35
  const live = messages.slice(inScrollback);
36
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Static, { items: rows, children: (row) => row.kind === 'header' ? (_jsx(Box, { children: header }, "header")) : raw ? (_jsx(RawMessageRow, { message: row.message, prev: row.prev }, row.message.id)) : (_jsx(MessageRow, { message: row.message, prev: row.prev, hyperlinks: hyperlinks }, row.message.id)) }, resetKey), showLive
37
- ? live.map((message, i) => raw ? (_jsx(RawMessageRow, { message: message, prev: messages[inScrollback + i - 1] }, message.id)) : (_jsx(LiveRow, { message: message, prev: messages[inScrollback + i - 1], hyperlinks: hyperlinks }, message.id)))
38
- : null, showLive && pending && raw ? (_jsx(RawMessageRow, { message: pending, prev: messages[messages.length - 1] })) : showLive && pending ? (_jsx(MessageRow, { message: pending, prev: messages[messages.length - 1], hyperlinks: hyperlinks })) : null] }));
36
+ // The streaming reply is drawn where it stands in the conversation (see
37
+ // `pendingAt`), not after every finalized row. It is never behind the
38
+ // floor, because the caller holds the floor below it.
39
+ const at = Math.min(Math.max((pendingAt ?? messages.length) - inScrollback, 0), live.length);
40
+ const drawn = pending
41
+ ? [...live.slice(0, at), pending, ...live.slice(at)]
42
+ : live;
43
+ // The text beside the two-column glyph gutter: the terminal less the
44
+ // caller's padding on both sides, which settled rows draw themselves.
45
+ const { columns } = useWindowSize();
46
+ return (_jsx(ContentWidth.Provider, { value: Math.max(10, columns - 2 * staticIndent - 2), children: _jsxs(Box, { flexDirection: "column", children: [_jsx(Static, { items: rows, children: (row) => (_jsx(Box, { flexDirection: "column", paddingLeft: staticIndent, paddingRight: staticIndent, children: row.kind === 'header' ? (_jsx(Box, { children: header })) : raw ? (_jsx(RawMessageRow, { message: row.message, prev: row.prev })) : (_jsx(MessageRow, { message: row.message, prev: row.prev, hyperlinks: hyperlinks })) }, row.kind === 'header' ? 'header' : row.message.id)) }, resetKey), showLive
47
+ ? drawn.map((message, i) => {
48
+ const prev = i > 0 ? drawn[i - 1] : messages[inScrollback - 1];
49
+ return raw ? (_jsx(RawMessageRow, { message: message, prev: prev }, message.id)) : (_jsx(LiveRow, { message: message, prev: prev, hyperlinks: hyperlinks }, message.id));
50
+ })
51
+ : null] }) }));
39
52
  }
40
53
  /**
41
54
  * A row in the live window.
@@ -83,6 +96,7 @@ function MessageRow({ message, prev, hyperlinks, }) {
83
96
  // Assistant content is projected inside <Markdown>, its actual renderer.
84
97
  // The other roles flow straight into Ink here and need the projection now.
85
98
  const content = message.role === 'assistant' ? message.content : terminalDisplayText(message.content);
99
+ const width = useContentWidth();
86
100
  const glyph = message.glyph ?? glyphForRole(message.role);
87
101
  // The `⎿` tool-result gutter is rendered dim so the call line leads.
88
102
  const glyphColor = message.glyphColor ?? (glyph === '⎿' ? theme.text.muted : glyphColorForRole(message.role));
@@ -91,8 +105,21 @@ function MessageRow({ message, prev, hyperlinks, }) {
91
105
  // belonging to the call that produced it rather than as free-standing.
92
106
  const exploration = message.activity === 'exploration';
93
107
  const startsExploration = exploration && prev?.activity !== 'exploration';
94
- const gap = !prev || message.glyph === '⎿' || (exploration && !startsExploration) ? 0 : 1;
95
- return (_jsxs(Box, { flexDirection: "column", marginTop: gap, children: [startsExploration ? _jsx(Text, { bold: true, color: theme.text.secondary, children: "Explored" }) : null, _jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: 2, flexShrink: 0, children: _jsx(Text, { color: glyphColor, bold: true, children: glyph }) }), _jsx(Box, { flexGrow: 1, children: message.role === 'assistant' && content.length > 0 ? (_jsx(Markdown, { text: message.content, color: contentColorForRole(message.role), hyperlinks: hyperlinks })) : (_jsxs(Text, { color: contentColorForRole(message.role), wrap: "wrap", children: [content, message.meta ? (_jsxs(Text, { color: theme.text.muted, children: [" \u00B7 ", terminalDisplayText(message.meta)] })) : null, message.pending && content.length === 0 ? (_jsx(Text, { color: theme.text.muted, children: "\u2026" })) : null] })) })] }), message.checklist && message.checklist.length > 0 ? (_jsx(Box, { paddingLeft: 2, children: _jsx(Checklist, { items: message.checklist }) })) : null, message.detail && message.detail.length > 0 && (!message.activity || message.detailExpanded) ? (_jsx(DetailBlock, { lines: message.detail, expanded: message.detailExpanded === true, detailRef: message.detailRef })) : null] }));
108
+ // Consecutive web searches and fetches read as one burst of work, the way
109
+ // consecutive exploration steps do: no blank line between one call's `⎿`
110
+ // line and the next call.
111
+ const web = message.activity === 'web';
112
+ const continuesWeb = web && prev?.activity === 'web';
113
+ const gap = !prev || message.glyph === '⎿' || (exploration && !startsExploration) || continuesWeb ? 0 : 1;
114
+ return (_jsxs(Box, { flexDirection: "column", marginTop: gap, children: [startsExploration ? _jsx(Text, { bold: true, color: theme.text.secondary, children: "Explored" }) : null, _jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: 2, flexShrink: 0, children: _jsx(Text, { color: glyphColor, bold: true, children: glyph }) }), _jsx(Box, { flexGrow: 1, children: message.role === 'assistant' && content.length > 0 ? (_jsx(Markdown, { text: message.content, color: contentColorForRole(message.role), hyperlinks: hyperlinks })) : !web && content.length > 0 ? (
115
+ // Every other row wraps the way a reply does, each row in the
116
+ // same column (see `markdown-wrap.ts`); a web row is cut instead.
117
+ _jsx(Text, { color: contentColorForRole(message.role), wrap: "wrap", children: _jsx(WrappedSpans, { spans: [
118
+ { text: content },
119
+ ...(message.meta
120
+ ? [{ text: ` · ${terminalDisplayText(message.meta)}`, muted: true }]
121
+ : []),
122
+ ], width: width, color: contentColorForRole(message.role) }) })) : (_jsxs(Text, { color: contentColorForRole(message.role), wrap: web ? 'truncate-end' : 'wrap', children: [content, message.meta ? (_jsxs(Text, { color: theme.text.muted, children: [" \u00B7 ", terminalDisplayText(message.meta)] })) : null, message.pending && content.length === 0 ? (_jsx(Text, { color: theme.text.muted, children: "\u2026" })) : null] })) })] }), message.checklist && message.checklist.length > 0 ? (_jsx(Box, { paddingLeft: 2, children: _jsx(Checklist, { items: message.checklist }) })) : null, message.detail && message.detail.length > 0 && (!message.activity || message.detailExpanded) ? (_jsx(DetailBlock, { lines: message.detail, expanded: message.detailExpanded === true, detailRef: message.detailRef })) : null] }));
96
123
  }
97
124
  /**
98
125
  * Collapsible tool diff / output, aligned under the content gutter.