@corenel/web-ui 0.1.0 → 0.3.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 (79) hide show
  1. package/dist/AskUser.d.ts.map +1 -1
  2. package/dist/AskUser.js +49 -13
  3. package/dist/AskUser.js.map +1 -1
  4. package/dist/CommandTray.d.ts +21 -0
  5. package/dist/CommandTray.d.ts.map +1 -0
  6. package/dist/CommandTray.js +102 -0
  7. package/dist/CommandTray.js.map +1 -0
  8. package/dist/Composer.d.ts +17 -1
  9. package/dist/Composer.d.ts.map +1 -1
  10. package/dist/Composer.js +93 -6
  11. package/dist/Composer.js.map +1 -1
  12. package/dist/ContextBar.d.ts +9 -1
  13. package/dist/ContextBar.d.ts.map +1 -1
  14. package/dist/ContextBar.js +9 -3
  15. package/dist/ContextBar.js.map +1 -1
  16. package/dist/ContextManager.d.ts +78 -2
  17. package/dist/ContextManager.d.ts.map +1 -1
  18. package/dist/ContextManager.js +175 -51
  19. package/dist/ContextManager.js.map +1 -1
  20. package/dist/Lightbox.d.ts.map +1 -1
  21. package/dist/Lightbox.js +2 -10
  22. package/dist/Lightbox.js.map +1 -1
  23. package/dist/ProcessDock.d.ts +45 -0
  24. package/dist/ProcessDock.d.ts.map +1 -0
  25. package/dist/ProcessDock.js +150 -0
  26. package/dist/ProcessDock.js.map +1 -0
  27. package/dist/RichContent.d.ts +4 -2
  28. package/dist/RichContent.d.ts.map +1 -1
  29. package/dist/RichContent.js +12 -7
  30. package/dist/RichContent.js.map +1 -1
  31. package/dist/TodoBar.d.ts +3 -0
  32. package/dist/TodoBar.d.ts.map +1 -0
  33. package/dist/TodoBar.js +163 -0
  34. package/dist/TodoBar.js.map +1 -0
  35. package/dist/Transcript.d.ts +2 -1
  36. package/dist/Transcript.d.ts.map +1 -1
  37. package/dist/Transcript.js +7 -7
  38. package/dist/Transcript.js.map +1 -1
  39. package/dist/agentChat/AgentChat.d.ts +132 -0
  40. package/dist/agentChat/AgentChat.d.ts.map +1 -0
  41. package/dist/agentChat/AgentChat.js +588 -0
  42. package/dist/agentChat/AgentChat.js.map +1 -0
  43. package/dist/agentChat/OptionsDrawer.d.ts +81 -0
  44. package/dist/agentChat/OptionsDrawer.d.ts.map +1 -0
  45. package/dist/agentChat/OptionsDrawer.js +321 -0
  46. package/dist/agentChat/OptionsDrawer.js.map +1 -0
  47. package/dist/agentChat/SkillsSection.d.ts +3 -0
  48. package/dist/agentChat/SkillsSection.d.ts.map +1 -0
  49. package/dist/agentChat/SkillsSection.js +86 -0
  50. package/dist/agentChat/SkillsSection.js.map +1 -0
  51. package/dist/agentChat/controller.d.ts +116 -0
  52. package/dist/agentChat/controller.d.ts.map +1 -0
  53. package/dist/agentChat/controller.js +25 -0
  54. package/dist/agentChat/controller.js.map +1 -0
  55. package/dist/agentChat/skillRunner.d.ts +14 -0
  56. package/dist/agentChat/skillRunner.d.ts.map +1 -0
  57. package/dist/agentChat/skillRunner.js +4 -0
  58. package/dist/agentChat/skillRunner.js.map +1 -0
  59. package/dist/commandTurn.d.ts +47 -0
  60. package/dist/commandTurn.d.ts.map +1 -0
  61. package/dist/commandTurn.js +64 -0
  62. package/dist/commandTurn.js.map +1 -0
  63. package/dist/composerHistory.d.ts +10 -0
  64. package/dist/composerHistory.d.ts.map +1 -0
  65. package/dist/composerHistory.js +44 -0
  66. package/dist/composerHistory.js.map +1 -0
  67. package/dist/sendLater/SendLater.d.ts +31 -0
  68. package/dist/sendLater/SendLater.d.ts.map +1 -0
  69. package/dist/sendLater/SendLater.js +145 -0
  70. package/dist/sendLater/SendLater.js.map +1 -0
  71. package/dist/sendLater/queue.d.ts +69 -0
  72. package/dist/sendLater/queue.d.ts.map +1 -0
  73. package/dist/sendLater/queue.js +216 -0
  74. package/dist/sendLater/queue.js.map +1 -0
  75. package/dist/toolRender.d.ts +8 -0
  76. package/dist/toolRender.d.ts.map +1 -1
  77. package/dist/toolRender.js +7 -1
  78. package/dist/toolRender.js.map +1 -1
  79. package/package.json +16 -21
