@parhelia/core 0.1.12430 → 0.1.12436
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/config/config.js +9 -2
- package/dist/config/config.js.map +1 -1
- package/dist/editor/PictureCropper.js +45 -41
- package/dist/editor/PictureCropper.js.map +1 -1
- package/dist/editor/ai/AgentTerminal.js +32 -5
- package/dist/editor/ai/AgentTerminal.js.map +1 -1
- package/dist/editor/ai/AgentTerminalStatusBar.js +65 -0
- package/dist/editor/ai/AgentTerminalStatusBar.js.map +1 -1
- package/dist/editor/ai/Agents.js +19 -0
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/ai/ContentInspectorPopover.d.ts +1 -0
- package/dist/editor/ai/ContentInspectorPopover.js +22 -8
- package/dist/editor/ai/ContentInspectorPopover.js.map +1 -1
- package/dist/editor/ai/dialogs/AgentDialogHandler.js +32 -3
- package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +27 -0
- package/dist/editor/services/agentService.js +11 -2
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/aiService.js +54 -3
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/settings/About.js +40 -4
- package/dist/editor/settings/About.js.map +1 -1
- package/dist/editor/settings/panels/PersistentLogsPanel.d.ts +2 -0
- package/dist/editor/settings/panels/PersistentLogsPanel.js +221 -0
- package/dist/editor/settings/panels/PersistentLogsPanel.js.map +1 -0
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js +22 -0
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
- package/dist/editor/settings/panels/index.d.ts +1 -0
- package/dist/editor/settings/panels/index.js +1 -0
- package/dist/editor/settings/panels/index.js.map +1 -1
- package/dist/licensing/LicenseContext.js +40 -4
- package/dist/licensing/LicenseContext.js.map +1 -1
- package/dist/licensing/LicenseOverlay.js +1 -1
- package/dist/licensing/LicenseOverlay.js.map +1 -1
- package/dist/licensing/types.d.ts +3 -1
- package/dist/licensing/types.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/task-board/TaskBoardWorkspace.js +13 -265
- package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
- package/dist/task-board/components/ProjectDashboard.js +2 -1
- package/dist/task-board/components/ProjectDashboard.js.map +1 -1
- package/dist/task-board/components/TaskAgentPanel.d.ts +1 -0
- package/dist/task-board/components/TaskAgentPanel.js +2 -2
- package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
- package/dist/task-board/components/TaskDetailPanel.js +2 -1
- package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
- package/dist/task-board/components/TaskboardPersistentLogPanel.d.ts +11 -0
- package/dist/task-board/components/TaskboardPersistentLogPanel.js +114 -0
- package/dist/task-board/components/TaskboardPersistentLogPanel.js.map +1 -0
- package/dist/task-board/components/WizardTaskDetailsPanel.js +2 -1
- package/dist/task-board/components/WizardTaskDetailsPanel.js.map +1 -1
- package/dist/task-board/persistentLogLabels.d.ts +38 -0
- package/dist/task-board/persistentLogLabels.js +189 -0
- package/dist/task-board/persistentLogLabels.js.map +1 -0
- package/dist/task-board/services/taskService.d.ts +12 -1
- package/dist/task-board/services/taskService.js +47 -0
- package/dist/task-board/services/taskService.js.map +1 -1
- package/dist/task-board/types.d.ts +48 -0
- package/dist/task-board/useTaskBoardAgentPanelState.d.ts +34 -0
- package/dist/task-board/useTaskBoardAgentPanelState.js +283 -0
- package/dist/task-board/useTaskBoardAgentPanelState.js.map +1 -0
- package/package.json +1 -1
|
@@ -4,7 +4,6 @@ import { toast } from "sonner";
|
|
|
4
4
|
import { cn } from "../lib/utils";
|
|
5
5
|
import { Splitter } from "../editor/ui/Splitter";
|
|
6
6
|
import { deleteProject, getExecutionState, getGraphLayout, getProjects, getTasks, getDependencies, runOrchestrator, triggerPlanning, updateProject, updateTask, } from "./services/taskService";
|
|
7
|
-
import { getAgent, } from "../editor/services/agentService";
|
|
8
7
|
import { loadAiProfiles } from "../editor/services/aiService";
|
|
9
8
|
import { useEditContext } from "../editor/client/editContext";
|
|
10
9
|
import { KanbanView } from "./views/KanbanView";
|
|
@@ -13,7 +12,7 @@ import { DependencyGraphView } from "./views/DependencyGraphView";
|
|
|
13
12
|
import { WizardView } from "./views/WizardView";
|
|
14
13
|
import { SimpleTabs } from "../editor/ui/SimpleTabs";
|
|
15
14
|
import { TaskDetailPanel } from "./components/TaskDetailPanel";
|
|
16
|
-
import { TaskAgentPanel
|
|
15
|
+
import { TaskAgentPanel } from "./components/TaskAgentPanel";
|
|
17
16
|
import { ProjectDashboard, } from "./components/ProjectDashboard";
|
|
18
17
|
import { CreateTaskDialog } from "./components/CreateTaskDialog";
|
|
19
18
|
import { AssignAgentDialog } from "./components/AssignAgentDialog";
|
|
@@ -36,6 +35,7 @@ import { WizardCommunicationCenter } from "./components/WizardCommunicationCente
|
|
|
36
35
|
import { Button } from "../components/ui/button";
|
|
37
36
|
import { Loader2, Plus } from "lucide-react";
|
|
38
37
|
import { MainContentTree } from "../editor/sidebar/MainContentTree";
|
|
38
|
+
import { useTaskBoardAgentPanelState } from "./useTaskBoardAgentPanelState";
|
|
39
39
|
function TaskboardPreviewEditor({ itemDescriptor, }) {
|
|
40
40
|
const slotContext = useEditorSlotContext({
|
|
41
41
|
slotId: "taskboard-preview-slot",
|
|
@@ -161,11 +161,6 @@ export function TaskBoardWorkspace() {
|
|
|
161
161
|
const [subprojectTasksByProjectId, setSubprojectTasksByProjectId] = useState({});
|
|
162
162
|
const [subprojectExecutionRecordsByProjectId, setSubprojectExecutionRecordsByProjectId,] = useState({});
|
|
163
163
|
const [subprojectCountsLoading, setSubprojectCountsLoading] = useState(false);
|
|
164
|
-
const [previewItemName, setPreviewItemName] = useState("");
|
|
165
|
-
const [previewItemPath, setPreviewItemPath] = useState("");
|
|
166
|
-
const [agentContextItems, setAgentContextItems] = useState([]);
|
|
167
|
-
const [contextItemNamesByKey, setContextItemNamesByKey] = useState({});
|
|
168
|
-
const [contextItemPathsByKey, setContextItemPathsByKey] = useState({});
|
|
169
164
|
const [wizardPinnedTaskId, setWizardPinnedTaskId] = useState(null);
|
|
170
165
|
const [, setWizardPinnedTaskSource] = useState(null);
|
|
171
166
|
const [wizardForceOverview, setWizardForceOverview] = useState(false);
|
|
@@ -411,95 +406,16 @@ export function TaskBoardWorkspace() {
|
|
|
411
406
|
return selectedProject;
|
|
412
407
|
return (projects.find((project) => project.project.projectId === selectedTask.projectId) ?? selectedProject);
|
|
413
408
|
}, [projects, selectedProject, selectedTask]);
|
|
414
|
-
const selectedTaskIsPlan =
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
if (!selectedTask)
|
|
420
|
-
return false;
|
|
421
|
-
if ((selectedTask.executionBlockedByProjectIds?.length ?? 0) > 0)
|
|
422
|
-
return true;
|
|
423
|
-
return selectedTask.executionState === "WaitingForDependency";
|
|
424
|
-
}, [
|
|
425
|
-
selectedTask,
|
|
426
|
-
]);
|
|
427
|
-
const selectedTaskHasAssignedAgentProfile = useMemo(() => {
|
|
428
|
-
if (!selectedTask)
|
|
429
|
-
return false;
|
|
430
|
-
return selectedTask.assigneeType === "Agent" && !!selectedTask.assigneeId;
|
|
431
|
-
}, [selectedTask]);
|
|
432
|
-
const canRunAssignedAgent = useMemo(() => {
|
|
433
|
-
return !selectedTaskIsBlocked;
|
|
434
|
-
}, [selectedTaskIsBlocked]);
|
|
435
|
-
const runAssignedAgentDisabledReason = useMemo(() => {
|
|
436
|
-
if (selectedTaskIsBlocked) {
|
|
437
|
-
return "This task is blocked by unfinished dependencies.";
|
|
438
|
-
}
|
|
439
|
-
return undefined;
|
|
440
|
-
}, [selectedTaskIsBlocked]);
|
|
441
|
-
// ── current agent ID and panel mode for the right panel ──
|
|
442
|
-
const currentAgentId = useMemo(() => {
|
|
443
|
-
return getLinkedAgentId(selectedTask);
|
|
444
|
-
}, [selectedTask]);
|
|
445
|
-
const selectedTaskStatus = useMemo(() => {
|
|
446
|
-
if (!selectedTask)
|
|
447
|
-
return null;
|
|
448
|
-
return normalizeTaskStatus(selectedTask.status, selectedTask.executionState);
|
|
449
|
-
}, [selectedTask]);
|
|
450
|
-
const selectedTaskHasResultData = useMemo(() => {
|
|
451
|
-
return !!selectedTask?.resultData?.trim();
|
|
452
|
-
}, [selectedTask?.resultData]);
|
|
453
|
-
const shouldHideAgentPanelForSelectedTask = useMemo(() => {
|
|
454
|
-
return (!!selectedTask &&
|
|
455
|
-
selectedTaskIsPlan &&
|
|
456
|
-
selectedTaskStatus === "Done" &&
|
|
457
|
-
selectedTaskHasResultData);
|
|
458
|
-
}, [
|
|
409
|
+
const { agentPanelMode, canRunAssignedAgent, contextItemOptions, displayAgentId, handleSelectContextItem, hasMultipleContextItems, previewItemName, previewItemPath, previewItemVersion, runAssignedAgentDisabledReason, selectedContextItemValue, selectedTaskHasAssignedAgentProfile, selectedTaskIsBlocked, selectedTaskIsPlan, shouldHideAgentPanelForSelectedTask, } = useTaskBoardAgentPanelState({
|
|
410
|
+
currentItemDescriptor,
|
|
411
|
+
editContext,
|
|
412
|
+
isMobile,
|
|
413
|
+
mobileActiveTab,
|
|
459
414
|
selectedTask,
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
const displayAgentId = useMemo(() => {
|
|
465
|
-
return currentAgentId;
|
|
466
|
-
}, [currentAgentId]);
|
|
467
|
-
useEffect(() => {
|
|
468
|
-
if (isMobile && selectedTaskId) {
|
|
469
|
-
setMobileActiveTab(1); // Task tab
|
|
470
|
-
}
|
|
471
|
-
}, [selectedTaskId, isMobile]);
|
|
472
|
-
useEffect(() => {
|
|
473
|
-
if (isMobile && displayAgentId && !shouldHideAgentPanelForSelectedTask) {
|
|
474
|
-
setMobileActiveTab(2); // Agent tab
|
|
475
|
-
}
|
|
476
|
-
}, [displayAgentId, isMobile, shouldHideAgentPanelForSelectedTask]);
|
|
477
|
-
useEffect(() => {
|
|
478
|
-
if (!isMobile)
|
|
479
|
-
return;
|
|
480
|
-
if (!shouldHideAgentPanelForSelectedTask)
|
|
481
|
-
return;
|
|
482
|
-
if (mobileActiveTab !== 2)
|
|
483
|
-
return;
|
|
484
|
-
setMobileActiveTab(1);
|
|
485
|
-
}, [isMobile, mobileActiveTab, shouldHideAgentPanelForSelectedTask]);
|
|
486
|
-
useEffect(() => {
|
|
487
|
-
if (!showEditorPanel && mobileActiveTab === 3) {
|
|
488
|
-
setMobileActiveTab(0);
|
|
489
|
-
}
|
|
490
|
-
}, [showEditorPanel, mobileActiveTab]);
|
|
491
|
-
const currentItemKey = useMemo(() => {
|
|
492
|
-
if (!currentItemDescriptor)
|
|
493
|
-
return "";
|
|
494
|
-
return `${currentItemDescriptor.id}|${currentItemDescriptor.language}|${currentItemDescriptor.version}`;
|
|
495
|
-
}, [currentItemDescriptor]);
|
|
496
|
-
const agentPanelMode = useMemo(() => {
|
|
497
|
-
if (!selectedTask)
|
|
498
|
-
return "no-task-selected";
|
|
499
|
-
if (displayAgentId)
|
|
500
|
-
return "agent";
|
|
501
|
-
return "no-agent";
|
|
502
|
-
}, [selectedTask, displayAgentId]);
|
|
415
|
+
selectedTaskId,
|
|
416
|
+
setMobileActiveTab,
|
|
417
|
+
showEditorPanel,
|
|
418
|
+
});
|
|
503
419
|
const wizardAttentionState = useMemo(() => {
|
|
504
420
|
const openTasks = orderedWizardTasks.filter((task) => normalizeTaskStatus(task.status, task.executionState) !== "Done");
|
|
505
421
|
let runningCount = 0;
|
|
@@ -597,19 +513,6 @@ export function TaskBoardWorkspace() {
|
|
|
597
513
|
wizardForceOverview,
|
|
598
514
|
wizardPinnedTaskId,
|
|
599
515
|
]);
|
|
600
|
-
useEffect(() => {
|
|
601
|
-
if (!wizardDisplayedTask ||
|
|
602
|
-
(wizardDisplayedExecutionDisplay?.label !== "Questions" &&
|
|
603
|
-
wizardDisplayedTask.executionState !== "WaitingForInput" &&
|
|
604
|
-
wizardDisplayedTask.executionState !== "WaitingForUser")) {
|
|
605
|
-
return;
|
|
606
|
-
}
|
|
607
|
-
}, [
|
|
608
|
-
wizardDisplayedTask,
|
|
609
|
-
wizardDisplayedAgentId,
|
|
610
|
-
wizardDisplayedExecutionDisplay?.label,
|
|
611
|
-
selectedProjectId,
|
|
612
|
-
]);
|
|
613
516
|
const clearWizardCloseTransitionTimeout = useCallback(() => {
|
|
614
517
|
if (wizardCloseTransitionTimeoutRef.current !== null) {
|
|
615
518
|
window.clearTimeout(wizardCloseTransitionTimeoutRef.current);
|
|
@@ -1692,7 +1595,7 @@ export function TaskBoardWorkspace() {
|
|
|
1692
1595
|
return (_jsx("div", { className: "flex h-full min-h-[240px] items-center justify-center rounded-lg border border-dashed border-slate-200 bg-slate-50/70", "data-testid": "taskboard-project-loading-state", children: _jsxs("div", { className: "text-muted-foreground flex flex-col items-center gap-3 text-sm", children: [_jsx(Loader2, { className: "h-6 w-6 animate-spin" }), _jsx("div", { children: "Loading project..." })] }) }));
|
|
1693
1596
|
}
|
|
1694
1597
|
if (!selectedProjectId || (!selectedProject && !isProjectsLoading)) {
|
|
1695
|
-
return (_jsx("div", { className: "flex min-h-full w-full flex-col p-4 md:p-8", children: _jsx("div", { className: "mx-auto flex h-full w-full max-w-7xl flex-1
|
|
1598
|
+
return (_jsx("div", { className: "flex min-h-full w-full flex-col p-4 md:p-8", children: _jsx("div", { className: "mx-auto flex h-full min-h-0 w-full max-w-7xl flex-1", children: _jsx(ProjectOverviewContent, { nav: nav }) }) }));
|
|
1696
1599
|
}
|
|
1697
1600
|
if (isWizardMode) {
|
|
1698
1601
|
return (_jsx(WizardView, { projectId: selectedProjectId, tasks: tasksWithDisplayAssignees, projectTasksLoading: isTasksLoading, dependencies: dependencies, subprojectTaskLists: wizardSubprojectTaskLists, subprojectTasksLoading: subprojectCountsLoading, selectedTaskId: wizardDisplayedTask?.taskId ?? null, onSelectTask: (id) => {
|
|
@@ -1790,161 +1693,6 @@ export function TaskBoardWorkspace() {
|
|
|
1790
1693
|
selectedTask,
|
|
1791
1694
|
handleReopenSelectedTask,
|
|
1792
1695
|
]);
|
|
1793
|
-
const previewItemVersion = useMemo(() => {
|
|
1794
|
-
if (!currentItemDescriptor)
|
|
1795
|
-
return null;
|
|
1796
|
-
return currentItemDescriptor.version === 0
|
|
1797
|
-
? (editContext?.item?.version ?? null)
|
|
1798
|
-
: currentItemDescriptor.version;
|
|
1799
|
-
}, [currentItemDescriptor, editContext?.item?.version]);
|
|
1800
|
-
const contextItemOptions = useMemo(() => {
|
|
1801
|
-
return agentContextItems.map((contextItem) => {
|
|
1802
|
-
const key = `${contextItem.id}|${contextItem.language}|${contextItem.version}`;
|
|
1803
|
-
const name = contextItemNamesByKey[key] || contextItem.name || contextItem.id;
|
|
1804
|
-
const path = contextItemPathsByKey[key] || contextItem.path || "";
|
|
1805
|
-
return {
|
|
1806
|
-
value: key,
|
|
1807
|
-
label: name,
|
|
1808
|
-
description: `${path || contextItem.id} (${contextItem.language}/v${contextItem.version})`,
|
|
1809
|
-
};
|
|
1810
|
-
});
|
|
1811
|
-
}, [agentContextItems, contextItemNamesByKey, contextItemPathsByKey]);
|
|
1812
|
-
const selectedContextItemValue = useMemo(() => {
|
|
1813
|
-
if (currentItemKey)
|
|
1814
|
-
return currentItemKey;
|
|
1815
|
-
const first = agentContextItems[0];
|
|
1816
|
-
if (!first)
|
|
1817
|
-
return "";
|
|
1818
|
-
return `${first.id}|${first.language}|${first.version}`;
|
|
1819
|
-
}, [currentItemKey, agentContextItems]);
|
|
1820
|
-
const hasMultipleContextItems = contextItemOptions.length > 1;
|
|
1821
|
-
useEffect(() => {
|
|
1822
|
-
if (!currentAgentId) {
|
|
1823
|
-
setAgentContextItems([]);
|
|
1824
|
-
return;
|
|
1825
|
-
}
|
|
1826
|
-
let cancelled = false;
|
|
1827
|
-
getAgent(currentAgentId)
|
|
1828
|
-
.then((agent) => {
|
|
1829
|
-
if (cancelled)
|
|
1830
|
-
return;
|
|
1831
|
-
const rawContext = agent?.agentContext;
|
|
1832
|
-
if (!rawContext) {
|
|
1833
|
-
setAgentContextItems([]);
|
|
1834
|
-
return;
|
|
1835
|
-
}
|
|
1836
|
-
let parsed = null;
|
|
1837
|
-
try {
|
|
1838
|
-
parsed = JSON.parse(rawContext);
|
|
1839
|
-
}
|
|
1840
|
-
catch {
|
|
1841
|
-
parsed = null;
|
|
1842
|
-
}
|
|
1843
|
-
const items = (parsed?.items || []).filter((x) => !!x?.id && !!x?.language && typeof x?.version === "number");
|
|
1844
|
-
setAgentContextItems(items);
|
|
1845
|
-
})
|
|
1846
|
-
.catch(() => {
|
|
1847
|
-
if (cancelled)
|
|
1848
|
-
return;
|
|
1849
|
-
setAgentContextItems([]);
|
|
1850
|
-
});
|
|
1851
|
-
return () => {
|
|
1852
|
-
cancelled = true;
|
|
1853
|
-
};
|
|
1854
|
-
}, [currentAgentId]);
|
|
1855
|
-
useEffect(() => {
|
|
1856
|
-
if (!editContext || agentContextItems.length === 0) {
|
|
1857
|
-
setContextItemNamesByKey({});
|
|
1858
|
-
setContextItemPathsByKey({});
|
|
1859
|
-
return;
|
|
1860
|
-
}
|
|
1861
|
-
let cancelled = false;
|
|
1862
|
-
Promise.all(agentContextItems.map(async (contextItem) => {
|
|
1863
|
-
const key = `${contextItem.id}|${contextItem.language}|${contextItem.version}`;
|
|
1864
|
-
const descriptor = {
|
|
1865
|
-
id: contextItem.id,
|
|
1866
|
-
language: contextItem.language,
|
|
1867
|
-
version: contextItem.version,
|
|
1868
|
-
};
|
|
1869
|
-
const item = await editContext.itemsRepository.getItem(descriptor);
|
|
1870
|
-
return {
|
|
1871
|
-
key,
|
|
1872
|
-
name: item?.name || contextItem.name || "",
|
|
1873
|
-
path: item?.path || contextItem.path || "",
|
|
1874
|
-
};
|
|
1875
|
-
}))
|
|
1876
|
-
.then((results) => {
|
|
1877
|
-
if (cancelled)
|
|
1878
|
-
return;
|
|
1879
|
-
const nextNames = {};
|
|
1880
|
-
const nextPaths = {};
|
|
1881
|
-
for (const result of results) {
|
|
1882
|
-
nextNames[result.key] = result.name;
|
|
1883
|
-
nextPaths[result.key] = result.path;
|
|
1884
|
-
}
|
|
1885
|
-
setContextItemNamesByKey(nextNames);
|
|
1886
|
-
setContextItemPathsByKey(nextPaths);
|
|
1887
|
-
})
|
|
1888
|
-
.catch(() => {
|
|
1889
|
-
if (cancelled)
|
|
1890
|
-
return;
|
|
1891
|
-
setContextItemNamesByKey({});
|
|
1892
|
-
setContextItemPathsByKey({});
|
|
1893
|
-
});
|
|
1894
|
-
return () => {
|
|
1895
|
-
cancelled = true;
|
|
1896
|
-
};
|
|
1897
|
-
}, [editContext, agentContextItems]);
|
|
1898
|
-
const handleSelectContextItem = useCallback((value) => {
|
|
1899
|
-
const [id, language, versionText] = value.split("|");
|
|
1900
|
-
const version = Number(versionText);
|
|
1901
|
-
if (!id || !language || Number.isNaN(version) || !editContext?.loadItem)
|
|
1902
|
-
return;
|
|
1903
|
-
void editContext.loadItem({ id, language, version });
|
|
1904
|
-
}, [editContext]);
|
|
1905
|
-
useEffect(() => {
|
|
1906
|
-
if (!editContext || !currentItemDescriptor) {
|
|
1907
|
-
setPreviewItemName("");
|
|
1908
|
-
setPreviewItemPath("");
|
|
1909
|
-
return;
|
|
1910
|
-
}
|
|
1911
|
-
const activeItem = editContext.item;
|
|
1912
|
-
const itemMatchesDescriptor = activeItem?.id === currentItemDescriptor.id &&
|
|
1913
|
-
activeItem?.language === currentItemDescriptor.language;
|
|
1914
|
-
if (itemMatchesDescriptor) {
|
|
1915
|
-
setPreviewItemName(activeItem?.name || "");
|
|
1916
|
-
setPreviewItemPath(activeItem?.path || "");
|
|
1917
|
-
return;
|
|
1918
|
-
}
|
|
1919
|
-
let cancelled = false;
|
|
1920
|
-
editContext.itemsRepository
|
|
1921
|
-
.getItem(currentItemDescriptor)
|
|
1922
|
-
.then((item) => {
|
|
1923
|
-
if (cancelled)
|
|
1924
|
-
return;
|
|
1925
|
-
setPreviewItemName(item?.name || "");
|
|
1926
|
-
setPreviewItemPath(item?.path || "");
|
|
1927
|
-
})
|
|
1928
|
-
.catch(() => {
|
|
1929
|
-
if (cancelled)
|
|
1930
|
-
return;
|
|
1931
|
-
setPreviewItemName("");
|
|
1932
|
-
setPreviewItemPath("");
|
|
1933
|
-
});
|
|
1934
|
-
return () => {
|
|
1935
|
-
cancelled = true;
|
|
1936
|
-
};
|
|
1937
|
-
}, [
|
|
1938
|
-
editContext,
|
|
1939
|
-
currentItemDescriptor,
|
|
1940
|
-
currentItemDescriptor?.id,
|
|
1941
|
-
currentItemDescriptor?.language,
|
|
1942
|
-
currentItemDescriptor?.version,
|
|
1943
|
-
editContext?.item?.id,
|
|
1944
|
-
editContext?.item?.language,
|
|
1945
|
-
editContext?.item?.name,
|
|
1946
|
-
editContext?.item?.path,
|
|
1947
|
-
]);
|
|
1948
1696
|
const itemPreviewPanel = useMemo(() => {
|
|
1949
1697
|
const hasCurrentItem = !!currentItemDescriptor;
|
|
1950
1698
|
const previewSidebar = (_jsx("div", { className: "relative z-10 flex h-full min-h-0 flex-col bg-white", children: _jsx("div", { className: "min-h-0 flex-1", children: _jsx(MainContentTree, { mode: "normal" }) }) }));
|
|
@@ -2117,7 +1865,7 @@ export function TaskBoardWorkspace() {
|
|
|
2117
1865
|
id: "agent",
|
|
2118
1866
|
label: "Agent",
|
|
2119
1867
|
content: null,
|
|
2120
|
-
disabled: !
|
|
1868
|
+
disabled: !displayAgentId || shouldHideAgentPanelForSelectedTask,
|
|
2121
1869
|
},
|
|
2122
1870
|
...(showEditorPanel
|
|
2123
1871
|
? [{ id: "editor", label: "Editor", content: null }]
|