@corenel/web-ui 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/AskUser.d.ts.map +1 -1
  2. package/dist/AskUser.js +48 -12
  3. package/dist/AskUser.js.map +1 -1
  4. package/dist/Composer.d.ts +7 -1
  5. package/dist/Composer.d.ts.map +1 -1
  6. package/dist/Composer.js +20 -6
  7. package/dist/Composer.js.map +1 -1
  8. package/dist/ContextBar.d.ts +9 -1
  9. package/dist/ContextBar.d.ts.map +1 -1
  10. package/dist/ContextBar.js +3 -3
  11. package/dist/ContextBar.js.map +1 -1
  12. package/dist/ContextManager.d.ts +78 -2
  13. package/dist/ContextManager.d.ts.map +1 -1
  14. package/dist/ContextManager.js +175 -51
  15. package/dist/ContextManager.js.map +1 -1
  16. package/dist/Lightbox.d.ts.map +1 -1
  17. package/dist/Lightbox.js +2 -10
  18. package/dist/Lightbox.js.map +1 -1
  19. package/dist/RichContent.d.ts +4 -2
  20. package/dist/RichContent.d.ts.map +1 -1
  21. package/dist/RichContent.js +12 -7
  22. package/dist/RichContent.js.map +1 -1
  23. package/dist/Transcript.d.ts +2 -1
  24. package/dist/Transcript.d.ts.map +1 -1
  25. package/dist/Transcript.js +6 -6
  26. package/dist/Transcript.js.map +1 -1
  27. package/dist/agentChat/AgentChat.d.ts +122 -0
  28. package/dist/agentChat/AgentChat.d.ts.map +1 -0
  29. package/dist/agentChat/AgentChat.js +527 -0
  30. package/dist/agentChat/AgentChat.js.map +1 -0
  31. package/dist/agentChat/OptionsDrawer.d.ts +81 -0
  32. package/dist/agentChat/OptionsDrawer.d.ts.map +1 -0
  33. package/dist/agentChat/OptionsDrawer.js +321 -0
  34. package/dist/agentChat/OptionsDrawer.js.map +1 -0
  35. package/dist/agentChat/SkillsSection.d.ts +3 -0
  36. package/dist/agentChat/SkillsSection.d.ts.map +1 -0
  37. package/dist/agentChat/SkillsSection.js +86 -0
  38. package/dist/agentChat/SkillsSection.js.map +1 -0
  39. package/dist/agentChat/controller.d.ts +93 -0
  40. package/dist/agentChat/controller.d.ts.map +1 -0
  41. package/dist/agentChat/controller.js +25 -0
  42. package/dist/agentChat/controller.js.map +1 -0
  43. package/dist/agentChat/skillRunner.d.ts +14 -0
  44. package/dist/agentChat/skillRunner.d.ts.map +1 -0
  45. package/dist/agentChat/skillRunner.js +4 -0
  46. package/dist/agentChat/skillRunner.js.map +1 -0
  47. package/dist/toolRender.d.ts +8 -0
  48. package/dist/toolRender.d.ts.map +1 -1
  49. package/dist/toolRender.js +7 -1
  50. package/dist/toolRender.js.map +1 -1
  51. package/package.json +16 -21
@@ -1,23 +1,12 @@
1
- import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
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
3
  import { effectiveThreshold } from '@corenel/harness/compression';
6
4
  import { getCompression, setCompression } from '@corenel/ui-kit/theme';
7
5
  import { getSystemParts, setSystemParts } from '@corenel/harness/systemParts';
8
6
  import { allTools } from '@corenel/harness/tools/builtins';
9
7
  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). */