@@ -0,0 +1,150 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /* Live processes, pinned above the composer.
3
+ *
4
+ * A dev server is not a message. It has a life independent of the conversation -
5
+ * it started before this turn and will outlive it - so putting it in the
6
+ * transcript would be a lie about what the transcript is, and it would scroll
7
+ * away exactly when you wanted to glance at it. It sits above the composer
8
+ * instead, in view no matter how far the conversation has moved on.
9
+ *
10
+ * ONE LINE EACH: the command, whether it is alive, and how it ended. That line
11
+ * answers "is it up?" without opening anything, which is the question ninety
12
+ * percent of the time.
13
+ *
14
+ * THE NEWEST IS OPEN, and it is the only one. See the accordion note below: the
15
+ * latest card is the one you are waiting on, and letting every finished command
16
+ * stay expanded is how this strip became a wall the first time.
17
+ *
18
+ * NOTHING HERE SCROLLS. Each card's output does; the dock does not. A scrolling
19
+ * dock around scrolling cards gave two nested scrollbars for one list. The dock
20
+ * is bounded by rendering at most MAX_CARDS instead, so several processes still
21
+ * cannot push the composer down.
22
+ *
23
+ * KEEP IS EXPLICIT, exactly as it is for console output. A process that prints
24
+ * for an hour must not become context nobody chose, so nothing here reaches the
25
+ * model until someone decides it should.
26
+ */
27
+ import { useEffect, useRef, useState } from 'react';
28
+ import { IcCheck, IcX, IcChevronRight, IcAlert } from '@corenel/ui-kit/icons';
29
+ /** What the one-line summary says about state. A signal is reported by name
30
+ * rather than folded into "failed": a process someone stopped and a process that
31
+ * crashed are different events, and only one of them is a problem. */
32
+ function status(p) {
33
+ if (p.running)
34
+ return { text: 'running', tone: 'live' };
35
+ if (p.ended?.signal)
36
+ return { text: `stopped (${p.ended.signal})`, tone: 'ok' };
37
+ const code = p.ended?.code;
38
+ if (code === 0)
39
+ return { text: 'exited 0', tone: 'ok' };
40
+ return { text: `exited ${code ?? 'unknown'}`, tone: 'bad' };
41
+ }
42
+ /** How many cards the dock shows at once. Running processes are never among the
43
+ * hidden ones — a live process you cannot see is a live process you cannot
44
+ * stop. */
45
+ const MAX_CARDS = 3;
46
+ /** Which processes to show, oldest first.
47
+ *
48
+ * CHRONOLOGICAL, NEWEST LAST. This sits directly above the composer, where the
49
+ * thing you just did belongs nearest your hands — the same direction the
50
+ * transcript above it runs. An earlier version grouped running processes first,
51
+ * on the theory that "what is still going?" outranks "what happened last"; that
52
+ * put the command you typed a second ago at the TOP, reading backwards against
53
+ * every other list on the screen.
54
+ *
55
+ * When the cap bites, the OLDEST FINISHED go. Running ones are never dropped
56
+ * however old they are, because the card is the only place they can be stopped.
57
+ */
58
+ export function visibleProcesses(processes, max = MAX_CARDS) {
59
+ const byAge = [...processes];
60
+ const running = byAge.filter((p) => p.running);
61
+ const finished = byAge.filter((p) => !p.running);
62
+ const room = Math.max(0, max - running.length);
63
+ const keptFinished = room === 0 ? [] : finished.slice(-room);
64
+ const kept = new Set([...running, ...keptFinished].map((p) => p.procId));
65
+ return {
66
+ shown: byAge.filter((p) => kept.has(p.procId)),
67
+ hidden: processes.length - kept.size,
68
+ };
69
+ }
70
+ export function ProcessDock({ processes, onStop, onKeep, onDismiss }) {
71
+ const { shown, hidden } = visibleProcesses(processes);
72
+ const newestId = shown.length ? shown[shown.length - 1].procId : null;
73
+ /* An ACCORDION, defaulting to the newest. Only the latest card is open,
74
+ * because it is the one you are waiting on - and because letting every
75
+ * finished command stay expanded is how this strip became a wall in the first
76
+ * place. Following `newestId` rather than being set once means a command you
77
+ * run now opens now, without collapsing anything you deliberately opened
78
+ * before it arrives. */
79
+ const [expandedId, setExpandedId] = useState(newestId);
80
+ const lastNewest = useRef(newestId);
81
+ useEffect(() => {
82
+ if (newestId && newestId !== lastNewest.current)
83
+ setExpandedId(newestId);
84
+ lastNewest.current = newestId;
85
+ }, [newestId]);
86
+ if (processes.length === 0)
87
+ return null;
88
+ return (_jsxs("div", { style: S.dock, "data-testid": "process-dock", children: [hidden > 0 && (_jsxs("div", { style: S.more, children: [hidden, " older ", hidden === 1 ? 'process' : 'processes', " \u2014 dismiss one below to see it"] })), shown.map((p) => (_jsx(ProcessCard, { proc: p, open: expandedId === p.procId, onToggle: () => setExpandedId((cur) => (cur === p.procId ? null : p.procId)), onStop: onStop, onKeep: onKeep, onDismiss: onDismiss }, p.procId)))] }));
89
+ }
90
+ function ProcessCard({ proc, open, onToggle, onStop, onKeep, onDismiss }) {
91
+ const st = status(proc);
92
+ const tail = proc.lines.slice(-200);
93
+ return (_jsxs("div", { style: S.card, children: [_jsxs("div", { style: S.head, children: [_jsx("button", { style: S.disclose, onClick: onToggle, "aria-expanded": open, "aria-label": open ? 'hide output' : 'show output', children: _jsx("span", { style: { ...S.caret, transform: open ? 'rotate(90deg)' : 'none' }, children: _jsx(IcChevronRight, { size: 12 }) }) }), _jsx("span", { style: { ...S.dot, background: st.tone === 'live' ? 'var(--accent)' : st.tone === 'bad' ? 'var(--danger)' : 'var(--success)' } }), _jsx("code", { style: S.cmd, title: proc.command, children: proc.label || proc.command }), _jsx("span", { style: { ...S.status, color: st.tone === 'bad' ? 'var(--danger)' : 'var(--text-tertiary)' }, children: st.text }), _jsx("div", { style: S.spacer }), proc.running
94
+ ? _jsx("button", { style: S.btn, onClick: () => onStop(proc.procId), children: "Stop" })
95
+ : (_jsxs(_Fragment, { children: [_jsxs("button", { style: S.btn, onClick: () => onKeep(proc.procId), title: "Add this output to the conversation and the agent's context", children: [_jsx(IcCheck, { size: 12 }), " Keep in context"] }), _jsx("button", { style: S.icon, onClick: () => onDismiss(proc.procId), "aria-label": "dismiss", children: _jsx(IcX, { size: 13 }) })] }))] }), open && (_jsxs(_Fragment, { children: [proc.truncated && (_jsxs("div", { style: S.gap, children: [_jsx(IcAlert, { size: 12 }), _jsx("span", { children: "Earlier output is no longer held - this is the tail, not the whole run." })] })), _jsx("pre", { style: S.out, children: tail.length
96
+ ? tail.map((l) => (_jsx("span", { style: l.stream === 'err' ? S.errLine : undefined, children: l.text }, l.seq)))
97
+ : _jsx("span", { style: S.hint, children: "No output yet." }) })] }))] }));
98
+ }
99
+ const S = {
100
+ // NOT a scroller. Each card's output already scrolls, and a scrolling dock
101
+ // around scrolling cards gave two nested scrollbars for one list — you could
102
+ // not tell which one you were dragging, or that a card was clipped rather than
103
+ // short. The dock is bounded by rendering at most MAX_CARDS instead, so
104
+ // several processes still cannot push the composer down.
105
+ dock: {
106
+ display: 'flex', flexDirection: 'column', gap: 6, margin: '0 10px 8px',
107
+ flexShrink: 0,
108
+ },
109
+ card: {
110
+ display: 'flex', flexDirection: 'column', minWidth: 0, flexShrink: 0,
111
+ border: '1px solid var(--border-subtle)', borderRadius: 10,
112
+ background: 'var(--surface-2)', overflow: 'hidden',
113
+ },
114
+ head: { display: 'flex', alignItems: 'center', gap: 7, padding: '5px 8px 5px 4px', minWidth: 0 },
115
+ disclose: {
116
+ display: 'inline-flex', flex: 'none', padding: 3, border: 0, borderRadius: 6,
117
+ background: 'transparent', color: 'var(--text-tertiary)', cursor: 'pointer',
118
+ },
119
+ caret: { display: 'inline-flex', transition: 'transform 140ms cubic-bezier(0.2, 0.8, 0.2, 1)' },
120
+ dot: { width: 7, height: 7, borderRadius: '50%', flex: 'none' },
121
+ cmd: {
122
+ fontFamily: 'var(--font-mono, monospace)', fontSize: 12, color: 'var(--text-primary)',
123
+ minWidth: 0, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap',
124
+ },
125
+ status: { fontSize: 11, flex: 'none', fontVariantNumeric: 'tabular-nums' },
126
+ spacer: { marginLeft: 'auto' },
127
+ btn: {
128
+ display: 'inline-flex', alignItems: 'center', gap: 4, flex: 'none',
129
+ padding: '3px 8px', borderRadius: 999, border: '1px solid var(--border-subtle)',
130
+ background: 'transparent', color: 'var(--text-secondary)', font: 'inherit', fontSize: 11.5, cursor: 'pointer',
131
+ },
132
+ icon: {
133
+ display: 'inline-flex', flex: 'none', padding: 3, borderRadius: 6, border: '1px solid transparent',
134
+ background: 'transparent', color: 'var(--text-tertiary)', cursor: 'pointer',
135
+ },
136
+ gap: {
137
+ display: 'flex', alignItems: 'center', gap: 6, padding: '5px 10px',
138
+ borderTop: '1px solid var(--border-subtle)', color: 'var(--warning)', fontSize: 11,
139
+ },
140
+ out: {
141
+ margin: 0, padding: '8px 10px', maxHeight: 180, overflow: 'auto',
142
+ borderTop: '1px solid var(--border-subtle)',
143
+ fontFamily: 'var(--font-mono, monospace)', fontSize: 11.5, lineHeight: 1.5,
144
+ color: 'var(--text-secondary)', whiteSpace: 'pre-wrap', wordBreak: 'break-word',
145
+ },
146
+ errLine: { color: 'var(--danger)' },
147
+ hint: { color: 'var(--text-tertiary)' },
148
+ more: { padding: '2px 4px', fontSize: 11, color: 'var(--text-tertiary)' },
149
+ };
150
+ //# sourceMappingURL=ProcessDock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessDock.js","sourceRoot":"","sources":["../ProcessDock.tsx"],"names":[],"mappings":"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"}
@@ -7,16 +7,18 @@ export declare function CodeBlock({ lang, code }: {
7
7
  lang: string;
8
8
  code: string;
9
9
  }): React.JSX.Element;
