@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,17 @@
1
+ import React from 'react';
2
+ import { type ToolInvocation } from './toolRender';
3
+ /** Surface-agnostic transcript item — the input to the summary renderer. */
4
+ export type ChatItem = {
5
+ kind: 'user';
6
+ text: string;
7
+ } | {
8
+ kind: 'assistant';
9
+ text: string;
10
+ } | {
11
+ kind: 'tool';
12
+ inv: ToolInvocation;
13
+ };
14
+ export declare function SummaryTranscript({ items }: {
15
+ items: ChatItem[];
16
+ }): React.JSX.Element;
17
+ //# sourceMappingURL=SummaryTranscript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SummaryTranscript.d.ts","sourceRoot":"","sources":["../SummaryTranscript.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAE7D,4EAA4E;AAC5E,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,cAAc,CAAA;CAAE,CAAC;AAE1C,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,qBAoBjE"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Markdown } from './RichContent';
3
+ import { ToolLine } from './toolRender';
4
+ export function SummaryTranscript({ items }) {
5
+ return (_jsx("div", { style: S.list, children: items.map((it, i) => {
6
+ if (it.kind === 'user') {
7
+ return it.text ? (_jsxs("div", { style: S.user, children: [_jsx("span", { style: S.role, children: "You" }), _jsx("span", { style: S.userText, title: it.text, children: it.text })] }, i)) : null;
8
+ }
9
+ if (it.kind === 'assistant') {
10
+ return it.text ? _jsx("div", { style: S.assistant, children: _jsx(Markdown, { text: it.text }) }, i) : null;
11
+ }
12
+ return (_jsx("div", { style: S.toolRow, children: _jsx(ToolLine, { name: it.inv.name, args: it.inv.args, result: it.inv.result, isError: it.inv.isError, running: it.inv.running, ms: it.inv.ms }) }, i));
13
+ }) }));
14
+ }
15
+ const S = {
16
+ list: { display: 'flex', flexDirection: 'column', gap: 6 },
17
+ user: { display: 'flex', alignItems: 'baseline', gap: 7, padding: '2px 0', minWidth: 0 },
18
+ role: { fontSize: 10.5, fontWeight: 700, textTransform: 'uppercase', letterSpacing: '0.06em', color: 'var(--text-disabled)', flexShrink: 0 },
19
+ userText: { fontSize: 12.5, color: 'var(--text-secondary)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', minWidth: 0 },
20
+ assistant: { fontSize: 13, lineHeight: 1.5, color: 'var(--text-primary)' },
21
+ toolRow: { display: 'flex', alignItems: 'center', padding: '2px 0' },
22
+ };
23
+ //# sourceMappingURL=SummaryTranscript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SummaryTranscript.js","sourceRoot":"","sources":["../SummaryTranscript.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAuB,MAAM,cAAc,CAAC;AAQ7D,MAAM,UAAU,iBAAiB,CAAC,EAAE,KAAK,EAAyB;IAChE,OAAO,CACL,cAAK,KAAK,EAAE,CAAC,CAAC,IAAI,YACf,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvB,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CACf,eAAa,KAAK,EAAE,CAAC,CAAC,IAAI,aAAE,eAAM,KAAK,EAAE,CAAC,CAAC,IAAI,oBAAY,EAAA,eAAM,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,YAAG,EAAE,CAAC,IAAI,GAAQ,KAA1G,CAAC,CAA+G,CAC3H,CAAC,CAAC,CAAC,IAAI,CAAC;YACX,CAAC;YACD,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,cAAa,KAAK,EAAE,CAAC,CAAC,SAAS,YAAE,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAI,IAAlD,CAAC,CAAuD,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7F,CAAC;YACD,OAAO,CACL,cAAa,KAAK,EAAE,CAAC,CAAC,OAAO,YAC3B,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAI,IADlI,CAAC,CAEL,CACP,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,GAAwC;IAC7C,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;IAC1D,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE;IACxF,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC,EAAE;IAC5I,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC7I,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,qBAAqB,EAAE;IAC1E,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE;CACrE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function TodoPanel(): import("react").JSX.Element;
2
+ //# sourceMappingURL=TodoPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoPanel.d.ts","sourceRoot":"","sources":["../TodoPanel.tsx"],"names":[],"mappings":"AAYA,wBAAgB,SAAS,gCA6CxB"}
@@ -0,0 +1,173 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /* The agent task panel: the same todo data (agent/todos) in switchable views.
3
+ * - Timeline: a vertical rail of expandable nodes in execution order; expanding
4
+ * a node shows its note, the tool activity recorded while it was active, and
5
+ * one-level subtasks.
6
+ * - Board: the tasks grouped by status (Active / Blocked / Queued / Done), each
7
+ * card expandable to the same detail.
8
+ * The view choice persists. The model is identical for both — only the layout
9
+ * differs, so a third view (e.g. a dependency graph) is a drop-in later. */
10
+ import { useEffect, useMemo, useState } from 'react';
11
+ import { useTodos, clearTodos, getTodoView, setTodoView } from '@corenel/harness/todos';
12
+ import { IcChevronRight, IcCheck, IcZap, IcTrash } from '@corenel/ui-kit/icons';
13
+ export function TodoPanel() {
14
+ const todos = useTodos();
15
+ const [view, setView] = useState(getTodoView);
16
+ const [expanded, setExpanded] = useState(new Set());
17
+ const activeId = todos.find((t) => t.status === 'in_progress')?.id;
18
+ useEffect(() => { if (activeId)
19
+ setExpanded((e) => (e.has(activeId) ? e : new Set(e).add(activeId))); }, [activeId]);
20
+ const toggle = (id) => setExpanded((e) => { const n = new Set(e); n.has(id) ? n.delete(id) : n.add(id); return n; });
21
+ const pick = (v) => { setView(v); setTodoView(v); };
22
+ const clearAll = () => { if (window.confirm('Clear all tasks? This cannot be undone.')) {
23
+ clearTodos();
24
+ setExpanded(new Set());
25
+ } };
26
+ const done = todos.filter((t) => t.status === 'completed').length;
27
+ const pct = todos.length ? Math.round((done / todos.length) * 100) : 0;
28
+ const byId = todos;
29
+ return (_jsxs("div", { style: S.wrap, children: [_jsxs("div", { style: S.head, children: [_jsx("span", { style: S.headLabel, children: "Tasks" }), _jsxs("span", { style: S.headCount, children: [done, "/", todos.length] }), _jsx("span", { style: S.progress, children: _jsx("span", { style: { ...S.progressFill, width: `${pct}%` } }) }), _jsxs("div", { style: S.switcher, children: [_jsx("button", { style: S.switchBtn(view === 'timeline'), onClick: () => pick('timeline'), title: "Timeline", children: "Timeline" }), _jsx("button", { style: S.switchBtn(view === 'board'), onClick: () => pick('board'), title: "Board", children: "Board" })] }), todos.length > 0 && (_jsx("button", { style: S.clearBtn, onClick: clearAll, title: "Clear all tasks", "aria-label": "Clear all tasks", children: _jsx(IcTrash, { size: 13 }) }))] }), todos.length === 0 ? (_jsxs("div", { style: S.empty, children: [_jsx(IcCheck, { size: 26 }), _jsx("span", { children: "No tasks yet" }), _jsx("span", { style: S.emptySub, children: "When the assistant takes on a multi-step job, its plan and progress show here." })] })) : view === 'timeline' ? (_jsx(TimelineView, { todos: todos, byId: byId, expanded: expanded, onToggle: toggle })) : (_jsx(BoardView, { todos: todos, byId: byId, expanded: expanded, onToggle: toggle }))] }));
30
+ }
31
+ /* ---- timeline view: one connected tree (roots on a spine, subtasks branch off
32
+ * with elbow connectors). The active task is highlighted; completed roots fold
33
+ * behind a "N done" toggle. ---- */
34
+ function TimelineView({ todos, byId, expanded, onToggle }) {
35
+ const roots = useMemo(() => todos.filter((t) => !t.parentId), [todos]);
36
+ const childrenOf = useMemo(() => {
37
+ const m = new Map();
38
+ for (const t of todos)
39
+ if (t.parentId) {
40
+ const arr = m.get(t.parentId) ?? [];
41
+ arr.push(t);
42
+ m.set(t.parentId, arr);
43
+ }
44
+ return m;
45
+ }, [todos]);
46
+ const doneCount = roots.filter((t) => t.status === 'completed').length;
47
+ const [showDone, setShowDone] = useState(false);
48
+ const visible = showDone ? roots : roots.filter((t) => t.status !== 'completed');
49
+ return (_jsxs("div", { style: S.list, children: [doneCount > 0 && (_jsxs("button", { style: S.doneToggle, onClick: () => setShowDone((v) => !v), children: [_jsx("span", { style: { ...S.chev, transform: showDone ? 'rotate(90deg)' : 'none' }, children: _jsx(IcChevronRight, { size: 12 }) }), _jsx(StatusDot, { status: "completed", small: true }), _jsxs("span", { children: [doneCount, " done"] })] })), visible.map((t, i) => (_jsx(TreeNode, { todo: t, byId: byId, childrenOf: childrenOf, expanded: expanded, onToggle: onToggle, ancestors: [], isLast: i === visible.length - 1, isFirst: i === 0 }, t.id)))] }));
50
+ }
51
+ function TreeNode({ todo, byId, childrenOf, expanded, onToggle, ancestors, isLast, isFirst }) {
52
+ const subs = childrenOf.get(todo.id) ?? [];
53
+ const hasDetail = !!todo.note || todo.activity.length > 0; // note/activity expand; subtasks always show as branches
54
+ const open = expanded.has(todo.id);
55
+ const active = todo.status === 'in_progress';
56
+ const isRoot = ancestors.length === 0;
57
+ const blockers = blockerTitles(todo, byId);
58
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { style: { ...S.trow, ...(active ? S.tactive : null) }, children: [isRoot ? (
59
+ // Roots ride one continuous spine: a vertical line threaded through the dots.
60
+ _jsxs("span", { style: S.spineCell, children: [!isFirst && _jsx("span", { style: S.spineUp }), !isLast && _jsx("span", { style: S.spineDown }), _jsx(StatusDot, { status: todo.status, small: true, active: active })] })) : (
61
+ // Subtasks branch off the parent with an elbow connector.
62
+ _jsxs(_Fragment, { children: [ancestors.map((hasNext, d) => _jsx("span", { style: S.gutter, children: hasNext && _jsx("span", { style: S.vfull }) }, d)), _jsxs("span", { style: S.connector, children: [_jsx("span", { style: S.vtop }), !isLast && _jsx("span", { style: S.vbottom }), _jsx("span", { style: S.hline })] }), _jsx("span", { style: S.dotCell, children: _jsx(StatusDot, { status: todo.status, small: true, active: active }) })] })), _jsxs("button", { style: S.tlabel, onClick: () => hasDetail && onToggle(todo.id), disabled: !hasDetail, children: [_jsx("span", { style: S.title(todo.status), children: todo.title }), active && _jsx("span", { style: S.activeTag, children: "active" }), blockers.length > 0 && _jsxs("span", { style: S.blocked, title: `Blocked by: ${blockers.join(', ')}`, children: ["blocked by ", blockers.length] }), hasDetail && _jsx("span", { style: { ...S.chev, transform: open ? 'rotate(90deg)' : 'none' }, children: _jsx(IcChevronRight, { size: 12 }) })] })] }), open && hasDetail && (_jsxs("div", { style: { ...S.tdetail, paddingLeft: (ancestors.length + 1) * 16 + 22 }, children: [todo.note && _jsx("div", { style: S.note, children: todo.note }), todo.activity.length > 0 && _jsx("div", { style: S.activity, children: todo.activity.map((a) => _jsx(ActivityRow, { a: a }, a.id)) })] })), subs.map((s, i) => (_jsx(TreeNode, { todo: s, byId: byId, childrenOf: childrenOf, expanded: expanded, onToggle: onToggle, ancestors: [...ancestors, !isLast], isLast: i === subs.length - 1 }, s.id)))] }));
63
+ }
64
+ /* ---- board view ---- */
65
+ const GROUPS = [
66
+ { status: 'in_progress', label: 'Active' },
67
+ { status: 'blocked', label: 'Blocked' },
68
+ { status: 'pending', label: 'Queued' },
69
+ { status: 'completed', label: 'Done' },
70
+ ];
71
+ function BoardView({ todos, byId, expanded, onToggle }) {
72
+ const childrenOf = useMemo(() => {
73
+ const m = new Map();
74
+ for (const t of todos)
75
+ if (t.parentId) {
76
+ const arr = m.get(t.parentId) ?? [];
77
+ arr.push(t);
78
+ m.set(t.parentId, arr);
79
+ }
80
+ return m;
81
+ }, [todos]);
82
+ const roots = useMemo(() => todos.filter((t) => !t.parentId), [todos]);
83
+ // Done starts collapsed so Active/Blocked stay prominent.
84
+ const [collapsed, setCollapsed] = useState(new Set(['completed']));
85
+ const toggleGroup = (s) => setCollapsed((c) => { const n = new Set(c); n.has(s) ? n.delete(s) : n.add(s); return n; });
86
+ return (_jsx("div", { className: "todo-board-scroll", children: _jsx("div", { className: "todo-board", children: GROUPS.map((g) => {
87
+ const items = roots.filter((t) => t.status === g.status);
88
+ if (!items.length)
89
+ return null;
90
+ const isCollapsed = collapsed.has(g.status);
91
+ return (_jsxs("div", { className: "todo-group", children: [_jsxs("button", { style: S.groupHead, onClick: () => toggleGroup(g.status), children: [_jsx("span", { style: { ...S.groupChev, transform: isCollapsed ? 'none' : 'rotate(90deg)' }, children: _jsx(IcChevronRight, { size: 11 }) }), _jsx(StatusDot, { status: g.status, small: true }), _jsx("span", { style: S.groupLabel, children: g.label }), _jsx("span", { style: S.groupCount, children: items.length })] }), !isCollapsed && (_jsx("div", { style: S.groupList, children: items.map((t) => _jsx(BoardCard, { todo: t, depth: 0, expanded: expanded, onToggle: onToggle, childrenOf: childrenOf, byId: byId }, t.id)) }))] }, g.status));
92
+ }) }) }));
93
+ }
94
+ function BoardCard({ todo, depth, expanded, onToggle, childrenOf, byId }) {
95
+ const subs = childrenOf.get(todo.id) ?? [];
96
+ const hasDetail = !!todo.note || todo.activity.length > 0;
97
+ const open = expanded.has(todo.id);
98
+ const blockers = blockerTitles(todo, byId);
99
+ return (_jsxs("div", { style: depth ? S.subCard : S.card, children: [_jsxs("button", { style: S.cardRow, onClick: () => hasDetail && onToggle(todo.id), disabled: !hasDetail, children: [_jsx(StatusDot, { status: todo.status, small: true }), _jsx("span", { style: S.title(todo.status), children: todo.title }), hasDetail && _jsx("span", { style: { ...S.chev, transform: open ? 'rotate(90deg)' : 'none' }, children: _jsx(IcChevronRight, { size: 12 }) })] }), blockers.length > 0 && (_jsx("div", { style: S.cardMeta, children: _jsxs("span", { style: S.blocked, title: `Blocked by: ${blockers.join(', ')}`, children: ["blocked by ", blockers.join(', ')] }) })), open && hasDetail && (_jsxs("div", { style: S.cardDetail, children: [todo.note && _jsx("div", { style: S.note, children: todo.note }), todo.activity.length > 0 && _jsx("div", { style: S.activity, children: todo.activity.map((a) => _jsx(ActivityRow, { a: a }, a.id)) })] })), subs.length > 0 && (_jsx("div", { style: S.subList, children: subs.map((s) => _jsx(BoardCard, { todo: s, depth: depth + 1, expanded: expanded, onToggle: onToggle, childrenOf: childrenOf, byId: byId }, s.id)) }))] }));
100
+ }
101
+ function blockerTitles(todo, byId) {
102
+ return (todo.blockedBy ?? []).map((id) => byId.find((t) => t.id === id)?.title ?? id);
103
+ }
104
+ function ActivityRow({ a }) {
105
+ const color = a.isError ? 'var(--danger)' : a.done ? 'var(--text-tertiary)' : 'var(--accent)';
106
+ return (_jsxs("div", { style: S.actRow, title: a.detail, children: [_jsx("span", { style: { ...S.actIcon, color }, children: _jsx(IcZap, { size: 11 }) }), _jsx("span", { style: S.actLabel, children: a.label }), _jsx("span", { style: { ...S.actState, color }, children: a.isError ? 'error' : a.done ? 'done' : 'running…' })] }));
107
+ }
108
+ function StatusDot({ status, small, active }) {
109
+ const c = STATUS[status];
110
+ const size = small ? 11 : 13;
111
+ return (_jsx("span", { className: active ? 'todo-dot-active' : undefined, style: { ...S.dot, width: size, height: size, borderColor: c.color, background: status === 'pending' || status === 'blocked' ? 'var(--surface-1)' : c.color }, children: status === 'completed' && _jsx(IcCheck, { size: small ? 7 : 9 }) }));
112
+ }
113
+ const STATUS = {
114
+ pending: { label: 'queued', color: 'var(--text-tertiary)', soft: 'var(--border-subtle)' },
115
+ in_progress: { label: 'active', color: 'var(--accent)', soft: 'var(--border-accent, var(--accent))' },
116
+ completed: { label: 'done', color: 'var(--success, #22c55e)', soft: 'var(--border-subtle)' },
117
+ blocked: { label: 'blocked', color: 'var(--warning, #f59e0b)', soft: 'var(--border-subtle)' },
118
+ };
119
+ const S = {
120
+ wrap: { flex: 1, minHeight: 0, display: 'flex', flexDirection: 'column', background: 'var(--surface-1)' },
121
+ head: { display: 'flex', alignItems: 'center', gap: 10, padding: '9px 12px', borderBottom: '1px solid var(--border-subtle)', flexShrink: 0 },
122
+ headLabel: { fontSize: 'var(--fs-eyebrow)', fontWeight: 600, textTransform: 'uppercase', letterSpacing: '0.08em', color: 'var(--text-tertiary)' },
123
+ headCount: { fontSize: 11.5, color: 'var(--text-tertiary)', fontFamily: 'var(--font-mono)', fontVariantNumeric: 'tabular-nums' },
124
+ progress: { flex: 1, height: 5, borderRadius: 999, background: 'var(--surface-3)', overflow: 'hidden' },
125
+ progressFill: { display: 'block', height: '100%', borderRadius: 999, background: 'var(--accent)', transition: 'width var(--motion-base)' },
126
+ switcher: { display: 'inline-flex', gap: 2, padding: 2, background: 'var(--surface-3)', borderRadius: 'var(--radius-sm)', flexShrink: 0 },
127
+ switchBtn: (a) => ({ height: 22, padding: '0 8px', border: 0, borderRadius: 'var(--radius-xs)', background: a ? 'var(--surface-1)' : 'transparent', color: a ? 'var(--text-primary)' : 'var(--text-tertiary)', fontSize: 11, fontWeight: 600, cursor: 'pointer' }),
128
+ clearBtn: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 24, height: 24, border: 0, borderRadius: 'var(--radius-sm)', background: 'transparent', color: 'var(--text-tertiary)', cursor: 'pointer', flexShrink: 0 },
129
+ list: { flex: 1, minHeight: 0, overflowY: 'auto', padding: '8px 8px 16px' },
130
+ dot: { position: 'relative', zIndex: 1, borderRadius: 999, border: '2px solid', display: 'inline-flex', alignItems: 'center', justifyContent: 'center', color: '#fff', flexShrink: 0 },
131
+ // tree row: ancestor gutters + a connector cell + dot + label
132
+ trow: { display: 'flex', alignItems: 'center', minHeight: 28, borderRadius: 'var(--radius-sm)' },
133
+ tactive: { background: 'var(--accent-soft)', boxShadow: 'inset 2px 0 0 0 var(--accent)' },
134
+ // Root spine: dot centered, line threaded through it (up unless first, down unless last).
135
+ spineCell: { position: 'relative', width: 18, alignSelf: 'stretch', flexShrink: 0, display: 'flex', alignItems: 'center', justifyContent: 'center' },
136
+ spineUp: { position: 'absolute', left: 'calc(50% - 1px)', top: 0, bottom: '50%', width: 2, background: 'var(--border-subtle)' },
137
+ spineDown: { position: 'absolute', left: 'calc(50% - 1px)', top: '50%', bottom: 0, width: 2, background: 'var(--border-subtle)' },
138
+ gutter: { position: 'relative', width: 16, alignSelf: 'stretch', flexShrink: 0 },
139
+ vfull: { position: 'absolute', left: 7, top: 0, bottom: 0, width: 2, background: 'var(--border-subtle)' },
140
+ connector: { position: 'relative', width: 16, alignSelf: 'stretch', flexShrink: 0 },
141
+ vtop: { position: 'absolute', left: 7, top: 0, bottom: '50%', width: 2, background: 'var(--border-subtle)' },
142
+ vbottom: { position: 'absolute', left: 7, top: '50%', bottom: 0, width: 2, background: 'var(--border-subtle)' },
143
+ hline: { position: 'absolute', left: 7, top: 'calc(50% - 1px)', width: 9, height: 2, background: 'var(--border-subtle)' },
144
+ dotCell: { display: 'flex', alignItems: 'center', justifyContent: 'center', width: 16, flexShrink: 0 },
145
+ tlabel: { display: 'flex', alignItems: 'center', gap: 8, flex: 1, minWidth: 0, padding: '0 8px', border: 0, background: 'transparent', cursor: 'pointer', textAlign: 'left' },
146
+ title: (status) => ({ flex: 1, minWidth: 0, fontSize: 13, fontWeight: 500, color: status === 'completed' ? 'var(--text-tertiary)' : 'var(--text-primary)', textDecoration: status === 'completed' ? 'line-through' : 'none', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }),
147
+ activeTag: { fontSize: 10, fontWeight: 700, color: 'var(--accent)', textTransform: 'uppercase', letterSpacing: '0.04em', flexShrink: 0 },
148
+ blocked: { fontSize: 10.5, color: 'var(--warning, #f59e0b)', fontWeight: 600, flexShrink: 0 },
149
+ chev: { display: 'inline-flex', color: 'var(--text-tertiary)', transition: 'transform var(--motion-fast)', flexShrink: 0 },
150
+ tdetail: { display: 'flex', flexDirection: 'column', gap: 6, padding: '2px 8px 6px' },
151
+ doneToggle: { display: 'flex', alignItems: 'center', gap: 7, height: 26, padding: '0 8px', border: 0, background: 'transparent', color: 'var(--text-tertiary)', fontSize: 12, fontWeight: 600, cursor: 'pointer', marginBottom: 2 },
152
+ note: { fontSize: 12, lineHeight: 1.45, color: 'var(--text-secondary)' },
153
+ activity: { display: 'flex', flexDirection: 'column', gap: 3, padding: '4px 0' },
154
+ actRow: { display: 'flex', alignItems: 'center', gap: 7 },
155
+ actIcon: { display: 'inline-flex', flexShrink: 0 },
156
+ actLabel: { flex: 1, minWidth: 0, fontSize: 12, fontFamily: 'var(--font-mono)', color: 'var(--text-secondary)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' },
157
+ actState: { fontSize: 10.5, fontFamily: 'var(--font-mono)', flexShrink: 0 },
158
+ // .todo-board / .todo-group layout lives in app.css (container query).
159
+ groupHead: { display: 'flex', alignItems: 'center', gap: 7, width: '100%', padding: '2px 0', border: 0, background: 'transparent', cursor: 'pointer', textAlign: 'left' },
160
+ groupChev: { display: 'inline-flex', color: 'var(--text-tertiary)', transition: 'transform var(--motion-fast)', flexShrink: 0 },
161
+ groupLabel: { fontSize: 'var(--fs-eyebrow)', fontWeight: 600, textTransform: 'uppercase', letterSpacing: '0.08em', color: 'var(--text-secondary)' },
162
+ groupCount: { fontSize: 11, color: 'var(--text-tertiary)', fontFamily: 'var(--font-mono)' },
163
+ groupList: { display: 'flex', flexDirection: 'column', gap: 5 },
164
+ card: { display: 'flex', flexDirection: 'column', gap: 4, padding: '8px 10px', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-md)', background: 'var(--surface-2)' },
165
+ subCard: { display: 'flex', flexDirection: 'column', gap: 4, padding: '5px 8px', borderLeft: '2px solid var(--border-subtle)' },
166
+ subList: { display: 'flex', flexDirection: 'column', gap: 4, marginTop: 4, marginLeft: 12 },
167
+ cardRow: { display: 'flex', alignItems: 'center', gap: 8, width: '100%', border: 0, background: 'transparent', cursor: 'pointer', textAlign: 'left', padding: 0 },
168
+ cardMeta: { display: 'flex', flexWrap: 'wrap', alignItems: 'center', gap: 8, paddingLeft: 18 },
169
+ cardDetail: { display: 'flex', flexDirection: 'column', gap: 6, paddingLeft: 18, marginTop: 2 },
170
+ empty: { flex: 1, display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', gap: 8, padding: 'var(--space-8) var(--space-5)', color: 'var(--text-tertiary)', textAlign: 'center' },
171
+ emptySub: { fontSize: 12, lineHeight: 1.5, maxWidth: 240 },
172
+ };
173
+ //# sourceMappingURL=TodoPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoPanel.js","sourceRoot":"","sources":["../TodoPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import type { ChatCompletionMessageToolCall } from 'openai/resources/chat/completions';
3
+ import type { TranscriptView } from './transcriptView';
4
+ export { ToolLine } from './toolRender';
5
+ import type { ConversationTurn } from '@corenel/harness/conversation';
6
+ export type { ConversationTurn };
7
+ export declare function Transcript({ turns, currentSrc, view, onApplyEdit, onToggleInclude, onRetry, onImageClick }: {
8
+ turns: ConversationTurn[];
9
+ currentSrc: string;
10
+ /** Tool detail level. summary uses a distinct compact renderer; normal/expanded
11
+ * use the standard card renderer (collapsed vs open by default). */
12
+ view?: TranscriptView;
13
+ onApplyEdit: (newContent: string) => void;
14
+ onToggleInclude: (id: string) => void;
15
+ onRetry?: (id: string) => void;
16
+ onImageClick?: (src: string) => void;
17
+ }): React.JSX.Element;
18
+ /** A propose_edit review card. Rendered from the settled transcript AND from the
19
+ * live (in-run) tool list — the tool now BLOCKS on this decision, so the card
20
+ * must be decidable while the run is still going. */
21
+ export declare function DiffProposal({ call, currentSrc, onApplyEdit, view }: {
22
+ call: ChatCompletionMessageToolCall;
23
+ currentSrc: string;
24
+ onApplyEdit: (newContent: string) => void;
25
+ view: TranscriptView;
26
+ }): React.JSX.Element;
27
+ //# sourceMappingURL=Transcript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transcript.d.ts","sourceRoot":"","sources":["../Transcript.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAA8B,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAQnH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAe,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;IACtH,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB;wEACoE;IACpE,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,qBAaA;AAwJD;;qDAEqD;AACrD,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;IACpE,IAAI,EAAE,6BAA6B,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,IAAI,EAAE,cAAc,CAAC;CACtB,qBAoEA"}
@@ -0,0 +1,179 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useState } from 'react';
3
+ import { Markdown } from './RichContent';
4
+ import { ToolResultCard } from './toolRender';
5
+ import { SummaryTranscript } from './SummaryTranscript';
6
+ import { lineDiff, diffStat } from './diff';
7
+ import { getEditDecision, setEditDecision, onEditDecision } from './editDecisions';
8
+ import { useLiveEditsSetting, setLiveEdit, getLiveEdit } from './liveEdit';
9
+ import { IcCheck, IcX, IcGit, IcCopy, IcRefresh, IcChevronRight } from '@corenel/ui-kit/icons';
10
+ // The dense status line lives in the renderer layer now; re-exported so existing
11
+ // importers (AgentPanel's live list) keep their import path.
12
+ export { ToolLine } from './toolRender';
13
+ export function Transcript({ turns, currentSrc, view = 'normal', onApplyEdit, onToggleInclude, onRetry, onImageClick }) {
14
+ // Summary is a wholly different layout — flatten every turn into the normalized
15
+ // ChatItem stream and hand it to the compact renderer.
16
+ if (view === 'summary') {
17
+ return _jsx("div", { style: S.list, children: _jsx(SummaryTranscript, { items: toChatItems(turns) }) });
18
+ }
19
+ return (_jsx("div", { style: S.list, children: turns.map((t) => (_jsx(TurnBlock, { turn: t, currentSrc: currentSrc, view: view, onApplyEdit: onApplyEdit, onToggleInclude: onToggleInclude, onRetry: onRetry, onImageClick: onImageClick }, t.id))) }));
20
+ }
21
+ function TurnBlock({ turn, currentSrc, view, onApplyEdit, onToggleInclude, onRetry, onImageClick }) {
22
+ const [copied, setCopied] = useState(false);
23
+ const dim = turn.included ? 1 : 0.45;
24
+ const assistantText = turn.messages
25
+ .filter((m) => m.role === 'assistant' && typeof m.content === 'string' && m.content)
26
+ .map((m) => m.content)
27
+ .join('\n\n');
28
+ const hasUser = turn.messages.some((m) => m.role === 'user');
29
+ const copy = () => {
30
+ navigator.clipboard?.writeText(assistantText).catch(() => { });
31
+ setCopied(true);
32
+ setTimeout(() => setCopied(false), 1200);
33
+ };
34
+ return (_jsxs("div", { className: "chat-turn", style: { ...S.turn, opacity: dim }, children: [turn.messages.map((m, i) => _jsx(MessageView, { m: m, turn: turn, currentSrc: currentSrc, view: view, onApplyEdit: onApplyEdit, onImageClick: onImageClick }, i)), turn.stats && (_jsxs("div", { style: S.stats, title: "Tokens in / out \u00B7 estimated cost \u00B7 wall-clock for this turn", children: [turn.stats.inTok.toLocaleString(), " in \u00B7 ", turn.stats.outTok.toLocaleString(), " out \u00B7 $", turn.stats.cost.toFixed(4), " \u00B7 ", (turn.stats.ms / 1000).toFixed(1), "s"] })), _jsxs("div", { className: "chat-turn-actions", style: { ...S.actions, ...(turn.included ? null : { opacity: 1 }) }, children: [_jsx("button", { style: S.ctxToggle(turn.included), onClick: () => onToggleInclude(turn.id), title: turn.included ? 'In context — click to exclude from the next message' : 'Excluded — click to include', children: turn.included ? 'in context' : 'excluded' }), _jsx("div", { style: { flex: 1 } }), assistantText && (_jsx("button", { style: S.act, onClick: copy, title: "Copy reply", children: copied ? _jsx(IcCheck, { size: 12 }) : _jsx(IcCopy, { size: 12 }) })), hasUser && onRetry && (_jsx("button", { style: S.act, onClick: () => onRetry(turn.id), title: "Retry from here", children: _jsx(IcRefresh, { size: 12 }) }))] })] }));
35
+ }
36
+ function MessageView({ m, turn, currentSrc, view, onApplyEdit, onImageClick }) {
37
+ if (m.role === 'user') {
38
+ if (Array.isArray(m.content)) {
39
+ const textPart = m.content.find((p) => p.type === 'text');
40
+ const imgs = m.content.filter((p) => p.type === 'image_url');
41
+ return (_jsxs("div", { style: S.user, children: [textPart && 'text' in textPart && textPart.text && _jsx("div", { style: S.userText, children: textPart.text }), imgs.length > 0 && (_jsx("div", { style: S.userImgs, children: imgs.map((p, i) => ('image_url' in p ? (_jsx("img", { src: p.image_url.url, alt: `Attachment ${i + 1}`, style: S.userImg, className: "ask-thumb", onClick: () => onImageClick?.(p.image_url.url), title: "Click to expand" }, i)) : null)) }))] }));
42
+ }
43
+ return _jsx("div", { style: S.user, children: typeof m.content === 'string' ? m.content : '' });
44
+ }
45
+ if (m.role === 'assistant') {
46
+ const calls = (m.tool_calls ?? []);
47
+ return (_jsxs(_Fragment, { children: [typeof m.content === 'string' && m.content && _jsx(Markdown, { text: m.content }), calls.map((c) => c.function.name === 'propose_edit'
48
+ ? _jsx(DiffProposal, { call: c, currentSrc: currentSrc, onApplyEdit: onApplyEdit, view: view }, c.id)
49
+ : _jsx(ToolResultCard, { inv: toInvocation(c, turn), defaultOpen: view === 'expanded' }, c.id))] }));
50
+ }
51
+ return null; // tool results are rendered inside their ToolResultCard
52
+ }
53
+ function findToolMsg(turn, toolCallId) {
54
+ return turn.messages.find((m) => m.role === 'tool' && m.tool_call_id === toolCallId);
55
+ }
56
+ function findResult(turn, toolCallId) {
57
+ const content = findToolMsg(turn, toolCallId)?.content;
58
+ return typeof content === 'string' ? content : '';
59
+ }
60
+ /** Tool-call duration (ms), stitched onto the tool message by the panel from the
61
+ * run's tool-result event (`_ms`); undefined for older turns without timing. */
62
+ function findMs(turn, toolCallId) {
63
+ const ms = findToolMsg(turn, toolCallId)?._ms;
64
+ return typeof ms === 'number' ? ms : undefined;
65
+ }
66
+ function safeArgs(raw) {
67
+ try {
68
+ return raw ? JSON.parse(raw) : {};
69
+ }
70
+ catch {
71
+ return { _raw: raw };
72
+ }
73
+ }
74
+ /** Normalize an OpenAI tool call (+ its result message) into a ToolInvocation. */
75
+ function toInvocation(call, turn) {
76
+ const result = findResult(turn, call.id);
77
+ return {
78
+ name: call.function.name,
79
+ args: safeArgs(call.function.arguments),
80
+ result,
81
+ isError: /^error:/i.test(result.trim()),
82
+ ms: findMs(turn, call.id),
83
+ };
84
+ }
85
+ /** Plain text of a (possibly multimodal) user message. */
86
+ function userTextOf(m) {
87
+ if (typeof m.content === 'string')
88
+ return m.content;
89
+ if (Array.isArray(m.content)) {
90
+ const t = m.content.find((p) => p.type === 'text');
91
+ return t && 'text' in t ? t.text : '[image]';
92
+ }
93
+ return '';
94
+ }
95
+ /** Flatten turns into the normalized stream the summary renderer consumes. */
96
+ function toChatItems(turns) {
97
+ const items = [];
98
+ for (const turn of turns) {
99
+ for (const m of turn.messages) {
100
+ if (m.role === 'user')
101
+ items.push({ kind: 'user', text: userTextOf(m) });
102
+ else if (m.role === 'assistant') {
103
+ if (typeof m.content === 'string' && m.content)
104
+ items.push({ kind: 'assistant', text: m.content });
105
+ for (const c of (m.tool_calls ?? [])) {
106
+ items.push({ kind: 'tool', inv: toInvocation(c, turn) });
107
+ }
108
+ }
109
+ }
110
+ }
111
+ return items;
112
+ }
113
+ /** A propose_edit review card. Rendered from the settled transcript AND from the
114
+ * live (in-run) tool list — the tool now BLOCKS on this decision, so the card
115
+ * must be decidable while the run is still going. */
116
+ export function DiffProposal({ call, currentSrc, onApplyEdit, view }) {
117
+ const args = useMemo(() => safeArgs(call.function.arguments), [call.function.arguments]);
118
+ const newContent = typeof args.new_content === 'string' ? args.new_content : '';
119
+ const explanation = typeof args.explanation === 'string' ? args.explanation : 'Proposed edit';
120
+ const diff = useMemo(() => lineDiff(currentSrc, newContent), [currentSrc, newContent]);
121
+ const stat = useMemo(() => diffStat(diff), [diff]);
122
+ // Seed from the persisted decision so a re-mount (panel focus loss, collapse,
123
+ // reload) keeps showing the verdict instead of the Apply/Reject buttons.
124
+ const [decision, setDecision] = useState(() => getEditDecision(call.id));
125
+ const applied = decision === 'applied' || decision === 'partial';
126
+ const resolved = !!decision;
127
+ // "Show live edits" routes review to the editor: the card collapses, drops its
128
+ // in-chat Apply/Reject, and the inline editor diff owns the decision.
129
+ const [liveEdits] = useLiveEditsSetting();
130
+ // Reflect a decision made elsewhere (the editor's inline Accept/Reject).
131
+ useEffect(() => onEditDecision((id, rec) => {
132
+ if (id === call.id)
133
+ setDecision(rec.decision);
134
+ }), [call.id]);
135
+ // While live + unresolved, publish this proposal as THE pending edit so the
136
+ // editor pane shows it. Clear on resolve/unmount if it's still ours.
137
+ useEffect(() => {
138
+ if (!liveEdits || resolved)
139
+ return;
140
+ setLiveEdit({ callId: call.id, base: currentSrc, next: newContent, explanation });
141
+ return () => { if (getLiveEdit()?.callId === call.id)
142
+ setLiveEdit(null); };
143
+ }, [liveEdits, resolved, call.id, currentSrc, newContent, explanation]);
144
+ // Collapsible. Pending stays open for the in-chat Apply/Reject — UNLESS live
145
+ // edits is on (then it collapses; the editor owns review). Resolved follows view.
146
+ const [open, setOpen] = useState(!liveEdits);
147
+ useEffect(() => { setOpen(resolved ? view === 'expanded' : !liveEdits); }, [resolved, view, liveEdits]);
148
+ return (_jsxs("div", { style: S.diff, children: [_jsxs("button", { style: { ...S.diffHead, borderBottom: open ? S.diffHead.borderBottom : '0' }, onClick: () => setOpen((o) => !o), "aria-expanded": open, children: [_jsx(IcGit, { size: 13 }), _jsx("span", { style: S.diffTitle, children: explanation }), resolved
149
+ ? _jsx("span", { style: S.diffBadge, children: decision === 'partial' ? 'Partially applied' : applied ? 'Applied' : 'Rejected' })
150
+ : liveEdits ? _jsx("span", { style: S.diffBadge, children: "In editor" }) : null, _jsxs("span", { style: S.diffStat, children: ["+", stat.added, " \u2212", stat.removed] }), _jsx("span", { style: { ...S.chev, transform: open ? 'rotate(90deg)' : 'none' }, children: _jsx(IcChevronRight, { size: 12 }) })] }), open && (_jsxs(_Fragment, { children: [_jsx("pre", { style: S.diffBody, children: diff.slice(0, 200).map((l, i) => (_jsxs("div", { style: l.kind === 'add' ? S.dAdd : l.kind === 'del' ? S.dDel : S.dCtx, children: [l.kind === 'add' ? '+ ' : l.kind === 'del' ? '- ' : ' ', l.text || '​'] }, i))) }), resolved ? (_jsx("div", { style: S.diffResolved, children: decision === 'partial' ? 'Partially applied to editor' : applied ? 'Applied to editor' : 'Rejected' })) : liveEdits ? (_jsx("div", { style: S.diffResolved, children: "Review in the editor \u2014 Accept or Reject there." })) : (_jsxs("div", { style: S.diffActions, children: [_jsxs("button", { style: S.apply, onClick: () => { onApplyEdit(newContent); setDecision('applied'); setEditDecision(call.id, 'applied'); }, children: [_jsx(IcCheck, { size: 12 }), " Apply"] }), _jsxs("button", { style: S.reject, onClick: () => { setDecision('rejected'); setEditDecision(call.id, 'rejected'); }, children: [_jsx(IcX, { size: 12 }), " Reject"] })] }))] }))] }));
151
+ }
152
+ const mono = 'var(--font-mono)';
153
+ const S = {
154
+ list: { display: 'flex', flexDirection: 'column', gap: 16 },
155
+ turn: { display: 'flex', flexDirection: 'column', gap: 8, transition: 'opacity var(--motion-fast)' },
156
+ user: { alignSelf: 'flex-end', maxWidth: '85%', padding: '8px 12px', borderRadius: 'var(--radius-lg)', background: 'var(--accent-soft)', border: '1px solid var(--border-accent)', color: 'var(--text-primary)', fontSize: 14, lineHeight: 1.5, whiteSpace: 'pre-wrap' },
157
+ userText: { whiteSpace: 'pre-wrap' },
158
+ userImgs: { display: 'flex', flexWrap: 'wrap', gap: 6, marginTop: 6 },
159
+ userImg: { maxWidth: 220, maxHeight: 180, objectFit: 'cover', borderRadius: 'var(--radius-md)', border: '1px solid var(--border-accent)', cursor: 'zoom-in', display: 'block' },
160
+ stats: { fontSize: 11, color: 'var(--text-tertiary)', fontVariantNumeric: 'tabular-nums', letterSpacing: '0.01em' },
161
+ actions: { display: 'flex', alignItems: 'center', gap: 6 },
162
+ act: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 24, height: 20, border: 0, borderRadius: 'var(--radius-sm)', background: 'transparent', color: 'var(--text-tertiary)', cursor: 'pointer' },
163
+ ctxToggle: (on) => ({ height: 20, padding: '0 8px', border: `1px solid ${on ? 'var(--border-subtle)' : 'var(--border-default)'}`, borderRadius: 'var(--radius-pill)', background: 'transparent', color: 'var(--text-disabled)', fontSize: 10.5, fontWeight: 600, textTransform: 'uppercase', letterSpacing: '0.06em', cursor: 'pointer' }),
164
+ diff: { border: '1px solid var(--border-accent)', borderRadius: 'var(--radius-md)', background: 'var(--surface-2)', overflow: 'hidden' },
165
+ diffHead: { display: 'flex', alignItems: 'center', gap: 7, width: '100%', padding: '8px 10px', border: 0, borderBottom: '1px solid var(--border-subtle)', background: 'transparent', color: 'var(--brand-violet)', cursor: 'pointer', fontFamily: 'inherit', textAlign: 'left' },
166
+ diffTitle: { fontSize: 12.5, fontWeight: 600, color: 'var(--text-primary)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' },
167
+ diffBadge: { fontSize: 10, fontWeight: 700, textTransform: 'uppercase', letterSpacing: '0.05em', color: 'var(--text-tertiary)', flexShrink: 0 },
168
+ diffStat: { marginLeft: 'auto', fontFamily: mono, fontSize: 11, color: 'var(--text-tertiary)', fontVariantNumeric: 'tabular-nums', flexShrink: 0 },
169
+ chev: { display: 'inline-flex', color: 'var(--text-tertiary)', transition: 'transform var(--motion-fast)', flexShrink: 0 },
170
+ diffBody: { margin: 0, padding: 8, fontFamily: mono, fontSize: 11.5, lineHeight: 1.5, maxHeight: 260, overflow: 'auto', whiteSpace: 'pre' },
171
+ dAdd: { background: 'color-mix(in srgb, var(--success) 14%, transparent)', color: 'var(--success)' },
172
+ dDel: { background: 'var(--danger-soft)', color: 'var(--danger)' },
173
+ dCtx: { color: 'var(--text-tertiary)' },
174
+ diffActions: { display: 'flex', gap: 8, padding: '8px 10px', borderTop: '1px solid var(--border-subtle)' },
175
+ apply: { display: 'inline-flex', alignItems: 'center', gap: 5, height: 28, padding: '0 12px', border: 0, borderRadius: 'var(--radius-sm)', background: 'var(--grad-brand)', color: '#fff', fontSize: 12, fontWeight: 600, cursor: 'pointer' },
176
+ reject: { display: 'inline-flex', alignItems: 'center', gap: 5, height: 28, padding: '0 12px', border: '1px solid var(--border-default)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-1)', color: 'var(--text-secondary)', fontSize: 12, fontWeight: 600, cursor: 'pointer' },
177
+ diffResolved: { padding: '8px 10px', borderTop: '1px solid var(--border-subtle)', fontSize: 12, color: 'var(--text-tertiary)' },
178
+ };
179
+ //# sourceMappingURL=Transcript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transcript.js","sourceRoot":"","sources":["../Transcript.tsx"],"names":[],"mappings":"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"}
package/dist/diff.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ export interface DiffLine {
2
+ kind: 'ctx' | 'add' | 'del';
3
+ text: string;
4
+ }
5
+ export declare function lineDiff(a: string, b: string): DiffLine[];
6
+ export declare function diffStat(lines: DiffLine[]): {
7
+ added: number;
8
+ removed: number;
9
+ };
10
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../diff.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,QAAQ;IAAG,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAEvE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE,CAkCzD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAQ9E"}