8
+ import { estimateTokens, tokenCountsVersion } from '@corenel/ui-kit/ui-helpers';
9
+ import { IcTrash, IcZap, IcChevron } from '@corenel/ui-kit/icons';
21
10
  const PARTS = [
22
11
  { key: 'persona', label: 'Persona', est: 300 },
23
12
  { key: 'mode', label: 'Mode', est: 200 },
@@ -26,16 +15,105 @@ const PARTS = [
26
15
  ];
27
16
  const SYS_BASE_EST = 600; // systems/system-base.md baseline (always included)
28
17
  const PRESETS = ['off', 'conservative', 'balanced', 'aggressive'];
29
- function turnTokens(t) {
18
+ /* With BPE enabled, a turn count is a full encode of the turn's text (including
19
+ * inline tool outputs — MBs on long sessions), and useContextProjection runs in
20
+ * BOTH the collapsed ContextBar and the drawer body, whose memos don't share.
21
+ * Cache per messages-array identity (turn message arrays are immutable once
22
+ * committed) so mounting the drawer never re-encodes the whole conversation;
23
+ * re-count when the counter itself upgrades (heuristic -> BPE). */
24
+ const turnTokCache = new WeakMap();
25
+ export function turnTokens(t) {
26
+ const ver = tokenCountsVersion();
27
+ const hit = turnTokCache.get(t.messages);
28
+ if (hit && hit.ver === ver)
29
+ return hit.tok;
30
30
  let s = '';
31
31
  for (const m of t.messages)
32
32
  s += typeof m.content === 'string' ? m.content : JSON.stringify(m.content ?? '');
33
- return estimateTokens(s);
33
+ const tok = estimateTokens(s);
34
+ turnTokCache.set(t.messages, { ver, tok });
35
+ return tok;
36
+ }
37
+ /** Pull readable text from a message's content, which may be a plain string or
38
+ * an array of parts (multimodal turns carry `[{type:'text',text},{type:'image'…}]`). */
39
+ function textOf(content) {
40
+ if (typeof content === 'string')
41
+ return content;
42
+ if (Array.isArray(content)) {
43
+ return content
44
+ .map((p) => (p && typeof p === 'object' && typeof p.text === 'string' ? p.text : ''))
45
+ .join(' ');
46
+ }
47
+ return '';
34
48
  }
35
49
  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)';
50
+ const user = t.messages.find((m) => m.role === 'user');
51
+ const assistant = t.messages.find((m) => m.role === 'assistant');
52
+ const text = (textOf(user?.content) || textOf(assistant?.content)).trim();
53
+ return text.slice(0, 80) || 'Untitled turn';
54
+ }
55
+ /* ---- offload -> turn attribution ----
56
+ * Turn ids encode their creation time (`t${Date.now().toString(36)}`, both
57
+ * hosts), and every OffloadedRecord carries createdAt — so offloads bucket into the
58
+ * turn whose time window they fall in without any new plumbing. Unparseable ids
59
+ * or records older than the first turn land in `earlier` (prior sessions). */
60
+ /** Decode the start timestamp from a turn id; null when the id isn't time-encoded. */
61
+ export function turnStartMs(id) {
62
+ const m = /^t([0-9a-z]+)$/.exec(id);
63
+ if (!m)
64
+ return null;
65
+ const n = parseInt(m[1], 36);
66
+ return Number.isFinite(n) && n > 0 ? n : null;
67
+ }
68
+ const kb = (bytes) => `${(bytes / 1000).toFixed(1)} KB`;
69
+ // Offloads are measured in bytes; the window speaks tokens — show both at the
70
+ // same ~4 chars/token heuristic the budget projection uses.
71
+ const tokOf = (bytes) => `~${fmtTok(Math.ceil(bytes / 4))} tok`;
72
+ /** Bucket offloaded records under the turn whose time window they fall in
73
+ * (turn ids encode Date.now() base36; records carry createdAt). Records older
74
+ * than the first turn or under unparseable ids are `unattached`. */
75
+ export function bucketOffloads(records, turns) {
76
+ const starts = turns
77
+ .map((t) => ({ id: t.id, at: turnStartMs(t.id) }))
78
+ .filter((x) => x.at != null)
79
+ .sort((a, b) => a.at - b.at);
80
+ const byTurn = new Map();
81
+ const unattached = [];
82
+ for (const r of [...records].sort((a, b) => a.createdAt - b.createdAt)) {
83
+ let owner = null;
84
+ for (let i = 0; i < starts.length; i++) {
85
+ const next = starts[i + 1];
86
+ if (r.createdAt >= starts[i].at && (!next || r.createdAt < next.at)) {
87
+ owner = starts[i].id;
88
+ break;
89
+ }
90
+ }
91
+ if (owner == null) {
92
+ unattached.push(r);
93
+ continue;
94
+ }
95
+ if (!byTurn.has(owner))
96
+ byTurn.set(owner, []);
97
+ byTurn.get(owner).push(r);
98
+ }
99
+ return { byTurn, unattached };
100
+ }
101
+ /** One offloaded record under NOT SENT: zap + tool + size + source-turn
102
+ * attribution, an optional Restore action, and the expandable preview. */
103
+ export function OffloadRow({ record, fromLabel, sourceDropped, onRestore, note }) {
104
+ const [open, setOpen] = useState(false);
105
+ return (_jsxs("div", { style: S.offWrap, children: [_jsxs("div", { style: S.off, children: [_jsxs("button", { style: S.offMain, onClick: () => setOpen((o) => !o), title: `Show a preview of the frozen content (${tokOf(record.bytes)})`, children: [_jsx("span", { style: { ...S.chev, transform: open ? 'rotate(90deg)' : 'none' }, children: _jsx(IcChevron, { size: 12 }) }), _jsx("span", { style: S.zap, children: _jsx(IcZap, { size: 11 }) }), _jsx("span", { style: S.offName, children: record.toolName }), _jsx("span", { style: S.offMeta, children: kb(record.bytes) }), fromLabel && _jsxs("span", { style: S.offFrom, title: fromLabel, children: ["from \u201C", fromLabel.slice(0, 32), fromLabel.length > 32 ? '…' : '', "\u201D"] })] }), onRestore && (_jsx("button", { style: S.turnAction, onClick: onRestore, title: sourceDropped
106
+ ? 'Restore the full content into its turn (replaces the stub; removes this frozen copy). That turn is currently dropped — restore the turn too for the model to see it.'
107
+ : 'Restore the full content into its turn in the window (replaces the stub; removes this frozen copy)', children: "Restore" }))] }), note && _jsx("div", { style: S.offNote, children: note }), open && _jsxs("pre", { style: S.preview, children: [record.content.slice(0, 600), record.content.length > 600 ? '…' : ''] })] }));
108
+ }
109
+ /** A turn under SENT TO THE MODEL: clean card + an optional dimmed chip when
110
+ * this turn's large outputs were offloaded (pointer to Not sent, not a container). */
111
+ export function SentTurnCard({ turn, tok, frozenBytes, onDrop }) {
112
+ return (_jsxs("div", { style: S.turnCardHead, children: [_jsx("span", { style: S.turnText, children: turnLabel(turn) }), frozenBytes > 0 && (_jsxs("span", { style: S.frozenChip, title: "This turn's large outputs were offloaded \u2014 a stub is in the window; see Not sent.", children: [_jsx(IcZap, { size: 10 }), " ", kb(frozenBytes)] })), _jsx("span", { style: S.turnMeta, children: fmtTok(tok) }), _jsx("button", { style: S.turnAction, onClick: onDrop, title: "Drop this turn \u2014 it moves to Not sent and is not sent to the model", children: "Drop" })] }));
113
+ }
114
+ /** A dropped turn under NOT SENT. */
115
+ export function DroppedTurnRow({ turn, tok, onRestore }) {
116
+ return (_jsxs("div", { style: S.turnCardHead, children: [_jsx("span", { style: { ...S.turnText, color: 'var(--text-tertiary)' }, children: turnLabel(turn) }), _jsx("span", { style: S.turnMeta, children: fmtTok(tok) }), _jsx("button", { style: S.turnAction, onClick: onRestore, title: "Include this turn \u2014 it moves back into the window and is sent to the model", children: "Restore" })] }));
39
117
  }