10
- export declare function Markdown({ text }: {
10
+ export declare function Markdown({ text, renderFence }: {
11
11
  text: string;
12
+ renderFence?: (lang: string, code: string) => React.ReactNode | null;
12
13
  }): React.JSX.Element;
13
14
  /** Render a model's OUTPUT richly: a response that is ENTIRELY a JSON payload or a
14
15
  * bare mermaid diagram (no ``` fence — the common case when a prompt's whole job is
15
16
  * to emit one) renders as a pretty/highlighted block or a diagram; anything else
16
17
  * (prose, or text with fenced blocks) goes through Markdown, which already turns
17
18
  * ```json / ```mermaid fences into the same rich blocks. */
18
- export declare function RichOutput({ text }: {
19
+ export declare function RichOutput({ text, renderFence }: {
19
20
  text: string;
21
+ renderFence?: (lang: string, code: string) => React.ReactNode | null;
20
22
  }): React.JSX.Element | null;
21
23
  /** Render a tool's result with the most useful view for its content/type. */
22
24
  export declare function RichResult({ name, args, result }: {
@@ -1 +1 @@
1
- {"version":3,"file":"RichContent.d.ts","sourceRoot":"","sources":["../RichContent.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAuEpE,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,KAAc,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,qBAUjF;AAyCD,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,qBA2BvE;AAkBD,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,qBASlD;AAaD;;;;4DAI4D;AAC5D,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,4BASpD;AAKD,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,qBAkBjH"}
1
+ {"version":3,"file":"RichContent.d.ts","sourceRoot":"","sources":["../RichContent.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAuEpE,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,KAAc,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,qBAUjF;AAyCD,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,qBA2BvE;AAkBD,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,GAAG,IAAI,CAAA;CAAE,qBAarI;AAaD;;;;4DAI4D;AAC5D,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,GAAG,IAAI,CAAA;CAAE,4BASvI;AAKD,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,qBAkBjH"}
@@ -10,7 +10,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  * - DiagramBlock: lazy-loads mermaid (kept out of the main bundle) and renders the
11
11
  * SVG, falling back to the source on a parse error.
12
12
  * - RichResult: picks the right renderer for a tool result from the tool + path. */
13
- import { useEffect, useMemo, useRef, useState } from 'react';
13
+ import React, { useEffect, useMemo, useRef, useState } from 'react';
14
14
  import { mdToHtml, highlightPrmd } from '@corenel/ui-kit/ui-helpers';
15
15
  import { getTheme } from '@corenel/ui-kit/theme';
16
16
  import { colorizeToHtml } from '@corenel/ui-kit/monacoColorize';
@@ -184,11 +184,16 @@ function splitFences(text) {
184
184
  }
185
185
  return out.length ? out : [{ type: 'md', text }];
186
186
  }
187
- export function Markdown({ text }) {
187
+ export function Markdown({ text, renderFence }) {
188
188
  const blocks = useMemo(() => splitFences(text), [text]);
189
- return (_jsx("div", { className: "agent-md", style: S.md, children: blocks.map((b, i) => (b.type === 'code'
190
- ? _jsx(CodeBlock, { lang: b.lang, code: b.code }, i)
191
- : _jsx("div", { dangerouslySetInnerHTML: { __html: mdToHtml(b.text) } }, i))) }));
189
+ return (_jsx("div", { className: "agent-md", style: S.md, children: blocks.map((b, i) => {
190
+ if (b.type === 'md')
191
+ return _jsx("div", { dangerouslySetInnerHTML: { __html: mdToHtml(b.text) } }, i);
192
+ const custom = renderFence?.(b.lang, b.code);
193
+ return custom != null
194
+ ? _jsx(React.Fragment, { children: custom }, i)
195
+ : _jsx(CodeBlock, { lang: b.lang, code: b.code }, i);
196
+ }) }));
192
197
  }
193
198
  /* ---- free-form output ---- */
194
199
  /** Stricter than MERMAID_RE for whole-output detection: the FIRST line must be a
@@ -205,7 +210,7 @@ function looksBareMermaid(s) {
205
210
  * to emit one) renders as a pretty/highlighted block or a diagram; anything else
206
211
  * (prose, or text with fenced blocks) goes through Markdown, which already turns
207
212
  * ```json / ```mermaid fences into the same rich blocks. */
208
- export function RichOutput({ text }) {
213
+ export function RichOutput({ text, renderFence }) {
209
214
  const t = (text || '').trim();
210
215
  if (!t)
211
216
  return null;
@@ -218,7 +223,7 @@ export function RichOutput({ text }) {
218
223
  }
219
224
  catch { /* not JSON — fall through to prose */ }
220
225
  }
221
- return _jsx(Markdown, { text: text });
226
+ return _jsx(Markdown, { text: text, renderFence: renderFence });
222
227
  }
223
228
  /* ---- tool result ---- */
224
229
  const CODE_EXT = new Set(['js', 'jsx', 'ts', 'tsx', 'css', 'scss', 'less', 'html', 'xml', 'svg', 'yaml', 'yml', 'py', 'sh', 'bash', 'go', 'rs', 'java', 'c', 'cpp', 'h', 'toml', 'ini', 'sql', 'rb', 'php', 'json5']);
@@ -1 +1 @@
1
- {"version":3,"file":"RichContent.js","sourceRoot":"","sources":["../RichContent.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;oFAUoF;AACpF,OAAc,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAExG,0FAA0F;AAC1F,MAAM,UAAU,GAAG,uMAAuM,CAAC;AAE3N,SAAS,SAAS,CAAC,CAAS;IAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnB,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5D,IAAI,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;AAC7D,CAAC;AACD,SAAS,UAAU,CAAC,CAAS,IAAY,IAAI,CAAC;IAAC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC;IAAC,OAAO,CAAC,CAAC;AAAC,CAAC,CAAC,CAAC;AAErH,mFAAmF;AAEnF,8EAA8E;AAC9E,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,EAAE,GAAG,oFAAoF,CAAC;IAChG,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC1B,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAE,GAAG,IAAI,iBAAiB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;;gBAC9F,GAAG,IAAI,iBAAiB,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;QACjD,CAAC;aAAM,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,GAAG,IAAI,iBAAiB,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;;YACnF,GAAG,IAAI,kBAAkB,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;QAChD,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC;IACtB,CAAC;IACD,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,mZAAmZ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACzb,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAE3I;uFACuF;AACvF,SAAS,aAAa,CAAC,GAAW,EAAE,IAAY;IAC9C,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,wCAAwC,IAAI,uIAAuI,EAAE,GAAG,CAAC,CAAC;IAChN,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC1B,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,GAAG,IAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;aACjD,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,GAAG,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;aACrD,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,GAAG,IAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;aACtD,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,GAAG,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;;YAC3E,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC;IACtB,CAAC;IACD,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,IAAY;IAC3C,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9E,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,EAAoC;IAChF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9H,CAAC,CAAC;IACF,OAAO,CACL,iBAAQ,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,gBAAc,KAAK,YACrE,IAAI,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,GAAI,GAC7C,CACV,CAAC;AACJ,CAAC;AAID,IAAI,YAAY,GAA+B,IAAI,CAAC;AACpD,SAAS,WAAW;IAClB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,OAAgC,CAAC;YAC/C,GAAG,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACpH,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AACD,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf,SAAS,YAAY,CAAC,EAAE,IAAI,EAAoB;IAC9C,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,CAAC;QACd,WAAW,EAAE;aACV,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aAC1C,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9C,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACX,IAAI,GAAG;QAAE,OAAO,cAAK,KAAK,EAAE,CAAC,CAAC,GAAG,YAAE,eAAM,SAAS,EAAC,SAAS,EAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,GAAI,GAAM,CAAC;IACpI,IAAI,CAAC,GAAG;QAAE,OAAO,cAAK,KAAK,EAAE,CAAC,CAAC,cAAc,wCAA0B,CAAC;IACxE,OAAO,CACL,eAAK,KAAK,EAAE,CAAC,CAAC,WAAW,aACvB,cAAK,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAC,iBAAiB,EAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAI,EAC/F,eAAK,KAAK,EAAE,CAAC,CAAC,UAAU,aAAE,eAAM,KAAK,EAAE,CAAC,CAAC,MAAM,wBAAgB,EAAA,KAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,qBAAqB,GAAG,IAAM,IACpH,CACP,CAAC;AACJ,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAkC;IACtE,MAAM,SAAS,GAAG,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAChF,iFAAiF;IACjF,kEAAkE;IAClE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvC,8EAA8E;IAC9E,kFAAkF;IAClF,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,IAAI,SAAS;YAAE,OAAO;QACtB,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,cAAc,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,KAAK,IAAI,EAAE;gBAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChH,CAAC,CAAC;QACF,OAAO,EAAE,CAAC;QACV,MAAM,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAClC,IAAI,SAAS;QAAE,OAAO,KAAC,YAAY,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAI,CAAC;IAC1D,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1D,OAAO,CACL,eAAK,KAAK,EAAE,CAAC,CAAC,MAAM,aAClB,eAAK,KAAK,EAAE,CAAC,CAAC,KAAK,aAAE,eAAM,KAAK,EAAE,CAAC,CAAC,MAAM,YAAG,KAAK,GAAQ,EAAA,KAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,WAAW,GAAG,IAAM,EACzG,cAAK,KAAK,EAAE,CAAC,CAAC,KAAK,YAAE,eAAM,SAAS,EAAC,SAAS,EAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAI,GAAM,IAC9F,CACP,CAAC;AACJ,CAAC;AAID,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,MAAM,EAAE,GAAG,6BAA6B,CAAC;IACzC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YAAC,IAAI,CAAC,CAAC,IAAI,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QAC7G,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5F,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,IAAI,CAAC,CAAC,IAAI,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAAC,CAAC;IACxG,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAoB;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,OAAO,CACL,cAAK,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,CAAC,CAAC,EAAE,YAClC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM;YACtC,CAAC,CAAC,KAAC,SAAS,IAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAA7B,CAAC,CAAgC;YACnD,CAAC,CAAC,cAAa,uBAAuB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAxD,CAAC,CAA2D,CAAC,CAAC,GACxE,CACP,CAAC;AACJ,CAAC;AAED,gCAAgC;AAChC;;;;uCAIuC;AACvC,MAAM,cAAc,GAAG,wQAAwQ,CAAC;AAChS,SAAS,gBAAgB,CAAC,CAAS;IACjC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;;;4DAI4D;AAC5D,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAoB;IACnD,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,IAAI,gBAAgB,CAAC,CAAC,CAAC;QAAE,OAAO,KAAC,YAAY,IAAC,IAAI,EAAE,CAAC,GAAI,CAAC;IAC1D,+EAA+E;IAC/E,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC;YAAC,OAAO,KAAC,SAAS,IAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAI,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,sCAAsC,CAAC,CAAC;IAC1I,CAAC;IACD,OAAO,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC;AAClC,CAAC;AAED,2BAA2B;AAC3B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtN,6EAA6E;AAC7E,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAmE;IAChH,MAAM,CAAC,GAAG,MAAM,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,CAAC;QAAE,OAAO,cAAK,KAAK,EAAE,CAAC,CAAC,GAAG,wBAAe,CAAC;IAChD,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAAE,OAAO,cAAK,KAAK,EAAE,CAAC,CAAC,MAAM,YAAG,CAAC,GAAO,CAAC;IAEtE,mEAAmE;IACnE,IAAI,IAAI,KAAK,gBAAgB;QAAE,OAAO,KAAC,QAAQ,IAAC,IAAI,EAAE,CAAC,GAAI,CAAC;IAC5D,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAAE,OAAO,KAAC,YAAY,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAI,CAAC;IACvE,IAAI,SAAS,CAAC,CAAC,CAAC;QAAE,OAAO,KAAC,SAAS,IAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAI,CAAC;IAExE,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAClG,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,UAAU;YAAE,OAAO,KAAC,QAAQ,IAAC,IAAI,EAAE,CAAC,GAAI,CAAC;QACrE,IAAI,GAAG,KAAK,MAAM;YAAE,OAAO,KAAC,SAAS,IAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAE,CAAC,GAAI,CAAC;QAC9D,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ;YAAE,OAAO,KAAC,SAAS,IAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAE,CAAC,GAAI,CAAC;QAClF,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAC,SAAS,IAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAI,CAAC;IAClE,CAAC;IACD,OAAO,cAAK,KAAK,EAAE,CAAC,CAAC,GAAG,YAAG,CAAC,GAAO,CAAC;AACtC,CAAC;AAED,MAAM,IAAI,GAAG,kBAAkB,CAAC;AAChC,MAAM,CAAC,GAAwC;IAC7C,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,qBAAqB,EAAE;IACnE,MAAM,EAAE,EAAE,MAAM,EAAE,gCAAgC,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;IAC7J,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,gCAAgC,EAAE,UAAU,EAAE,kBAAkB,EAAE;IACrK,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,EAAE;IACrJ,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE;IAC1K,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,gCAAgC,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjT,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,EAAE,yBAAyB,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvS,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE;IACnP,WAAW,EAAE,EAAE,MAAM,EAAE,gCAAgC,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;IAClK,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrF,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,gCAAgC,EAAE,UAAU,EAAE,kBAAkB,EAAE;IACvK,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,iCAAiC,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE;CACtN,CAAC"}
1
+ {"version":3,"file":"RichContent.js","sourceRoot":"","sources":["../RichContent.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type ReactElement } from 'react';
2
+ export declare function TodoBar(): ReactElement | null;
3
+ //# sourceMappingURL=TodoBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoBar.d.ts","sourceRoot":"","sources":["../TodoBar.tsx"],"names":[],"mappings":"AA2BA,OAAO,EAA6D,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AA0BrG,wBAAgB,OAAO,IAAI,YAAY,GAAG,IAAI,CAoH7C"}
@@ -0,0 +1,163 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /* The agent's task list, where you can actually see it.
3
+ *
4
+ * todo_write drives a plan the model maintains across a multi-step job, and on
5
+ * prompd.app it renders into a dock panel. corenel.ai has no dock, so the agent
6
+ * was keeping a plan nobody could read: it would say "let me work through this"
7
+ * and then the only evidence of the plan was prose in the transcript, scrolled
8
+ * away three replies later.
9
+ *
10
+ * So it lives directly above the composer instead — the one place on this screen
11
+ * that is always in view no matter how far the transcript has scrolled.
12
+ *
13
+ * COLLAPSED TO ONE LINE: the current task plus a count. That line is the whole
14
+ * answer to "what is it doing and how far in" for most of a run.
15
+ *
16
+ * THE FULL LIST IS A POPOVER, not an expanding block. Expanding in place pushed
17
+ * the composer down — the one control that must never move under your hands, and
18
+ * it moved at exactly the moment the agent was working, which is when you are
19
+ * most likely to be typing. The popover floats above instead and displaces
20
+ * nothing.
21
+ *
22
+ * It is PORTALLED to the body and positioned from the chip's own rect, because
23
+ * the composer sits inside scrollers and overflow contexts that clip an
24
+ * absolutely-positioned child (the same trap the title-bar flyouts hit).
25
+ *
26
+ * It renders nothing at all when there are no tasks. An agent answering a
27
+ * one-line question has no plan, and an empty "Tasks 0/0" is furniture.
28
+ */
29
+ import { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
30
+ import { createPortal } from 'react-dom';
31
+ import { useTodos, clearTodos } from '@corenel/harness/todos';
32
+ import { IcChevronRight, IcCheck, IcTrash } from '@corenel/ui-kit/icons';
33
+ /** The task the reader most needs: what is being worked on right now, or failing
34
+ * that what is next up. A finished list reports that it is finished. */
35
+ function headline(todos) {
36
+ const active = todos.find((t) => t.status === 'in_progress');
37
+ if (active)
38
+ return active.title;
39
+ const blocked = todos.find((t) => t.status === 'blocked');
40
+ if (blocked)
41
+ return blocked.title;
42
+ const next = todos.find((t) => t.status === 'pending');
43
+ return next ? next.title : null;
44
+ }
45
+ const DOT = {
46
+ in_progress: 'var(--accent)',
47
+ completed: 'var(--success)',
48
+ blocked: 'var(--warning)',
49
+ pending: 'var(--text-disabled)',
50
+ };
51
+ const PANEL_W = 320;
52
+ const GAP = 6;
53
+ export function TodoBar() {
54
+ const todos = useTodos();
55
+ const [open, setOpen] = useState(false);
56
+ const [pos, setPos] = useState(null);
57
+ const btnRef = useRef(null);
58
+ const panelRef = useRef(null);
59
+ /** Anchor the panel to the chip: right edges aligned, sitting just above it.
60
+ * Clamped to the viewport so a narrow window cannot push it off-screen. */
61
+ const place = useCallback(() => {
62
+ const r = btnRef.current?.getBoundingClientRect();
63
+ if (!r)
64
+ return;
65
+ setPos({
66
+ left: Math.max(GAP, Math.min(r.right - PANEL_W, window.innerWidth - PANEL_W - GAP)),
67
+ bottom: Math.max(GAP, window.innerHeight - r.top + GAP),
68
+ });
69
+ }, []);
70
+ useLayoutEffect(() => { if (open)
71
+ place(); }, [open, place, todos.length]);
72
+ useEffect(() => {
73
+ if (!open)
74
+ return;
75
+ const onKey = (e) => { if (e.key === 'Escape')
76
+ setOpen(false); };
77
+ // Click-away, on pointerdown so it closes before the click lands on whatever
78
+ // is underneath — otherwise dismissing it also presses that thing.
79
+ const onDown = (e) => {
80
+ const t = e.target;
81
+ if (panelRef.current?.contains(t) || btnRef.current?.contains(t))
82
+ return;
83
+ setOpen(false);
84
+ };
85
+ window.addEventListener('keydown', onKey);
86
+ window.addEventListener('pointerdown', onDown);
87
+ window.addEventListener('resize', place);
88
+ return () => {
89
+ window.removeEventListener('keydown', onKey);
90
+ window.removeEventListener('pointerdown', onDown);
91
+ window.removeEventListener('resize', place);
92
+ };
93
+ }, [open, place]);
94
+ if (todos.length === 0)
95
+ return null;
96
+ const done = todos.filter((t) => t.status === 'completed').length;
97
+ const head = headline(todos);
98
+ const allDone = done === todos.length;
99
+ return (_jsxs(_Fragment, { children: [_jsxs("button", { ref: btnRef, style: S.summary, onClick: () => setOpen((o) => !o), "aria-expanded": open, "aria-haspopup": "dialog", title: open ? 'Hide tasks' : 'Show all tasks', children: [_jsx("span", { style: { ...S.caret, transform: open ? 'rotate(90deg)' : 'none' }, children: _jsx(IcChevronRight, { size: 12 }) }), _jsxs("span", { style: S.count, children: [done, "/", todos.length] }), _jsx("span", { style: S.headline, children: allDone ? 'All tasks done' : head ?? 'Tasks' }), allDone && _jsx("span", { style: S.doneMark, children: _jsx(IcCheck, { size: 12 }) })] }), open && pos && createPortal(_jsxs("div", { ref: panelRef, role: "dialog", "aria-label": "Tasks", style: { ...S.panel, left: pos.left, bottom: pos.bottom }, children: [_jsxs("div", { style: S.panelHead, children: [_jsx("span", { style: S.panelTitle, children: "Tasks" }), _jsxs("span", { style: S.panelCount, children: [done, "/", todos.length] }), _jsx("button", { type: "button", style: S.clear, onClick: () => { clearTodos(); setOpen(false); }, title: "Clear the task list", "aria-label": "Clear the task list", children: _jsx(IcTrash, { size: 12 }) })] }), _jsx("ul", { style: S.list, children: todos.map((t) => (_jsxs("li", { style: { ...S.item, ...(t.parentId ? S.sub : null) }, children: [_jsx("span", { style: { ...S.dot, background: DOT[t.status] } }), _jsx("span", { style: {
100
+ ...S.title,
101
+ ...(t.status === 'completed' ? S.titleDone : null),
102
+ ...(t.status === 'in_progress' ? S.titleActive : null),
103
+ }, children: t.title }), t.status === 'blocked' && _jsx("span", { style: S.blocked, children: "blocked" })] }, t.id))) })] }), document.body)] }));
104
+ }
105
+ const S = {
106
+ clear: {
107
+ display: 'inline-flex',
108
+ alignItems: 'center',
109
+ justifyContent: 'center',
110
+ width: 22,
111
+ height: 22,
112
+ padding: 0,
113
+ border: 0,
114
+ borderRadius: 'var(--radius-sm)',
115
+ background: 'transparent',
116
+ color: 'var(--text-tertiary)',
117
+ cursor: 'pointer',
118
+ },
119
+ summary: {
120
+ display: 'inline-flex', alignItems: 'center', gap: 7, minWidth: 0, maxWidth: '100%',
121
+ padding: '3px 9px 3px 5px', border: '1px solid var(--border-subtle)', borderRadius: 999,
122
+ background: 'var(--surface-2)', color: 'var(--text-secondary)', cursor: 'pointer',
123
+ font: 'inherit', fontSize: 11.5, lineHeight: 1.4,
124
+ },
125
+ caret: { display: 'inline-flex', flex: 'none', transition: 'transform 140ms cubic-bezier(0.2, 0.8, 0.2, 1)' },
126
+ count: { fontVariantNumeric: 'tabular-nums', color: 'var(--text-primary)', fontWeight: 600, flex: 'none' },
127
+ // Truncates rather than wraps: this sits on one line beside the context chips,
128
+ // and a task title long enough to wrap would push the composer down mid-run.
129
+ headline: { minWidth: 0, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' },
130
+ doneMark: { display: 'inline-flex', color: 'var(--success)', flex: 'none' },
131
+ // Fixed, portalled to the body: the composer sits inside scrollers whose
132
+ // overflow would clip an absolutely-positioned child. --z-dropdown, not a
133
+ // modal layer: this is a transient popover, and a real dialog raised over the
134
+ // chat must still cover it.
135
+ panel: {
136
+ position: 'fixed', width: PANEL_W, maxHeight: 260, zIndex: 'var(--z-dropdown)',
137
+ display: 'flex', flexDirection: 'column',
138
+ border: '1px solid var(--border-default)', borderRadius: 10,
139
+ background: 'var(--surface-1)', boxShadow: '0 18px 40px -24px rgba(0, 0, 0, 0.85)',
140
+ overflow: 'hidden',
141
+ },
142
+ panelHead: {
143
+ display: 'flex', alignItems: 'center', gap: 8, padding: '8px 12px',
144
+ borderBottom: '1px solid var(--border-subtle)', flex: 'none',
145
+ },
146
+ panelTitle: {
147
+ fontSize: 10.5, fontWeight: 700, letterSpacing: '0.07em', textTransform: 'uppercase',
148
+ color: 'var(--text-tertiary)',
149
+ },
150
+ panelCount: { marginLeft: 'auto', fontSize: 11.5, fontVariantNumeric: 'tabular-nums', color: 'var(--text-secondary)' },
151
+ list: {
152
+ listStyle: 'none', margin: 0, padding: '6px 4px', overflowY: 'auto',
153
+ display: 'flex', flexDirection: 'column', gap: 2, minHeight: 0,
154
+ },
155
+ item: { display: 'flex', alignItems: 'center', gap: 8, padding: '3px 8px', fontSize: 12.5, minWidth: 0 },
156
+ sub: { paddingLeft: 22 },
157
+ dot: { width: 6, height: 6, borderRadius: '50%', flex: 'none' },
158
+ title: { color: 'var(--text-secondary)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' },
159
+ titleDone: { color: 'var(--text-disabled)', textDecoration: 'line-through' },
160
+ titleActive: { color: 'var(--text-primary)', fontWeight: 600 },
161
+ blocked: { fontSize: 10.5, color: 'var(--warning)', flex: 'none', marginLeft: 'auto' },
162
+ };
163
+ //# sourceMappingURL=TodoBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoBar.js","sourceRoot":"","sources":["../TodoBar.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAqB,MAAM,OAAO,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAkB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEzE;wEACwE;AACxE,SAAS,QAAQ,CAAC,KAAkB;IAClC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;IAC7D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC1D,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,GAAG,GAAwC;IAC/C,WAAW,EAAE,eAAe;IAC5B,SAAS,EAAE,gBAAgB;IAC3B,OAAO,EAAE,gBAAgB;IACzB,OAAO,EAAE,sBAAsB;CAChC,CAAC;AAEF,MAAM,OAAO,GAAG,GAAG,CAAC;AACpB,MAAM,GAAG,GAAG,CAAC,CAAC;AAEd,MAAM,UAAU,OAAO;IACrB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAA0C,IAAI,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE9C;+EAC2E;IAC3E,MAAM,KAAK,GAAG,WAAW,CAAC,GAAS,EAAE;QACnC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC;QAClD,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,MAAM,CAAC;YACL,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC;YACnF,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;SACxD,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,eAAe,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI;QAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAE3E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,6EAA6E;QAC7E,mEAAmE;QACnE,MAAM,MAAM,GAAG,CAAC,CAAe,EAAQ,EAAE;YACvC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAc,CAAC;YAC3B,IAAI,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAAE,OAAO;YACzE,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC7C,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAElB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC;IAEtC,OAAO,CACL,8BACE,kBACE,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,CAAC,OAAO,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,mBAClB,IAAI,mBACL,QAAQ,EACtB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,aAE7C,eAAM,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,YACrE,KAAC,cAAc,IAAC,IAAI,EAAE,EAAE,GAAI,GACvB,EACP,gBAAM,KAAK,EAAE,CAAC,CAAC,KAAK,aAAG,IAAI,OAAG,KAAK,CAAC,MAAM,IAAQ,EAGlD,eAAM,KAAK,EAAE,CAAC,CAAC,QAAQ,YAAG,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,GAAQ,EAC7E,OAAO,IAAI,eAAM,KAAK,EAAE,CAAC,CAAC,QAAQ,YAAE,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,GAAI,GAAO,IAC1D,EAER,IAAI,IAAI,GAAG,IAAI,YAAY,CAC1B,eACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,QAAQ,gBACF,OAAO,EAClB,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAEzD,eAAK,KAAK,EAAE,CAAC,CAAC,SAAS,aACrB,eAAM,KAAK,EAAE,CAAC,CAAC,UAAU,sBAAc,EACvC,gBAAM,KAAK,EAAE,CAAC,CAAC,UAAU,aAAG,IAAI,OAAG,KAAK,CAAC,MAAM,IAAQ,EASvD,iBACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,CAAC,CAAC,KAAK,EACd,OAAO,EAAE,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAChD,KAAK,EAAC,qBAAqB,gBAChB,qBAAqB,YAEhC,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,GAAI,GACd,IACL,EACN,aAAI,KAAK,EAAE,CAAC,CAAC,IAAI,YACd,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAChB,cAAe,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,aACjE,eAAM,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAI,EACxD,eACE,KAAK,EAAE;wCACL,GAAG,CAAC,CAAC,KAAK;wCACV,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;wCAClD,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;qCACvD,YAEA,CAAC,CAAC,KAAK,GACH,EACN,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,eAAM,KAAK,EAAE,CAAC,CAAC,OAAO,wBAAgB,KAX1D,CAAC,CAAC,EAAE,CAYR,CACN,CAAC,GACC,IACD,EACN,QAAQ,CAAC,IAAI,CACd,IACA,CACJ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,GAAwC;IAC7C,KAAK,EAAE;QACL,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,YAAY,EAAE,kBAAkB;QAChC,UAAU,EAAE,aAAa;QACzB,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,SAAS;KAClB;IACD,OAAO,EAAE;QACP,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;QACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,gCAAgC,EAAE,YAAY,EAAE,GAAG;QACvF,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,SAAS;QACjF,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG;KACjD;IACD,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,gDAAgD,EAAE;IAC7G,KAAK,EAAE,EAAE,kBAAkB,EAAE,cAAc,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;IAC1G,+EAA+E;IAC/E,6EAA6E;IAC7E,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE;IAC7F,QAAQ,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE;IAE3E,yEAAyE;IACzE,0EAA0E;IAC1E,8EAA8E;IAC9E,4BAA4B;IAC5B,KAAK,EAAE;QACL,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,mBAAwC;QACnG,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ;QACxC,MAAM,EAAE,iCAAiC,EAAE,YAAY,EAAE,EAAE;QAC3D,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,uCAAuC;QAClF,QAAQ,EAAE,QAAQ;KACnB;IACD,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU;QAClE,YAAY,EAAE,gCAAgC,EAAE,IAAI,EAAE,MAAM;KAC7D;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW;QACpF,KAAK,EAAE,sBAAsB;KAC9B;IACD,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAE,cAAc,EAAE,KAAK,EAAE,uBAAuB,EAAE;IAEtH,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM;QACnE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;KAC/D;IACD,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE;IACxG,GAAG,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;IACxB,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;IAC/D,KAAK,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE;IAC7G,SAAS,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,cAAc,EAAE;IAC5E,WAAW,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,GAAG,EAAE;IAC9D,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE;CACvF,CAAC"}
@@ -4,7 +4,7 @@ import type { TranscriptView } from './transcriptView';
4
4
  export { ToolLine } from './toolRender';
5
5
  import type { ConversationTurn } from '@corenel/harness/conversation';
6
6
  export type { ConversationTurn };
7
- export declare function Transcript({ turns, currentSrc, view, onApplyEdit, onToggleInclude, onRetry, onImageClick }: {
7
+ export declare function Transcript({ turns, currentSrc, view, onApplyEdit, onToggleInclude, onRetry, onImageClick, renderFence }: {
8
8
  turns: ConversationTurn[];
9
9
  currentSrc: string;
10
10
  /** Tool detail level. summary uses a distinct compact renderer; normal/expanded
@@ -14,6 +14,7 @@ export declare function Transcript({ turns, currentSrc, view, onApplyEdit, onTog
14
14
  onToggleInclude: (id: string) => void;
15
15
  onRetry?: (id: string) => void;
16
16
  onImageClick?: (src: string) => void;
17
+ renderFence?: (lang: string, code: string) => React.ReactNode | null;
17
18
  }): React.JSX.Element;
18
19
  /** A propose_edit review card. Rendered from the settled transcript AND from the
19
20
  * live (in-run) tool list — the tool now BLOCKS on this decision, so the card
@@ -1 +1 @@
1
- {"version":3,"file":"Transcript.d.ts","sourceRoot":"","sources":["../Transcript.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAA8B,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAQnH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAe,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;IACtH,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB;wEACoE;IACpE,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,qBAaA;AAwJD;;qDAEqD;AACrD,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;IACpE,IAAI,EAAE,6BAA6B,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,IAAI,EAAE,cAAc,CAAC;CACtB,qBAoEA"}
1
+ {"version":3,"file":"Transcript.d.ts","sourceRoot":"","sources":["../Transcript.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAA8B,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAQnH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAe,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE;IACnI,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB;wEACoE;IACpE,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;CACtE,qBAaA;AA0JD;;qDAEqD;AACrD,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;IACpE,IAAI,EAAE,6BAA6B,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,IAAI,EAAE,cAAc,CAAC;CACtB,qBAoEA"}
@@ -10,15 +10,15 @@ import { IcCheck, IcX, IcGit, IcCopy, IcRefresh, IcChevronRight } from '@corenel
10
10
  // The dense status line lives in the renderer layer now; re-exported so existing
11
11
  // importers (AgentPanel's live list) keep their import path.
12
12
  export { ToolLine } from './toolRender';
13
- export function Transcript({ turns, currentSrc, view = 'normal', onApplyEdit, onToggleInclude, onRetry, onImageClick }) {
13
+ export function Transcript({ turns, currentSrc, view = 'normal', onApplyEdit, onToggleInclude, onRetry, onImageClick, renderFence }) {
14
14
  // Summary is a wholly different layout — flatten every turn into the normalized
15
15
  // ChatItem stream and hand it to the compact renderer.
16
16
  if (view === 'summary') {
17
17
  return _jsx("div", { style: S.list, children: _jsx(SummaryTranscript, { items: toChatItems(turns) }) });
18
18
  }
19
- return (_jsx("div", { style: S.list, children: turns.map((t) => (_jsx(TurnBlock, { turn: t, currentSrc: currentSrc, view: view, onApplyEdit: onApplyEdit, onToggleInclude: onToggleInclude, onRetry: onRetry, onImageClick: onImageClick }, t.id))) }));
19
+ return (_jsx("div", { style: S.list, children: turns.map((t) => (_jsx(TurnBlock, { turn: t, currentSrc: currentSrc, view: view, onApplyEdit: onApplyEdit, onToggleInclude: onToggleInclude, onRetry: onRetry, onImageClick: onImageClick, renderFence: renderFence }, t.id))) }));
20
20
  }
21
- function TurnBlock({ turn, currentSrc, view, onApplyEdit, onToggleInclude, onRetry, onImageClick }) {
21
+ function TurnBlock({ turn, currentSrc, view, onApplyEdit, onToggleInclude, onRetry, onImageClick, renderFence }) {
22
22
  const [copied, setCopied] = useState(false);
23
23
  const dim = turn.included ? 1 : 0.45;
24
24
  const assistantText = turn.messages
@@ -31,9 +31,9 @@ function TurnBlock({ turn, currentSrc, view, onApplyEdit, onToggleInclude, onRet
31
31
  setCopied(true);
32
32
  setTimeout(() => setCopied(false), 1200);
33
33
  };
34
- return (_jsxs("div", { className: "chat-turn", style: { ...S.turn, opacity: dim }, children: [turn.messages.map((m, i) => _jsx(MessageView, { m: m, turn: turn, currentSrc: currentSrc, view: view, onApplyEdit: onApplyEdit, onImageClick: onImageClick }, i)), turn.stats && (_jsxs("div", { style: S.stats, title: "Tokens in / out \u00B7 estimated cost \u00B7 wall-clock for this turn", children: [turn.stats.inTok.toLocaleString(), " in \u00B7 ", turn.stats.outTok.toLocaleString(), " out \u00B7 $", turn.stats.cost.toFixed(4), " \u00B7 ", (turn.stats.ms / 1000).toFixed(1), "s"] })), _jsxs("div", { className: "chat-turn-actions", style: { ...S.actions, ...(turn.included ? null : { opacity: 1 }) }, children: [_jsx("button", { style: S.ctxToggle(turn.included), onClick: () => onToggleInclude(turn.id), title: turn.included ? 'In context — click to exclude from the next message' : 'Excluded — click to include', children: turn.included ? 'in context' : 'excluded' }), _jsx("div", { style: { flex: 1 } }), assistantText && (_jsx("button", { style: S.act, onClick: copy, title: "Copy reply", children: copied ? _jsx(IcCheck, { size: 12 }) : _jsx(IcCopy, { size: 12 }) })), hasUser && onRetry && (_jsx("button", { style: S.act, onClick: () => onRetry(turn.id), title: "Retry from here", children: _jsx(IcRefresh, { size: 12 }) }))] })] }));
34
+ return (_jsxs("div", { className: "chat-turn", style: { ...S.turn, opacity: dim }, children: [turn.messages.map((m, i) => _jsx(MessageView, { m: m, turn: turn, currentSrc: currentSrc, view: view, onApplyEdit: onApplyEdit, onImageClick: onImageClick, renderFence: renderFence }, i)), turn.stats && (_jsxs("div", { style: S.stats, title: "Tokens in / out \u00B7 estimated cost \u00B7 wall-clock for this turn", children: [turn.stats.inTok.toLocaleString(), " in \u00B7 ", turn.stats.outTok.toLocaleString(), " out \u00B7 $", turn.stats.cost.toFixed(4), " \u00B7 ", (turn.stats.ms / 1000).toFixed(1), "s"] })), _jsxs("div", { className: "chat-turn-actions", style: { ...S.actions, ...(turn.included ? null : { opacity: 1 }) }, children: [_jsx("button", { style: S.ctxToggle(turn.included), onClick: () => onToggleInclude(turn.id), title: turn.included ? 'In context — click to exclude from the next message' : 'Excluded — click to include', children: turn.included ? 'in context' : 'excluded' }), _jsx("div", { style: { flex: 1 } }), assistantText && (_jsx("button", { style: S.act, onClick: copy, title: "Copy reply", children: copied ? _jsx(IcCheck, { size: 12 }) : _jsx(IcCopy, { size: 12 }) })), hasUser && onRetry && (_jsx("button", { style: S.act, onClick: () => onRetry(turn.id), title: "Retry from here", children: _jsx(IcRefresh, { size: 12 }) }))] })] }));
35
35
  }
36
- function MessageView({ m, turn, currentSrc, view, onApplyEdit, onImageClick }) {
36
+ function MessageView({ m, turn, currentSrc, view, onApplyEdit, onImageClick, renderFence }) {
37
37
  if (m.role === 'user') {
38
38
  if (Array.isArray(m.content)) {
39
39
  const textPart = m.content.find((p) => p.type === 'text');
@@ -44,7 +44,7 @@ function MessageView({ m, turn, currentSrc, view, onApplyEdit, onImageClick }) {
44
44
  }
45
45
  if (m.role === 'assistant') {
46
46
  const calls = (m.tool_calls ?? []);
47
- return (_jsxs(_Fragment, { children: [typeof m.content === 'string' && m.content && _jsx(Markdown, { text: m.content }), calls.map((c) => c.function.name === 'propose_edit'
47
+ return (_jsxs(_Fragment, { children: [typeof m.content === 'string' && m.content && _jsx(Markdown, { text: m.content, renderFence: renderFence }), calls.map((c) => c.function.name === 'propose_edit'
48
48
  ? _jsx(DiffProposal, { call: c, currentSrc: currentSrc, onApplyEdit: onApplyEdit, view: view }, c.id)
49
49
  : _jsx(ToolResultCard, { inv: toInvocation(c, turn), defaultOpen: view === 'expanded' }, c.id))] }));
50
50
  }
@@ -172,7 +172,7 @@ const S = {
172
172
  dDel: { background: 'var(--danger-soft)', color: 'var(--danger)' },
173
173
  dCtx: { color: 'var(--text-tertiary)' },
174
174
  diffActions: { display: 'flex', gap: 8, padding: '8px 10px', borderTop: '1px solid var(--border-subtle)' },
175
- apply: { display: 'inline-flex', alignItems: 'center', gap: 5, height: 28, padding: '0 12px', border: 0, borderRadius: 'var(--radius-sm)', background: 'var(--grad-brand)', color: '#fff', fontSize: 12, fontWeight: 600, cursor: 'pointer' },
175
+ apply: { display: 'inline-flex', alignItems: 'center', gap: 5, height: 28, padding: '0 12px', border: 0, borderRadius: 'var(--radius-sm)', background: 'var(--grad-brand)', color: 'var(--text-on-accent, #fff)', fontSize: 12, fontWeight: 600, cursor: 'pointer' },
176
176
  reject: { display: 'inline-flex', alignItems: 'center', gap: 5, height: 28, padding: '0 12px', border: '1px solid var(--border-default)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-1)', color: 'var(--text-secondary)', fontSize: 12, fontWeight: 600, cursor: 'pointer' },
177
177
  diffResolved: { padding: '8px 10px', borderTop: '1px solid var(--border-subtle)', fontSize: 12, color: 'var(--text-tertiary)' },
178
178
  };