@burtson-labs/agent-ui 1.0.11
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/LICENSE +201 -0
- package/README.md +45 -0
- package/dist/components/AgentConsole.d.ts +11 -0
- package/dist/components/AgentConsole.d.ts.map +1 -0
- package/dist/components/AgentConsole.js +139 -0
- package/dist/components/AgentConsole.js.map +1 -0
- package/dist/components/AgentSummaryCard.d.ts +9 -0
- package/dist/components/AgentSummaryCard.d.ts.map +1 -0
- package/dist/components/AgentSummaryCard.js +96 -0
- package/dist/components/AgentSummaryCard.js.map +1 -0
- package/dist/components/ChatComposer.d.ts +134 -0
- package/dist/components/ChatComposer.d.ts.map +1 -0
- package/dist/components/ChatComposer.js +411 -0
- package/dist/components/ChatComposer.js.map +1 -0
- package/dist/components/ChatConversation.d.ts +28 -0
- package/dist/components/ChatConversation.d.ts.map +1 -0
- package/dist/components/ChatConversation.js +82 -0
- package/dist/components/ChatConversation.js.map +1 -0
- package/dist/components/ChatMessage.d.ts +38 -0
- package/dist/components/ChatMessage.d.ts.map +1 -0
- package/dist/components/ChatMessage.js +208 -0
- package/dist/components/ChatMessage.js.map +1 -0
- package/dist/components/DiffBlock.d.ts +7 -0
- package/dist/components/DiffBlock.d.ts.map +1 -0
- package/dist/components/DiffBlock.js +58 -0
- package/dist/components/DiffBlock.js.map +1 -0
- package/dist/components/DiffReview/DiffBlock.d.ts +7 -0
- package/dist/components/DiffReview/DiffBlock.d.ts.map +1 -0
- package/dist/components/DiffReview/DiffBlock.js +13 -0
- package/dist/components/DiffReview/DiffBlock.js.map +1 -0
- package/dist/components/DiffReview/DiffFileGroup.d.ts +14 -0
- package/dist/components/DiffReview/DiffFileGroup.d.ts.map +1 -0
- package/dist/components/DiffReview/DiffFileGroup.js +44 -0
- package/dist/components/DiffReview/DiffFileGroup.js.map +1 -0
- package/dist/components/DiffReview/DiffReviewPanel.d.ts +16 -0
- package/dist/components/DiffReview/DiffReviewPanel.d.ts.map +1 -0
- package/dist/components/DiffReview/DiffReviewPanel.js +25 -0
- package/dist/components/DiffReview/DiffReviewPanel.js.map +1 -0
- package/dist/components/DiffReview/index.d.ts +3 -0
- package/dist/components/DiffReview/index.d.ts.map +1 -0
- package/dist/components/DiffReview/index.js +19 -0
- package/dist/components/DiffReview/index.js.map +1 -0
- package/dist/components/DiffReviewCard.d.ts +10 -0
- package/dist/components/DiffReviewCard.d.ts.map +1 -0
- package/dist/components/DiffReviewCard.js +36 -0
- package/dist/components/DiffReviewCard.js.map +1 -0
- package/dist/components/DiffStream.d.ts +12 -0
- package/dist/components/DiffStream.d.ts.map +1 -0
- package/dist/components/DiffStream.js +43 -0
- package/dist/components/DiffStream.js.map +1 -0
- package/dist/components/MarkdownMessage.d.ts +17 -0
- package/dist/components/MarkdownMessage.d.ts.map +1 -0
- package/dist/components/MarkdownMessage.js +158 -0
- package/dist/components/MarkdownMessage.js.map +1 -0
- package/dist/components/PermissionCard.d.ts +64 -0
- package/dist/components/PermissionCard.d.ts.map +1 -0
- package/dist/components/PermissionCard.js +156 -0
- package/dist/components/PermissionCard.js.map +1 -0
- package/dist/components/PlanActivity.d.ts +20 -0
- package/dist/components/PlanActivity.d.ts.map +1 -0
- package/dist/components/PlanActivity.js +186 -0
- package/dist/components/PlanActivity.js.map +1 -0
- package/dist/components/PlanTree.d.ts +13 -0
- package/dist/components/PlanTree.d.ts.map +1 -0
- package/dist/components/PlanTree.js +70 -0
- package/dist/components/PlanTree.js.map +1 -0
- package/dist/components/TaskList.d.ts +9 -0
- package/dist/components/TaskList.d.ts.map +1 -0
- package/dist/components/TaskList.js +26 -0
- package/dist/components/TaskList.js.map +1 -0
- package/dist/components/TelemetryPanel.d.ts +9 -0
- package/dist/components/TelemetryPanel.d.ts.map +1 -0
- package/dist/components/TelemetryPanel.js +54 -0
- package/dist/components/TelemetryPanel.js.map +1 -0
- package/dist/components/index.d.ts +15 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +31 -0
- package/dist/components/index.js.map +1 -0
- package/dist/context/BanditContext.d.ts +14 -0
- package/dist/context/BanditContext.d.ts.map +1 -0
- package/dist/context/BanditContext.js +18 -0
- package/dist/context/BanditContext.js.map +1 -0
- package/dist/context/index.d.ts +2 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +18 -0
- package/dist/context/index.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +19 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useAgentEvents.d.ts +13 -0
- package/dist/hooks/useAgentEvents.d.ts.map +1 -0
- package/dist/hooks/useAgentEvents.js +54 -0
- package/dist/hooks/useAgentEvents.js.map +1 -0
- package/dist/hooks/useTelemetry.d.ts +4 -0
- package/dist/hooks/useTelemetry.d.ts.map +1 -0
- package/dist/hooks/useTelemetry.js +198 -0
- package/dist/hooks/useTelemetry.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/theme/BanditThemeProvider.d.ts +26 -0
- package/dist/theme/BanditThemeProvider.d.ts.map +1 -0
- package/dist/theme/BanditThemeProvider.js +138 -0
- package/dist/theme/BanditThemeProvider.js.map +1 -0
- package/dist/theme/catppuccin-mocha.json +23 -0
- package/dist/theme/charcoal.json +23 -0
- package/dist/theme/dark.json +23 -0
- package/dist/theme/dracula.json +23 -0
- package/dist/theme/index.d.ts +5 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +21 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/light.json +23 -0
- package/dist/theme/midnight.json +23 -0
- package/dist/theme/nord.json +23 -0
- package/dist/theme/onyx.json +23 -0
- package/dist/theme/sepia.json +23 -0
- package/dist/theme/solarized-dark.json +23 -0
- package/dist/theme/solarized-light.json +23 -0
- package/dist/theme/theme-base.d.ts +37 -0
- package/dist/theme/theme-base.d.ts.map +1 -0
- package/dist/theme/theme-base.js +141 -0
- package/dist/theme/theme-base.js.map +1 -0
- package/dist/theme/theme-registry.d.ts +22 -0
- package/dist/theme/theme-registry.d.ts.map +1 -0
- package/dist/theme/theme-registry.js +52 -0
- package/dist/theme/theme-registry.js.map +1 -0
- package/dist/theme/tokyo-night.json +23 -0
- package/dist/theme/vscode-theme.d.ts +3 -0
- package/dist/theme/vscode-theme.d.ts.map +1 -0
- package/dist/theme/vscode-theme.js +128 -0
- package/dist/theme/vscode-theme.js.map +1 -0
- package/dist/types/ui-schema.d.ts +114 -0
- package/dist/types/ui-schema.d.ts.map +1 -0
- package/dist/types/ui-schema.js +3 -0
- package/dist/types/ui-schema.js.map +1 -0
- package/dist/utils/classNames.d.ts +2 -0
- package/dist/utils/classNames.d.ts.map +1 -0
- package/dist/utils/classNames.js +8 -0
- package/dist/utils/classNames.js.map +1 -0
- package/package.json +55 -0
- package/styles/agent-ui.css +3844 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PermissionCard = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const clsx_1 = __importDefault(require("clsx"));
|
|
10
|
+
/**
|
|
11
|
+
* Vertical-stacked buttons with numbered keyboard shortcuts. Order
|
|
12
|
+
* matches Claude Code's convention (Yes options first, No last) but
|
|
13
|
+
* we keep all four of our scopes because "session" and "save" are
|
|
14
|
+
* distinct use cases for Bandit — one is per-window, the other
|
|
15
|
+
* persists across restarts via .bandit/settings.json.
|
|
16
|
+
*/
|
|
17
|
+
const CHOICE_ORDER = ["once", "session", "save", "deny"];
|
|
18
|
+
const CHOICE_LABELS = {
|
|
19
|
+
once: { label: "Allow once", hint: "Run this single tool call", key: "1" },
|
|
20
|
+
session: { label: "Allow session", hint: "Allow this tool until you close the window", key: "2" },
|
|
21
|
+
save: { label: "Always for target", hint: "Save this target to .bandit/settings.json", key: "3" },
|
|
22
|
+
deny: { label: "Deny", hint: "Abort the tool call", key: "4" }
|
|
23
|
+
};
|
|
24
|
+
const PermissionCard = ({ payload, onChoice }) => {
|
|
25
|
+
const [resolved, setResolved] = (0, react_1.useState)(null);
|
|
26
|
+
const [resolvedNotes, setResolvedNotes] = (0, react_1.useState)(undefined);
|
|
27
|
+
const [notesDraft, setNotesDraft] = (0, react_1.useState)("");
|
|
28
|
+
const cardRef = (0, react_1.useRef)(null);
|
|
29
|
+
// Auto-focus the card so the numbered keyboard shortcuts work without
|
|
30
|
+
// the user having to click first. Matches Claude's "press 1/2/3 to
|
|
31
|
+
// pick, Esc to cancel" muscle memory out of the box.
|
|
32
|
+
(0, react_1.useEffect)(() => {
|
|
33
|
+
if (!resolved)
|
|
34
|
+
cardRef.current?.focus();
|
|
35
|
+
}, [resolved]);
|
|
36
|
+
const pick = (choice, notes) => {
|
|
37
|
+
if (resolved)
|
|
38
|
+
return;
|
|
39
|
+
const trimmed = notes?.trim() || undefined;
|
|
40
|
+
setResolved(choice);
|
|
41
|
+
setResolvedNotes(trimmed);
|
|
42
|
+
onChoice(payload.id, choice, trimmed);
|
|
43
|
+
};
|
|
44
|
+
const handleKeyDown = (e) => {
|
|
45
|
+
if (resolved)
|
|
46
|
+
return;
|
|
47
|
+
// Number keys map to the choice order. 1/2/3/4 = once/session/save/deny.
|
|
48
|
+
// Only fire when the focus target isn't a text input — otherwise
|
|
49
|
+
// typing "1" in the notes textarea would accidentally approve.
|
|
50
|
+
const target = e.target;
|
|
51
|
+
const isInput = target && (target.tagName === "TEXTAREA" || target.tagName === "INPUT");
|
|
52
|
+
if (!isInput) {
|
|
53
|
+
if (e.key === "1") {
|
|
54
|
+
e.preventDefault();
|
|
55
|
+
pick("once");
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (e.key === "2") {
|
|
59
|
+
e.preventDefault();
|
|
60
|
+
pick("session");
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (e.key === "3") {
|
|
64
|
+
e.preventDefault();
|
|
65
|
+
pick("save");
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (e.key === "4") {
|
|
69
|
+
e.preventDefault();
|
|
70
|
+
pick("deny", notesDraft);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (e.key === "Escape") {
|
|
75
|
+
e.preventDefault();
|
|
76
|
+
pick("deny", notesDraft);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
const handleNotesKeyDown = (e) => {
|
|
80
|
+
// Cmd/Ctrl+Enter from the notes input submits a denial + the text.
|
|
81
|
+
// Plain Enter adds a newline so multi-line guidance is possible.
|
|
82
|
+
if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) {
|
|
83
|
+
e.preventDefault();
|
|
84
|
+
pick("deny", notesDraft);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
// Body preview selection: prefer the rich content the extension
|
|
88
|
+
// pre-computed for this specific tool type. `command` → raw shell
|
|
89
|
+
// string for run_command. `paramsPreview` → key=value dump for
|
|
90
|
+
// other tools (apply_edit, git_checkout, etc). `bodyPreview` with
|
|
91
|
+
// diff stats → write_file / apply_edit changes. Fallback: show
|
|
92
|
+
// nothing (the title line already mentions the tool + primary arg).
|
|
93
|
+
const hasCommand = typeof payload.command === "string" && payload.command.trim().length > 0;
|
|
94
|
+
const hasParams = !hasCommand && typeof payload.paramsPreview === "string" && payload.paramsPreview.trim().length > 0;
|
|
95
|
+
const hasDiff = !hasCommand && !hasParams && typeof payload.bodyPreview === "string" && payload.bodyPreview.trim().length > 0;
|
|
96
|
+
return ((0, jsx_runtime_1.jsxs)("div", { ref: cardRef, tabIndex: -1, className: (0, clsx_1.default)("permission-card", resolved && "is-resolved", resolved === "deny" && "is-denied"), role: "group", "aria-label": `Permission prompt for ${payload.tool}`, onKeyDown: handleKeyDown, children: [(0, jsx_runtime_1.jsxs)("div", { className: "permission-card__header", children: [(0, jsx_runtime_1.jsx)("div", { className: "permission-card__icon", "aria-hidden": "true", children: "!" }), (0, jsx_runtime_1.jsx)("div", { className: "permission-card__title", children: (0, jsx_runtime_1.jsxs)("div", { className: "permission-card__tool", children: ["Allow this ", (0, jsx_runtime_1.jsx)("code", { children: payload.tool }), "?"] }) })] }), hasCommand && ((0, jsx_runtime_1.jsx)("pre", { className: "permission-card__command", "aria-label": "Command to run", children: (0, jsx_runtime_1.jsx)("code", { children: payload.command }) })), hasParams && ((0, jsx_runtime_1.jsx)("pre", { className: "permission-card__command", "aria-label": "Tool parameters", children: (0, jsx_runtime_1.jsx)("code", { children: payload.paramsPreview }) })), payload.description && payload.description !== `${payload.tool} ${payload.primary}`.trim() && ((0, jsx_runtime_1.jsx)("div", { className: "permission-card__desc", children: payload.description })), payload.risk && ((0, jsx_runtime_1.jsxs)("div", { className: "permission-card__risk", children: [(0, jsx_runtime_1.jsx)("span", { className: "permission-card__risk-label", children: "Risk" }), (0, jsx_runtime_1.jsx)("span", { children: payload.risk })] })), payload.warning && ((0, jsx_runtime_1.jsxs)("div", { className: "permission-card__warning", role: "alert", children: [(0, jsx_runtime_1.jsx)("span", { className: "permission-card__warning-icon", "aria-hidden": "true", children: "\u26A0" }), (0, jsx_runtime_1.jsx)("span", { children: payload.warning })] })), hasDiff && ((0, jsx_runtime_1.jsx)(CollapsibleDiff, { preview: payload.bodyPreview, stats: payload.diffStats })), (0, jsx_runtime_1.jsx)("div", { className: "permission-card__choices", role: "radiogroup", "aria-label": "Approval choices", children: CHOICE_ORDER.map((choice) => ((0, jsx_runtime_1.jsxs)("button", { type: "button", className: (0, clsx_1.default)("permission-card__choice", `permission-card__choice--${choice}`, resolved === choice && "is-selected"), disabled: resolved !== null, onClick: () => pick(choice, choice === "deny" ? notesDraft : undefined), title: CHOICE_LABELS[choice].hint, role: "radio", "aria-checked": resolved === choice, children: [(0, jsx_runtime_1.jsx)("span", { className: "permission-card__choice-key", "aria-hidden": "true", children: CHOICE_LABELS[choice].key }), (0, jsx_runtime_1.jsx)("span", { className: "permission-card__choice-label", children: CHOICE_LABELS[choice].label })] }, choice))) }), !resolved && ((0, jsx_runtime_1.jsxs)("div", { className: "permission-card__notes", children: [(0, jsx_runtime_1.jsx)("textarea", { className: "permission-card__notes-input", value: notesDraft, onChange: (e) => setNotesDraft(e.target.value), onKeyDown: handleNotesKeyDown, placeholder: "Tell Bandit what to do instead (optional)", rows: 2 }), (0, jsx_runtime_1.jsx)("span", { className: "permission-card__notes-hint", children: "Esc to cancel \u00B7 Cmd+Enter to deny with notes" })] })), resolved && ((0, jsx_runtime_1.jsx)("div", { className: "permission-card__resolved", role: "status", children: resolved === "deny"
|
|
97
|
+
? (resolvedNotes ? `Denied · "${resolvedNotes}"` : "Denied")
|
|
98
|
+
: resolved === "save" ? "Allowed (saved to .bandit/settings.json)"
|
|
99
|
+
: resolved === "session" ? "Allowed for this session"
|
|
100
|
+
: "Allowed once" }))] }));
|
|
101
|
+
};
|
|
102
|
+
exports.PermissionCard = PermissionCard;
|
|
103
|
+
/**
|
|
104
|
+
* Compact diff viewer: collapsed by default showing a "Modified · +N -M"
|
|
105
|
+
* summary with the first changed line as a preview. Click to expand and
|
|
106
|
+
* see the full diff. Matches the visual language of Claude's
|
|
107
|
+
* write-permission card so users get a consistent, low-noise review
|
|
108
|
+
* surface instead of a 2kb pre/code wall on every permission prompt.
|
|
109
|
+
*/
|
|
110
|
+
function CollapsibleDiff({ preview, stats }) {
|
|
111
|
+
const [expanded, setExpanded] = (0, react_1.useState)(false);
|
|
112
|
+
const { added, removed, firstChange } = useDiffSummary(preview, stats);
|
|
113
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: (0, clsx_1.default)("permission-card__diff", expanded && "is-expanded"), children: [(0, jsx_runtime_1.jsxs)("button", { type: "button", className: "permission-card__diff-summary", onClick: () => setExpanded(v => !v), "aria-expanded": expanded, "aria-label": expanded ? "Collapse diff" : "Expand diff", children: [(0, jsx_runtime_1.jsx)("span", { className: "permission-card__diff-label", children: "Modified" }), (added > 0 || removed > 0) && ((0, jsx_runtime_1.jsxs)("span", { className: "permission-card__diff-stats", children: [added > 0 && (0, jsx_runtime_1.jsxs)("span", { className: "permission-card__diff-added", children: ["+", added] }), removed > 0 && (0, jsx_runtime_1.jsxs)("span", { className: "permission-card__diff-removed", children: ["-", removed] })] })), !expanded && firstChange && ((0, jsx_runtime_1.jsx)("span", { className: "permission-card__diff-first-line", title: firstChange, children: firstChange })), (0, jsx_runtime_1.jsx)("span", { className: "permission-card__diff-chevron", "aria-hidden": "true", children: expanded ? "▾" : "▸" })] }), expanded && ((0, jsx_runtime_1.jsx)("pre", { className: "permission-card__preview", children: (0, jsx_runtime_1.jsx)("code", { children: preview }) }))] }));
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Parse a diff-like preview (our bodyPreview is produced by the extension
|
|
117
|
+
* with `+` / `-` / ` ` line prefixes) into a headline: +added / -removed
|
|
118
|
+
* and the first changed line (trimmed) for the collapsed view. We cap
|
|
119
|
+
* counts to 999 so an absurd rewrite doesn't overflow the pill.
|
|
120
|
+
*/
|
|
121
|
+
function useDiffSummary(preview, stats) {
|
|
122
|
+
if (stats) {
|
|
123
|
+
const firstChange = firstChangedLine(preview);
|
|
124
|
+
return {
|
|
125
|
+
added: Math.min(stats.added, 999),
|
|
126
|
+
removed: Math.min(stats.removed, 999),
|
|
127
|
+
firstChange
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
let added = 0;
|
|
131
|
+
let removed = 0;
|
|
132
|
+
for (const line of preview.split(/\r?\n/)) {
|
|
133
|
+
if (line.startsWith("+") && !line.startsWith("+++"))
|
|
134
|
+
added++;
|
|
135
|
+
else if (line.startsWith("-") && !line.startsWith("---"))
|
|
136
|
+
removed++;
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
added: Math.min(added, 999),
|
|
140
|
+
removed: Math.min(removed, 999),
|
|
141
|
+
firstChange: firstChangedLine(preview)
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function firstChangedLine(preview) {
|
|
145
|
+
for (const raw of preview.split(/\r?\n/)) {
|
|
146
|
+
const trimmed = raw.trimEnd();
|
|
147
|
+
if ((trimmed.startsWith("+") && !trimmed.startsWith("+++")) ||
|
|
148
|
+
(trimmed.startsWith("-") && !trimmed.startsWith("---"))) {
|
|
149
|
+
const body = trimmed.slice(1).trim();
|
|
150
|
+
if (body)
|
|
151
|
+
return body.length > 80 ? body.slice(0, 77) + "…" : body;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return "";
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=PermissionCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionCard.js","sourceRoot":"","sources":["../../src/components/PermissionCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { JSX } from "react";
|
|
2
|
+
import type { AgentEvent } from "@burtson-labs/agent-core";
|
|
3
|
+
type ActivityStatus = "start" | "update" | "complete" | "error" | "needs-revision";
|
|
4
|
+
export interface PlanActivityEntry {
|
|
5
|
+
id: string;
|
|
6
|
+
title: string;
|
|
7
|
+
summary?: string;
|
|
8
|
+
status: ActivityStatus;
|
|
9
|
+
stepId?: string;
|
|
10
|
+
timestamp: number;
|
|
11
|
+
}
|
|
12
|
+
export interface PlanActivityProps {
|
|
13
|
+
events?: AgentEvent[];
|
|
14
|
+
limit?: number;
|
|
15
|
+
className?: string;
|
|
16
|
+
showEmptyState?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare const PlanActivity: ({ events, limit, className, showEmptyState }: PlanActivityProps) => JSX.Element | null;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=PlanActivity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanActivity.d.ts","sourceRoot":"","sources":["../../src/components/PlanActivity.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAmC,MAAM,0BAA0B,CAAC;AAU5F,KAAK,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,gBAAgB,CAAC;AAEnF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AA8LD,eAAO,MAAM,YAAY,GAAI,8CAK1B,iBAAiB,KAAG,GAAG,CAAC,OAAO,GAAG,IAoDpC,CAAC"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PlanActivity = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const classNames_1 = require("../utils/classNames");
|
|
7
|
+
const outline_1 = require("@heroicons/react/24/outline");
|
|
8
|
+
const TURN_TOKEN_REGEX = /<\/?\|?(?:im_start|im_end|start_of_turn|end_of_turn)\|?>/gi;
|
|
9
|
+
const stripTurnTokens = (value) => {
|
|
10
|
+
if (!value) {
|
|
11
|
+
return "";
|
|
12
|
+
}
|
|
13
|
+
return value.replace(TURN_TOKEN_REGEX, "").trim();
|
|
14
|
+
};
|
|
15
|
+
const formatSummary = (text) => {
|
|
16
|
+
const cleaned = stripTurnTokens(text);
|
|
17
|
+
return cleaned.length ? cleaned : undefined;
|
|
18
|
+
};
|
|
19
|
+
const mapStatusFromResult = (status) => {
|
|
20
|
+
switch (status) {
|
|
21
|
+
case "failed":
|
|
22
|
+
case "error":
|
|
23
|
+
return "error";
|
|
24
|
+
case "needs-revision":
|
|
25
|
+
case "warn":
|
|
26
|
+
return "needs-revision";
|
|
27
|
+
case "completed":
|
|
28
|
+
case "done":
|
|
29
|
+
return "complete";
|
|
30
|
+
default:
|
|
31
|
+
return "update";
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const getTimelineColor = (status) => {
|
|
35
|
+
switch (status) {
|
|
36
|
+
case "complete":
|
|
37
|
+
return "rgba(123, 228, 149, 0.28)";
|
|
38
|
+
case "error":
|
|
39
|
+
return "rgba(255, 177, 153, 0.28)";
|
|
40
|
+
case "needs-revision":
|
|
41
|
+
return "rgba(255, 216, 130, 0.28)";
|
|
42
|
+
case "start":
|
|
43
|
+
return "rgba(149, 209, 255, 0.24)";
|
|
44
|
+
default:
|
|
45
|
+
return "rgba(149, 209, 255, 0.18)";
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const getStatusLabel = (status) => {
|
|
49
|
+
switch (status) {
|
|
50
|
+
case "start":
|
|
51
|
+
return "In progress";
|
|
52
|
+
case "complete":
|
|
53
|
+
return "Completed";
|
|
54
|
+
case "error":
|
|
55
|
+
return "Blocked";
|
|
56
|
+
case "needs-revision":
|
|
57
|
+
return "Needs attention";
|
|
58
|
+
default:
|
|
59
|
+
return "Update";
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
const getStatusIcon = (status) => {
|
|
63
|
+
switch (status) {
|
|
64
|
+
case "start":
|
|
65
|
+
return (0, jsx_runtime_1.jsx)(outline_1.Cog6ToothIcon, {});
|
|
66
|
+
case "complete":
|
|
67
|
+
return (0, jsx_runtime_1.jsx)(outline_1.CheckCircleIcon, {});
|
|
68
|
+
case "error":
|
|
69
|
+
return (0, jsx_runtime_1.jsx)(outline_1.XCircleIcon, {});
|
|
70
|
+
case "needs-revision":
|
|
71
|
+
return (0, jsx_runtime_1.jsx)(outline_1.ExclamationTriangleIcon, {});
|
|
72
|
+
default:
|
|
73
|
+
return (0, jsx_runtime_1.jsx)(outline_1.BoltIcon, {});
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const buildEntries = (events = [], limit = 50) => {
|
|
77
|
+
const entries = [];
|
|
78
|
+
for (const event of events) {
|
|
79
|
+
if (event.type === "plan:start") {
|
|
80
|
+
const payload = event.payload;
|
|
81
|
+
const goal = stripTurnTokens(payload?.goal);
|
|
82
|
+
entries.push({
|
|
83
|
+
id: `${event.type}:${event.timestamp}`,
|
|
84
|
+
title: goal ? `Plan: ${goal}` : "Agent plan started",
|
|
85
|
+
summary: formatSummary(goal) ?? "Preparing execution plan…",
|
|
86
|
+
status: "start",
|
|
87
|
+
timestamp: event.timestamp
|
|
88
|
+
});
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
if (event.type === "plan:complete") {
|
|
92
|
+
entries.push({
|
|
93
|
+
id: `${event.type}:${event.timestamp}`,
|
|
94
|
+
title: "Plan complete",
|
|
95
|
+
summary: "Steps are ready to execute.",
|
|
96
|
+
status: "complete",
|
|
97
|
+
timestamp: event.timestamp
|
|
98
|
+
});
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (event.type === "plan:chunk") {
|
|
102
|
+
const payload = event.payload;
|
|
103
|
+
if (payload?.chunk) {
|
|
104
|
+
entries.push({
|
|
105
|
+
id: `${event.type}:${event.timestamp}`,
|
|
106
|
+
title: "Planning update",
|
|
107
|
+
summary: payload.chunk,
|
|
108
|
+
status: "update",
|
|
109
|
+
timestamp: event.timestamp
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (event.type === "step:start") {
|
|
115
|
+
const payload = event.payload;
|
|
116
|
+
const title = stripTurnTokens(payload?.step?.title);
|
|
117
|
+
const description = stripTurnTokens(payload?.step?.description);
|
|
118
|
+
entries.push({
|
|
119
|
+
id: `${event.type}:${payload?.step?.id ?? event.timestamp}`,
|
|
120
|
+
title: title || "Executing step",
|
|
121
|
+
summary: formatSummary(description) ?? "Working…",
|
|
122
|
+
status: "update",
|
|
123
|
+
stepId: payload?.step?.id,
|
|
124
|
+
timestamp: event.timestamp
|
|
125
|
+
});
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (event.type === "step:complete") {
|
|
129
|
+
const payload = event.payload;
|
|
130
|
+
const resultStatus = mapStatusFromResult(payload?.result?.status);
|
|
131
|
+
const logs = stripTurnTokens(payload?.result?.logs?.join("\n"));
|
|
132
|
+
const title = stripTurnTokens(payload?.step?.title);
|
|
133
|
+
entries.push({
|
|
134
|
+
id: `${event.type}:${payload?.step?.id ?? event.timestamp}`,
|
|
135
|
+
title: title || "Step complete",
|
|
136
|
+
summary: formatSummary(logs) ?? `Status: ${payload?.result?.status ?? "completed"}`,
|
|
137
|
+
status: resultStatus,
|
|
138
|
+
stepId: payload?.step?.id,
|
|
139
|
+
timestamp: event.timestamp
|
|
140
|
+
});
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
if (event.type === "diff:apply") {
|
|
144
|
+
const payload = event.payload;
|
|
145
|
+
const diffPreview = payload?.diff
|
|
146
|
+
?.map((diff) => stripTurnTokens(diff.path))
|
|
147
|
+
.filter(Boolean)
|
|
148
|
+
.join(", ");
|
|
149
|
+
const title = stripTurnTokens(payload?.step?.title);
|
|
150
|
+
entries.push({
|
|
151
|
+
id: `${event.type}:${event.timestamp}`,
|
|
152
|
+
title: title ? `Diff applied • ${title}` : "Diff applied",
|
|
153
|
+
summary: formatSummary(diffPreview) ?? "Changes enqueued for review.",
|
|
154
|
+
status: "update",
|
|
155
|
+
stepId: payload?.step?.id,
|
|
156
|
+
timestamp: event.timestamp
|
|
157
|
+
});
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
if (event.type === "report:complete") {
|
|
161
|
+
entries.push({
|
|
162
|
+
id: `${event.type}:${event.timestamp}`,
|
|
163
|
+
title: "Report ready",
|
|
164
|
+
summary: "Agent produced a final report.",
|
|
165
|
+
status: "complete",
|
|
166
|
+
timestamp: event.timestamp
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (limit > 0) {
|
|
171
|
+
return entries.slice(-limit);
|
|
172
|
+
}
|
|
173
|
+
return entries;
|
|
174
|
+
};
|
|
175
|
+
const PlanActivity = ({ events = [], limit = 50, className, showEmptyState = true }) => {
|
|
176
|
+
const entries = (0, react_1.useMemo)(() => buildEntries(events, limit), [events, limit]);
|
|
177
|
+
if (!entries.length) {
|
|
178
|
+
if (!showEmptyState) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: (0, classNames_1.classNames)("agent-ui-panel agent-ui-empty-state", className), children: (0, jsx_runtime_1.jsx)("p", { children: "No live steps yet. Start a plan to see instant feedback." }) }));
|
|
182
|
+
}
|
|
183
|
+
return ((0, jsx_runtime_1.jsxs)("section", { className: (0, classNames_1.classNames)("agent-ui-panel agent-ui-plan-activity", className), children: [(0, jsx_runtime_1.jsxs)("header", { className: "agent-ui-panel__header", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("p", { className: "agent-ui-panel__eyebrow", children: "Instant Feedback" }), (0, jsx_runtime_1.jsx)("h3", { className: "agent-ui-panel__title", children: "Live Steps" })] }), (0, jsx_runtime_1.jsxs)("span", { className: "agent-ui-panel__meta", children: [entries.length, " updates"] })] }), (0, jsx_runtime_1.jsx)("div", { className: "plan-activity-host", children: entries.map((entry) => ((0, jsx_runtime_1.jsx)("article", { className: "message assistant plan-activity", children: (0, jsx_runtime_1.jsx)("div", { className: "message-body assistant", children: (0, jsx_runtime_1.jsx)("div", { className: "message-content", children: (0, jsx_runtime_1.jsxs)("div", { className: "plan-activity-row", style: { ["--timeline-color"]: getTimelineColor(entry.status) }, children: [(0, jsx_runtime_1.jsx)("span", { className: (0, classNames_1.classNames)("plan-activity-icon", `plan-activity-${entry.status}`), children: getStatusIcon(entry.status) }), (0, jsx_runtime_1.jsxs)("div", { className: "plan-activity-text", children: [(0, jsx_runtime_1.jsx)("p", { className: "plan-activity-title", children: entry.title }), (0, jsx_runtime_1.jsx)("p", { className: "plan-activity-summary", children: entry.summary ?? getStatusLabel(entry.status) })] })] }) }) }) }, entry.id))) })] }));
|
|
184
|
+
};
|
|
185
|
+
exports.PlanActivity = PlanActivity;
|
|
186
|
+
//# sourceMappingURL=PlanActivity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanActivity.js","sourceRoot":"","sources":["../../src/components/PlanActivity.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { JSX, ReactNode } from "react";
|
|
2
|
+
import type { AgentEvent, AgentPlan, AgentStep } from "@burtson-labs/agent-core";
|
|
3
|
+
export interface PlanTreeProps {
|
|
4
|
+
events?: AgentEvent[];
|
|
5
|
+
plan?: AgentPlan | null;
|
|
6
|
+
selectedStepId?: string;
|
|
7
|
+
onSelectStep?: (step: AgentStep) => void;
|
|
8
|
+
emptyState?: ReactNode;
|
|
9
|
+
title?: string;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const PlanTree: ({ events, plan: planOverride, selectedStepId, onSelectStep, emptyState, title, className }: PlanTreeProps) => JSX.Element;
|
|
13
|
+
//# sourceMappingURL=PlanTree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanTree.d.ts","sourceRoot":"","sources":["../../src/components/PlanTree.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAmB,MAAM,0BAA0B,CAAC;AAGlG,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2DD,eAAO,MAAM,QAAQ,GAAI,4FAQtB,aAAa,KAAG,GAAG,CAAC,OAsEtB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PlanTree = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const classNames_1 = require("../utils/classNames");
|
|
7
|
+
const STATUS_LABELS = {
|
|
8
|
+
pending: "Pending",
|
|
9
|
+
in_progress: "In Progress",
|
|
10
|
+
completed: "Completed",
|
|
11
|
+
failed: "Failed"
|
|
12
|
+
};
|
|
13
|
+
const STATUS_CLASS_MAP = {
|
|
14
|
+
pending: "is-pending",
|
|
15
|
+
in_progress: "is-active",
|
|
16
|
+
completed: "is-done",
|
|
17
|
+
failed: "is-error"
|
|
18
|
+
};
|
|
19
|
+
const extractPlanState = (events, explicitPlan) => {
|
|
20
|
+
const planFromEvents = [...events]
|
|
21
|
+
.reverse()
|
|
22
|
+
.find((event) => event.type === "plan:complete" && event.payload?.plan)
|
|
23
|
+
?.payload;
|
|
24
|
+
const plan = explicitPlan ?? planFromEvents?.plan ?? null;
|
|
25
|
+
if (!plan) {
|
|
26
|
+
return { plan: null, stepStatuses: {} };
|
|
27
|
+
}
|
|
28
|
+
const baseStatuses = {};
|
|
29
|
+
for (const step of plan.steps) {
|
|
30
|
+
baseStatuses[step.id] = step.status ?? "pending";
|
|
31
|
+
}
|
|
32
|
+
for (const event of events) {
|
|
33
|
+
if (event.type === "step:start") {
|
|
34
|
+
const payload = event.payload;
|
|
35
|
+
if (payload?.step?.id) {
|
|
36
|
+
baseStatuses[payload.step.id] = "in_progress";
|
|
37
|
+
}
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (event.type === "step:complete") {
|
|
41
|
+
const payload = event.payload;
|
|
42
|
+
if (payload?.step?.id) {
|
|
43
|
+
baseStatuses[payload.step.id] = payload.result?.status ?? "completed";
|
|
44
|
+
}
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (event.type === "step:error") {
|
|
48
|
+
const payload = event.payload;
|
|
49
|
+
if (payload?.step?.id) {
|
|
50
|
+
baseStatuses[payload.step.id] = "failed";
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return { plan, stepStatuses: baseStatuses };
|
|
55
|
+
};
|
|
56
|
+
const PlanTree = ({ events = [], plan: planOverride, selectedStepId, onSelectStep, emptyState, title = "Execution Plan", className }) => {
|
|
57
|
+
const { plan, stepStatuses } = (0, react_1.useMemo)(() => extractPlanState(events, planOverride ?? undefined), [events, planOverride]);
|
|
58
|
+
if (!plan) {
|
|
59
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: (0, classNames_1.classNames)("agent-ui-panel agent-ui-empty-state", className), children: emptyState ?? (0, jsx_runtime_1.jsx)("p", { children: "No plan available yet. Trigger planning to populate this view." }) }));
|
|
60
|
+
}
|
|
61
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classNames_1.classNames)("agent-ui-panel agent-ui-plan-tree", className), children: [(0, jsx_runtime_1.jsxs)("header", { className: "agent-ui-panel__header", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("p", { className: "agent-ui-panel__eyebrow", children: title }), (0, jsx_runtime_1.jsx)("h3", { className: "agent-ui-panel__title", children: plan.goal }), plan.summary && (0, jsx_runtime_1.jsx)("p", { className: "agent-ui-panel__subtitle", children: plan.summary })] }), (0, jsx_runtime_1.jsxs)("span", { className: "agent-ui-panel__meta", children: [plan.steps.length, " step", plan.steps.length === 1 ? "" : "s"] })] }), (0, jsx_runtime_1.jsx)("ol", { className: "agent-ui-plan-list inline-plan-steps", children: plan.steps.map((step, index) => {
|
|
62
|
+
const status = stepStatuses[step.id] ?? "pending";
|
|
63
|
+
const isSelected = selectedStepId === step.id;
|
|
64
|
+
const command = step.metadata?.command;
|
|
65
|
+
const hasCommand = command !== undefined && command !== null;
|
|
66
|
+
return ((0, jsx_runtime_1.jsxs)("li", { className: (0, classNames_1.classNames)("agent-ui-plan-step", "plan-card-step", STATUS_CLASS_MAP[status], isSelected && "is-selected", onSelectStep && "is-clickable"), onClick: () => onSelectStep?.(step), children: [(0, jsx_runtime_1.jsx)("span", { className: "agent-ui-plan-step__rail", "aria-hidden": "true" }), (0, jsx_runtime_1.jsx)("span", { className: "agent-ui-plan-step__index plan-card-index", children: index + 1 }), (0, jsx_runtime_1.jsxs)("div", { className: "agent-ui-plan-step__body plan-card-step-body", children: [(0, jsx_runtime_1.jsxs)("div", { className: "agent-ui-plan-step__row", children: [(0, jsx_runtime_1.jsx)("p", { className: "agent-ui-plan-step__title plan-card-step-title", children: step.title }), (0, jsx_runtime_1.jsx)("span", { className: "agent-ui-plan-step__badge", children: STATUS_LABELS[status] })] }), step.description && ((0, jsx_runtime_1.jsx)("p", { className: "agent-ui-plan-step__description plan-card-step-summary", children: step.description })), hasCommand && ((0, jsx_runtime_1.jsx)("pre", { className: "agent-ui-plan-step__command", children: (0, jsx_runtime_1.jsx)("code", { children: String(command) }) }))] })] }, step.id));
|
|
67
|
+
}) })] }));
|
|
68
|
+
};
|
|
69
|
+
exports.PlanTree = PlanTree;
|
|
70
|
+
//# sourceMappingURL=PlanTree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanTree.js","sourceRoot":"","sources":["../../src/components/PlanTree.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { JSX } from "react";
|
|
2
|
+
import type { Goal } from "@burtson-labs/agent-core";
|
|
3
|
+
export interface TaskListProps {
|
|
4
|
+
goal: Goal;
|
|
5
|
+
className?: string;
|
|
6
|
+
onCollapse?: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare const TaskList: ({ goal, className, onCollapse }: TaskListProps) => JSX.Element;
|
|
9
|
+
//# sourceMappingURL=TaskList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskList.d.ts","sourceRoot":"","sources":["../../src/components/TaskList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAE,IAAI,EAAoB,MAAM,0BAA0B,CAAC;AAGvE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAgBD,eAAO,MAAM,QAAQ,GAAI,iCAAiC,aAAa,KAAG,GAAG,CAAC,OA2D7E,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TaskList = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const outline_1 = require("@heroicons/react/24/outline");
|
|
6
|
+
const classNames_1 = require("../utils/classNames");
|
|
7
|
+
const STATUS_LABELS = {
|
|
8
|
+
pending: "Pending",
|
|
9
|
+
in_progress: "In progress",
|
|
10
|
+
completed: "Completed",
|
|
11
|
+
failed: "Failed"
|
|
12
|
+
};
|
|
13
|
+
const STATUS_CLASS_MAP = {
|
|
14
|
+
pending: "is-pending",
|
|
15
|
+
in_progress: "is-active",
|
|
16
|
+
completed: "is-done",
|
|
17
|
+
failed: "is-error"
|
|
18
|
+
};
|
|
19
|
+
const TaskList = ({ goal, className, onCollapse }) => {
|
|
20
|
+
const tasks = goal.tasks ?? [];
|
|
21
|
+
const completed = tasks.filter((task) => task.status === "completed").length;
|
|
22
|
+
const totalLabel = tasks.length > 0 ? `${completed}/${tasks.length} complete` : "No tasks yet";
|
|
23
|
+
return ((0, jsx_runtime_1.jsxs)("section", { className: (0, classNames_1.classNames)("agent-ui-panel agent-ui-task-list", className), children: [(0, jsx_runtime_1.jsxs)("header", { className: "agent-ui-panel__header", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("p", { className: "agent-ui-panel__eyebrow", children: "Goal" }), (0, jsx_runtime_1.jsx)("h3", { className: "agent-ui-panel__title", children: goal.title }), goal.summary && (0, jsx_runtime_1.jsx)("p", { className: "agent-ui-panel__subtitle", children: goal.summary })] }), (0, jsx_runtime_1.jsxs)("div", { className: "agent-ui-panel__meta", children: [totalLabel, onCollapse && ((0, jsx_runtime_1.jsx)("button", { type: "button", className: "collapsible-toggle", onClick: onCollapse, "aria-label": "Collapse task list", children: (0, jsx_runtime_1.jsx)(outline_1.ArrowsPointingInIcon, { "aria-hidden": "true" }) }))] })] }), tasks.length === 0 ? ((0, jsx_runtime_1.jsx)("p", { className: "agent-ui-plan-step__description", children: "The agent has not created any tasks yet." })) : ((0, jsx_runtime_1.jsx)("ol", { className: "agent-ui-plan-list", children: tasks.map((task, index) => ((0, jsx_runtime_1.jsxs)("li", { className: (0, classNames_1.classNames)("agent-ui-plan-step", "plan-card-step", STATUS_CLASS_MAP[task.status]), children: [(0, jsx_runtime_1.jsx)("span", { className: "agent-ui-plan-step__rail plan-card-step-rail", "aria-hidden": "true" }), (0, jsx_runtime_1.jsx)("span", { className: "agent-ui-plan-step__index plan-card-index", children: index + 1 }), (0, jsx_runtime_1.jsxs)("div", { className: "agent-ui-plan-step__body plan-card-step-body", children: [(0, jsx_runtime_1.jsxs)("div", { className: "agent-ui-plan-step__row", children: [(0, jsx_runtime_1.jsx)("p", { className: "agent-ui-plan-step__title plan-card-step-title", children: task.title }), (0, jsx_runtime_1.jsx)("span", { className: "agent-ui-plan-step__badge", children: STATUS_LABELS[task.status] })] }), task.description && ((0, jsx_runtime_1.jsx)("p", { className: "agent-ui-plan-step__description plan-card-step-summary", children: task.description })), task.files && task.files.length > 0 && ((0, jsx_runtime_1.jsxs)("p", { className: "agent-ui-plan-step__description plan-card-step-summary", children: ["Files: ", task.files.join(", ")] }))] })] }, task.id))) }))] }));
|
|
24
|
+
};
|
|
25
|
+
exports.TaskList = TaskList;
|
|
26
|
+
//# sourceMappingURL=TaskList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskList.js","sourceRoot":"","sources":["../../src/components/TaskList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { JSX } from "react";
|
|
2
|
+
import type { TelemetrySnapshot } from "../types/ui-schema";
|
|
3
|
+
export interface TelemetryPanelProps {
|
|
4
|
+
telemetry: TelemetrySnapshot;
|
|
5
|
+
title?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const TelemetryPanel: ({ telemetry, title, className }: TelemetryPanelProps) => JSX.Element;
|
|
9
|
+
//# sourceMappingURL=TelemetryPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryPanel.d.ts","sourceRoot":"","sources":["../../src/components/TelemetryPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+CD,eAAO,MAAM,cAAc,GAAI,iCAI5B,mBAAmB,KAAG,GAAG,CAAC,OA+E5B,CAAC"}
|