40
118
  /**
41
119
  * Live projected context composition: system prompt (base + enabled parts) + the
@@ -44,8 +122,8 @@ function turnLabel(t) {
44
122
  * ContextBar and the expanded drawer so they always agree (the collapsed bar used
45
123
  * to read the last run's tokens, which only changed after a completed run).
46
124
  */
47
- export function useContextProjection(contextWindow, parts) {
48
- const { turns } = useConversation();
125
+ export function useContextProjection(contextWindow, parts, conversation) {
126
+ const turns = conversation.turns;
49
127
  const toolsTok = useMemo(() => estimateTokens(JSON.stringify(allTools().map((t) => ({ name: t.name, description: t.description, parameters: t.parameters })))), []);
50
128
  const partTok = (key) => (key === 'tools' ? toolsTok : (PARTS.find((p) => p.key === key)?.est ?? 0));
51
129
  const systemTok = SYS_BASE_EST + PARTS.reduce((n, p) => n + (parts[p.key] ? partTok(p.key) : 0), 0);
@@ -60,11 +138,12 @@ export function useContextProjection(contextWindow, parts) {
60
138
  includedCount: perTurn.filter((x) => x.t.included).length,
61
139
  };
62
140
  }
63
- export function ContextManagerBody({ contextWindow, parts: partsProp, onToggle, systemSource }) {
141
+ export function ContextManagerBody({ contextWindow, parts: partsProp, onToggle, systemSource, offloaded: offloadedSource, conversation, usageSurface = 'agent' }) {
64
142
  const { records } = useUsage();
65
- const { toggleInclude } = useConversation();
143
+ const { toggleInclude, restoreToolResult } = conversation;
66
144
  const [offloaded, setOffloaded] = useState([]);
67
- const [expanded, setExpanded] = useState(null);
145
+ const [restoreNotes, setRestoreNotes] = useState({});
146
+ const [sysOpen, setSysOpen] = useState(false);
68
147
  const [preset, setPresetState] = useState(getCompression);
69
148
  const [localParts, setLocalParts] = useState(getSystemParts);
70
149
  const parts = partsProp ?? localParts;
@@ -74,21 +153,53 @@ export function ContextManagerBody({ contextWindow, parts: partsProp, onToggle,
74
153
  else
75
154
  setLocalParts((p) => { const next = { ...p, [k]: !p[k] }; setSystemParts(next); return next; });
76
155
  };
77
- const refresh = () => { listRecall().then(setOffloaded).catch(() => setOffloaded([])); };
78
- useEffect(refresh, []);
79
- const lastAgent = records.find((r) => r.surface === 'agent');
156
+ const refresh = () => {
157
+ setRestoreNotes({}); // a fresh list supersedes any stale failed-restore note
158
+ (offloadedSource?.list() ?? Promise.resolve([])).then(setOffloaded).catch(() => setOffloaded([]));
159
+ };
160
+ useEffect(refresh, [offloadedSource]);
161
+ const lastAgent = records.find((r) => r.surface === usageSurface);
80
162
  // ---- projected composition (estimate) — shared with the collapsed ContextBar ----
81
- const { turns, partTok, systemTok, perTurn, turnsTok, projected, pct, over, includedCount } = useContextProjection(contextWindow, parts);
163
+ const { turns, partTok, systemTok, perTurn, turnsTok, projected, pct, over, includedCount } = useContextProjection(contextWindow, parts, conversation);
82
164
  const w = Math.max(1, contextWindow);
83
165
  const sysPct = Math.min(100, (systemTok / w) * 100);
84
166
  const turnPct = Math.min(100 - sysPct, (turnsTok / w) * 100);
85
167
  const reclaimedBytes = offloaded.reduce((n, o) => n + o.bytes, 0);
86
168
  const thr = effectiveThreshold(preset, projected / w);
169
+ const { byTurn, unattached } = useMemo(() => bucketOffloads(offloaded, turns), [offloaded, turns]);
170
+ const warmTurns = perTurn.filter((x) => x.t.included);
171
+ const coldTurns = perTurn.filter((x) => !x.t.included);
172
+ const offParts = PARTS.filter((p) => !parts[p.key]);
173
+ const attributed = [...byTurn.entries()].flatMap(([turnId, recs]) => {
174
+ const t = turns.find((x) => x.id === turnId);
175
+ const label = t ? turnLabel(t) : null;
176
+ const sourceDropped = t ? !t.included : false;
177
+ return recs.map((r) => ({ r, turnId, label, sourceDropped }));
178
+ });
179
+ const partsTok = offParts.reduce((n, p) => n + partTok(p.key), 0); // DISABLED SYSTEM PARTS estimate — not offloads
180
+ const droppedTok = coldTurns.reduce((n, x) => n + x.tok, 0);
181
+ const frozenBytesFor = (id) => (byTurn.get(id) ?? []).reduce((n, r) => n + r.bytes, 0);
182
+ const notSentEmpty = offParts.length === 0 && coldTurns.length === 0 && offloaded.length === 0;
183
+ const restore = async (turnId, r) => {
184
+ if (!offloadedSource)
185
+ return;
186
+ if (restoreToolResult(turnId, r.id, r.content)) {
187
+ // Optimistic: the stub in the turn is already gone, so a failed blob delete
188
+ // below can't resurrect a row whose stub no longer exists (which would show
189
+ // a misleading "stub not found" on retry).
190
+ setOffloaded((prev) => prev.filter((x) => x.id !== r.id));
191
+ await offloadedSource.remove(r.id).catch(() => { });
192
+ refresh();
193
+ }
194
+ else {
195
+ setRestoreNotes((n) => ({ ...n, [r.id]: 'stub not found in the turn — content kept here' }));
196
+ }
197
+ };
87
198
  const setAll = (inc) => perTurn.forEach((x) => { if (x.t.included !== inc)
88
199
  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` })] })] })] }) }));
200
+ 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: "Warm turns", v: fmtTok(turnsTok) }), _jsx(Legend, { c: "var(--surface-3)", k: "Free", v: fmtTok(Math.max(0, contextWindow - projected)) }), reclaimedBytes > 0 && (_jsxs("span", { style: S.savedChip, title: "Offloaded tool outputs \u2014 frozen out of the window, recoverable on demand", children: [_jsx("span", { style: S.zap, children: _jsx(IcZap, { size: 11 }) }), _jsx("b", { style: S.savedNum, children: kb(reclaimedBytes) }), "\u00A0\u00B7\u00A0", _jsx("b", { style: S.savedNum, children: tokOf(reclaimedBytes) }), "\u00A0offloaded", offloadedSource && (_jsx("button", { style: S.savedClear, onClick: () => { offloadedSource.clear().then(refresh); }, title: "Clear offloaded results", "aria-label": "Clear offloaded results", children: _jsx(IcTrash, { size: 11 }) }))] }))] }), _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' : `offloads results > ${(thr / 1000).toFixed(1)} KB (${tokOf(thr)}) at this fill` })] }), _jsxs("div", { style: S.estNote, children: ["Projected estimate \u2014 system-prompt size is approximate.", lastAgent ? ` Last run ${fmtTok(lastAgent.inTok)}.` : ''] })] }), _jsxs("div", { style: S.section, children: [_jsxs("button", { style: S.sysRow, onClick: () => setSysOpen((o) => !o), title: "Show the system-prompt parts", children: [_jsx("span", { style: { ...S.chev, transform: sysOpen ? 'rotate(90deg)' : 'none' }, children: _jsx(IcChevron, { size: 12 }) }), _jsx("span", { style: S.sysLabel, children: "System prompt" }), systemSource && _jsx("code", { style: S.sourceCode, title: "The system prompt file used for the next run", children: systemSource }), _jsxs("span", { style: S.secMeta, children: ["~", fmtTok(systemTok)] })] }), sysOpen && (_jsxs(_Fragment, { children: [_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
201
+ ? 'Using the base system prompt — the file-type prompt (.prmd / .pdflow format docs) is ignored'
202
+ : '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, title: "Exactly what the model receives on the next request: the system prompt plus these turns. A zap chip means a turn's large outputs were frozen \u2014 only a short stub of them is sent.", children: [_jsx("span", { style: { ...S.tempDot, background: 'var(--brand-cyan, #3fb6d4)' } }), "Sent to the model \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; drop old ones to free the window." }), warmTurns.length === 0 && turns.length > 0 && _jsx("div", { style: S.empty, children: "Nothing in the window \u2014 every turn is dropped. The model only receives the system prompt." }), warmTurns.map(({ t, tok }) => (_jsx(SentTurnCard, { turn: t, tok: tok, frozenBytes: frozenBytesFor(t.id), onDrop: () => toggleInclude(t.id) }, t.id)))] })] }), !notSentEmpty && (_jsxs("div", { style: S.section, children: [_jsxs("div", { style: S.rowHead, children: [_jsxs("span", { style: S.secLabel, title: "Everything excluded from the next request \u2014 parts you disabled, turns you dropped, and large outputs compression froze.", children: [_jsx("span", { style: { ...S.tempDot, background: 'var(--surface-3)' } }), "Not sent"] }), _jsxs("span", { style: S.secMeta, children: [partsTok + droppedTok > 0 ? `~${fmtTok(partsTok + droppedTok)}` : '', reclaimedBytes > 0 ? `${partsTok + droppedTok > 0 ? ' · ' : ''}${kb(reclaimedBytes)} frozen` : ''] })] }), _jsxs("div", { style: S.list, children: [offParts.length > 0 && (_jsxs(_Fragment, { children: [_jsxs("span", { style: S.subLabel, title: "System-prompt parts you turned off \u2014 the next request's system prompt omits them.", children: ["System parts \u00B7 ", offParts.length, " \u00B7 ~", fmtTok(partsTok)] }), offParts.map((p) => (_jsxs("div", { style: S.turnCardHead, children: [_jsx("span", { style: { ...S.turnText, color: 'var(--text-tertiary)' }, children: p.label }), _jsxs("span", { style: S.turnMeta, children: ["~", fmtTok(partTok(p.key))] }), _jsx("button", { style: S.turnAction, onClick: () => togglePart(p.key), title: "Include this system-prompt part again", children: "Enable" })] }, p.key)))] })), coldTurns.length > 0 && (_jsxs(_Fragment, { children: [_jsxs("span", { style: S.subLabel, title: "Whole exchanges you excluded \u2014 the model does not see them. Restore puts one back in the window.", children: ["Dropped turns \u00B7 ", coldTurns.length, " \u00B7 ", fmtTok(droppedTok)] }), coldTurns.map(({ t, tok }) => (_jsx(DroppedTurnRow, { turn: t, tok: tok, onRestore: () => toggleInclude(t.id) }, t.id)))] })), offloaded.length > 0 && (_jsxs(_Fragment, { children: [_jsxs("span", { style: S.subLabel, title: "Large tool outputs the compression setting froze out of the window. For each, a short stub pointing at it stays in its turn, and the assistant can pull the content back itself with recall_result.", children: ["Offloaded outputs \u00B7 ", offloaded.length, " \u00B7 ", kb(reclaimedBytes)] }), attributed.map(({ r, turnId, label, sourceDropped }) => (_jsx(OffloadRow, { record: r, fromLabel: label, sourceDropped: sourceDropped, note: restoreNotes[r.id], onRestore: offloadedSource ? () => { void restore(turnId, r); } : undefined }, r.id))), unattached.length > 0 && (_jsxs(_Fragment, { children: [_jsxs("span", { style: S.subLabel, title: "Frozen outputs whose turn is no longer in this conversation \u2014 nothing in the window points at them. Preview here, or clear them with the trash button in the header above.", children: ["Unattached \u00B7 ", unattached.length, " \u00B7 ", kb(unattached.reduce((n, r) => n + r.bytes, 0))] }), unattached.map((r) => _jsx(OffloadRow, { record: r, fromLabel: null }, r.id))] }))] }))] })] }))] }) }));
92
203
  }
93
204
  function Legend({ c, k, v }) {
94
205
  return _jsxs("span", { style: S.legItem, children: [_jsx("span", { style: { ...S.legDot, background: c } }), k, " ", _jsx("span", { style: S.legVal, children: v })] });
@@ -97,9 +208,15 @@ const mono = 'var(--font-mono)';
97
208
  const S = {
98
209
  panel: { flex: 1, minHeight: 0, minWidth: 0, display: 'flex', flexDirection: 'column', background: 'var(--surface-1)' },
99
210
  body: { flex: 1, minHeight: 0, padding: 16, overflowY: 'auto', display: 'flex', flexDirection: 'column', gap: 16 },
100
- section: { display: 'flex', flexDirection: 'column', gap: 8 },
211
+ // flexShrink 0 is load-bearing: body is a flex column AND the scroll container,
212
+ // so shrinkable sections get CRUSHED toward min-content (tiny scrolly slivers)
213
+ // before the body ever scrolls. Fixed sections make the body scroll instead.
214
+ section: { display: 'flex', flexDirection: 'column', gap: 8, flexShrink: 0 },
101
215
  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)' },
216
+ secLabel: { display: 'inline-flex', alignItems: 'center', gap: 6, fontSize: 'var(--fs-eyebrow)', fontWeight: 600, textTransform: 'uppercase', letterSpacing: '0.08em', color: 'var(--text-tertiary)' },
217
+ tempDot: { width: 8, height: 8, borderRadius: 999, flexShrink: 0 },
218
+ // secLabel as a disclosure button — same typography, plus the chevron affordance.
219
+ secToggle: { display: 'inline-flex', alignItems: 'center', gap: 6, padding: 0, border: 0, background: 'transparent', cursor: 'pointer', fontSize: 'var(--fs-eyebrow)', fontWeight: 600, textTransform: 'uppercase', letterSpacing: '0.08em', color: 'var(--text-tertiary)', fontFamily: 'inherit' },
103
220
  secMeta: { fontSize: 11.5, color: 'var(--text-tertiary)', fontFamily: mono, fontVariantNumeric: 'tabular-nums' },
104
221
  actions: { display: 'inline-flex', alignItems: 'center', gap: 8 },
105
222
  // budget
@@ -114,32 +231,39 @@ const S = {
114
231
  legItem: { display: 'inline-flex', alignItems: 'center', gap: 5, fontSize: 11.5, color: 'var(--text-secondary)' },
115
232
  legDot: { width: 8, height: 8, borderRadius: 2, flexShrink: 0 },
116
233
  legVal: { color: 'var(--text-tertiary)', fontFamily: mono, fontVariantNumeric: 'tabular-nums' },
117
- lastRun: { marginLeft: 'auto', fontSize: 11, color: 'var(--text-disabled)', fontFamily: mono },
118
234
  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' },
235
+ savedChip: { marginLeft: 'auto', display: 'inline-flex', alignItems: 'center', gap: 5, padding: '2px 4px 2px 9px', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-pill, 999px)', background: 'color-mix(in srgb, var(--brand-purple, #8b5cf6) 10%, transparent)', color: 'var(--text-secondary)', fontSize: 11.5, fontWeight: 600 },
236
+ savedNum: { fontFamily: mono, fontVariantNumeric: 'tabular-nums', fontWeight: 600, color: 'var(--text-primary)' },
237
+ savedClear: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 20, height: 20, border: 0, borderRadius: 999, background: 'transparent', color: 'var(--text-tertiary)', cursor: 'pointer' },
238
+ zap: { display: 'inline-flex', color: 'var(--brand-purple, #8b5cf6)', flexShrink: 0 },
239
+ compRow: { display: 'flex', alignItems: 'center', gap: 10 },
240
+ select: { height: 26, padding: '0 8px', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', color: 'var(--text-primary)', fontSize: 11.5, fontFamily: 'inherit', fontWeight: 600, cursor: 'pointer', textTransform: 'capitalize' },
241
+ // system row
242
+ sysRow: { display: 'flex', alignItems: 'center', gap: 8, padding: '8px 10px', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', color: 'var(--text-secondary)', cursor: 'pointer', width: '100%', textAlign: 'left' },
243
+ sysLabel: { fontSize: 12.5, fontWeight: 600, color: 'var(--text-primary)' },
244
+ sourceCode: { fontFamily: mono, fontSize: 11, color: 'var(--text-primary)', background: 'var(--surface-3, var(--surface-2))', borderRadius: 'var(--radius-xs, 3px)', padding: '1px 5px', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', minWidth: 0, flex: 1, marginLeft: 2 },
123
245
  chips: { display: 'flex', flexWrap: 'wrap', gap: 7 },
124
246
  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
247
  chipDot: (on) => ({ width: 7, height: 7, borderRadius: 999, background: on ? 'var(--accent)' : 'var(--border-default)' }),
126
- // turns
248
+ // timeline
127
249
  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' },
250
+ list: { display: 'flex', flexDirection: 'column', gap: 10 },
129
251
  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)' }),
252
+ turnCardHead: { display: 'flex', alignItems: 'center', gap: 9, padding: '8px 10px', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)' },
253
+ turnAction: { 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-1)', color: 'var(--text-secondary)', fontSize: 11, fontWeight: 600, cursor: 'pointer', flexShrink: 0 },
132
254
  turnText: { flex: 1, fontSize: 12.5, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' },
133
255
  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' },
256
+ frozenChip: { display: 'inline-flex', alignItems: 'center', gap: 3, fontSize: 10.5, fontFamily: mono, fontVariantNumeric: 'tabular-nums', color: 'var(--text-tertiary)', opacity: 0.8, flexShrink: 0 },
257
+ subLabel: { display: 'inline-flex', alignItems: 'baseline', gap: 6, fontSize: 10.5, fontWeight: 600, textTransform: 'uppercase', letterSpacing: '0.06em', color: 'var(--text-disabled)', padding: '2px 2px 0' },
258
+ // offloaded records (NOT SENT — flat rows, not nested under a turn)
259
+ offWrap: { display: 'flex', flexDirection: 'column', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', overflow: 'hidden' },
260
+ off: { display: 'flex', alignItems: 'center', gap: 4, paddingRight: 6 },
261
+ offMain: { display: 'flex', alignItems: 'center', gap: 7, padding: '6px 9px', border: 0, background: 'transparent', color: 'var(--text-secondary)', cursor: 'pointer', flex: 1, minWidth: 0, textAlign: 'left' },
262
+ offFrom: { fontSize: 11, color: 'var(--text-tertiary)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', minWidth: 0 },
263
+ offNote: { padding: '2px 9px 6px 28px', fontSize: 11, color: 'var(--warning, var(--text-tertiary))' },
137
264
  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' },
265
+ offName: { fontSize: 12, fontWeight: 600, color: 'var(--text-primary)', fontFamily: mono },
266
+ offMeta: { marginLeft: 'auto', fontSize: 11, color: 'var(--text-tertiary)', fontFamily: mono, fontVariantNumeric: 'tabular-nums', flexShrink: 0 },
267
+ preview: { margin: 0, padding: '8px 10px 8px 26px', 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' },
144
268
  };
145
269
  //# sourceMappingURL=ContextManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextManager.js","sourceRoot":"","sources":["../ContextManager.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ContextManager.js","sourceRoot":"","sources":["../ContextManager.tsx"],"names":[],"mappings":"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"}
@@ -1 +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"}
1
+ {"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../Lightbox.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,wBAAgB,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,qBAS9E"}
package/dist/Lightbox.js CHANGED
@@ -1,16 +1,8 @@
1
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
2
  import { IcX } from '@corenel/ui-kit/icons';
3
+ import { useEscape } from '@corenel/ui-kit/useEscape';
7
4
  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]);
5
+ useEscape(true, onClose);
14
6
  return (_jsxs("div", { style: S.backdrop, className: "lightbox", onMouseDown: (e) => { if (e.target === e.currentTarget)
15
7
  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
8
  }
@@ -1 +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"}
1
+ {"version":3,"file":"Lightbox.js","sourceRoot":"","sources":["../Lightbox.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,MAAM,UAAU,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,EAAwC;IAC7E,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEzB,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"}
@@ -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']);