@parhelia/core 0.1.12308 → 0.1.12325
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/agents-view/AgentsView.js +113 -23
- package/dist/agents-view/AgentsView.js.map +1 -1
- package/dist/components/MarkdownDisplay.d.ts +6 -1
- package/dist/components/MarkdownDisplay.js +3 -0
- package/dist/components/MarkdownDisplay.js.map +1 -1
- package/dist/editor/ai/AgentTerminal.js +28 -4
- package/dist/editor/ai/AgentTerminal.js.map +1 -1
- package/dist/editor/ai/dialogs/AgentDialogHandler.js +32 -8
- package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
- package/dist/editor/ai/dialogs/QuestionnaireInline.d.ts +2 -1
- package/dist/editor/ai/dialogs/QuestionnaireInline.js +44 -23
- package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
- package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +3 -1
- package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/task-board/TaskBoardWorkspace.js +46 -42
- package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
- package/dist/task-board/assigneeDisplay.d.ts +9 -0
- package/dist/task-board/assigneeDisplay.js +22 -0
- package/dist/task-board/assigneeDisplay.js.map +1 -0
- package/dist/task-board/components/ProjectAgentsPanel.js +1 -28
- package/dist/task-board/components/ProjectAgentsPanel.js.map +1 -1
- package/dist/task-board/components/TaskAssigneePicker.d.ts +5 -1
- package/dist/task-board/components/TaskAssigneePicker.js +5 -3
- package/dist/task-board/components/TaskAssigneePicker.js.map +1 -1
- package/dist/task-board/components/TaskCard.d.ts +5 -2
- package/dist/task-board/components/TaskCard.js +12 -5
- package/dist/task-board/components/TaskCard.js.map +1 -1
- package/dist/task-board/components/TaskRow.d.ts +4 -1
- package/dist/task-board/components/TaskRow.js +7 -6
- package/dist/task-board/components/TaskRow.js.map +1 -1
- package/dist/task-board/components/WizardAgentTerminalPanel.d.ts +16 -0
- package/dist/task-board/components/WizardAgentTerminalPanel.js +7 -0
- package/dist/task-board/components/WizardAgentTerminalPanel.js.map +1 -0
- package/dist/task-board/components/WizardCommunicationCards.d.ts +18 -0
- package/dist/task-board/components/WizardCommunicationCards.js +22 -0
- package/dist/task-board/components/WizardCommunicationCards.js.map +1 -0
- package/dist/task-board/components/WizardCommunicationCenter.d.ts +1 -12
- package/dist/task-board/components/WizardCommunicationCenter.js +14 -129
- package/dist/task-board/components/WizardCommunicationCenter.js.map +1 -1
- package/dist/task-board/components/WizardCommunicationShared.d.ts +22 -0
- package/dist/task-board/components/WizardCommunicationShared.js +84 -0
- package/dist/task-board/components/WizardCommunicationShared.js.map +1 -0
- package/dist/task-board/components/WizardTask.d.ts +50 -0
- package/dist/task-board/components/WizardTask.js +36 -0
- package/dist/task-board/components/WizardTask.js.map +1 -0
- package/dist/task-board/components/WizardTaskDetailsPanel.d.ts +29 -0
- package/dist/task-board/components/WizardTaskDetailsPanel.js +22 -0
- package/dist/task-board/components/WizardTaskDetailsPanel.js.map +1 -0
- package/dist/task-board/taskExecutionRecords.js +2 -1
- package/dist/task-board/taskExecutionRecords.js.map +1 -1
- package/dist/task-board/views/KanbanView.d.ts +1 -1
- package/dist/task-board/views/KanbanView.js +27 -1
- package/dist/task-board/views/KanbanView.js.map +1 -1
- package/dist/task-board/views/ListView.d.ts +1 -1
- package/dist/task-board/views/ListView.js +29 -3
- package/dist/task-board/views/ListView.js.map +1 -1
- package/dist/task-board/views/WizardView.d.ts +2 -0
- package/dist/task-board/views/WizardView.js +19 -8
- package/dist/task-board/views/WizardView.js.map +1 -1
- package/package.json +1 -1
- package/dist/editor/ai/HelpTerminal.d.ts +0 -5
- package/dist/editor/ai/HelpTerminal.js +0 -166
- package/dist/editor/ai/HelpTerminal.js.map +0 -1
- package/dist/editor/settings/AllAgentsPanel.d.ts +0 -5
- package/dist/editor/settings/AllAgentsPanel.js +0 -139
- package/dist/editor/settings/AllAgentsPanel.js.map +0 -1
- package/dist/editor/settings/LatestFeedback.d.ts +0 -1
- package/dist/editor/settings/LatestFeedback.js +0 -136
- package/dist/editor/settings/LatestFeedback.js.map +0 -1
- package/dist/editor/sidebar/LeftToolbar.d.ts +0 -1
- package/dist/editor/sidebar/LeftToolbar.js +0 -12
- package/dist/editor/sidebar/LeftToolbar.js.map +0 -1
- package/dist/editor/sidebar/NavigationSidebar.d.ts +0 -4
- package/dist/editor/sidebar/NavigationSidebar.js +0 -254
- package/dist/editor/sidebar/NavigationSidebar.js.map +0 -1
- package/dist/images/bg-shape-black.webp +0 -0
- package/dist/images/parhelia-logo-1.jpg +0 -0
- package/dist/images/phlogo.png +0 -0
- package/dist/images/wizard-bg.png +0 -0
- package/dist/styles.css +0 -8962
- package/dist/task-board/components/ProjectList.d.ts +0 -7
- package/dist/task-board/components/ProjectList.js +0 -74
- package/dist/task-board/components/ProjectList.js.map +0 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Role-like values we should never show as assignee - show Unassigned instead */
|
|
2
|
+
const ROLE_PLACEHOLDER_NAMES = ["current"];
|
|
3
|
+
function isRolePlaceholder(value) {
|
|
4
|
+
return ROLE_PLACEHOLDER_NAMES.includes(value?.trim().toLowerCase());
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Returns the displayable assignee for a task.
|
|
8
|
+
* Filters out role names and placeholders (e.g. "current") - shows "Unassigned" instead.
|
|
9
|
+
* Only real user/agent names are shown.
|
|
10
|
+
*/
|
|
11
|
+
export function getDisplayableAssignee(task, options) {
|
|
12
|
+
const raw = task.assigneeDisplayName ||
|
|
13
|
+
(task.assigneeType === "Agent" ? null : task.assigneeId) ||
|
|
14
|
+
null;
|
|
15
|
+
if (!raw || isRolePlaceholder(raw)) {
|
|
16
|
+
return task.assigneeType === "Agent" && options?.isPlanTask
|
|
17
|
+
? "Project Planner"
|
|
18
|
+
: "Unassigned";
|
|
19
|
+
}
|
|
20
|
+
return raw;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=assigneeDisplay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assigneeDisplay.js","sourceRoot":"","sources":["../../src/task-board/assigneeDisplay.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAClF,MAAM,sBAAsB,GAAG,CAAC,SAAS,CAAC,CAAC;AAE3C,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,sBAAsB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAc,EACd,OAAkC;IAElC,MAAM,GAAG,GACP,IAAI,CAAC,mBAAmB;QACxB,CAAC,IAAI,CAAC,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC;IACP,IAAI,CAAC,GAAG,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,YAAY,KAAK,OAAO,IAAI,OAAO,EAAE,UAAU;YACzD,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,YAAY,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -31,19 +31,6 @@ function agentMatchesProject(agent, projectId) {
|
|
|
31
31
|
}
|
|
32
32
|
return false;
|
|
33
33
|
}
|
|
34
|
-
function getAgentRole(agent) {
|
|
35
|
-
const ctxStr = getAgentContextString(agent);
|
|
36
|
-
if (!ctxStr)
|
|
37
|
-
return null;
|
|
38
|
-
try {
|
|
39
|
-
const parsed = JSON.parse(ctxStr);
|
|
40
|
-
const role = parsed?.additionalData?.role;
|
|
41
|
-
return typeof role === "string" ? role : null;
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
34
|
function formatAgentStatus(status) {
|
|
48
35
|
// Backend sometimes sends numeric enum status for initial fetch
|
|
49
36
|
if (typeof status === "number") {
|
|
@@ -92,20 +79,7 @@ export function ProjectAgentsPanel(props) {
|
|
|
92
79
|
excludeClosed: true,
|
|
93
80
|
});
|
|
94
81
|
const filtered = (response.agents ?? []).filter((a) => agentMatchesProject(a, projectId));
|
|
95
|
-
// Sort: most relevant roles first, then most recently updated
|
|
96
82
|
const sorted = filtered.sort((a, b) => {
|
|
97
|
-
const roleA = getAgentRole(a) ?? "";
|
|
98
|
-
const roleB = getAgentRole(b) ?? "";
|
|
99
|
-
const weight = (r) => {
|
|
100
|
-
if (r === "project-planner")
|
|
101
|
-
return 3;
|
|
102
|
-
if (r === "task-worker")
|
|
103
|
-
return 2;
|
|
104
|
-
return 0;
|
|
105
|
-
};
|
|
106
|
-
const w = weight(roleB) - weight(roleA);
|
|
107
|
-
if (w !== 0)
|
|
108
|
-
return w;
|
|
109
83
|
return (b.updatedDate ?? "").localeCompare(a.updatedDate ?? "");
|
|
110
84
|
});
|
|
111
85
|
setAgents(sorted);
|
|
@@ -151,9 +125,8 @@ export function ProjectAgentsPanel(props) {
|
|
|
151
125
|
if (!project)
|
|
152
126
|
return null;
|
|
153
127
|
return (_jsxs("div", { className: "flex h-full flex-col border-l bg-white", children: [_jsxs("div", { className: "flex items-center justify-between border-b px-4 py-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Bot, { className: "h-5 w-5 text-muted-foreground" }), _jsxs("div", { children: [_jsx("div", { className: "text-sm font-semibold", children: "Project agents" }), _jsx("div", { className: "text-xs text-muted-foreground", children: countLabel })] })] }), _jsx(Button, { variant: "ghost", size: "sm", onClick: refresh, disabled: loading || !projectId, children: _jsx(RefreshCw, { className: cn("h-4 w-4", loading && "animate-spin") }) })] }), _jsx("div", { className: "flex-1 overflow-auto p-3", children: !projectId ? (_jsx("div", { className: "p-3 text-xs text-muted-foreground", children: "Select a project to see its agents." })) : agents.length === 0 ? (_jsx("div", { className: "p-3 text-xs text-muted-foreground", children: "No active agents found for this project yet." })) : (_jsx("div", { className: "space-y-2", children: agents.map((a) => {
|
|
154
|
-
const role = getAgentRole(a);
|
|
155
128
|
const status = formatAgentStatus(a.status);
|
|
156
|
-
return (_jsxs("button", { onClick: () => openAgent(a.id), className: "w-full rounded-md border bg-white p-3 text-left hover:bg-muted/30", children: [_jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "truncate text-sm font-medium", children: a.name || a.profileName || a.id }), _jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-2 text-xs text-muted-foreground", children: [a.profileName && _jsx("span", { children: a.profileName }),
|
|
129
|
+
return (_jsxs("button", { onClick: () => openAgent(a.id), className: "w-full rounded-md border bg-white p-3 text-left hover:bg-muted/30", children: [_jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "truncate text-sm font-medium", children: a.name || a.profileName || a.id }), _jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-2 text-xs text-muted-foreground", children: [a.profileName && _jsx("span", { children: a.profileName }), _jsx("span", { className: "rounded bg-muted px-1.5 py-0.5", children: status })] })] }), _jsx(ExternalLink, { className: "h-4 w-4 shrink-0 text-muted-foreground" })] }), a.description ? (_jsx("div", { className: "mt-2 line-clamp-2 text-xs text-muted-foreground", children: a.description })) : null] }, a.id));
|
|
157
130
|
}) })) })] }));
|
|
158
131
|
}
|
|
159
132
|
//# sourceMappingURL=ProjectAgentsPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectAgentsPanel.js","sourceRoot":"","sources":["../../../src/task-board/components/ProjectAgentsPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,OAAO,EAAE,eAAe,EAAc,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,SAAS,qBAAqB,CAAC,KAAY;IACzC,MAAM,QAAQ,GAAG,KAAY,CAAC;IAC9B,MAAM,GAAG,GAAG,QAAQ,EAAE,YAAY,IAAI,QAAQ,EAAE,YAAY,IAAI,IAAI,CAAC;IACrE,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAY,EAAE,SAAiB;IAC1D,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,uDAAuD;IACvD,IAAI,MAAM,CAAC,QAAQ,CAAC,gBAAgB,SAAS,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/D,4CAA4C;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,cAAc,GAAG,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC;QACzD,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACpF,IAAI,OAAO,MAAM,EAAE,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"ProjectAgentsPanel.js","sourceRoot":"","sources":["../../../src/task-board/components/ProjectAgentsPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,OAAO,EAAE,eAAe,EAAc,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,SAAS,qBAAqB,CAAC,KAAY;IACzC,MAAM,QAAQ,GAAG,KAAY,CAAC;IAC9B,MAAM,GAAG,GAAG,QAAQ,EAAE,YAAY,IAAI,QAAQ,EAAE,YAAY,IAAI,IAAI,CAAC;IACrE,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAY,EAAE,SAAiB;IAC1D,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,uDAAuD;IACvD,IAAI,MAAM,CAAC,QAAQ,CAAC,gBAAgB,SAAS,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/D,4CAA4C;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,cAAc,GAAG,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC;QACzD,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACpF,IAAI,OAAO,MAAM,EAAE,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAuB;IAChD,gEAAgE;IAChE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,CAAC;gBACJ,OAAO,KAAK,CAAC;YACf,KAAK,CAAC;gBACJ,OAAO,SAAS,CAAC;YACnB,KAAK,CAAC;gBACJ,OAAO,oBAAoB,CAAC;YAC9B,KAAK,CAAC;gBACJ,OAAO,WAAW,CAAC;YACrB,KAAK,CAAC;gBACJ,OAAO,OAAO,CAAC;YACjB,KAAK,CAAC;gBACJ,OAAO,QAAQ,CAAC;YAClB,KAAK,CAAC;gBACJ,OAAO,MAAM,CAAC;YAChB,KAAK,CAAC;gBACJ,OAAO,kBAAkB,CAAC;YAC5B,KAAK,CAAC;gBACJ,OAAO,iBAAiB,CAAC;YAC3B;gBACE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAgD;IACjF,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC1B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAU,EAAE,CAAC,CAAC;IAClD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,SAAS,GAAG,OAAO,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;IAErD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACrC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,CAAC,EAAE,CAAC,CAAC;YACd,OAAO;QACT,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC;gBACrC,KAAK,EAAE,IAAI;gBACX,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,IAAI;gBACnB,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;YAC1F,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpC,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YACH,SAAS,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,EAAE,CAAC;QACV,mCAAmC;IACrC,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAEpD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,EAAE,wBAAwB;YAAE,OAAO;QAEnD,gGAAgG;QAChG,MAAM,WAAW,GAAG,WAAW,CAAC,wBAAwB,CAAC,CAAC,OAAY,EAAE,EAAE;YACxE,MAAM,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC;YACxB,IACE,CAAC,KAAK,iBAAiB;gBACvB,CAAC,KAAK,kBAAkB;gBACxB,CAAC,KAAK,oBAAoB;gBAC1B,CAAC,KAAK,iBAAiB;gBACvB,CAAC,KAAK,kBAAkB;gBACxB,CAAC,KAAK,oBAAoB,EAC1B,CAAC;gBACD,wBAAwB;gBACxB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC,EAAE,CAAC,WAAW,EAAE,wBAAwB,EAAE,OAAO,CAAC,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,OAAe,EAAE,EAAE;QAClB,WAAW,EAAE,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC,EACD,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,IAAI,CAAC,MAAM;YAAE,OAAO,kBAAkB,CAAC;QACvC,IAAI,OAAO;YAAE,OAAO,UAAU,CAAC;QAC/B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,SAAS,CAAC;IACrE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAErC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,OAAO,CACL,eAAK,SAAS,EAAC,wCAAwC,aACrD,eAAK,SAAS,EAAC,sDAAsD,aACnE,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,GAAG,IAAC,SAAS,EAAC,+BAA+B,GAAG,EACjD,0BACE,cAAK,SAAS,EAAC,uBAAuB,+BAAqB,EAC3D,cAAK,SAAS,EAAC,+BAA+B,YAAE,UAAU,GAAO,IAC7D,IACF,EACN,KAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,CAAC,SAAS,YACjF,KAAC,SAAS,IAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,OAAO,IAAI,cAAc,CAAC,GAAI,GAC3D,IACL,EAEN,cAAK,SAAS,EAAC,0BAA0B,YACtC,CAAC,SAAS,CAAC,CAAC,CAAC,CACZ,cAAK,SAAS,EAAC,mCAAmC,oDAA0C,CAC7F,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACxB,cAAK,SAAS,EAAC,mCAAmC,6DAE5C,CACP,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,WAAW,YACvB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBAChB,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;wBAC3C,OAAO,CACL,kBAEE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAC9B,SAAS,EAAC,mEAAmE,aAE7E,eAAK,SAAS,EAAC,wCAAwC,aACrD,eAAK,SAAS,EAAC,SAAS,aACtB,cAAK,SAAS,EAAC,8BAA8B,YAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,GAAO,EACrF,eAAK,SAAS,EAAC,wEAAwE,aACpF,CAAC,CAAC,WAAW,IAAI,yBAAO,CAAC,CAAC,WAAW,GAAQ,EAC9C,eAAM,SAAS,EAAC,gCAAgC,YAAE,MAAM,GAAQ,IAC5D,IACF,EACN,KAAC,YAAY,IAAC,SAAS,EAAC,wCAAwC,GAAG,IAC/D,EACL,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CACf,cAAK,SAAS,EAAC,iDAAiD,YAAE,CAAC,CAAC,WAAW,GAAO,CACvF,CAAC,CAAC,CAAC,IAAI,KAhBH,CAAC,CAAC,EAAE,CAiBF,CACV,CAAC;oBACJ,CAAC,CAAC,GACE,CACP,GACG,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -7,6 +7,10 @@ type TaskAssigneePickerProps = {
|
|
|
7
7
|
disabled?: boolean;
|
|
8
8
|
onChange: (next: TaskAssigneeSelection | null) => void;
|
|
9
9
|
placeholder?: string;
|
|
10
|
+
buttonClassName?: string;
|
|
11
|
+
buttonTestId?: string;
|
|
12
|
+
showChevron?: boolean;
|
|
13
|
+
showAssigneeIcon?: boolean;
|
|
10
14
|
};
|
|
11
|
-
export declare function TaskAssigneePicker({ projectId, assigneeType, value, displayValue, disabled, onChange, placeholder, }: TaskAssigneePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export declare function TaskAssigneePicker({ projectId, assigneeType, value, displayValue, disabled, onChange, placeholder, buttonClassName, buttonTestId, showChevron, showAssigneeIcon, }: TaskAssigneePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
12
16
|
export {};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
-
import { Check, ChevronDown, Loader2, UserRound, X } from "lucide-react";
|
|
3
|
+
import { Bot, Check, ChevronDown, Loader2, User, UserRound, X } from "lucide-react";
|
|
4
4
|
import { Button } from "../../components/ui/button";
|
|
5
5
|
import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "../../components/ui/command";
|
|
6
6
|
import { Popover, PopoverContent, PopoverTrigger } from "../../components/ui/popover";
|
|
7
7
|
import { searchTaskAssignableUsers } from "../services/taskService";
|
|
8
8
|
import { loadAiProfiles } from "../../editor/services/aiService";
|
|
9
9
|
const MIN_QUERY_LENGTH = 2;
|
|
10
|
-
export function TaskAssigneePicker({ projectId, assigneeType = null, value, displayValue, disabled = false, onChange, placeholder = "Assign user", }) {
|
|
10
|
+
export function TaskAssigneePicker({ projectId, assigneeType = null, value, displayValue, disabled = false, onChange, placeholder = "Assign user", buttonClassName, buttonTestId, showChevron = true, showAssigneeIcon = false, }) {
|
|
11
11
|
const [open, setOpen] = useState(false);
|
|
12
12
|
const [query, setQuery] = useState("");
|
|
13
13
|
const [loading, setLoading] = useState(false);
|
|
@@ -99,13 +99,15 @@ export function TaskAssigneePicker({ projectId, assigneeType = null, value, disp
|
|
|
99
99
|
profile.id.toLowerCase().includes(normalizedQuery));
|
|
100
100
|
});
|
|
101
101
|
}, [profiles, normalizedQuery]);
|
|
102
|
+
const AssigneeIcon = assigneeType === "Agent" ? Bot : User;
|
|
102
103
|
return (_jsxs(Popover, { open: open, onOpenChange: (nextOpen) => {
|
|
103
104
|
if (nextOpen && triggerRef.current) {
|
|
104
105
|
const dialogContent = triggerRef.current.closest('[data-slot="dialog-content"]');
|
|
105
106
|
setPortalContainer(dialogContent);
|
|
106
107
|
}
|
|
107
108
|
setOpen(nextOpen);
|
|
108
|
-
}, enableIframeClickDetection: false, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { ref: triggerRef, size: "sm", variant: "outline", className:
|
|
109
|
+
}, enableIframeClickDetection: false, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { ref: triggerRef, size: "sm", variant: "outline", className: buttonClassName ||
|
|
110
|
+
"h-[29px] w-[220px] justify-between rounded-md bg-gray-5 text-xs font-medium", disabled: disabled, "data-testid": buttonTestId, children: [showAssigneeIcon ? _jsx(AssigneeIcon, { className: "h-3 w-3 shrink-0 opacity-70" }) : null, _jsx("span", { className: "truncate text-left", children: currentLabel || placeholder }), showChevron ? _jsx(ChevronDown, { className: "h-3.5 w-3.5 opacity-60" }) : null] }) }), _jsx(PopoverContent, { className: "w-[300px] p-0", align: "start", container: portalContainer, onMouseDown: (event) => event.stopPropagation(), onClick: (event) => event.stopPropagation(), children: _jsxs(Command, { shouldFilter: false, children: [_jsx(CommandInput, { value: query, onValueChange: setQuery, placeholder: "Search users...", className: "h-8 text-xs", autoFocus: true }), _jsxs(CommandList, { className: "max-h-64", children: [!value && !canSearch && (_jsx(CommandGroup, { children: _jsxs(CommandItem, { disabled: true, className: "text-muted-foreground", children: ["Type at least ", MIN_QUERY_LENGTH, " characters"] }) })), value && (_jsx(CommandGroup, { heading: "Current", children: _jsxs(CommandItem, { onSelect: () => {
|
|
109
111
|
onChange(null);
|
|
110
112
|
setOpen(false);
|
|
111
113
|
}, children: [_jsx(X, { className: "h-3.5 w-3.5" }), _jsx("span", { children: "Clear assignee" })] }) })), _jsx(CommandGroup, { heading: "Agent profiles", children: loadingProfiles ? (_jsxs(CommandItem, { disabled: true, children: [_jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin" }), _jsx("span", { children: "Loading agent profiles..." })] })) : (filteredProfiles.map((profile) => (_jsxs(CommandItem, { value: profile.id, onSelect: () => handleSelectProfile(profile), children: [_jsx(UserRound, { className: "h-3.5 w-3.5" }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate", children: profile.displayTitle || profile.name }), _jsx("div", { className: "truncate text-[10px] text-muted-foreground", children: profile.description || profile.id })] }), assigneeType === "Agent" &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskAssigneePicker.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskAssigneePicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"TaskAssigneePicker.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskAssigneePicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EACL,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAkB,MAAM,iCAAiC,CAAC;AAiBjF,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,MAAM,UAAU,kBAAkB,CAAC,EACjC,SAAS,EACT,YAAY,GAAG,IAAI,EACnB,KAAK,EACL,YAAY,EACZ,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,WAAW,GAAG,aAAa,EAC3B,eAAe,EACf,YAAY,EACZ,WAAW,GAAG,IAAI,EAClB,gBAAgB,GAAG,KAAK,GACA;IACxB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAuB,EAAE,CAAC,CAAC;IACjE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAc,EAAE,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,MAAM,CAA2B,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IAEjF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;YACtC,UAAU,CAAC,EAAE,CAAC,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;YAC1C,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;gBACvE,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,SAAS;oBAAE,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzB,cAAc,EAAE;aACb,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,IAAI,SAAS;gBAAE,OAAO;YACtB,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3B,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,SAAS;gBAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAChG,OAAO,WAAW,EAAE,WAAW,IAAI,YAAY,IAAI,KAAK,CAAC;IAC3D,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAEnC,MAAM,gBAAgB,GAAG,CAAC,IAAwB,EAAE,EAAE;QACpD,QAAQ,CAAC;YACP,YAAY,EAAE,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,QAAQ;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ;YAC9C,WAAW,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;SAChC,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,OAAkB,EAAE,EAAE;QACjD,QAAQ,CAAC;YACP,YAAY,EAAE,OAAO;YACrB,UAAU,EAAE,OAAO,CAAC,EAAE;YACtB,WAAW,EAAE,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI;YACjD,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;SACzC,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,gBAAgB,CAAC;IAC1D,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,CAAC,eAAe;YAAE,OAAO,QAAQ,CAAC;QACtC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACzE,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACvD,OAAO,CACL,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAC/B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAC9B,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CACnD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IAChC,MAAM,YAAY,GAAG,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3D,OAAO,CACL,MAAC,OAAO,IACN,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE;YACzB,IAAI,QAAQ,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAC9C,8BAA8B,CACT,CAAC;gBACxB,kBAAkB,CAAC,aAAa,CAAC,CAAC;YACpC,CAAC;YACD,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC,EACD,0BAA0B,EAAE,KAAK,aAEjC,KAAC,cAAc,IAAC,OAAO,kBACrB,MAAC,MAAM,IACL,GAAG,EAAE,UAAU,EACf,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,SAAS,EACjB,SAAS,EACP,eAAe;wBACf,6EAA6E,EAE/E,QAAQ,EAAE,QAAQ,iBACL,YAAY,aAExB,gBAAgB,CAAC,CAAC,CAAC,KAAC,YAAY,IAAC,SAAS,EAAC,6BAA6B,GAAG,CAAC,CAAC,CAAC,IAAI,EACnF,eAAM,SAAS,EAAC,oBAAoB,YAAE,YAAY,IAAI,WAAW,GAAQ,EACxE,WAAW,CAAC,CAAC,CAAC,KAAC,WAAW,IAAC,SAAS,EAAC,wBAAwB,GAAG,CAAC,CAAC,CAAC,IAAI,IACjE,GACM,EACjB,KAAC,cAAc,IACb,SAAS,EAAC,eAAe,EACzB,KAAK,EAAC,OAAO,EACb,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,EAC/C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,YAE3C,MAAC,OAAO,IAAC,YAAY,EAAE,KAAK,aAC1B,KAAC,YAAY,IACX,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,QAAQ,EACvB,WAAW,EAAC,iBAAiB,EAC7B,SAAS,EAAC,aAAa,EACvB,SAAS,SACT,EACF,MAAC,WAAW,IAAC,SAAS,EAAC,UAAU,aAC9B,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,CACvB,KAAC,YAAY,cACX,MAAC,WAAW,IAAC,QAAQ,QAAC,SAAS,EAAC,uBAAuB,+BACtC,gBAAgB,mBACnB,GACD,CAChB,EAEA,KAAK,IAAI,CACR,KAAC,YAAY,IAAC,OAAO,EAAC,SAAS,YAC7B,MAAC,WAAW,IACV,QAAQ,EAAE,GAAG,EAAE;4CACb,QAAQ,CAAC,IAAI,CAAC,CAAC;4CACf,OAAO,CAAC,KAAK,CAAC,CAAC;wCACjB,CAAC,aAED,KAAC,CAAC,IAAC,SAAS,EAAC,aAAa,GAAG,EAC7B,4CAA2B,IACf,GACD,CAChB,EAED,KAAC,YAAY,IAAC,OAAO,EAAC,gBAAgB,YACnC,eAAe,CAAC,CAAC,CAAC,CACjB,MAAC,WAAW,IAAC,QAAQ,mBACnB,KAAC,OAAO,IAAC,SAAS,EAAC,0BAA0B,GAAG,EAChD,uDAAsC,IAC1B,CACf,CAAC,CAAC,CAAC,CACF,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAChC,MAAC,WAAW,IAEV,KAAK,EAAE,OAAO,CAAC,EAAE,EACjB,QAAQ,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,aAE5C,KAAC,SAAS,IAAC,SAAS,EAAC,aAAa,GAAG,EACrC,eAAK,SAAS,EAAC,gBAAgB,aAC7B,cAAK,SAAS,EAAC,UAAU,YAAE,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,GAAO,EACtE,cAAK,SAAS,EAAC,4CAA4C,YACxD,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,EAAE,GAC9B,IACF,EACL,YAAY,KAAK,OAAO;gDACvB,KAAK,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CACnD,KAAC,KAAK,IAAC,SAAS,EAAC,aAAa,GAAG,CAClC,KAdE,OAAO,CAAC,EAAE,CAeH,CACf,CAAC,CACH,GACY,EAEd,SAAS,IAAI,CACZ,KAAC,YAAY,IAAC,OAAO,EAAC,OAAO,YAC1B,OAAO,CAAC,CAAC,CAAC,CACT,MAAC,WAAW,IAAC,QAAQ,mBACnB,KAAC,OAAO,IAAC,SAAS,EAAC,0BAA0B,GAAG,EAChD,gDAA+B,IACnB,CACf,CAAC,CAAC,CAAC,CACF,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACpB,MAAC,WAAW,IAEV,KAAK,EAAE,IAAI,CAAC,QAAQ,EACpB,QAAQ,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAEtC,KAAC,SAAS,IAAC,SAAS,EAAC,aAAa,GAAG,EACrC,eAAK,SAAS,EAAC,gBAAgB,aAC7B,cAAK,SAAS,EAAC,UAAU,YAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,GAAO,EACnE,eAAK,SAAS,EAAC,4CAA4C,aACxD,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IACjC,IACF,EACL,YAAY,KAAK,OAAO;gDACvB,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CACxD,KAAC,KAAK,IAAC,SAAS,EAAC,aAAa,GAAG,CAClC,KAfI,IAAI,CAAC,QAAQ,CAgBN,CACf,CAAC,CACH,GACY,CAChB,EACA,SAAS,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,IAAI,CACjF,KAAC,YAAY,iCAA8B,CAC5C,IACW,IACN,GACK,IACT,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type { MouseEventHandler } from "react";
|
|
2
|
-
import type { TaskItem } from "../types";
|
|
2
|
+
import type { TaskAssigneeSelection, TaskItem } from "../types";
|
|
3
3
|
export declare function TaskCard(props: {
|
|
4
4
|
task: TaskItem;
|
|
5
5
|
selected: boolean;
|
|
6
|
-
onClick: MouseEventHandler<
|
|
6
|
+
onClick: MouseEventHandler<HTMLDivElement>;
|
|
7
7
|
dependencyTaskIds?: string[];
|
|
8
8
|
isBlocked?: boolean;
|
|
9
9
|
showDoneCheckmark?: boolean;
|
|
10
|
+
projectId?: string;
|
|
11
|
+
canEditAssignee?: boolean;
|
|
12
|
+
onAssigneeChange?: (selection: TaskAssigneeSelection | null) => void | Promise<void>;
|
|
10
13
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../../lib/utils";
|
|
3
3
|
import { Loader2, User, Bot, Calendar, AlertCircle, CheckCircle2 } from "lucide-react";
|
|
4
|
+
import { getDisplayableAssignee } from "../assigneeDisplay";
|
|
4
5
|
import { Badge } from "../../components/ui/badge";
|
|
5
6
|
import { format } from "date-fns";
|
|
6
7
|
import { getTaskExecutionDisplayFromTask } from "../taskExecutionStatus";
|
|
8
|
+
import { TaskAssigneePicker } from "./TaskAssigneePicker";
|
|
7
9
|
const priorityColors = {
|
|
8
10
|
Critical: "bg-red-500",
|
|
9
11
|
High: "bg-orange-500",
|
|
@@ -11,7 +13,7 @@ const priorityColors = {
|
|
|
11
13
|
Low: "bg-slate-400",
|
|
12
14
|
};
|
|
13
15
|
export function TaskCard(props) {
|
|
14
|
-
const { task, selected, onClick, dependencyTaskIds = [], isBlocked = false, showDoneCheckmark = false, } = props;
|
|
16
|
+
const { task, selected, onClick, dependencyTaskIds = [], isBlocked = false, showDoneCheckmark = false, projectId, canEditAssignee = false, onAssigneeChange, } = props;
|
|
15
17
|
const executionDisplay = getTaskExecutionDisplayFromTask({
|
|
16
18
|
taskStatus: task.status,
|
|
17
19
|
executionState: task.executionState,
|
|
@@ -20,9 +22,14 @@ export function TaskCard(props) {
|
|
|
20
22
|
const priorityColor = task.priority ? priorityColors[task.priority] : "bg-slate-200";
|
|
21
23
|
const displayTaskId = task.taskKey || task.taskId.slice(0, 8).toUpperCase();
|
|
22
24
|
const isPlanTask = String(task.taskType ?? "").toLowerCase() === "plan" || task.title === "Project Plan";
|
|
23
|
-
const assigneeValue = task
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
const assigneeValue = getDisplayableAssignee(task, { isPlanTask });
|
|
26
|
+
const canEditInlineAssignee = !!projectId && !!onAssigneeChange && canEditAssignee && !isPlanTask;
|
|
27
|
+
const handleKeyDown = (event) => {
|
|
28
|
+
if (event.key !== "Enter" && event.key !== " ")
|
|
29
|
+
return;
|
|
30
|
+
event.preventDefault();
|
|
31
|
+
event.currentTarget.click();
|
|
32
|
+
};
|
|
33
|
+
return (_jsxs("div", { role: "button", tabIndex: 0, onClick: onClick, onKeyDown: handleKeyDown, className: cn("group relative w-full overflow-hidden rounded-lg border bg-white p-3 text-left shadow-sm transition-all hover:border-primary/50 hover:shadow-md", selected && "border-primary ring-1 ring-primary/30 shadow-md"), children: [_jsx("div", { className: cn("absolute inset-y-0 left-0 w-1", priorityColor) }), _jsxs("div", { className: "flex flex-col gap-2.5", children: [_jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "mb-1 text-[10px] font-semibold uppercase tracking-widest text-muted-foreground", children: displayTaskId }), _jsx("div", { className: "line-clamp-2 text-sm font-semibold leading-snug group-hover:text-primary transition-colors", children: task.title })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [showDoneCheckmark && task.status === "Done" && (_jsx(CheckCircle2, { className: "h-4 w-4 text-emerald-600" })), task.priority === "Critical" && (_jsx(AlertCircle, { className: "h-4 w-4 text-red-500" }))] })] }), task.description && (_jsx("div", { className: "line-clamp-1 text-xs text-muted-foreground italic", children: task.description })), dependencyTaskIds.length > 0 && (_jsxs("div", { className: "line-clamp-1 text-[10px] font-medium text-muted-foreground", children: ["Depends on: ", dependencyTaskIds.join(", ")] })), _jsxs("div", { className: "flex flex-wrap items-center gap-2 mt-0.5", children: [canEditInlineAssignee ? (_jsx("div", { className: "min-w-0", onClick: (event) => event.stopPropagation(), onMouseDown: (event) => event.stopPropagation(), children: _jsx(TaskAssigneePicker, { projectId: projectId, assigneeType: task.assigneeType ?? null, value: task.assigneeId ?? null, displayValue: task.assigneeDisplayName ?? task.assigneeId ?? null, onChange: onAssigneeChange, placeholder: "Assign user or agent", buttonClassName: "h-auto max-w-[220px] gap-1 rounded-md border-0 bg-gray-50 px-1.5 py-0.5 text-xs font-medium text-muted-foreground shadow-none hover:bg-gray-100", buttonTestId: `taskboard-task-assignee-${task.taskId}`, showChevron: false, showAssigneeIcon: true }) })) : (_jsxs("div", { className: "flex items-center gap-1 text-xs text-muted-foreground bg-gray-50 px-1.5 py-0.5 rounded-md", children: [task.assigneeType === "Agent" ? (_jsx(Bot, { className: "h-3 w-3" })) : (_jsx(User, { className: "h-3 w-3" })), _jsx("span", { className: "max-w-[160px] truncate", title: assigneeValue, children: assigneeValue })] })), task.dueDate && (_jsxs("div", { className: "flex items-center gap-1 text-xs text-muted-foreground bg-gray-50 px-1.5 py-0.5 rounded-md", children: [_jsx(Calendar, { className: "h-3 w-3" }), _jsx("span", { children: format(new Date(task.dueDate), "MMM d") })] })), executionDisplay ? (_jsxs(Badge, { variant: executionDisplay.variant, className: cn("h-5 px-1.5 text-[10px] uppercase tracking-wider font-bold", executionDisplay.className), title: executionDisplay.needsAttention ? "Assigned agent requires attention" : undefined, children: [executionDisplay.showSpinner && _jsx(Loader2, { className: "mr-1 h-2.5 w-2.5 animate-spin" }), executionDisplay.label] })) : null] })] })] }));
|
|
27
34
|
}
|
|
28
35
|
//# sourceMappingURL=TaskCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskCard.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGvF,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"TaskCard.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import type { TaskItem } from "../types";
|
|
1
|
+
import type { TaskAssigneeSelection, TaskItem } from "../types";
|
|
2
2
|
export declare function TaskRow(props: {
|
|
3
3
|
task: TaskItem;
|
|
4
4
|
selected: boolean;
|
|
5
5
|
onClick: () => void;
|
|
6
6
|
onDelete?: () => void;
|
|
7
|
+
projectId?: string;
|
|
8
|
+
canEditAssignee?: boolean;
|
|
9
|
+
onAssigneeChange?: (selection: TaskAssigneeSelection | null) => void | Promise<void>;
|
|
7
10
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../../lib/utils";
|
|
3
3
|
import { Loader2, User, Bot, Trash2, Circle, AlertTriangle } from "lucide-react";
|
|
4
|
+
import { getDisplayableAssignee } from "../assigneeDisplay";
|
|
4
5
|
import { Badge } from "../../components/ui/badge";
|
|
5
6
|
import { getTaskExecutionDisplayFromTask } from "../taskExecutionStatus";
|
|
6
7
|
import { normalizeTaskStatus, getTaskStatusLabel } from "../taskStatus";
|
|
8
|
+
import { TaskAssigneePicker } from "./TaskAssigneePicker";
|
|
7
9
|
const priorityDotColors = {
|
|
8
10
|
Critical: "border-l-red-500",
|
|
9
11
|
High: "border-l-orange-500",
|
|
@@ -11,20 +13,19 @@ const priorityDotColors = {
|
|
|
11
13
|
Low: "border-l-slate-300",
|
|
12
14
|
};
|
|
13
15
|
export function TaskRow(props) {
|
|
14
|
-
const { task, selected, onClick, onDelete } = props;
|
|
16
|
+
const { task, selected, onClick, onDelete, projectId, canEditAssignee = false, onAssigneeChange, } = props;
|
|
15
17
|
const taskStatus = normalizeTaskStatus(task.status, task.executionState);
|
|
16
18
|
const executionDisplay = getTaskExecutionDisplayFromTask({
|
|
17
19
|
taskStatus: task.status,
|
|
18
20
|
executionState: task.executionState,
|
|
19
21
|
});
|
|
20
22
|
const isPlanTask = String(task.taskType ?? "").toLowerCase() === "plan" || task.title === "Project Plan";
|
|
21
|
-
const assigneeValue = task
|
|
22
|
-
task.assigneeId ||
|
|
23
|
-
(task.assigneeType === "Agent" && isPlanTask ? "Project Planner" : "Unassigned");
|
|
23
|
+
const assigneeValue = getDisplayableAssignee(task, { isPlanTask });
|
|
24
24
|
const executionIconTitle = executionDisplay?.label ?? "Execution idle";
|
|
25
25
|
const priorityBorderClass = task.priority ? priorityDotColors[task.priority] : "border-l-transparent";
|
|
26
|
+
const canEditInlineAssignee = !!projectId && !!onAssigneeChange && canEditAssignee && !isPlanTask;
|
|
26
27
|
return (_jsxs("div", { "data-testid": `taskboard-task-row-${task.taskId}`, className: cn("grid w-full grid-cols-[minmax(0,1fr)_6rem_7rem_2.5rem] gap-2.5 px-3.5 py-1.5 text-xs transition-colors border-l-2", priorityBorderClass, selected ? "bg-primary/5 shadow-sm" : "hover:bg-slate-50"), children: [_jsxs("button", { type: "button", onClick: onClick, className: "contents text-left", "data-testid": `taskboard-task-row-button-${task.taskId}`, children: [_jsxs("div", { className: "flex min-w-0 items-center gap-1.5", children: [_jsx("span", { className: cn("inline-flex h-4 w-4 shrink-0 items-center justify-center", executionDisplay?.showSpinner && "text-primary", executionDisplay?.needsAttention && "text-amber-600", !executionDisplay && "text-slate-300"), title: executionIconTitle, children: executionDisplay?.showSpinner ? (_jsx(Loader2, { className: "h-3 w-3 animate-spin" })) : executionDisplay?.needsAttention ? (_jsx(AlertTriangle, { className: "h-3 w-3" })) : (_jsx(Circle, { className: "h-2.5 w-2.5" })) }), _jsx("span", { "data-testid": `taskboard-task-title-${task.taskId}`, className: cn("truncate font-medium tracking-tight", selected ? "text-primary" : "text-slate-900"), title: task.description
|
|
27
28
|
? `${task.title} - ${task.description} (Priority: ${task.priority ?? "None"})`
|
|
28
|
-
: `${task.title} (Priority: ${task.priority ?? "None"})`, children: task.title })] }), _jsx("div", { className: "flex items-center", children: _jsx(Badge, { variant: "outline", className: "h-4 px-1.5 text-[9px] font-semibold uppercase tracking-wide", "data-testid": `taskboard-task-status-${task.taskId}`, children: getTaskStatusLabel(taskStatus) }) }),
|
|
29
|
+
: `${task.title} (Priority: ${task.priority ?? "None"})`, children: task.title })] }), _jsx("div", { className: "flex items-center", children: _jsx(Badge, { variant: "outline", className: "h-4 px-1.5 text-[9px] font-semibold uppercase tracking-wide", "data-testid": `taskboard-task-status-${task.taskId}`, children: getTaskStatusLabel(taskStatus) }) })] }), _jsx("div", { className: "flex items-center gap-1.5 text-slate-600", children: canEditInlineAssignee ? (_jsx(TaskAssigneePicker, { projectId: projectId, assigneeType: task.assigneeType ?? null, value: task.assigneeId ?? null, displayValue: task.assigneeDisplayName ?? task.assigneeId ?? null, onChange: onAssigneeChange, placeholder: "Assign user or agent", buttonClassName: "h-[29px] w-full min-w-0 justify-between rounded-md bg-gray-50 text-xs font-medium", buttonTestId: `taskboard-task-assignee-${task.taskId}` })) : (_jsxs(_Fragment, { children: [task.assigneeType === "Agent" ? (_jsx(Bot, { className: "h-3 w-3 shrink-0 text-slate-400" })) : (_jsx(User, { className: "h-3 w-3 shrink-0 text-slate-400" })), _jsx("span", { className: "truncate text-[11px] font-medium", title: assigneeValue, "data-testid": `taskboard-task-assignee-${task.taskId}`, children: assigneeValue })] })) }), _jsx("div", { className: "flex items-center justify-end", children: onDelete ? (_jsx("button", { type: "button", className: "rounded-md p-1 text-slate-400 transition-colors hover:bg-destructive/10 hover:text-destructive", title: "Delete task", onClick: onDelete, "data-testid": `taskboard-task-delete-${task.taskId}`, children: _jsx(Trash2, { className: "h-3.5 w-3.5" }) })) : null })] }));
|
|
29
30
|
}
|
|
30
31
|
//# sourceMappingURL=TaskRow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskRow.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskRow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEjF,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"TaskRow.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskRow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { AiProfile } from "../../editor/services/aiService";
|
|
3
|
+
import type { Agent } from "../../editor/services/agentService";
|
|
4
|
+
export declare function WizardAgentTerminalPanel(props: {
|
|
5
|
+
agentStub: Agent;
|
|
6
|
+
profiles: AiProfile[];
|
|
7
|
+
isActive: boolean;
|
|
8
|
+
displayMode: "full" | "summary";
|
|
9
|
+
hideBottomControls: boolean;
|
|
10
|
+
openChatButton?: ReactNode;
|
|
11
|
+
summaryPlaceholderMessage?: string;
|
|
12
|
+
hideSummaryWaitingPlaceholder: boolean;
|
|
13
|
+
className?: string;
|
|
14
|
+
onInteractionSubmitted?: () => void | Promise<void>;
|
|
15
|
+
onQuestionnaireOpenChange?: (isOpen: boolean) => void;
|
|
16
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { AgentTerminal } from "../../editor/ai/AgentTerminal";
|
|
3
|
+
export function WizardAgentTerminalPanel(props) {
|
|
4
|
+
const { agentStub, profiles, isActive, displayMode, hideBottomControls, openChatButton, summaryPlaceholderMessage, hideSummaryWaitingPlaceholder, className, onInteractionSubmitted, onQuestionnaireOpenChange, } = props;
|
|
5
|
+
return (_jsx(AgentTerminal, { agentStub: agentStub, profiles: profiles, isActive: isActive, compact: true, hideGreeting: true, hideSummaryMessages: true, showSummaryInput: false, hideBottomControls: hideBottomControls, displayMode: displayMode, className: className, onInteractionSubmitted: onInteractionSubmitted, onQuestionnaireOpenChange: onQuestionnaireOpenChange, questionnaireFooterActions: openChatButton, summaryPlaceholderActions: openChatButton, summaryPlaceholderMessage: summaryPlaceholderMessage, hideSummaryWaitingPlaceholder: hideSummaryWaitingPlaceholder }, agentStub.id));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=WizardAgentTerminalPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WizardAgentTerminalPanel.js","sourceRoot":"","sources":["../../../src/task-board/components/WizardAgentTerminalPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAI9D,MAAM,UAAU,wBAAwB,CAAC,KAYxC;IACC,MAAM,EACJ,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,yBAAyB,EACzB,6BAA6B,EAC7B,SAAS,EACT,sBAAsB,EACtB,yBAAyB,GAC1B,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,KAAC,aAAa,IAEZ,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,EAClB,mBAAmB,EAAE,IAAI,EACzB,gBAAgB,EAAE,KAAK,EACvB,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,sBAAsB,EAAE,sBAAsB,EAC9C,yBAAyB,EAAE,yBAAyB,EACpD,0BAA0B,EAAE,cAAc,EAC1C,yBAAyB,EAAE,cAAc,EACzC,yBAAyB,EAAE,yBAAyB,EACpD,6BAA6B,EAAE,6BAA6B,IAhBvD,SAAS,CAAC,EAAE,CAiBjB,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { TaskItem } from "../types";
|
|
3
|
+
import type { WizardCommunicationStats, WizardCommunicationSummaryState, WizardSummaryPresentation } from "./WizardCommunicationShared";
|
|
4
|
+
export declare function WizardWorkingSummaryCard(props: {
|
|
5
|
+
openChatButton?: ReactNode;
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare function WizardBlockingSummary(props: {
|
|
8
|
+
unresolvedBlockingDetails: {
|
|
9
|
+
tasks: TaskItem[];
|
|
10
|
+
hiddenCount: number;
|
|
11
|
+
};
|
|
12
|
+
onSelectTask?: (taskId: string) => void;
|
|
13
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare function WizardProjectSummaryCard(props: {
|
|
15
|
+
summaryState: WizardCommunicationSummaryState;
|
|
16
|
+
summaryPresentation: WizardSummaryPresentation;
|
|
17
|
+
stats: WizardCommunicationStats;
|
|
18
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { AlertCircle, CheckCircle2, Clock3, ListTodo, Loader2, PauseCircle, PlayCircle, } from "lucide-react";
|
|
3
|
+
import { WizardTaskStatusBadge } from "./WizardCommunicationShared";
|
|
4
|
+
export function WizardWorkingSummaryCard(props) {
|
|
5
|
+
const { openChatButton } = props;
|
|
6
|
+
return (_jsx("div", { className: "flex h-full items-center justify-center p-6", children: _jsxs("div", { className: "w-full max-w-xl rounded-2xl border border-emerald-200 bg-emerald-50 p-6 text-emerald-950", "data-testid": "taskboard-wizard-task-working-summary", children: [_jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "rounded-xl bg-white/70 p-3", children: _jsx(Loader2, { className: "h-6 w-6 animate-spin", strokeWidth: 1.75 }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "text-lg font-semibold", children: "Agent is working" }), _jsx("p", { className: "mt-1 text-sm opacity-90", children: "This task is actively running. Open chat to follow the live conversation." })] })] }), openChatButton ? (_jsx("div", { className: "mt-5 flex justify-start", children: openChatButton })) : null] }) }));
|
|
7
|
+
}
|
|
8
|
+
export function WizardBlockingSummary(props) {
|
|
9
|
+
const { unresolvedBlockingDetails, onSelectTask } = props;
|
|
10
|
+
return (_jsx("div", { className: "flex w-full justify-center px-6 pt-4 pb-6", children: _jsxs("div", { className: "w-full max-w-xl rounded-2xl border border-amber-200 bg-amber-50 p-6 text-amber-950", "data-testid": "taskboard-wizard-blocking-summary", children: [_jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "rounded-xl bg-white/70 p-3", children: _jsx(PauseCircle, { className: "h-6 w-6", strokeWidth: 1.75 }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "text-lg font-semibold", children: "Blocked by unfinished tasks" }), _jsx("p", { className: "mt-1 text-sm opacity-90", children: "Finish the dependencies below before this task can continue." })] })] }), unresolvedBlockingDetails.tasks.length > 0 ? (_jsx("div", { className: "mt-5 grid gap-2", "data-testid": "taskboard-wizard-blocker-list", children: unresolvedBlockingDetails.tasks.map((blockingTask) => {
|
|
11
|
+
const taskLabel = blockingTask.taskKey
|
|
12
|
+
? `${blockingTask.taskKey} - ${blockingTask.title}`
|
|
13
|
+
: blockingTask.title;
|
|
14
|
+
return (_jsxs("button", { type: "button", className: "flex w-full items-center justify-between gap-3 rounded-xl border border-white/70 bg-white/80 px-4 py-3 text-left transition-colors hover:bg-white", "data-testid": `taskboard-wizard-blocker-task-${blockingTask.taskId}`, onClick: () => onSelectTask?.(blockingTask.taskId), children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "truncate text-sm font-semibold text-slate-900", children: taskLabel }), _jsx("div", { className: "mt-1 text-xs text-slate-600", children: "Open this task to unblock the selected work." })] }), _jsx("div", { className: "shrink-0 text-[11px]", children: _jsx(WizardTaskStatusBadge, { status: blockingTask.status }) })] }, blockingTask.taskId));
|
|
15
|
+
}) })) : null, unresolvedBlockingDetails.hiddenCount > 0 ? (_jsxs("div", { className: "mt-4 rounded-xl border border-white/60 bg-white/60 px-4 py-3 text-sm text-slate-700", children: [unresolvedBlockingDetails.hiddenCount, " blocking dependenc", unresolvedBlockingDetails.hiddenCount === 1 ? "y is" : "ies are", " ", "not visible in the current workspace."] })) : null] }) }));
|
|
16
|
+
}
|
|
17
|
+
export function WizardProjectSummaryCard(props) {
|
|
18
|
+
const { summaryState, summaryPresentation, stats } = props;
|
|
19
|
+
const SummaryIcon = summaryPresentation.icon;
|
|
20
|
+
return (_jsx("div", { className: "flex h-full items-center justify-center p-6", children: _jsxs("div", { className: `w-full max-w-xl rounded-2xl border p-6 ${summaryPresentation.accentClass}`, children: [_jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "rounded-xl bg-white/70 p-3", children: summaryState === "working" ? (_jsx(Loader2, { className: "h-6 w-6 animate-spin", strokeWidth: 1.75 })) : (_jsx(SummaryIcon, { className: "h-6 w-6", strokeWidth: 1.75 })) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "text-lg font-semibold", children: summaryPresentation.title }), _jsx("p", { className: "mt-1 text-sm opacity-90", children: summaryPresentation.description })] })] }), _jsxs("div", { className: "mt-5 grid gap-3 sm:grid-cols-5", children: [_jsxs("div", { className: "rounded-xl border border-white/60 bg-white/70 p-3", children: [_jsxs("div", { className: "flex items-center gap-2 text-xs font-medium text-slate-500", children: [_jsx(ListTodo, { className: "h-4 w-4" }), "Total"] }), _jsx("div", { className: "mt-1 text-xl font-semibold text-slate-900", children: stats.totalCount })] }), _jsxs("div", { className: "rounded-xl border border-white/60 bg-white/70 p-3", children: [_jsxs("div", { className: "flex items-center gap-2 text-xs font-medium text-slate-500", children: [_jsx(CheckCircle2, { className: "h-4 w-4" }), "Done"] }), _jsx("div", { className: "mt-1 text-xl font-semibold text-slate-900", children: stats.completedCount })] }), _jsxs("div", { className: "rounded-xl border border-white/60 bg-white/70 p-3", children: [_jsxs("div", { className: "flex items-center gap-2 text-xs font-medium text-slate-500", children: [_jsx(PlayCircle, { className: "h-4 w-4" }), "Working"] }), _jsx("div", { className: "mt-1 text-xl font-semibold text-slate-900", children: stats.runningCount })] }), _jsxs("div", { className: "rounded-xl border border-white/60 bg-white/70 p-3", children: [_jsxs("div", { className: "flex items-center gap-2 text-xs font-medium text-slate-500", children: [_jsx(Clock3, { className: "h-4 w-4" }), "Approval"] }), _jsx("div", { className: "mt-1 text-xl font-semibold text-slate-900", children: stats.approvalCount })] }), _jsxs("div", { className: "rounded-xl border border-white/60 bg-white/70 p-3", children: [_jsxs("div", { className: "flex items-center gap-2 text-xs font-medium text-slate-500", children: [_jsx(AlertCircle, { className: "h-4 w-4" }), "Blocked"] }), _jsx("div", { className: "mt-1 text-xl font-semibold text-slate-900", children: stats.blockedCount })] })] })] }) }));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=WizardCommunicationCards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WizardCommunicationCards.js","sourceRoot":"","sources":["../../../src/task-board/components/WizardCommunicationCards.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
import type { AgentStatus } from "../../editor/services/agentService";
|
|
2
2
|
import type { TaskExecutionDisplay } from "../taskExecutionStatus";
|
|
3
3
|
import type { TaskDependency, TaskItem } from "../types";
|
|
4
|
-
|
|
5
|
-
type WizardCommunicationStats = {
|
|
6
|
-
totalCount: number;
|
|
7
|
-
completedCount: number;
|
|
8
|
-
approvalCount: number;
|
|
9
|
-
blockedCount: number;
|
|
10
|
-
runningCount: number;
|
|
11
|
-
};
|
|
4
|
+
import { type WizardCommunicationStats, type WizardCommunicationSummaryState } from "./WizardCommunicationShared";
|
|
12
5
|
export declare function WizardCommunicationCenter(props: {
|
|
13
6
|
task: TaskItem | null;
|
|
14
7
|
agentId: string | null;
|
|
@@ -16,9 +9,6 @@ export declare function WizardCommunicationCenter(props: {
|
|
|
16
9
|
executionDisplay?: TaskExecutionDisplay | null;
|
|
17
10
|
summaryState: WizardCommunicationSummaryState;
|
|
18
11
|
stats: WizardCommunicationStats;
|
|
19
|
-
projectTitle: string;
|
|
20
|
-
projectDescription?: string;
|
|
21
|
-
taskProjectTitle?: string;
|
|
22
12
|
allTasks?: TaskItem[];
|
|
23
13
|
dependencies?: TaskDependency[];
|
|
24
14
|
canEdit?: boolean;
|
|
@@ -30,4 +20,3 @@ export declare function WizardCommunicationCenter(props: {
|
|
|
30
20
|
onCloseTask?: () => void;
|
|
31
21
|
onSelectTask?: (taskId: string) => void;
|
|
32
22
|
}): import("react/jsx-runtime").JSX.Element;
|
|
33
|
-
export {};
|