@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.
- package/dist/AskUser.d.ts +8 -0
- package/dist/AskUser.d.ts.map +1 -0
- package/dist/AskUser.js +94 -0
- package/dist/AskUser.js.map +1 -0
- package/dist/CommandPalette.d.ts +13 -0
- package/dist/CommandPalette.d.ts.map +1 -0
- package/dist/CommandPalette.js +54 -0
- package/dist/CommandPalette.js.map +1 -0
- package/dist/Composer.d.ts +51 -0
- package/dist/Composer.d.ts.map +1 -0
- package/dist/Composer.js +174 -0
- package/dist/Composer.js.map +1 -0
- package/dist/ContextBar.d.ts +9 -0
- package/dist/ContextBar.d.ts.map +1 -0
- package/dist/ContextBar.js +45 -0
- package/dist/ContextBar.js.map +1 -0
- package/dist/ContextManager.d.ts +33 -0
- package/dist/ContextManager.d.ts.map +1 -0
- package/dist/ContextManager.js +145 -0
- package/dist/ContextManager.js.map +1 -0
- package/dist/Lightbox.d.ts +6 -0
- package/dist/Lightbox.d.ts.map +1 -0
- package/dist/Lightbox.js +22 -0
- package/dist/Lightbox.js.map +1 -0
- package/dist/RichContent.d.ts +27 -0
- package/dist/RichContent.d.ts.map +1 -0
- package/dist/RichContent.js +267 -0
- package/dist/RichContent.js.map +1 -0
- package/dist/SummaryTranscript.d.ts +17 -0
- package/dist/SummaryTranscript.d.ts.map +1 -0
- package/dist/SummaryTranscript.js +23 -0
- package/dist/SummaryTranscript.js.map +1 -0
- package/dist/TodoPanel.d.ts +2 -0
- package/dist/TodoPanel.d.ts.map +1 -0
- package/dist/TodoPanel.js +173 -0
- package/dist/TodoPanel.js.map +1 -0
- package/dist/Transcript.d.ts +27 -0
- package/dist/Transcript.d.ts.map +1 -0
- package/dist/Transcript.js +179 -0
- package/dist/Transcript.js.map +1 -0
- package/dist/diff.d.ts +10 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +52 -0
- package/dist/diff.js.map +1 -0
- package/dist/editDecisions.d.ts +14 -0
- package/dist/editDecisions.d.ts.map +1 -0
- package/dist/editDecisions.js +77 -0
- package/dist/editDecisions.js.map +1 -0
- package/dist/liveEdit.d.ts +18 -0
- package/dist/liveEdit.d.ts.map +1 -0
- package/dist/liveEdit.js +71 -0
- package/dist/liveEdit.js.map +1 -0
- package/dist/toolRender.d.ts +31 -0
- package/dist/toolRender.d.ts.map +1 -0
- package/dist/toolRender.js +163 -0
- package/dist/toolRender.js.map +1 -0
- package/dist/transcriptView.d.ts +16 -0
- package/dist/transcriptView.d.ts.map +1 -0
- package/dist/transcriptView.js +69 -0
- package/dist/transcriptView.js.map +1 -0
- 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 @@
|
|
|
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"}
|