@corenel/web-ui 0.1.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 (61) hide show
  1. package/dist/AskUser.d.ts +8 -0
  2. package/dist/AskUser.d.ts.map +1 -0
  3. package/dist/AskUser.js +94 -0
  4. package/dist/AskUser.js.map +1 -0
  5. package/dist/CommandPalette.d.ts +13 -0
  6. package/dist/CommandPalette.d.ts.map +1 -0
  7. package/dist/CommandPalette.js +54 -0
  8. package/dist/CommandPalette.js.map +1 -0
  9. package/dist/Composer.d.ts +51 -0
  10. package/dist/Composer.d.ts.map +1 -0
  11. package/dist/Composer.js +174 -0
  12. package/dist/Composer.js.map +1 -0
  13. package/dist/ContextBar.d.ts +9 -0
  14. package/dist/ContextBar.d.ts.map +1 -0
  15. package/dist/ContextBar.js +45 -0
  16. package/dist/ContextBar.js.map +1 -0
  17. package/dist/ContextManager.d.ts +33 -0
  18. package/dist/ContextManager.d.ts.map +1 -0
  19. package/dist/ContextManager.js +145 -0
  20. package/dist/ContextManager.js.map +1 -0
  21. package/dist/Lightbox.d.ts +6 -0
  22. package/dist/Lightbox.d.ts.map +1 -0
  23. package/dist/Lightbox.js +22 -0
  24. package/dist/Lightbox.js.map +1 -0
  25. package/dist/RichContent.d.ts +27 -0
  26. package/dist/RichContent.d.ts.map +1 -0
  27. package/dist/RichContent.js +267 -0
  28. package/dist/RichContent.js.map +1 -0
  29. package/dist/SummaryTranscript.d.ts +17 -0
  30. package/dist/SummaryTranscript.d.ts.map +1 -0
  31. package/dist/SummaryTranscript.js +23 -0
  32. package/dist/SummaryTranscript.js.map +1 -0
  33. package/dist/TodoPanel.d.ts +2 -0
  34. package/dist/TodoPanel.d.ts.map +1 -0
  35. package/dist/TodoPanel.js +173 -0
  36. package/dist/TodoPanel.js.map +1 -0
  37. package/dist/Transcript.d.ts +27 -0
  38. package/dist/Transcript.d.ts.map +1 -0
  39. package/dist/Transcript.js +179 -0
  40. package/dist/Transcript.js.map +1 -0
  41. package/dist/diff.d.ts +10 -0
  42. package/dist/diff.d.ts.map +1 -0
  43. package/dist/diff.js +52 -0
  44. package/dist/diff.js.map +1 -0
  45. package/dist/editDecisions.d.ts +14 -0
  46. package/dist/editDecisions.d.ts.map +1 -0
  47. package/dist/editDecisions.js +77 -0
  48. package/dist/editDecisions.js.map +1 -0
  49. package/dist/liveEdit.d.ts +18 -0
  50. package/dist/liveEdit.d.ts.map +1 -0
  51. package/dist/liveEdit.js +71 -0
  52. package/dist/liveEdit.js.map +1 -0
  53. package/dist/toolRender.d.ts +31 -0
  54. package/dist/toolRender.d.ts.map +1 -0
  55. package/dist/toolRender.js +163 -0
  56. package/dist/toolRender.js.map +1 -0
  57. package/dist/transcriptView.d.ts +16 -0
  58. package/dist/transcriptView.d.ts.map +1 -0
  59. package/dist/transcriptView.js +69 -0
  60. package/dist/transcriptView.js.map +1 -0
  61. package/package.json +42 -0
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import type { ConversationTurn } from './Transcript';
3
+ import { type SystemParts } from '@corenel/harness/systemParts';
4
+ /**
5
+ * Live projected context composition: system prompt (base + enabled parts) + the
6
+ * INCLUDED warm turns, vs the model window. Subscribes to the conversation, so it
7
+ * updates as you chat and toggle turns/parts — used by BOTH the collapsed
8
+ * ContextBar and the expanded drawer so they always agree (the collapsed bar used
9
+ * to read the last run's tokens, which only changed after a completed run).
10
+ */
11
+ export declare function useContextProjection(contextWindow: number, parts: SystemParts): {
12
+ turns: ConversationTurn[];
13
+ partTok: (key: keyof SystemParts) => number;
14
+ systemTok: number;
15
+ perTurn: {
16
+ t: ConversationTurn;
17
+ tok: number;
18
+ }[];
19
+ turnsTok: number;
20
+ projected: number;
21
+ pct: number;
22
+ over: boolean;
23
+ includedCount: number;
24
+ };
25
+ export declare function ContextManagerBody({ contextWindow, parts: partsProp, onToggle, systemSource }: {
26
+ contextWindow: number;
27
+ parts?: SystemParts;
28
+ onToggle?: (k: keyof SystemParts) => void;
29
+ /** Filename of the system prompt active for the next run (e.g. system-prmd-md.md),
30
+ * shown so the user can see which prompt the assistant is using. */
31
+ systemSource?: string;
32
+ }): React.JSX.Element;
33
+ //# sourceMappingURL=ContextManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextManager.d.ts","sourceRoot":"","sources":["../ContextManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAKrD,OAAO,EAAkC,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAoChG;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;;mBAGtD,MAAM,WAAW,KAAG,MAAM;;;;;;;;;;;EAYjD;AAED,wBAAgB,kBAAkB,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;IAC9F,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,WAAW,KAAK,IAAI,CAAC;IAC1C;wEACoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,qBA0IA"}
@@ -0,0 +1,145 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useState } from 'react';
3
+ import { useConversation } from '@corenel/harness/conversation';
4
+ import { listRecall, clearRecall } from '@corenel/tools-web/tools/result-store';
5
+ import { effectiveThreshold } from '@corenel/harness/compression';
6
+ import { getCompression, setCompression } from '@corenel/ui-kit/theme';
7
+ import { getSystemParts, setSystemParts } from '@corenel/harness/systemParts';
8
+ import { allTools } from '@corenel/harness/tools/builtins';
9
+ import { useUsage, fmtTok } from '@corenel/ui-kit/usage';
10
+ import { estimateTokens } from '@corenel/ui-kit/ui-helpers';
11
+ import { IcCheck, IcTrash, IcZap, IcChevron } from '@corenel/ui-kit/icons';
12
+ /* Context Manager (dock panel body, and the drawer under the Assistant header).
13
+ * Reframed around ONE question: what's in the model's window right now, and how do
14
+ * I trim it. Shows a PROJECTED composition (system prompt + included warm turns)
15
+ * that responds live to the toggles, plus offloaded/recoverable tool outputs and an
16
+ * inline compression control.
17
+ *
18
+ * `parts` / `onToggle` let a host (AgentPanel) own the system-prompt parts so the
19
+ * agent's next run stays in sync; without them the panel self-manages via
20
+ * get/setSystemParts (the standalone dock panel). */
21
+ const PARTS = [
22
+ { key: 'persona', label: 'Persona', est: 300 },
23
+ { key: 'mode', label: 'Mode', est: 200 },
24
+ { key: 'toolGuidance', label: 'Guidance', est: 450 },
25
+ { key: 'tools', label: 'Tools', est: 0 }, // measured from the live tool schemas
26
+ ];
27
+ const SYS_BASE_EST = 600; // systems/system-base.md baseline (always included)
28
+ const PRESETS = ['off', 'conservative', 'balanced', 'aggressive'];
29
+ function turnTokens(t) {
30
+ let s = '';
31
+ for (const m of t.messages)
32
+ s += typeof m.content === 'string' ? m.content : JSON.stringify(m.content ?? '');
33
+ return estimateTokens(s);
34
+ }
35
+ function turnLabel(t) {
36
+ const u = t.messages.find((m) => m.role === 'user');
37
+ const text = u && typeof u.content === 'string' ? u.content : '';
38
+ return text.trim().slice(0, 80) || '(turn)';
39
+ }
40
+ /**
41
+ * Live projected context composition: system prompt (base + enabled parts) + the
42
+ * INCLUDED warm turns, vs the model window. Subscribes to the conversation, so it
43
+ * updates as you chat and toggle turns/parts — used by BOTH the collapsed
44
+ * ContextBar and the expanded drawer so they always agree (the collapsed bar used
45
+ * to read the last run's tokens, which only changed after a completed run).
46
+ */
47
+ export function useContextProjection(contextWindow, parts) {
48
+ const { turns } = useConversation();
49
+ const toolsTok = useMemo(() => estimateTokens(JSON.stringify(allTools().map((t) => ({ name: t.name, description: t.description, parameters: t.parameters })))), []);
50
+ const partTok = (key) => (key === 'tools' ? toolsTok : (PARTS.find((p) => p.key === key)?.est ?? 0));
51
+ const systemTok = SYS_BASE_EST + PARTS.reduce((n, p) => n + (parts[p.key] ? partTok(p.key) : 0), 0);
52
+ const perTurn = useMemo(() => turns.map((t) => ({ t, tok: turnTokens(t) })), [turns]);
53
+ const turnsTok = perTurn.reduce((n, x) => n + (x.t.included ? x.tok : 0), 0);
54
+ const projected = systemTok + turnsTok;
55
+ const w = Math.max(1, contextWindow);
56
+ return {
57
+ turns, partTok, systemTok, perTurn, turnsTok, projected,
58
+ pct: Math.min(100, Math.round((projected / w) * 100)),
59
+ over: projected > contextWindow,
60
+ includedCount: perTurn.filter((x) => x.t.included).length,
61
+ };
62
+ }
63
+ export function ContextManagerBody({ contextWindow, parts: partsProp, onToggle, systemSource }) {
64
+ const { records } = useUsage();
65
+ const { toggleInclude } = useConversation();
66
+ const [offloaded, setOffloaded] = useState([]);
67
+ const [expanded, setExpanded] = useState(null);
68
+ const [preset, setPresetState] = useState(getCompression);
69
+ const [localParts, setLocalParts] = useState(getSystemParts);
70
+ const parts = partsProp ?? localParts;
71
+ const togglePart = (k) => {
72
+ if (onToggle)
73
+ onToggle(k);
74
+ else
75
+ setLocalParts((p) => { const next = { ...p, [k]: !p[k] }; setSystemParts(next); return next; });
76
+ };
77
+ const refresh = () => { listRecall().then(setOffloaded).catch(() => setOffloaded([])); };
78
+ useEffect(refresh, []);
79
+ const lastAgent = records.find((r) => r.surface === 'agent');
80
+ // ---- projected composition (estimate) — shared with the collapsed ContextBar ----
81
+ const { turns, partTok, systemTok, perTurn, turnsTok, projected, pct, over, includedCount } = useContextProjection(contextWindow, parts);
82
+ const w = Math.max(1, contextWindow);
83
+ const sysPct = Math.min(100, (systemTok / w) * 100);
84
+ const turnPct = Math.min(100 - sysPct, (turnsTok / w) * 100);
85
+ const reclaimedBytes = offloaded.reduce((n, o) => n + o.bytes, 0);
86
+ const thr = effectiveThreshold(preset, projected / w);
87
+ const setAll = (inc) => perTurn.forEach((x) => { if (x.t.included !== inc)
88
+ toggleInclude(x.t.id); });
89
+ return (_jsx("div", { style: S.panel, children: _jsxs("div", { style: S.body, children: [_jsxs("div", { style: S.section, children: [_jsxs("div", { style: S.budgetHead, children: [_jsxs("span", { style: S.bigNum, title: "Estimated tokens if you run now", children: [fmtTok(projected), _jsxs("span", { style: S.bigDim, children: [" / ", fmtTok(contextWindow)] })] }), _jsxs("span", { style: { ...S.pctChip, ...(over ? S.pctOver : null) }, children: [pct, "%"] })] }), _jsxs("div", { style: S.barStack, children: [_jsx("div", { style: { ...S.seg, width: `${sysPct}%`, background: 'var(--accent)' }, title: `System ${fmtTok(systemTok)}` }), _jsx("div", { style: { ...S.seg, width: `${turnPct}%`, background: 'var(--brand-cyan, #3fb6d4)' }, title: `Warm turns ${fmtTok(turnsTok)}` })] }), _jsxs("div", { style: S.legend, children: [_jsx(Legend, { c: "var(--accent)", k: "System", v: fmtTok(systemTok) }), _jsx(Legend, { c: "var(--brand-cyan, #3fb6d4)", k: "Turns", v: fmtTok(turnsTok) }), _jsx(Legend, { c: "var(--surface-3)", k: "Free", v: fmtTok(Math.max(0, contextWindow - projected)) }), _jsx("span", { style: S.lastRun, children: lastAgent ? `last run ${fmtTok(lastAgent.inTok)}` : 'no runs yet' })] }), _jsx("div", { style: S.estNote, children: "Projected estimate \u2014 system-prompt size is approximate." })] }), _jsxs("div", { style: S.section, children: [_jsxs("div", { style: S.rowHead, children: [_jsx("span", { style: S.secLabel, children: "System prompt" }), _jsxs("span", { style: S.secMeta, children: ["~", fmtTok(systemTok)] })] }), systemSource && (_jsxs("div", { style: S.sourceLine, title: "The system prompt file used for the next run", children: [_jsx("span", { style: S.sourceDim, children: "prompt:" }), " ", _jsx("code", { style: S.sourceCode, children: systemSource })] })), _jsxs("div", { style: S.chips, children: [PARTS.map(({ key, label }) => (_jsxs("button", { style: S.chip(parts[key]), onClick: () => togglePart(key), title: parts[key] ? `Including ${label.toLowerCase()} (~${fmtTok(partTok(key))})` : `Excluded — ${label.toLowerCase()} dropped`, children: [_jsx("span", { style: S.chipDot(parts[key]) }), label] }, key))), _jsxs("button", { style: S.chip(parts.baseSystem), onClick: () => togglePart('baseSystem'), title: parts.baseSystem
90
+ ? 'Using the base system prompt — the file-type prompt (.prmd / .pdflow format docs) is ignored'
91
+ : 'Using the file-type system prompt when one matches the open file. Turn on to force the base prompt instead.', children: [_jsx("span", { style: S.chipDot(parts.baseSystem) }), "Use base prompt"] })] }), parts.baseSystem && _jsx("div", { style: S.estNote, children: "File-type prompt overridden \u2014 running on the base system prompt only." })] }), _jsxs("div", { style: S.section, children: [_jsxs("div", { style: S.rowHead, children: [_jsxs("span", { style: S.secLabel, children: ["Warm turns \u00B7 ", includedCount, "/", turns.length] }), _jsxs("span", { style: S.actions, children: [_jsx("span", { style: S.secMeta, children: fmtTok(turnsTok) }), turns.length > 0 && _jsxs(_Fragment, { children: [_jsx("button", { style: S.miniBtn, onClick: () => setAll(true), children: "All" }), _jsx("button", { style: S.miniBtn, onClick: () => setAll(false), children: "None" })] })] })] }), _jsxs("div", { style: S.list, children: [turns.length === 0 && _jsx("div", { style: S.empty, children: "No turns yet. As you chat, each exchange shows here \u2014 exclude old ones to free the window." }), perTurn.map(({ t, tok }) => (_jsxs("button", { style: S.turn(t.included), onClick: () => toggleInclude(t.id), title: t.included ? 'Excluded turns are not sent to the model' : 'Include this turn', children: [_jsx("span", { style: S.check(t.included), children: t.included && _jsx(IcCheck, { size: 11 }) }), _jsx("span", { style: S.turnText, children: turnLabel(t) }), _jsx("span", { style: S.turnMeta, children: fmtTok(tok) })] }, t.id)))] })] }), _jsxs("div", { style: S.section, children: [_jsxs("div", { style: S.rowHead, children: [_jsxs("span", { style: S.secLabel, children: ["Compressed \u00B7 ", offloaded.length] }), _jsxs("span", { style: S.actions, children: [_jsx("span", { style: S.secMeta, children: reclaimedBytes ? `${(reclaimedBytes / 1000).toFixed(1)} KB saved` : '—' }), offloaded.length > 0 && _jsxs("button", { style: S.miniBtn, onClick: () => { clearRecall().then(refresh); }, children: [_jsx(IcTrash, { size: 11 }), " Clear"] })] })] }), _jsxs("div", { style: S.list, children: [offloaded.length === 0 && _jsx("div", { style: S.empty, children: "Large tool outputs get offloaded here \u2014 frozen, and the assistant pulls them back on demand." }), offloaded.map((o) => (_jsxs("div", { style: S.frozenWrap, children: [_jsxs("button", { style: S.frozen, onClick: () => setExpanded((e) => (e === o.id ? null : o.id)), title: "Preview offloaded content", children: [_jsx("span", { style: { ...S.chev, transform: expanded === o.id ? 'rotate(90deg)' : 'none' }, children: _jsx(IcChevron, { size: 12 }) }), _jsx(IcZap, { size: 12 }), _jsx("span", { style: S.frozenName, children: o.toolName }), _jsxs("span", { style: S.frozenMeta, children: [(o.bytes / 1000).toFixed(1), " KB"] })] }), expanded === o.id && _jsxs("pre", { style: S.preview, children: [o.content.slice(0, 600), o.content.length > 600 ? '…' : ''] })] }, o.id)))] })] }), _jsxs("div", { style: S.section, children: [_jsx("div", { style: S.rowHead, children: _jsx("span", { style: S.secLabel, children: "Compression" }) }), _jsxs("div", { style: S.compRow, children: [_jsx("select", { style: S.select, value: preset, onChange: (e) => { const m = e.target.value; setCompression(m); setPresetState(m); }, children: PRESETS.map((m) => _jsx("option", { value: m, children: m }, m)) }), _jsx("span", { style: S.secMeta, children: preset === 'off' ? 'never offloads' : `offload > ${(thr / 1000).toFixed(1)} KB at this fill` })] })] })] }) }));
92
+ }
93
+ function Legend({ c, k, v }) {
94
+ return _jsxs("span", { style: S.legItem, children: [_jsx("span", { style: { ...S.legDot, background: c } }), k, " ", _jsx("span", { style: S.legVal, children: v })] });
95
+ }
96
+ const mono = 'var(--font-mono)';
97
+ const S = {
98
+ panel: { flex: 1, minHeight: 0, minWidth: 0, display: 'flex', flexDirection: 'column', background: 'var(--surface-1)' },
99
+ body: { flex: 1, minHeight: 0, padding: 16, overflowY: 'auto', display: 'flex', flexDirection: 'column', gap: 16 },
100
+ section: { display: 'flex', flexDirection: 'column', gap: 8 },
101
+ rowHead: { display: 'flex', alignItems: 'baseline', justifyContent: 'space-between', gap: 10 },
102
+ secLabel: { fontSize: 'var(--fs-eyebrow)', fontWeight: 600, textTransform: 'uppercase', letterSpacing: '0.08em', color: 'var(--text-tertiary)' },
103
+ secMeta: { fontSize: 11.5, color: 'var(--text-tertiary)', fontFamily: mono, fontVariantNumeric: 'tabular-nums' },
104
+ actions: { display: 'inline-flex', alignItems: 'center', gap: 8 },
105
+ // budget
106
+ budgetHead: { display: 'flex', alignItems: 'center', justifyContent: 'space-between' },
107
+ bigNum: { fontSize: 22, fontWeight: 700, color: 'var(--text-primary)', fontFamily: mono, fontVariantNumeric: 'tabular-nums', letterSpacing: '-0.01em' },
108
+ bigDim: { color: 'var(--text-tertiary)', fontWeight: 500, fontSize: 15 },
109
+ pctChip: { fontSize: 12, fontWeight: 700, fontFamily: mono, color: 'var(--text-secondary)', background: 'var(--surface-3, var(--surface-2))', borderRadius: 'var(--radius-pill, 999px)', padding: '2px 9px' },
110
+ pctOver: { color: 'var(--danger)', background: 'var(--danger-soft)' },
111
+ barStack: { display: 'flex', height: 10, borderRadius: 999, background: 'var(--surface-3)', overflow: 'hidden' },
112
+ seg: { height: '100%', transition: 'width var(--motion-fast)' },
113
+ legend: { display: 'flex', flexWrap: 'wrap', alignItems: 'center', gap: 12 },
114
+ legItem: { display: 'inline-flex', alignItems: 'center', gap: 5, fontSize: 11.5, color: 'var(--text-secondary)' },
115
+ legDot: { width: 8, height: 8, borderRadius: 2, flexShrink: 0 },
116
+ legVal: { color: 'var(--text-tertiary)', fontFamily: mono, fontVariantNumeric: 'tabular-nums' },
117
+ lastRun: { marginLeft: 'auto', fontSize: 11, color: 'var(--text-disabled)', fontFamily: mono },
118
+ estNote: { fontSize: 10.5, color: 'var(--text-disabled)' },
119
+ // system chips
120
+ sourceLine: { fontSize: 11.5, color: 'var(--text-secondary)' },
121
+ sourceDim: { color: 'var(--text-tertiary)' },
122
+ sourceCode: { fontFamily: mono, fontSize: 11, color: 'var(--text-primary)', background: 'var(--surface-3, var(--surface-2))', borderRadius: 'var(--radius-xs, 3px)', padding: '1px 5px' },
123
+ chips: { display: 'flex', flexWrap: 'wrap', gap: 7 },
124
+ chip: (on) => ({ display: 'inline-flex', alignItems: 'center', gap: 6, padding: '5px 10px', borderRadius: 'var(--radius-sm)', border: `1px solid ${on ? 'var(--border-accent, var(--accent))' : 'var(--border-subtle)'}`, background: on ? 'var(--accent-soft)' : 'transparent', color: on ? 'var(--text-primary)' : 'var(--text-tertiary)', fontSize: 12.5, fontWeight: 600, cursor: 'pointer' }),
125
+ chipDot: (on) => ({ width: 7, height: 7, borderRadius: 999, background: on ? 'var(--accent)' : 'var(--border-default)' }),
126
+ // turns
127
+ miniBtn: { display: 'inline-flex', alignItems: 'center', gap: 4, height: 22, padding: '0 8px', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', color: 'var(--text-secondary)', fontSize: 11, fontWeight: 600, cursor: 'pointer' },
128
+ list: { display: 'flex', flexDirection: 'column', gap: 4, maxHeight: 220, overflowY: 'auto' },
129
+ empty: { fontSize: 12.5, color: 'var(--text-tertiary)', lineHeight: 1.5, padding: '4px 2px' },
130
+ turn: (inc) => ({ display: 'flex', alignItems: 'center', gap: 9, textAlign: 'left', padding: '8px 10px', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', background: inc ? 'var(--surface-2)' : 'transparent', color: inc ? 'var(--text-primary)' : 'var(--text-disabled)', cursor: 'pointer', opacity: inc ? 1 : 0.65 }),
131
+ check: (inc) => ({ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 16, height: 16, flexShrink: 0, borderRadius: 'var(--radius-xs)', border: `1px solid ${inc ? 'var(--accent)' : 'var(--border-default)'}`, background: inc ? 'var(--accent-soft)' : 'transparent', color: 'var(--accent)' }),
132
+ turnText: { flex: 1, fontSize: 12.5, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' },
133
+ turnMeta: { fontSize: 11, color: 'var(--text-tertiary)', fontFamily: mono, fontVariantNumeric: 'tabular-nums', flexShrink: 0 },
134
+ // compressed
135
+ frozenWrap: { display: 'flex', flexDirection: 'column', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', overflow: 'hidden' },
136
+ frozen: { display: 'flex', alignItems: 'center', gap: 7, padding: '7px 10px', border: 0, background: 'transparent', color: 'var(--text-secondary)', cursor: 'pointer', width: '100%', textAlign: 'left' },
137
+ chev: { display: 'inline-flex', color: 'var(--text-tertiary)', transition: 'transform var(--motion-fast)', flexShrink: 0 },
138
+ frozenName: { fontSize: 12.5, fontWeight: 600, color: 'var(--text-primary)', fontFamily: mono },
139
+ frozenMeta: { marginLeft: 'auto', fontSize: 11, color: 'var(--text-tertiary)', fontFamily: mono, fontVariantNumeric: 'tabular-nums' },
140
+ preview: { margin: 0, padding: '8px 10px', borderTop: '1px solid var(--border-subtle)', background: 'var(--surface-1)', color: 'var(--text-secondary)', fontFamily: mono, fontSize: 11, lineHeight: 1.5, whiteSpace: 'pre-wrap', wordBreak: 'break-word', maxHeight: 160, overflowY: 'auto' },
141
+ // compression
142
+ compRow: { display: 'flex', alignItems: 'center', gap: 10 },
143
+ select: { height: 30, padding: '0 8px', border: '1px solid var(--border-default)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', color: 'var(--text-primary)', fontSize: 12.5, fontFamily: 'inherit', fontWeight: 600, cursor: 'pointer', textTransform: 'capitalize' },
144
+ };
145
+ //# sourceMappingURL=ContextManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextManager.js","sourceRoot":"","sources":["../ContextManager.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare function Lightbox({ src, onClose }: {
3
+ src: string;
4
+ onClose: () => void;
5
+ }): React.JSX.Element;
6
+ //# sourceMappingURL=Lightbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../Lightbox.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAGzC,wBAAgB,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,qBAa9E"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /* Full-screen image preview. Click a thumbnail anywhere in the chat (composer
3
+ * attachment or a sent message) to expand here; close with the ✕, Escape, or by
4
+ * clicking the backdrop. Overlay blur + fade per the design system. */
5
+ import { useEffect } from 'react';
6
+ import { IcX } from '@corenel/ui-kit/icons';
7
+ export function Lightbox({ src, onClose }) {
8
+ useEffect(() => {
9
+ const onKey = (e) => { if (e.key === 'Escape')
10
+ onClose(); };
11
+ document.addEventListener('keydown', onKey);
12
+ return () => document.removeEventListener('keydown', onKey);
13
+ }, [onClose]);
14
+ return (_jsxs("div", { style: S.backdrop, className: "lightbox", onMouseDown: (e) => { if (e.target === e.currentTarget)
15
+ onClose(); }, children: [_jsx("button", { style: S.close, onClick: onClose, "aria-label": "Close preview", children: _jsx(IcX, { size: 20 }) }), _jsx("img", { src: src, alt: "Preview", style: S.img })] }));
16
+ }
17
+ const S = {
18
+ backdrop: { position: 'fixed', inset: 0, zIndex: 1100, display: 'flex', alignItems: 'center', justifyContent: 'center', padding: 32, background: 'var(--surface-overlay, rgba(8,12,20,0.72))', backdropFilter: 'blur(4px)' },
19
+ close: { position: 'absolute', top: 16, right: 16, display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 36, height: 36, border: '1px solid var(--border-default)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-1)', color: 'var(--text-primary)', cursor: 'pointer' },
20
+ img: { maxWidth: '92vw', maxHeight: '88vh', objectFit: 'contain', borderRadius: 'var(--radius-lg)', boxShadow: 'var(--shadow-5, 0 24px 64px rgba(0,0,0,0.5))' },
21
+ };
22
+ //# sourceMappingURL=Lightbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Lightbox.js","sourceRoot":"","sources":["../Lightbox.tsx"],"names":[],"mappings":";AAAA;;uEAEuE;AACvE,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE5C,MAAM,UAAU,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,EAAwC;IAC7E,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3E,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,eAAK,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAC,UAAU,EAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,aAAa;YAAE,OAAO,EAAE,CAAC,CAAC,CAAC,aAC/G,iBAAQ,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,gBAAa,eAAe,YAAC,KAAC,GAAG,IAAC,IAAI,EAAE,EAAE,GAAI,GAAS,EAC/F,cAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAC,SAAS,EAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAI,IACzC,CACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,GAAwC;IAC7C,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,4CAA4C,EAAE,cAAc,EAAE,WAAW,EAAE;IAC5N,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,SAAS,EAAE;IAChT,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,8CAA8C,EAAE;CAChK,CAAC"}
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ export declare function CopyBtn({ text, title }: {
3
+ text: string;
4
+ title?: string;
5
+ }): React.JSX.Element;
6
+ export declare function CodeBlock({ lang, code }: {
7
+ lang: string;
8
+ code: string;
9
+ }): React.JSX.Element;
10
+ export declare function Markdown({ text }: {
11
+ text: string;
12
+ }): React.JSX.Element;
13
+ /** Render a model's OUTPUT richly: a response that is ENTIRELY a JSON payload or a
14
+ * bare mermaid diagram (no ``` fence — the common case when a prompt's whole job is
15
+ * to emit one) renders as a pretty/highlighted block or a diagram; anything else
16
+ * (prose, or text with fenced blocks) goes through Markdown, which already turns
17
+ * ```json / ```mermaid fences into the same rich blocks. */
18
+ export declare function RichOutput({ text }: {
19
+ text: string;
20
+ }): React.JSX.Element | null;
21
+ /** Render a tool's result with the most useful view for its content/type. */
22
+ export declare function RichResult({ name, args, result }: {
23
+ name: string;
24
+ args: Record<string, unknown>;
25
+ result: string;
26
+ }): React.JSX.Element;
27
+ //# sourceMappingURL=RichContent.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,267 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /* Rich rendering for chat content — markdown, fenced code (JSON / JS / YAML / …),
3
+ * and mermaid diagrams — so the transcript shows results instead of raw dumps.
4
+ *
5
+ * - Markdown: splits ``` fences out of the prose so each code block renders as a
6
+ * real CodeBlock (and ```mermaid as a diagram); the prose runs through mdToHtml.
7
+ * - CodeBlock: a titled, copyable block with lightweight, dependency-free syntax
8
+ * highlighting (JSON gets a dedicated tokenizer; everything else a conservative
9
+ * strings/comments/numbers/keywords pass) and reuses the editor's token palette.
10
+ * - DiagramBlock: lazy-loads mermaid (kept out of the main bundle) and renders the
11
+ * SVG, falling back to the source on a parse error.
12
+ * - RichResult: picks the right renderer for a tool result from the tool + path. */
13
+ import { useEffect, useMemo, useRef, useState } from 'react';
14
+ import { mdToHtml, highlightPrmd } from '@corenel/ui-kit/ui-helpers';
15
+ import { getTheme } from '@corenel/ui-kit/theme';
16
+ import { colorizeToHtml } from '@corenel/ui-kit/monacoColorize';
17
+ import { IcCopy, IcCheck } from '@corenel/ui-kit/icons';
18
+ const esc = (s) => s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
19
+ /** Mermaid graph headers — used to detect a diagram with no explicit ```mermaid fence. */
20
+ const MERMAID_RE = /^\s*(?:graph|flowchart|sequenceDiagram|classDiagram|stateDiagram(?:-v2)?|erDiagram|journey|gantt|pie|mindmap|timeline|gitGraph|quadrantChart|requirementDiagram|C4Context|sankey-beta|xychart-beta)\b/;
21
+ function looksJson(s) {
22
+ const t = s.trim();
23
+ if (!(t.startsWith('{') || t.startsWith('[')))
24
+ return false;
25
+ try {
26
+ JSON.parse(t);
27
+ return true;
28
+ }
29
+ catch {
30
+ return false;
31
+ }
32
+ }
33
+ function prettyJson(s) { try {
34
+ return JSON.stringify(JSON.parse(s), null, 2);
35
+ }
36
+ catch {
37
+ return s;
38
+ } }
39
+ /* ---- highlighters (HTML strings; classes reuse the editor token palette) ---- */
40
+ /** JSON: keys vs string values, numbers, and literals get distinct tokens. */
41
+ function highlightJson(src) {
42
+ const re = /"(?:\\.|[^"\\])*"(\s*:)?|-?\b\d+\.?\d*(?:[eE][+-]?\d+)?\b|\b(?:true|false|null)\b/g;
43
+ let out = '';
44
+ let last = 0;
45
+ let m;
46
+ while ((m = re.exec(src))) {
47
+ out += esc(src.slice(last, m.index));
48
+ const tok = m[0];
49
+ if (tok.startsWith('"')) {
50
+ if (m[1])
51
+ out += `<span class=k>${esc(tok.slice(0, tok.length - m[1].length))}</span>${esc(m[1])}`;
52
+ else
53
+ out += `<span class=s>${esc(tok)}</span>`;
54
+ }
55
+ else if (/^(?:true|false|null)$/.test(tok))
56
+ out += `<span class=k>${esc(tok)}</span>`;
57
+ else
58
+ out += `<span class=cn>${esc(tok)}</span>`;
59
+ last = re.lastIndex;
60
+ }
61
+ out += esc(src.slice(last));
62
+ return out;
63
+ }
64
+ const KEYWORDS = new Set('const let var function return if else for while do switch case break continue new class extends import from export default async await try catch finally throw typeof instanceof in of this super yield void delete public private protected static interface type enum namespace as def elif lambda print None True False and or not nil func package range select go defer map struct fn impl pub use mod match'.split(' '));
65
+ const HASH_COMMENT_LANGS = new Set(['yaml', 'yml', 'sh', 'bash', 'shell', 'py', 'python', 'rb', 'ruby', 'toml', 'ini', 'conf', 'r', 'pl']);
66
+ /** A conservative, language-agnostic pass: comments, strings, numbers, keywords.
67
+ * Single regex alternation in priority order so tokens never nest or double-escape. */
68
+ function highlightCode(src, lang) {
69
+ const hash = HASH_COMMENT_LANGS.has(lang) ? '|#[^\\n]*' : '';
70
+ const re = new RegExp(`(\\/\\/[^\\n]*|\\/\\*[\\s\\S]*?\\*\\/${hash})|("(?:\\\\.|[^"\\\\])*"|'(?:\\\\.|[^'\\\\])*'|\`(?:\\\\.|[^\`\\\\])*\`)|(\\b-?\\d+\\.?\\d*(?:[eE][+-]?\\d+)?\\b)|([A-Za-z_$][\\w$]*)`, 'g');
71
+ let out = '';
72
+ let last = 0;
73
+ let m;
74
+ while ((m = re.exec(src))) {
75
+ out += esc(src.slice(last, m.index));
76
+ if (m[1])
77
+ out += `<span class=cm>${esc(m[1])}</span>`;
78
+ else if (m[2])
79
+ out += `<span class=s>${esc(m[2])}</span>`;
80
+ else if (m[3])
81
+ out += `<span class=cn>${esc(m[3])}</span>`;
82
+ else if (m[4] && KEYWORDS.has(m[4]))
83
+ out += `<span class=k>${esc(m[4])}</span>`;
84
+ else
85
+ out += esc(m[0]);
86
+ last = re.lastIndex;
87
+ }
88
+ out += esc(src.slice(last));
89
+ return out;
90
+ }
91
+ function highlight(lang, code) {
92
+ if (lang === 'json' || (!lang && looksJson(code)))
93
+ return highlightJson(code);
94
+ if (lang === 'prmd' || lang === 'prompd')
95
+ return highlightPrmd(code);
96
+ return highlightCode(code, lang);
97
+ }
98
+ /* ---- copy button ---- */
99
+ export function CopyBtn({ text, title = 'Copy' }) {
100
+ const [done, setDone] = useState(false);
101
+ const copy = () => {
102
+ navigator.clipboard?.writeText(text).then(() => { setDone(true); setTimeout(() => setDone(false), 1200); }).catch(() => { });
103
+ };
104
+ return (_jsx("button", { style: S.copyBtn, onClick: copy, title: title, "aria-label": title, children: done ? _jsx(IcCheck, { size: 12 }) : _jsx(IcCopy, { size: 12 }) }));
105
+ }
106
+ let mermaidReady = null;
107
+ function loadMermaid() {
108
+ if (!mermaidReady) {
109
+ mermaidReady = import('mermaid').then((m) => {
110
+ const api = m.default;
111
+ api.initialize({ startOnLoad: false, securityLevel: 'strict', theme: getTheme() === 'light' ? 'default' : 'dark' });
112
+ return api;
113
+ });
114
+ }
115
+ return mermaidReady;
116
+ }
117
+ let mmdSeq = 0;
118
+ function DiagramBlock({ code }) {
119
+ const [svg, setSvg] = useState('');
120
+ const [err, setErr] = useState(false);
121
+ const idRef = useRef(`mmd-${++mmdSeq}`);
122
+ useEffect(() => {
123
+ let alive = true;
124
+ setErr(false);
125
+ loadMermaid()
126
+ .then((m) => m.render(idRef.current, code))
127
+ .then(({ svg }) => { if (alive)
128
+ setSvg(svg); })
129
+ .catch(() => { if (alive)
130
+ setErr(true); });
131
+ return () => { alive = false; };
132
+ }, [code]);
133
+ if (err)
134
+ return _jsx("pre", { style: S.pre, children: _jsx("code", { className: "cb-code", dangerouslySetInnerHTML: { __html: highlightCode(code, '') } }) });
135
+ if (!svg)
136
+ return _jsx("div", { style: S.diagramLoading, children: "rendering diagram\u2026" });
137
+ return (_jsxs("div", { style: S.diagramWrap, children: [_jsx("div", { style: S.diagram, className: "mermaid-diagram", dangerouslySetInnerHTML: { __html: svg } }), _jsxs("div", { style: S.diagramBar, children: [_jsx("span", { style: S.cbLang, children: "mermaid" }), _jsx(CopyBtn, { text: code, title: "Copy diagram source" })] })] }));
138
+ }
139
+ /* ---- code block ---- */
140
+ export function CodeBlock({ lang, code }) {
141
+ const isMermaid = lang === 'mermaid' || (!lang && MERMAID_RE.test(code.trim()));
142
+ // Immediate, synchronous highlight (dependency-free) — shown right away and kept
143
+ // as the fallback for languages Monaco's tokenizer doesn't cover.
144
+ const base = useMemo(() => (isMermaid ? '' : highlight(lang, code)), [isMermaid, lang, code]);
145
+ const [html, setHtml] = useState(base);
146
+ // Progressive enhancement: swap in Monaco's tokenizer output when it resolves
147
+ // (same engine + theme as the editor), and re-run on theme flips so colors track.
148
+ useEffect(() => {
149
+ setHtml(base);
150
+ if (isMermaid)
151
+ return;
152
+ let alive = true;
153
+ const enhance = () => {
154
+ colorizeToHtml(code, lang || (looksJson(code) ? 'json' : '')).then((mh) => { if (alive && mh)
155
+ setHtml(mh); });
156
+ };
157
+ enhance();
158
+ window.addEventListener('prompd:theme-changed', enhance);
159
+ return () => { alive = false; window.removeEventListener('prompd:theme-changed', enhance); };
160
+ }, [base, isMermaid, lang, code]);
161
+ if (isMermaid)
162
+ return _jsx(DiagramBlock, { code: code.trim() });
163
+ const shown = lang || (looksJson(code) ? 'json' : 'text');
164
+ return (_jsxs("div", { style: S.cbWrap, children: [_jsxs("div", { style: S.cbBar, children: [_jsx("span", { style: S.cbLang, children: shown }), _jsx(CopyBtn, { text: code, title: "Copy code" })] }), _jsx("pre", { style: S.cbPre, children: _jsx("code", { className: "cb-code", dangerouslySetInnerHTML: { __html: html } }) })] }));
165
+ }
166
+ function splitFences(text) {
167
+ const out = [];
168
+ const re = /```([\w-]*)\n([\s\S]*?)```/g;
169
+ let last = 0;
170
+ let m;
171
+ while ((m = re.exec(text))) {
172
+ if (m.index > last) {
173
+ const t = text.slice(last, m.index);
174
+ if (t.trim())
175
+ out.push({ type: 'md', text: t });
176
+ }
177
+ out.push({ type: 'code', lang: (m[1] || '').toLowerCase(), code: m[2].replace(/\n$/, '') });
178
+ last = re.lastIndex;
179
+ }
180
+ if (last < text.length) {
181
+ const t = text.slice(last);
182
+ if (t.trim())
183
+ out.push({ type: 'md', text: t });
184
+ }
185
+ return out.length ? out : [{ type: 'md', text }];
186
+ }
187
+ export function Markdown({ text }) {
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))) }));
192
+ }
193
+ /* ---- free-form output ---- */
194
+ /** Stricter than MERMAID_RE for whole-output detection: the FIRST line must be a
195
+ * clean mermaid header (case-sensitive — the keywords are lowercase/camelCase), so
196
+ * prose that merely starts with a word like "Timeline:", "Pie charts…", or "Graph
197
+ * of results" isn't mistaken for a diagram. Fenced ```mermaid still renders via
198
+ * Markdown -> CodeBlock regardless. */
199
+ const MERMAID_HEADER = /^(?:sequenceDiagram|classDiagram|stateDiagram(?:-v2)?|erDiagram|journey|gitGraph|mindmap|timeline|quadrantChart|requirementDiagram|C4Context|sankey-beta|xychart-beta)\s*$|^(?:graph|flowchart)\s+(?:TB|TD|BT|RL|LR)\b|^pie(?:\s+(?:title|showData)\b|\s*$)|^gantt\s*$/;
200
+ function looksBareMermaid(s) {
201
+ return MERMAID_HEADER.test((s.split('\n', 1)[0] || '').trim());
202
+ }
203
+ /** Render a model's OUTPUT richly: a response that is ENTIRELY a JSON payload or a
204
+ * bare mermaid diagram (no ``` fence — the common case when a prompt's whole job is
205
+ * to emit one) renders as a pretty/highlighted block or a diagram; anything else
206
+ * (prose, or text with fenced blocks) goes through Markdown, which already turns
207
+ * ```json / ```mermaid fences into the same rich blocks. */
208
+ export function RichOutput({ text }) {
209
+ const t = (text || '').trim();
210
+ if (!t)
211
+ return null;
212
+ if (looksBareMermaid(t))
213
+ return _jsx(DiagramBlock, { code: t });
214
+ // Parse once: a whole-output JSON object/array renders as a pretty code block.
215
+ if (t.startsWith('{') || t.startsWith('[')) {
216
+ try {
217
+ return _jsx(CodeBlock, { lang: "json", code: JSON.stringify(JSON.parse(t), null, 2) });
218
+ }
219
+ catch { /* not JSON — fall through to prose */ }
220
+ }
221
+ return _jsx(Markdown, { text: text });
222
+ }
223
+ /* ---- tool result ---- */
224
+ 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']);
225
+ /** Render a tool's result with the most useful view for its content/type. */
226
+ export function RichResult({ name, args, result }) {
227
+ const r = result || '';
228
+ if (!r)
229
+ return _jsx("pre", { style: S.pre, children: "(empty)" });
230
+ if (/^error:/i.test(r.trim()))
231
+ return _jsx("pre", { style: S.preErr, children: r });
232
+ // The compiled prompt is meant to be read — render it as markdown.
233
+ if (name === 'compile_prompd')
234
+ return _jsx(Markdown, { text: r });
235
+ if (MERMAID_RE.test(r.trim()))
236
+ return _jsx(DiagramBlock, { code: r.trim() });
237
+ if (looksJson(r))
238
+ return _jsx(CodeBlock, { lang: "json", code: prettyJson(r) });
239
+ if (name === 'read_file') {
240
+ const ext = (typeof args.path === 'string' ? args.path.split('.').pop() || '' : '').toLowerCase();
241
+ if (ext === 'md' || ext === 'markdown')
242
+ return _jsx(Markdown, { text: r });
243
+ if (ext === 'json')
244
+ return _jsx(CodeBlock, { lang: "json", code: r });
245
+ if (ext === 'prmd' || ext === 'prompd')
246
+ return _jsx(CodeBlock, { lang: "prmd", code: r });
247
+ if (CODE_EXT.has(ext))
248
+ return _jsx(CodeBlock, { lang: ext, code: r });
249
+ }
250
+ return _jsx("pre", { style: S.pre, children: r });
251
+ }
252
+ const mono = 'var(--font-mono)';
253
+ const S = {
254
+ md: { fontSize: 14, lineHeight: 1.6, color: 'var(--text-primary)' },
255
+ cbWrap: { border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-1)', overflow: 'hidden', margin: '0 0 8px' },
256
+ cbBar: { display: 'flex', alignItems: 'center', height: 26, padding: '0 6px 0 10px', borderBottom: '1px solid var(--border-subtle)', background: 'var(--surface-2)' },
257
+ cbLang: { fontFamily: mono, fontSize: 10.5, textTransform: 'uppercase', letterSpacing: '0.06em', color: 'var(--text-tertiary)', marginRight: 'auto' },
258
+ cbPre: { margin: 0, padding: 10, fontFamily: mono, fontSize: 11.5, lineHeight: 1.55, color: 'var(--text-secondary)', whiteSpace: 'pre', overflow: 'auto', maxHeight: 320 },
259
+ pre: { margin: 0, padding: 10, background: 'var(--surface-1)', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', fontFamily: mono, fontSize: 11.5, lineHeight: 1.5, color: 'var(--text-secondary)', whiteSpace: 'pre-wrap', wordBreak: 'break-word', maxHeight: 320, overflow: 'auto' },
260
+ preErr: { margin: 0, padding: 10, background: 'var(--danger-soft)', border: '1px solid var(--danger)', borderRadius: 'var(--radius-sm)', fontFamily: mono, fontSize: 11.5, lineHeight: 1.5, color: 'var(--danger)', whiteSpace: 'pre-wrap', wordBreak: 'break-word', maxHeight: 320, overflow: 'auto' },
261
+ copyBtn: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 22, height: 22, border: 0, borderRadius: 'var(--radius-xs)', background: 'transparent', color: 'var(--text-tertiary)', cursor: 'pointer', flexShrink: 0 },
262
+ diagramWrap: { border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-1)', overflow: 'hidden', margin: '0 0 8px' },
263
+ diagram: { display: 'flex', justifyContent: 'center', padding: 14, overflow: 'auto' },
264
+ diagramBar: { display: 'flex', alignItems: 'center', height: 26, padding: '0 6px 0 10px', borderTop: '1px solid var(--border-subtle)', background: 'var(--surface-2)' },
265
+ diagramLoading: { padding: 14, fontFamily: mono, fontSize: 11.5, color: 'var(--text-tertiary)', textAlign: 'center', border: '1px dashed var(--border-subtle)', borderRadius: 'var(--radius-sm)', margin: '0 0 8px' },
266
+ };
267
+ //# sourceMappingURL=RichContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichContent.js","sourceRoot":"","sources":["../RichContent.tsx"],"names":[],"mappings":"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"}