@parhelia/core 0.1.12221 → 0.1.12241
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/components/ui/button.d.ts +1 -1
- package/dist/components/ui/dialog.js +2 -1
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/editor/ConfirmationDialog.js +1 -1
- package/dist/editor/ConfirmationDialog.js.map +1 -1
- package/dist/editor/ContentTree.js.map +1 -1
- package/dist/editor/FieldListField.js +1 -1
- package/dist/editor/FieldListField.js.map +1 -1
- package/dist/editor/GlobalMenuBar.js +1 -2
- package/dist/editor/GlobalMenuBar.js.map +1 -1
- package/dist/editor/ai/AgentTerminal.js +187 -109
- package/dist/editor/ai/AgentTerminal.js.map +1 -1
- package/dist/editor/ai/dialogs/AgentDialogHandler.js +3 -7
- package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
- package/dist/editor/ai/dialogs/QuestionnaireInline.js +21 -5
- package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
- package/dist/editor/client/EditorShell.js +2 -1
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/editContext.d.ts +1 -1
- package/dist/editor/client/operations.d.ts +1 -1
- package/dist/editor/client/operations.js +1 -0
- package/dist/editor/client/operations.js.map +1 -1
- package/dist/editor/commands/itemCommands.js +7 -4
- package/dist/editor/commands/itemCommands.js.map +1 -1
- package/dist/editor/context-menu/InsertMenu.js +2 -1
- package/dist/editor/context-menu/InsertMenu.js.map +1 -1
- package/dist/editor/page-editor-chrome/InlineEditor.js +20 -7
- package/dist/editor/page-editor-chrome/InlineEditor.js.map +1 -1
- package/dist/editor/page-viewer/MiniMap.d.ts +3 -1
- package/dist/editor/page-viewer/MiniMap.js +13 -57
- package/dist/editor/page-viewer/MiniMap.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +12 -0
- package/dist/editor/services/agentService.js +20 -0
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/sidebar/WorkspaceRail.js +2 -1
- package/dist/editor/sidebar/WorkspaceRail.js.map +1 -1
- package/dist/editor/views/EditView.js +1 -1
- package/dist/editor/views/EditView.js.map +1 -1
- package/dist/editor/views/EditorSlot.js +17 -24
- package/dist/editor/views/EditorSlot.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/task-board/TaskBoardWorkspace.js +159 -27
- package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
- package/dist/task-board/components/CreateProjectDialog.js +18 -9
- package/dist/task-board/components/CreateProjectDialog.js.map +1 -1
- package/dist/task-board/components/ProjectDashboard.js +0 -1
- package/dist/task-board/components/ProjectDashboard.js.map +1 -1
- package/dist/task-board/components/ProjectSelector.d.ts +1 -0
- package/dist/task-board/components/ProjectSelector.js +2 -2
- package/dist/task-board/components/ProjectSelector.js.map +1 -1
- package/dist/task-board/components/ProjectSettingsDialog.js +0 -1
- package/dist/task-board/components/ProjectSettingsDialog.js.map +1 -1
- package/dist/task-board/components/TaskAgentPanel.d.ts +3 -0
- package/dist/task-board/components/TaskAgentPanel.js +13 -4
- package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
- package/dist/task-board/components/TaskBoardTitlebar.js +3 -3
- package/dist/task-board/components/TaskBoardTitlebar.js.map +1 -1
- package/dist/task-board/components/TaskCard.d.ts +2 -1
- package/dist/task-board/components/TaskCard.js.map +1 -1
- package/dist/task-board/taskBoardNavStore.d.ts +1 -0
- package/dist/task-board/taskBoardNavStore.js +1 -0
- package/dist/task-board/taskBoardNavStore.js.map +1 -1
- package/dist/task-board/taskExecutionStatus.js +34 -8
- package/dist/task-board/taskExecutionStatus.js.map +1 -1
- package/dist/task-board/types.d.ts +1 -1
- package/dist/task-board/views/KanbanView.d.ts +2 -0
- package/dist/task-board/views/KanbanView.js +177 -37
- package/dist/task-board/views/KanbanView.js.map +1 -1
- package/dist/task-board/views/ListView.d.ts +2 -0
- package/dist/task-board/views/ListView.js +4 -3
- package/dist/task-board/views/ListView.js.map +1 -1
- package/dist/task-board/views/PlanningView.js +1 -1
- package/dist/task-board/views/PlanningView.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectSettingsDialog.js","sourceRoot":"","sources":["../../../src/task-board/components/ProjectSettingsDialog.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ProjectSettingsDialog.js","sourceRoot":"","sources":["../../../src/task-board/components/ProjectSettingsDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AgentStatus } from "../../editor/services/agentService";
|
|
1
2
|
export type TaskAgentPanelMode = "no-task-selected" | "no-agent" | "agent";
|
|
2
3
|
export declare function TaskAgentPanel(props: {
|
|
3
4
|
agentId: string | null;
|
|
@@ -12,4 +13,6 @@ export declare function TaskAgentPanel(props: {
|
|
|
12
13
|
canRunAssignedAgent?: boolean;
|
|
13
14
|
runAssignedAgentDisabledReason?: string;
|
|
14
15
|
onStartPlanning?: () => void | Promise<void>;
|
|
16
|
+
assignedAgentStatus?: AgentStatus;
|
|
17
|
+
onReopenTask?: () => void;
|
|
15
18
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,11 +1,19 @@
|
|
|
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 { useEffect, useMemo, useState } from "react";
|
|
3
|
-
import { Bot, Play, UserPlus } from "lucide-react";
|
|
3
|
+
import { Bot, CheckCircle2, Play, UserPlus } from "lucide-react";
|
|
4
4
|
import { Button } from "../../components/ui/button";
|
|
5
5
|
import { AgentTerminal } from "../../editor/ai/AgentTerminal";
|
|
6
6
|
import { loadAiProfiles } from "../../editor/services/aiService";
|
|
7
|
+
function isAgentClosed(status) {
|
|
8
|
+
if (status === undefined || status === null)
|
|
9
|
+
return false;
|
|
10
|
+
if (typeof status === "number")
|
|
11
|
+
return status === 5;
|
|
12
|
+
const s = String(status).replace(/[^a-z0-9]/gi, "").toLowerCase();
|
|
13
|
+
return s === "closed";
|
|
14
|
+
}
|
|
7
15
|
export function TaskAgentPanel(props) {
|
|
8
|
-
const { agentId, mode, label, onAssignAgent, onRunAssignedAgent, hasAssignedAgentProfile = false, assignedAgentProfileName, canAssignAgent = true, assignAgentDisabledReason, canRunAssignedAgent = true, runAssignedAgentDisabledReason, onStartPlanning, } = props;
|
|
16
|
+
const { agentId, mode, label, onAssignAgent, onRunAssignedAgent, hasAssignedAgentProfile = false, assignedAgentProfileName, canAssignAgent = true, assignAgentDisabledReason, canRunAssignedAgent = true, runAssignedAgentDisabledReason, onStartPlanning, assignedAgentStatus, onReopenTask, } = props;
|
|
9
17
|
const [profiles, setProfiles] = useState([]);
|
|
10
18
|
useEffect(() => {
|
|
11
19
|
let cancelled = false;
|
|
@@ -43,6 +51,7 @@ export function TaskAgentPanel(props) {
|
|
|
43
51
|
: "This task does not have an agent assigned yet." }), !canPerformPrimaryAction && primaryActionDisabledReason && (_jsx("div", { className: "text-xs text-amber-600", children: primaryActionDisabledReason }))] }), onStartPlanning && (_jsxs(Button, { variant: "default", size: "sm", onClick: onStartPlanning, children: [_jsx(Play, { className: "mr-1 h-4 w-4" }), "Start Planning"] }))] })] }));
|
|
44
52
|
}
|
|
45
53
|
// ── agent terminal ──
|
|
46
|
-
|
|
54
|
+
const agentClosed = isAgentClosed(assignedAgentStatus);
|
|
55
|
+
return (_jsx("div", { className: "flex h-full min-h-0 flex-col border-l bg-white", children: agentClosed ? (_jsxs(_Fragment, { children: [_jsx(AgentTerminal, { agentStub: agentStub, profiles: profiles, isActive: true, compact: true, hideGreeting: true, hideBottomControls: true }), _jsxs("div", { className: "border-t border-green-200 bg-green-50 px-4 py-3", children: [_jsxs("div", { className: "flex items-center gap-2 text-sm font-medium text-green-800", children: [_jsx(CheckCircle2, { className: "h-4 w-4 shrink-0" }), _jsx("span", { children: "This task's agent has finished." })] }), _jsxs("p", { className: "mt-1 text-xs text-green-700", children: ["To continue working on this task, move it back to ", _jsx("strong", { children: "Open" }), "."] }), onReopenTask && (_jsx(Button, { variant: "outline", size: "sm", className: "mt-2 border-green-300 text-green-800 hover:bg-green-100", onClick: onReopenTask, children: "Move to Open" }))] })] })) : (_jsx(AgentTerminal, { agentStub: agentStub, profiles: profiles, isActive: true, compact: true, hideGreeting: true })) }));
|
|
47
56
|
}
|
|
48
57
|
//# sourceMappingURL=TaskAgentPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskAgentPanel.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskAgentPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"TaskAgentPanel.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskAgentPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { jsx as _jsx,
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useSyncExternalStore } from "react";
|
|
3
3
|
import { Button } from "../../components/ui/button";
|
|
4
|
-
import {
|
|
4
|
+
import { RefreshCw, Settings, SquarePen, } from "lucide-react";
|
|
5
5
|
import { subscribeTaskBoardNav, getTaskBoardNavSnapshot, } from "../taskBoardNavStore";
|
|
6
6
|
import { useEditContext } from "../../editor/client/editContext";
|
|
7
7
|
import { SimpleIconButton } from "../../editor/ui/SimpleIconButton";
|
|
@@ -10,7 +10,7 @@ export function TaskBoardTitlebar() {
|
|
|
10
10
|
const editContext = useEditContext();
|
|
11
11
|
const nav = useSyncExternalStore(subscribeTaskBoardNav, getTaskBoardNavSnapshot, getTaskBoardNavSnapshot);
|
|
12
12
|
const showEditorPanel = editContext?.showAgentsWorkspaceEditor ?? true;
|
|
13
|
-
return (_jsxs("div", { className: "flex w-full items-center justify-between gap-4 pr-2", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx(ProjectSelector, { nav: nav }), nav.hasSelectedProject ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "mx-1 h-8 w-px bg-slate-200" }),
|
|
13
|
+
return (_jsxs("div", { className: "flex w-full items-center justify-between gap-4 pr-2", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx(ProjectSelector, { nav: nav }), nav.hasSelectedProject ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "mx-1 h-8 w-px bg-slate-200" }), _jsx(Button, { variant: "outline", size: "icon", onClick: () => nav.onRefresh?.(), className: "h-8 w-8", title: "Refresh tasks", "data-testid": "taskboard-refresh-button", children: _jsx(RefreshCw, { className: "h-4 w-4 text-slate-500" }) }), _jsx(Button, { variant: "outline", size: "icon", onClick: () => {
|
|
14
14
|
if (nav.selectedProjectId) {
|
|
15
15
|
nav.onOpenProjectSettings?.(nav.selectedProjectId);
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskBoardTitlebar.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskBoardTitlebar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"TaskBoardTitlebar.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskBoardTitlebar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EACL,SAAS,EACT,QAAQ,EACR,SAAS,GACV,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,oBAAoB,CAC9B,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,CACxB,CAAC;IACF,MAAM,eAAe,GAAG,WAAW,EAAE,yBAAyB,IAAI,IAAI,CAAC;IAEvE,OAAO,CACL,eAAK,SAAS,EAAC,qDAAqD,aAClE,eAAK,SAAS,EAAC,iCAAiC,aAC9C,KAAC,eAAe,IAAC,GAAG,EAAE,GAAG,GAAI,EAC5B,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CACxB,8BACE,cAAK,SAAS,EAAC,4BAA4B,GAAG,EAC9C,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,EAChC,SAAS,EAAC,SAAS,EACnB,KAAK,EAAC,eAAe,iBACT,0BAA0B,YAEtC,KAAC,SAAS,IAAC,SAAS,EAAC,wBAAwB,GAAG,GACzC,EACT,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,GAAG,EAAE;oCACZ,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;wCAC1B,GAAG,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;oCACrD,CAAC;gCACH,CAAC,EACD,QAAQ,EAAE,CAAC,GAAG,CAAC,gBAAgB,EAC/B,SAAS,EAAC,SAAS,EACnB,KAAK,EAAC,kBAAkB,iBACZ,mCAAmC,YAE/C,KAAC,QAAQ,IAAC,SAAS,EAAC,wBAAwB,GAAG,GACxC,IACR,CACJ,CAAC,CAAC,CAAC,IAAI,IACJ,EACL,CAAC,WAAW,EAAE,QAAQ,IAAI,CACzB,KAAC,gBAAgB,IACf,IAAI,EAAE,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,EACvD,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EACtD,IAAI,EAAC,OAAO,iBACA,+BAA+B,EAC3C,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,GAAG,EAAE,CACZ,WAAW,EAAE,4BAA4B,CAAC,CAAC,eAAe,CAAC,GAE7D,CACH,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import type { MouseEventHandler } from "react";
|
|
1
2
|
import type { TaskItem } from "../types";
|
|
2
3
|
import type { AgentStatus } from "../../editor/services/agentService";
|
|
3
4
|
export declare function TaskCard(props: {
|
|
4
5
|
task: TaskItem;
|
|
5
6
|
selected: boolean;
|
|
6
|
-
onClick:
|
|
7
|
+
onClick: MouseEventHandler<HTMLButtonElement>;
|
|
7
8
|
dependencyTaskIds?: string[];
|
|
8
9
|
assignedAgentStatus?: AgentStatus;
|
|
9
10
|
showDoneCheckmark?: boolean;
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"TaskCard.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taskBoardNavStore.js","sourceRoot":"","sources":["../../src/task-board/taskBoardNavStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"taskBoardNavStore.js","sourceRoot":"","sources":["../../src/task-board/taskBoardNavStore.ts"],"names":[],"mappings":"AAoDA,MAAM,YAAY,GAAsB;IACtC,YAAY,EAAE,OAAO;IACrB,eAAe,EAAE,iCAAiC;IAClD,eAAe,EAAE,qBAAqB;IACtC,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,eAAe,EAAE,KAAK;IACtB,iBAAiB,EAAE,KAAK;IACxB,iBAAiB,EAAE,IAAI;IACvB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,EAAE;IAClB,kBAAkB,EAAE,KAAK;IACzB,aAAa,EAAE,KAAK;IACpB,kBAAkB,EAAE,KAAK;IACzB,mBAAmB,EAAE,KAAK;IAC1B,gBAAgB,EAAE,KAAK;IACvB,OAAO,EAAE,EAAE;IACX,cAAc,EAAE,KAAK;IACrB,eAAe,EAAE,SAAS;IAC1B,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,SAAS;IACzB,eAAe,EAAE,SAAS;IAC1B,qBAAqB,EAAE,SAAS;IAChC,eAAe,EAAE,SAAS;IAC1B,uBAAuB,EAAE,SAAS;IAClC,kBAAkB,EAAE,SAAS;IAC7B,YAAY,EAAE,SAAS;IACvB,iBAAiB,EAAE,SAAS;IAC5B,SAAS,EAAE,SAAS;CACrB,CAAC;AAEF,IAAI,KAAK,GAAsB,YAAY,CAAC;AAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;AAExC,SAAS,IAAI;IACX,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAoB;IACxD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAmC;IACtE,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;IACjC,IAAI,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,KAAK,GAAG,YAAY,CAAC;IACrB,IAAI,EAAE,CAAC;AACT,CAAC"}
|
|
@@ -25,7 +25,30 @@ function normalizeAgentStatus(status) {
|
|
|
25
25
|
return String(status);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
|
|
28
|
+
const rawStatus = String(status).trim();
|
|
29
|
+
const normalized = rawStatus.replace(/[^a-z0-9]/gi, "").toLowerCase();
|
|
30
|
+
switch (normalized) {
|
|
31
|
+
case "new":
|
|
32
|
+
return "new";
|
|
33
|
+
case "running":
|
|
34
|
+
return "running";
|
|
35
|
+
case "waitingforapproval":
|
|
36
|
+
return "waitingForApproval";
|
|
37
|
+
case "waitingforinput":
|
|
38
|
+
return "waitingForInput";
|
|
39
|
+
case "completed":
|
|
40
|
+
return "completed";
|
|
41
|
+
case "error":
|
|
42
|
+
return "error";
|
|
43
|
+
case "closed":
|
|
44
|
+
return "closed";
|
|
45
|
+
case "idle":
|
|
46
|
+
return "idle";
|
|
47
|
+
case "costlimitreached":
|
|
48
|
+
return "costLimitReached";
|
|
49
|
+
default:
|
|
50
|
+
return rawStatus;
|
|
51
|
+
}
|
|
29
52
|
}
|
|
30
53
|
export function getTaskExecutionDisplay(executionStatus, assignedAgentStatus, taskStatus) {
|
|
31
54
|
if (String(taskStatus ?? "").toLowerCase() === "done") {
|
|
@@ -73,13 +96,16 @@ export function getTaskExecutionDisplay(executionStatus, assignedAgentStatus, ta
|
|
|
73
96
|
needsAttention: true,
|
|
74
97
|
};
|
|
75
98
|
case "completed":
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
99
|
+
if (executionStatus === "Running") {
|
|
100
|
+
return {
|
|
101
|
+
label: "Waiting for feedback",
|
|
102
|
+
variant: "outline",
|
|
103
|
+
className: "border-amber-300 bg-amber-50 text-amber-700",
|
|
104
|
+
showSpinner: false,
|
|
105
|
+
needsAttention: true,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
83
109
|
case "closed":
|
|
84
110
|
return {
|
|
85
111
|
label: "Closed",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taskExecutionStatus.js","sourceRoot":"","sources":["../../src/task-board/taskExecutionStatus.ts"],"names":[],"mappings":"AAaA,SAAS,oBAAoB,CAAC,MAA+B;IAC3D,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAE9D,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;IAED,
|
|
1
|
+
{"version":3,"file":"taskExecutionStatus.js","sourceRoot":"","sources":["../../src/task-board/taskExecutionStatus.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ProjectStatus = "Planning" | "
|
|
1
|
+
export type ProjectStatus = "Planning" | "Active" | "Finished" | "Archived";
|
|
2
2
|
export type ProjectPermission = "Owner" | "Editor" | "Viewer";
|
|
3
3
|
export type ProjectMemberType = "User" | "Role";
|
|
4
4
|
export type TaskStatus = "Todo" | "InProgress" | "Review" | "Done";
|
|
@@ -2,14 +2,16 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { TaskCard } from "../components/TaskCard";
|
|
3
3
|
import { deleteTask, updateTask } from "../services/taskService";
|
|
4
4
|
import { toast } from "sonner";
|
|
5
|
-
import { useMemo, useState } from "react";
|
|
6
|
-
import { Circle, PlayCircle, Eye, CheckCircle2, LayoutGrid, Trash2 } from "lucide-react";
|
|
5
|
+
import { useEffect, useMemo, useState } from "react";
|
|
6
|
+
import { Circle, PlayCircle, Eye, CheckCircle2, LayoutGrid, Trash2, Plus, } from "lucide-react";
|
|
7
7
|
import { cn } from "../../lib/utils";
|
|
8
8
|
import { useEditContext } from "../../editor/client/editContext";
|
|
9
9
|
import { normalizeTaskStatus, getTaskStatusLabel } from "../taskStatus";
|
|
10
10
|
import { getLinkedAgentId } from "../taskAgentLink";
|
|
11
11
|
import { FilterInput } from "../../components/FilterInput";
|
|
12
12
|
import { SimpleTabs } from "../../editor/ui/SimpleTabs";
|
|
13
|
+
import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuTrigger, } from "../../components/ui/context-menu";
|
|
14
|
+
import { Button } from "../../components/ui/button";
|
|
13
15
|
const viewTabs = [
|
|
14
16
|
{ id: "kanban", label: "Kanban", content: null },
|
|
15
17
|
{ id: "list", label: "List", content: null },
|
|
@@ -21,10 +23,12 @@ const columns = [
|
|
|
21
23
|
{ status: "Done", title: "Done", icon: CheckCircle2, color: "text-green-500" },
|
|
22
24
|
];
|
|
23
25
|
export function KanbanView(props) {
|
|
24
|
-
const { tasks, dependencies, selectedTaskId, onSelectTask, onTasksChanged, projectId, permission, agentStatusesById = {}, activeTab, onSetActiveTab, } = props;
|
|
26
|
+
const { tasks, dependencies, selectedTaskId, onSelectTask, onTasksChanged, projectId, permission, agentStatusesById = {}, activeTab, onSetActiveTab, canCreateTask, onCreateTask, } = props;
|
|
25
27
|
const editContext = useEditContext();
|
|
26
28
|
const [dragOver, setDragOver] = useState(null);
|
|
27
29
|
const [filter, setFilter] = useState("");
|
|
30
|
+
const [selectedTaskIds, setSelectedTaskIds] = useState(() => selectedTaskId ? new Set([selectedTaskId]) : new Set());
|
|
31
|
+
const [selectionAnchorTaskId, setSelectionAnchorTaskId] = useState(selectedTaskId);
|
|
28
32
|
const canEdit = permission === "Owner" || permission === "Editor";
|
|
29
33
|
const getStatusForTask = (task) => {
|
|
30
34
|
const linkedAgentId = getLinkedAgentId(task);
|
|
@@ -36,19 +40,6 @@ export function KanbanView(props) {
|
|
|
36
40
|
map.set(t.taskId, t);
|
|
37
41
|
return map;
|
|
38
42
|
}, [tasks]);
|
|
39
|
-
const moveTask = async (taskId, status) => {
|
|
40
|
-
const task = taskById.get(taskId);
|
|
41
|
-
if (!task)
|
|
42
|
-
return;
|
|
43
|
-
if (task.status === status)
|
|
44
|
-
return;
|
|
45
|
-
const result = await updateTask({ taskId, status });
|
|
46
|
-
if (result.type !== "success") {
|
|
47
|
-
toast.error(result.summary || "Failed to move task");
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
await onTasksChanged();
|
|
51
|
-
};
|
|
52
43
|
const dependencyTaskIdsByTask = useMemo(() => {
|
|
53
44
|
const map = new Map();
|
|
54
45
|
const toDisplayId = (taskId) => {
|
|
@@ -76,6 +67,101 @@ export function KanbanView(props) {
|
|
|
76
67
|
(task.assigneeId || "").toLowerCase().includes(query));
|
|
77
68
|
});
|
|
78
69
|
}, [filter, tasks]);
|
|
70
|
+
const orderedFilteredTasks = useMemo(() => {
|
|
71
|
+
return [...filteredTasks].sort((a, b) => {
|
|
72
|
+
if (a.sortOrder !== b.sortOrder)
|
|
73
|
+
return a.sortOrder - b.sortOrder;
|
|
74
|
+
return a.createdAt.localeCompare(b.createdAt);
|
|
75
|
+
});
|
|
76
|
+
}, [filteredTasks]);
|
|
77
|
+
const filteredTaskIds = useMemo(() => orderedFilteredTasks.map((task) => task.taskId), [orderedFilteredTasks]);
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
const taskIds = new Set(tasks.map((task) => task.taskId));
|
|
80
|
+
setSelectedTaskIds((previous) => {
|
|
81
|
+
const next = new Set();
|
|
82
|
+
previous.forEach((taskId) => {
|
|
83
|
+
if (taskIds.has(taskId))
|
|
84
|
+
next.add(taskId);
|
|
85
|
+
});
|
|
86
|
+
if (next.size === 0 && selectedTaskId && taskIds.has(selectedTaskId)) {
|
|
87
|
+
next.add(selectedTaskId);
|
|
88
|
+
}
|
|
89
|
+
return next;
|
|
90
|
+
});
|
|
91
|
+
if (selectionAnchorTaskId && !taskIds.has(selectionAnchorTaskId)) {
|
|
92
|
+
setSelectionAnchorTaskId(selectedTaskId);
|
|
93
|
+
}
|
|
94
|
+
}, [tasks, selectedTaskId, selectionAnchorTaskId]);
|
|
95
|
+
const selectedCount = selectedTaskIds.size;
|
|
96
|
+
const moveTaskIdsToStatus = async (taskIds, status) => {
|
|
97
|
+
const uniqueTaskIds = [...new Set(taskIds)];
|
|
98
|
+
if (uniqueTaskIds.length === 0)
|
|
99
|
+
return;
|
|
100
|
+
const moveCandidates = uniqueTaskIds.filter((taskId) => {
|
|
101
|
+
const task = taskById.get(taskId);
|
|
102
|
+
return task && task.status !== status;
|
|
103
|
+
});
|
|
104
|
+
if (moveCandidates.length === 0)
|
|
105
|
+
return;
|
|
106
|
+
const results = await Promise.all(moveCandidates.map((taskId) => updateTask({ taskId, status })));
|
|
107
|
+
const failed = results.filter((result) => result.type !== "success");
|
|
108
|
+
if (failed.length > 0) {
|
|
109
|
+
toast.error(failed[0]?.summary ||
|
|
110
|
+
`Failed to move ${failed.length === moveCandidates.length ? "tasks" : "some tasks"}`);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (moveCandidates.length > 1) {
|
|
114
|
+
toast.success(`Moved ${moveCandidates.length} tasks to ${getTaskStatusLabel(status)}`);
|
|
115
|
+
}
|
|
116
|
+
await onTasksChanged();
|
|
117
|
+
};
|
|
118
|
+
const handleTaskCardClick = (taskId, event) => {
|
|
119
|
+
const isToggleSelect = event.ctrlKey || event.metaKey;
|
|
120
|
+
const isRangeSelect = event.shiftKey;
|
|
121
|
+
const anchor = selectionAnchorTaskId || selectedTaskId || taskId;
|
|
122
|
+
if (isRangeSelect) {
|
|
123
|
+
const anchorIndex = filteredTaskIds.indexOf(anchor);
|
|
124
|
+
const clickedIndex = filteredTaskIds.indexOf(taskId);
|
|
125
|
+
if (anchorIndex === -1 || clickedIndex === -1) {
|
|
126
|
+
setSelectedTaskIds(new Set([taskId]));
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
const [start, end] = anchorIndex <= clickedIndex
|
|
130
|
+
? [anchorIndex, clickedIndex]
|
|
131
|
+
: [clickedIndex, anchorIndex];
|
|
132
|
+
const rangeSelection = new Set(filteredTaskIds.slice(start, end + 1));
|
|
133
|
+
if (isToggleSelect) {
|
|
134
|
+
setSelectedTaskIds((previous) => {
|
|
135
|
+
const next = new Set(previous);
|
|
136
|
+
rangeSelection.forEach((id) => next.add(id));
|
|
137
|
+
return next;
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
setSelectedTaskIds(rangeSelection);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
onSelectTask(taskId);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (isToggleSelect) {
|
|
148
|
+
setSelectedTaskIds((previous) => {
|
|
149
|
+
const next = new Set(previous);
|
|
150
|
+
if (next.has(taskId) && next.size > 1) {
|
|
151
|
+
next.delete(taskId);
|
|
152
|
+
return next;
|
|
153
|
+
}
|
|
154
|
+
next.add(taskId);
|
|
155
|
+
return next;
|
|
156
|
+
});
|
|
157
|
+
setSelectionAnchorTaskId(taskId);
|
|
158
|
+
onSelectTask(taskId);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
setSelectedTaskIds(new Set([taskId]));
|
|
162
|
+
setSelectionAnchorTaskId(taskId);
|
|
163
|
+
onSelectTask(taskId);
|
|
164
|
+
};
|
|
79
165
|
const handleDeleteTask = (task) => {
|
|
80
166
|
const runDelete = async () => {
|
|
81
167
|
const result = await deleteTask(task.taskId);
|
|
@@ -100,8 +186,54 @@ export function KanbanView(props) {
|
|
|
100
186
|
}
|
|
101
187
|
void runDelete();
|
|
102
188
|
};
|
|
103
|
-
|
|
104
|
-
|
|
189
|
+
const handleDeleteSelectedTasks = () => {
|
|
190
|
+
const taskIds = [...selectedTaskIds];
|
|
191
|
+
if (taskIds.length === 0)
|
|
192
|
+
return;
|
|
193
|
+
const singleTask = taskIds.length === 1 ? taskById.get(taskIds[0]) : undefined;
|
|
194
|
+
const runDelete = async () => {
|
|
195
|
+
const results = await Promise.all(taskIds.map((taskId) => deleteTask(taskId)));
|
|
196
|
+
const failed = results.filter((result) => result.type !== "success");
|
|
197
|
+
if (failed.length > 0) {
|
|
198
|
+
toast.error(failed[0]?.summary ||
|
|
199
|
+
`Failed to delete ${failed.length === taskIds.length ? "tasks" : "some tasks"}`);
|
|
200
|
+
}
|
|
201
|
+
else if (taskIds.length === 1) {
|
|
202
|
+
toast.success("Task deleted");
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
toast.success(`Deleted ${taskIds.length} tasks`);
|
|
206
|
+
}
|
|
207
|
+
if (taskIds.length - failed.length > 0) {
|
|
208
|
+
setSelectedTaskIds(new Set());
|
|
209
|
+
}
|
|
210
|
+
await onTasksChanged();
|
|
211
|
+
};
|
|
212
|
+
if (editContext?.confirm) {
|
|
213
|
+
editContext.confirm({
|
|
214
|
+
header: taskIds.length === 1 ? "Delete task" : "Delete tasks",
|
|
215
|
+
message: taskIds.length === 1
|
|
216
|
+
? `Are you sure you want to delete "${singleTask?.title || "this task"}"?\n\nThis action cannot be undone.`
|
|
217
|
+
: `Are you sure you want to delete ${taskIds.length} selected tasks?\n\nThis action cannot be undone.`,
|
|
218
|
+
acceptLabel: "Delete",
|
|
219
|
+
showCancel: true,
|
|
220
|
+
accept: () => {
|
|
221
|
+
void runDelete();
|
|
222
|
+
},
|
|
223
|
+
});
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
void runDelete();
|
|
227
|
+
};
|
|
228
|
+
const handleTaskContextMenu = (taskId) => {
|
|
229
|
+
if (selectedTaskIds.has(taskId))
|
|
230
|
+
return;
|
|
231
|
+
setSelectedTaskIds(new Set([taskId]));
|
|
232
|
+
setSelectionAnchorTaskId(taskId);
|
|
233
|
+
onSelectTask(taskId);
|
|
234
|
+
};
|
|
235
|
+
return (_jsxs("div", { className: "flex min-h-0 min-w-0 flex-1 flex-col select-none", children: [_jsxs("div", { className: "mb-3 flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(LayoutGrid, { className: "h-4 w-4 text-slate-600" }), _jsx("h2", { className: "text-base font-semibold tracking-tight", children: "Board" }), _jsx("div", { className: "rounded-full bg-secondary px-2.5 py-0.5 text-xs font-semibold text-secondary-foreground", children: filteredTasks.length })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(SimpleTabs, { tabs: viewTabs, activeTab: activeTab, setActiveTab: onSetActiveTab, hideContent: true, className: "rounded-lg border-0 bg-slate-100/50 p-1" }), _jsxs(Button, { size: "sm", onClick: onCreateTask, disabled: !canCreateTask, className: "h-8 px-3", "data-testid": "taskboard-create-task-button", children: [_jsx(Plus, { className: "h-4 w-4 sm:mr-1.5" }), _jsx("span", { className: "hidden sm:inline", children: "New Task" })] })] })] }), _jsx("div", { className: "mb-4", children: _jsx(FilterInput, { value: filter, onChange: setFilter, placeholder: "Search or filter tasks...", className: "w-full sm:w-[320px]" }) }), _jsx("div", { className: "flex min-h-0 w-full min-w-0 flex-1 gap-3 overflow-x-auto pb-3", children: columns.map((col) => {
|
|
236
|
+
const colTasks = orderedFilteredTasks.filter((t) => normalizeTaskStatus(t.status, t.executionStatus) === col.status);
|
|
105
237
|
const Icon = col.icon;
|
|
106
238
|
return (_jsxs("div", { className: cn("flex flex-col w-68 shrink-0 rounded-xl bg-slate-50/50 border transition-colors", dragOver === col.status ? "bg-primary/5 border-primary/20 ring-1 ring-primary/20" : "border-transparent"), onDragOver: (e) => {
|
|
107
239
|
e.preventDefault();
|
|
@@ -112,25 +244,33 @@ export function KanbanView(props) {
|
|
|
112
244
|
setDragOver(null);
|
|
113
245
|
if (!taskId)
|
|
114
246
|
return;
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
e.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
e.
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
247
|
+
const taskIdsToMove = selectedTaskIds.has(taskId)
|
|
248
|
+
? [...selectedTaskIds]
|
|
249
|
+
: [taskId];
|
|
250
|
+
await moveTaskIdsToStatus(taskIdsToMove, col.status);
|
|
251
|
+
}, children: [_jsx("div", { className: "flex items-center justify-between p-2.5 pb-1.5", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Icon, { className: cn("h-4 w-4", col.color) }), _jsx("span", { className: "text-xs font-semibold uppercase tracking-wider text-slate-600", children: getTaskStatusLabel(col.status) }), _jsx("span", { className: "ml-1 text-xs font-medium text-slate-400", children: colTasks.length })] }) }), _jsx("div", { className: "flex-1 flex flex-col gap-2 p-2 min-h-0 overflow-y-auto scrollbar-thin scrollbar-thumb-slate-200", children: colTasks.length === 0 ? (_jsx("div", { className: "flex flex-col items-center justify-center py-6 rounded-lg border border-dashed border-slate-200 bg-white/50", children: _jsx("div", { className: "text-[10px] font-medium text-slate-400 uppercase tracking-widest", children: "No tasks" }) })) : (colTasks.map((t) => {
|
|
252
|
+
const card = (_jsxs("div", { draggable: true, className: "group relative cursor-grab active:cursor-grabbing", onContextMenu: () => handleTaskContextMenu(t.taskId), onDragStart: (e) => {
|
|
253
|
+
e.dataTransfer.setData("text/plain", t.taskId);
|
|
254
|
+
e.dataTransfer.effectAllowed = "move";
|
|
255
|
+
// Create a preview image or style for dragging
|
|
256
|
+
if (e.currentTarget instanceof HTMLElement) {
|
|
257
|
+
e.currentTarget.style.opacity = "0.5";
|
|
258
|
+
}
|
|
259
|
+
}, onDragEnd: (e) => {
|
|
260
|
+
if (e.currentTarget instanceof HTMLElement) {
|
|
261
|
+
e.currentTarget.style.opacity = "1";
|
|
262
|
+
}
|
|
263
|
+
}, children: [canEdit && (_jsx("button", { type: "button", className: "absolute right-2 top-2 z-10 rounded-md p-1 text-slate-400 opacity-0 transition-opacity hover:bg-destructive/10 hover:text-destructive group-hover:opacity-100", title: "Delete task", onMouseDown: (e) => {
|
|
264
|
+
e.stopPropagation();
|
|
265
|
+
e.preventDefault();
|
|
266
|
+
}, onClick: (e) => {
|
|
267
|
+
e.stopPropagation();
|
|
268
|
+
handleDeleteTask(t);
|
|
269
|
+
}, children: _jsx(Trash2, { className: "h-3.5 w-3.5" }) })), _jsx(TaskCard, { task: t, selected: selectedTaskIds.has(t.taskId), onClick: (event) => handleTaskCardClick(t.taskId, event), dependencyTaskIds: dependencyTaskIdsByTask.get(t.taskId) || [], assignedAgentStatus: getStatusForTask(t) })] }, t.taskId));
|
|
270
|
+
if (!canEdit)
|
|
271
|
+
return card;
|
|
272
|
+
return (_jsxs(ContextMenu, { children: [_jsx(ContextMenuTrigger, { asChild: true, children: card }), _jsx(ContextMenuContent, { className: "w-44", children: _jsxs(ContextMenuItem, { variant: "destructive", onSelect: handleDeleteSelectedTasks, "data-testid": "taskboard-kanban-context-delete-selected", children: [_jsx(Trash2, { className: "h-3.5 w-3.5" }), selectedCount > 1 ? `Delete selected (${selectedCount})` : "Delete task"] }) })] }, `menu-${t.taskId}`));
|
|
273
|
+
})) })] }, col.status));
|
|
134
274
|
}) })] }));
|
|
135
275
|
}
|
|
136
276
|
//# sourceMappingURL=KanbanView.js.map
|