@parhelia/core 0.1.12425 → 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.
Files changed (91) hide show
  1. package/dist/config/config.js +9 -2
  2. package/dist/config/config.js.map +1 -1
  3. package/dist/editor/PictureCropper.js +45 -41
  4. package/dist/editor/PictureCropper.js.map +1 -1
  5. package/dist/editor/ai/AgentTerminal.js +32 -5
  6. package/dist/editor/ai/AgentTerminal.js.map +1 -1
  7. package/dist/editor/ai/AgentTerminalStatusBar.js +65 -0
  8. package/dist/editor/ai/AgentTerminalStatusBar.js.map +1 -1
  9. package/dist/editor/ai/Agents.js +19 -0
  10. package/dist/editor/ai/Agents.js.map +1 -1
  11. package/dist/editor/ai/ContentInspectorPopover.d.ts +1 -0
  12. package/dist/editor/ai/ContentInspectorPopover.js +22 -8
  13. package/dist/editor/ai/ContentInspectorPopover.js.map +1 -1
  14. package/dist/editor/ai/dialogs/AgentDialogHandler.js +32 -3
  15. package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
  16. package/dist/editor/ai/dialogs/QuestionnaireInline.js +55 -20
  17. package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
  18. package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +7 -4
  19. package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
  20. package/dist/editor/services/agentService.d.ts +27 -0
  21. package/dist/editor/services/agentService.js +11 -2
  22. package/dist/editor/services/agentService.js.map +1 -1
  23. package/dist/editor/services/aiService.js +54 -3
  24. package/dist/editor/services/aiService.js.map +1 -1
  25. package/dist/editor/settings/About.js +40 -4
  26. package/dist/editor/settings/About.js.map +1 -1
  27. package/dist/editor/settings/panels/PersistentLogsPanel.d.ts +2 -0
  28. package/dist/editor/settings/panels/PersistentLogsPanel.js +221 -0
  29. package/dist/editor/settings/panels/PersistentLogsPanel.js.map +1 -0
  30. package/dist/editor/settings/panels/ProjectTemplatesPanel.js +24 -2
  31. package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
  32. package/dist/editor/settings/panels/index.d.ts +1 -0
  33. package/dist/editor/settings/panels/index.js +1 -0
  34. package/dist/editor/settings/panels/index.js.map +1 -1
  35. package/dist/editor/ui/Splitter.d.ts +1 -0
  36. package/dist/editor/ui/Splitter.js +7 -1
  37. package/dist/editor/ui/Splitter.js.map +1 -1
  38. package/dist/licensing/LicenseContext.js +40 -4
  39. package/dist/licensing/LicenseContext.js.map +1 -1
  40. package/dist/licensing/LicenseOverlay.js +1 -1
  41. package/dist/licensing/LicenseOverlay.js.map +1 -1
  42. package/dist/licensing/types.d.ts +3 -1
  43. package/dist/licensing/types.js.map +1 -1
  44. package/dist/revision.d.ts +2 -2
  45. package/dist/revision.js +2 -2
  46. package/dist/task-board/TaskBoardWorkspace.js +18 -282
  47. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  48. package/dist/task-board/components/ProjectDashboard.js +2 -1
  49. package/dist/task-board/components/ProjectDashboard.js.map +1 -1
  50. package/dist/task-board/components/ProjectSettingsDialog.d.ts +1 -0
  51. package/dist/task-board/components/ProjectSettingsDialog.js +112 -4
  52. package/dist/task-board/components/ProjectSettingsDialog.js.map +1 -1
  53. package/dist/task-board/components/TaskAgentPanel.d.ts +1 -0
  54. package/dist/task-board/components/TaskAgentPanel.js +2 -2
  55. package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
  56. package/dist/task-board/components/TaskAssigneePicker.js +2 -2
  57. package/dist/task-board/components/TaskAssigneePicker.js.map +1 -1
  58. package/dist/task-board/components/TaskBoardMyTasksSidebar.js +1 -1
  59. package/dist/task-board/components/TaskBoardMyTasksSidebar.js.map +1 -1
  60. package/dist/task-board/components/TaskDetailDialog.d.ts +1 -0
  61. package/dist/task-board/components/TaskDetailDialog.js +2 -2
  62. package/dist/task-board/components/TaskDetailDialog.js.map +1 -1
  63. package/dist/task-board/components/TaskDetailPanel.d.ts +1 -0
  64. package/dist/task-board/components/TaskDetailPanel.js +23 -8
  65. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  66. package/dist/task-board/components/TaskboardPersistentLogPanel.d.ts +11 -0
  67. package/dist/task-board/components/TaskboardPersistentLogPanel.js +114 -0
  68. package/dist/task-board/components/TaskboardPersistentLogPanel.js.map +1 -0
  69. package/dist/task-board/components/WizardTaskDetailsPanel.js +2 -1
  70. package/dist/task-board/components/WizardTaskDetailsPanel.js.map +1 -1
  71. package/dist/task-board/persistentLogLabels.d.ts +38 -0
  72. package/dist/task-board/persistentLogLabels.js +189 -0
  73. package/dist/task-board/persistentLogLabels.js.map +1 -0
  74. package/dist/task-board/services/taskService.d.ts +17 -1
  75. package/dist/task-board/services/taskService.js +56 -0
  76. package/dist/task-board/services/taskService.js.map +1 -1
  77. package/dist/task-board/taskExecutionRecords.js +2 -0
  78. package/dist/task-board/taskExecutionRecords.js.map +1 -1
  79. package/dist/task-board/types.d.ts +71 -1
  80. package/dist/task-board/useTaskBoardAgentPanelState.d.ts +34 -0
  81. package/dist/task-board/useTaskBoardAgentPanelState.js +283 -0
  82. package/dist/task-board/useTaskBoardAgentPanelState.js.map +1 -0
  83. package/dist/task-board/views/DependencyGraphView.js +5 -0
  84. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  85. package/dist/task-board/views/KanbanView.js +8 -1
  86. package/dist/task-board/views/KanbanView.js.map +1 -1
  87. package/dist/task-board/views/ListView.js +1 -1
  88. package/dist/task-board/views/ListView.js.map +1 -1
  89. package/dist/task-board/views/WizardView.js +4 -0
  90. package/dist/task-board/views/WizardView.js.map +1 -1
  91. package/package.json +1 -1
@@ -11,6 +11,6 @@ export function LicenseOverlay() {
11
11
  if (activationState === "idle") {
12
12
  return null;
13
13
  }
14
- return (_jsx("div", { className: "fixed inset-0 z-[9999] flex items-center justify-center bg-gray-900/40 backdrop-blur-sm p-4", children: _jsxs("div", { className: "w-full max-w-2xl", children: [_jsxs("div", { className: "shadow-2xl border-none overflow-hidden bg-white rounded-2xl", children: [_jsx("div", { className: "h-1 w-full bg-gray-100", children: _jsx("div", { className: "h-full w-full bg-blue-600" }) }), _jsxs("div", { className: "min-h-[520px] flex flex-col items-center justify-center p-12", children: [_jsx("div", { className: "mb-8 rounded-2xl bg-blue-50 p-6 ring-1 ring-blue-100", children: _jsx(KeyRound, { className: "h-16 w-12 text-blue-600", strokeWidth: 1.5 }) }), activationState === "loading" && (_jsxs("div", { className: "flex flex-col items-center gap-3 text-gray-600", children: [_jsx(RefreshCw, { className: "h-10 w-10 animate-spin text-blue-600" }), _jsx("p", { className: "text-sm font-medium", children: "Processing..." })] })), activationState === "email_entry" && (_jsx(EmailEntry, { onSubmit: checkEmail, error: error })), activationState === "trial_form" && activationEmail && (_jsx(LicenseActivationForm, { email: activationEmail, onSubmit: submitLicenseRequest, onBack: () => startActivation(), error: error })), activationState === "code_entry" && (_jsx(LicenseCodeEntry, { email: activationEmail || "", onSubmit: submitActivationCode, onBack: () => startActivation(), error: error })), activationState === "trial_expired" && (_jsxs("div", { className: "max-w-md text-center", children: [_jsx("div", { className: "mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-amber-100", children: _jsx(AlertCircle, { className: "h-8 w-8 text-amber-600" }) }), _jsx("h2", { className: "text-3xl font-bold text-gray-900 mb-4 tracking-tight", children: "Trial Expired" }), _jsx("p", { className: "text-gray-500 leading-relaxed", children: "Your trial period has ended. Please contact us to purchase a license." }), _jsx("a", { href: "mailto:sales@parhelia.ai?subject=License%20Inquiry", className: "mt-8 inline-block rounded-full bg-blue-600 px-8 py-2.5 text-xs font-black uppercase tracking-widest text-white shadow-lg shadow-blue-200 transition-colors hover:bg-blue-700", children: "Contact Sales" })] })), activationState === "success" && (_jsxs("div", { className: "flex flex-col items-center gap-3 text-green-600 animate-in fade-in zoom-in duration-500", children: [_jsx("div", { className: "rounded-full bg-green-100 p-3", children: _jsx(CheckCircle, { className: "h-10 w-10", strokeWidth: 2 }) }), _jsx("h2", { className: "text-xl font-semibold text-gray-900", children: "License Activated!" }), _jsx("p", { className: "text-gray-600 text-center", children: licenseType === "trial" ? (_jsxs(_Fragment, { children: ["Your trial is now active.", " ", daysRemaining && `${daysRemaining} days remaining.`] })) : ("Your license has been activated successfully.") })] })), activationState === "error" && (_jsxs("div", { className: "max-w-md text-center", children: [_jsx("div", { className: "mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-red-100", children: _jsx(AlertCircle, { className: "h-8 w-8 text-red-600" }) }), _jsx("h2", { className: "text-2xl font-bold text-gray-900 mb-2", children: "Error" }), _jsx("p", { className: "text-gray-600", children: error || "An error occurred" }), _jsx("button", { onClick: () => startActivation(), className: "mt-8 rounded-full bg-blue-600 px-8 py-2.5 text-xs font-black uppercase tracking-widest text-white shadow-lg shadow-blue-200 transition-colors hover:bg-blue-700", children: "Try Again" })] }))] })] }), _jsxs("p", { className: "mt-8 text-center text-xs text-gray-400", children: ["\u00A9 ", new Date().getFullYear(), " Parhelia. All rights reserved."] })] }) }));
14
+ return (_jsx("div", { className: "fixed inset-0 z-[9999] flex items-center justify-center bg-gray-900/40 backdrop-blur-sm p-4", children: _jsxs("div", { className: "w-full max-w-2xl", children: [_jsxs("div", { className: "shadow-2xl border-none overflow-hidden bg-white rounded-2xl", children: [_jsx("div", { className: "h-1 w-full bg-gray-100", children: _jsx("div", { className: "h-full w-full bg-blue-600" }) }), _jsxs("div", { className: "min-h-[520px] flex flex-col items-center justify-center p-12", children: [_jsx("div", { className: "mb-8 rounded-2xl bg-blue-50 p-6 ring-1 ring-blue-100", children: _jsx(KeyRound, { className: "h-16 w-12 text-blue-600", strokeWidth: 1.5 }) }), activationState === "loading" && (_jsxs("div", { className: "flex flex-col items-center gap-3 text-gray-600", children: [_jsx(RefreshCw, { className: "h-10 w-10 animate-spin text-blue-600" }), _jsx("p", { className: "text-sm font-medium", children: "Processing..." })] })), activationState === "email_entry" && (_jsx(EmailEntry, { onSubmit: checkEmail, error: error })), activationState === "trial_form" && activationEmail && (_jsx(LicenseActivationForm, { email: activationEmail, onSubmit: submitLicenseRequest, onBack: () => startActivation(), error: error })), activationState === "code_entry" && (_jsx(LicenseCodeEntry, { email: activationEmail || "", onSubmit: submitActivationCode, onBack: () => startActivation(), error: error })), activationState === "trial_expired" && (_jsxs("div", { className: "max-w-md text-center", children: [_jsx("div", { className: "mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-amber-100", children: _jsx(AlertCircle, { className: "h-8 w-8 text-amber-600" }) }), _jsx("h2", { className: "text-3xl font-bold text-gray-900 mb-4 tracking-tight", children: "Trial Expired" }), _jsx("p", { className: "text-gray-500 leading-relaxed", children: "Your trial period has ended. Please contact us to purchase a license." }), _jsx("a", { href: "mailto:sales@parhelia.ai?subject=License%20Inquiry", className: "mt-8 inline-block rounded-full bg-blue-600 px-8 py-2.5 text-xs font-black uppercase tracking-widest text-white shadow-lg shadow-blue-200 transition-colors hover:bg-blue-700", children: "Contact Sales" })] })), activationState === "welcome_back" && (_jsxs("div", { className: "flex flex-col items-center gap-3 text-green-600 animate-in fade-in zoom-in duration-500", children: [_jsx("div", { className: "rounded-full bg-green-100 p-3", children: _jsx(CheckCircle, { className: "h-10 w-10", strokeWidth: 2 }) }), _jsx("h2", { className: "text-xl font-semibold text-gray-900", children: "Welcome back" }), _jsx("p", { className: "text-gray-600 text-center", children: licenseType === "trial" ? (_jsxs(_Fragment, { children: ["Your trial is active again on this environment.", " ", daysRemaining != null && `${daysRemaining} days remaining.`] })) : ("Your license has been restored.") })] })), activationState === "success" && (_jsxs("div", { className: "flex flex-col items-center gap-3 text-green-600 animate-in fade-in zoom-in duration-500", children: [_jsx("div", { className: "rounded-full bg-green-100 p-3", children: _jsx(CheckCircle, { className: "h-10 w-10", strokeWidth: 2 }) }), _jsx("h2", { className: "text-xl font-semibold text-gray-900", children: "License Activated!" }), _jsx("p", { className: "text-gray-600 text-center", children: licenseType === "trial" ? (_jsxs(_Fragment, { children: ["Your trial is now active.", " ", daysRemaining && `${daysRemaining} days remaining.`] })) : ("Your license has been activated successfully.") })] })), activationState === "error" && (_jsxs("div", { className: "max-w-md text-center", children: [_jsx("div", { className: "mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-red-100", children: _jsx(AlertCircle, { className: "h-8 w-8 text-red-600" }) }), _jsx("h2", { className: "text-2xl font-bold text-gray-900 mb-2", children: "Error" }), _jsx("p", { className: "text-gray-600", children: error || "An error occurred" }), _jsx("button", { onClick: () => startActivation(), className: "mt-8 rounded-full bg-blue-600 px-8 py-2.5 text-xs font-black uppercase tracking-widest text-white shadow-lg shadow-blue-200 transition-colors hover:bg-blue-700", children: "Try Again" })] }))] })] }), _jsxs("p", { className: "mt-8 text-center text-xs text-gray-400", children: ["\u00A9 ", new Date().getFullYear(), " Parhelia. All rights reserved."] })] }) }));
15
15
  }
16
16
  //# sourceMappingURL=LicenseOverlay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LicenseOverlay.js","sourceRoot":"","sources":["../../src/licensing/LicenseOverlay.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LicenseOverlay.js","sourceRoot":"","sources":["../../src/licensing/LicenseOverlay.tsx"],"names":[],"mappings":"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"}
@@ -46,6 +46,8 @@ export interface LicenseRequestResponse {
46
46
  license?: LicenseData | LicensePayloadV2;
47
47
  /** v2 only: RSA signature over canonical inner `license` JSON. */
48
48
  signature?: string;
49
+ /** When status is trial: true if the client should collect name and company before treating activation as complete. */
50
+ requiresProfileCompletion?: boolean;
49
51
  expiresAt?: string;
50
52
  expiredAt?: string;
51
53
  codeExpiresInMinutes?: number;
@@ -80,7 +82,7 @@ export interface VerifyCodeRequest {
80
82
  /**
81
83
  * Activation flow state
82
84
  */
83
- export type ActivationState = "idle" | "loading" | "email_entry" | "trial_form" | "code_entry" | "trial_expired" | "success" | "error";
85
+ export type ActivationState = "idle" | "loading" | "email_entry" | "trial_form" | "code_entry" | "trial_expired" | "welcome_back" | "success" | "error";
84
86
  /**
85
87
  * Known feature flags
86
88
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/licensing/types.ts"],"names":[],"mappings":"AA6GA;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,IAAI;IACR,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACV,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/licensing/types.ts"],"names":[],"mappings":"AAgHA;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,IAAI;IACR,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACV,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const version = "0.1.12425";
2
- export declare const buildDate = "2026-03-26 17:02:00";
1
+ export declare const version = "0.1.12436";
2
+ export declare const buildDate = "2026-03-29 12:43:50";
package/dist/revision.js CHANGED
@@ -1,3 +1,3 @@
1
- export const version = "0.1.12425";
2
- export const buildDate = "2026-03-26 17:02:00";
1
+ export const version = "0.1.12436";
2
+ export const buildDate = "2026-03-29 12:43:50";
3
3
  //# sourceMappingURL=revision.js.map
@@ -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, } from "./components/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,110 +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 = useMemo(() => {
415
- const taskType = String(selectedTask?.taskType ?? "").toLowerCase();
416
- return taskType === "plan" || selectedTask?.title === "Project Plan";
417
- }, [selectedTask]);
418
- const selectedTaskIsBlocked = useMemo(() => {
419
- if (!selectedTask)
420
- return false;
421
- if (selectedTask.projectId !== selectedProjectId)
422
- return false;
423
- const blockerIds = dependencies
424
- .filter((dependency) => dependency.taskId === selectedTask.taskId &&
425
- dependency.dependencyType === "BlockedBy")
426
- .map((dependency) => dependency.dependsOnTaskId);
427
- if (blockerIds.length === 0)
428
- return false;
429
- const taskById = new Map(tasksWithDisplayAssignees.map((task) => [task.taskId, task]));
430
- return blockerIds.some((blockerId) => {
431
- const blockerTask = taskById.get(blockerId);
432
- return (!blockerTask ||
433
- normalizeTaskStatus(blockerTask.status, blockerTask.executionState) !==
434
- "Done");
435
- });
436
- }, [
437
- selectedTask,
438
- selectedProjectId,
439
- dependencies,
440
- tasksWithDisplayAssignees,
441
- ]);
442
- const selectedTaskHasAssignedAgentProfile = useMemo(() => {
443
- if (!selectedTask)
444
- return false;
445
- return selectedTask.assigneeType === "Agent" && !!selectedTask.assigneeId;
446
- }, [selectedTask]);
447
- const canRunAssignedAgent = useMemo(() => {
448
- return !selectedTaskIsBlocked;
449
- }, [selectedTaskIsBlocked]);
450
- const runAssignedAgentDisabledReason = useMemo(() => {
451
- if (selectedTaskIsBlocked) {
452
- return "This task is blocked by unfinished dependencies.";
453
- }
454
- return undefined;
455
- }, [selectedTaskIsBlocked]);
456
- // ── current agent ID and panel mode for the right panel ──
457
- const currentAgentId = useMemo(() => {
458
- return getLinkedAgentId(selectedTask);
459
- }, [selectedTask]);
460
- const selectedTaskStatus = useMemo(() => {
461
- if (!selectedTask)
462
- return null;
463
- return normalizeTaskStatus(selectedTask.status, selectedTask.executionState);
464
- }, [selectedTask]);
465
- const selectedTaskHasResultData = useMemo(() => {
466
- return !!selectedTask?.resultData?.trim();
467
- }, [selectedTask?.resultData]);
468
- const shouldHideAgentPanelForSelectedTask = useMemo(() => {
469
- return (!!selectedTask &&
470
- selectedTaskIsPlan &&
471
- selectedTaskStatus === "Done" &&
472
- selectedTaskHasResultData);
473
- }, [
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,
474
414
  selectedTask,
475
- selectedTaskIsPlan,
476
- selectedTaskStatus,
477
- selectedTaskHasResultData,
478
- ]);
479
- const displayAgentId = useMemo(() => {
480
- return currentAgentId;
481
- }, [currentAgentId]);
482
- useEffect(() => {
483
- if (isMobile && selectedTaskId) {
484
- setMobileActiveTab(1); // Task tab
485
- }
486
- }, [selectedTaskId, isMobile]);
487
- useEffect(() => {
488
- if (isMobile && displayAgentId && !shouldHideAgentPanelForSelectedTask) {
489
- setMobileActiveTab(2); // Agent tab
490
- }
491
- }, [displayAgentId, isMobile, shouldHideAgentPanelForSelectedTask]);
492
- useEffect(() => {
493
- if (!isMobile)
494
- return;
495
- if (!shouldHideAgentPanelForSelectedTask)
496
- return;
497
- if (mobileActiveTab !== 2)
498
- return;
499
- setMobileActiveTab(1);
500
- }, [isMobile, mobileActiveTab, shouldHideAgentPanelForSelectedTask]);
501
- useEffect(() => {
502
- if (!showEditorPanel && mobileActiveTab === 3) {
503
- setMobileActiveTab(0);
504
- }
505
- }, [showEditorPanel, mobileActiveTab]);
506
- const currentItemKey = useMemo(() => {
507
- if (!currentItemDescriptor)
508
- return "";
509
- return `${currentItemDescriptor.id}|${currentItemDescriptor.language}|${currentItemDescriptor.version}`;
510
- }, [currentItemDescriptor]);
511
- const agentPanelMode = useMemo(() => {
512
- if (!selectedTask)
513
- return "no-task-selected";
514
- if (displayAgentId)
515
- return "agent";
516
- return "no-agent";
517
- }, [selectedTask, displayAgentId]);
415
+ selectedTaskId,
416
+ setMobileActiveTab,
417
+ showEditorPanel,
418
+ });
518
419
  const wizardAttentionState = useMemo(() => {
519
420
  const openTasks = orderedWizardTasks.filter((task) => normalizeTaskStatus(task.status, task.executionState) !== "Done");
520
421
  let runningCount = 0;
@@ -612,19 +513,6 @@ export function TaskBoardWorkspace() {
612
513
  wizardForceOverview,
613
514
  wizardPinnedTaskId,
614
515
  ]);
615
- useEffect(() => {
616
- if (!wizardDisplayedTask ||
617
- (wizardDisplayedExecutionDisplay?.label !== "Questions" &&
618
- wizardDisplayedTask.executionState !== "WaitingForInput" &&
619
- wizardDisplayedTask.executionState !== "WaitingForUser")) {
620
- return;
621
- }
622
- }, [
623
- wizardDisplayedTask,
624
- wizardDisplayedAgentId,
625
- wizardDisplayedExecutionDisplay?.label,
626
- selectedProjectId,
627
- ]);
628
516
  const clearWizardCloseTransitionTimeout = useCallback(() => {
629
517
  if (wizardCloseTransitionTimeoutRef.current !== null) {
630
518
  window.clearTimeout(wizardCloseTransitionTimeoutRef.current);
@@ -1707,7 +1595,7 @@ export function TaskBoardWorkspace() {
1707
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..." })] }) }));
1708
1596
  }
1709
1597
  if (!selectedProjectId || (!selectedProject && !isProjectsLoading)) {
1710
- 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 min-h-0", children: _jsx(ProjectOverviewContent, { nav: nav }) }) }));
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 }) }) }));
1711
1599
  }
1712
1600
  if (isWizardMode) {
1713
1601
  return (_jsx(WizardView, { projectId: selectedProjectId, tasks: tasksWithDisplayAssignees, projectTasksLoading: isTasksLoading, dependencies: dependencies, subprojectTaskLists: wizardSubprojectTaskLists, subprojectTasksLoading: subprojectCountsLoading, selectedTaskId: wizardDisplayedTask?.taskId ?? null, onSelectTask: (id) => {
@@ -1763,7 +1651,7 @@ export function TaskBoardWorkspace() {
1763
1651
  setTaskSelection,
1764
1652
  refreshVisibleTaskData,
1765
1653
  ]);
1766
- const taskDetailPanel = useMemo(() => (_jsx(TaskDetailPanel, { project: selectedTaskProject, task: selectedTask, allTasks: taskSelectionUniverse, dependencies: dependencies, onTaskChanged: () => {
1654
+ const taskDetailPanel = useMemo(() => (_jsx(TaskDetailPanel, { project: selectedTaskProject, projects: projects, task: selectedTask, allTasks: taskSelectionUniverse, dependencies: dependencies, onTaskChanged: () => {
1767
1655
  void refreshVisibleTaskData();
1768
1656
  }, onSelectTask: (taskId) => setTaskSelection(taskId, { source: "user" }), onClose: () => setTaskSelection(null), variant: "panel" })), [
1769
1657
  selectedTaskProject,
@@ -1805,161 +1693,6 @@ export function TaskBoardWorkspace() {
1805
1693
  selectedTask,
1806
1694
  handleReopenSelectedTask,
1807
1695
  ]);
1808
- const previewItemVersion = useMemo(() => {
1809
- if (!currentItemDescriptor)
1810
- return null;
1811
- return currentItemDescriptor.version === 0
1812
- ? (editContext?.item?.version ?? null)
1813
- : currentItemDescriptor.version;
1814
- }, [currentItemDescriptor, editContext?.item?.version]);
1815
- const contextItemOptions = useMemo(() => {
1816
- return agentContextItems.map((contextItem) => {
1817
- const key = `${contextItem.id}|${contextItem.language}|${contextItem.version}`;
1818
- const name = contextItemNamesByKey[key] || contextItem.name || contextItem.id;
1819
- const path = contextItemPathsByKey[key] || contextItem.path || "";
1820
- return {
1821
- value: key,
1822
- label: name,
1823
- description: `${path || contextItem.id} (${contextItem.language}/v${contextItem.version})`,
1824
- };
1825
- });
1826
- }, [agentContextItems, contextItemNamesByKey, contextItemPathsByKey]);
1827
- const selectedContextItemValue = useMemo(() => {
1828
- if (currentItemKey)
1829
- return currentItemKey;
1830
- const first = agentContextItems[0];
1831
- if (!first)
1832
- return "";
1833
- return `${first.id}|${first.language}|${first.version}`;
1834
- }, [currentItemKey, agentContextItems]);
1835
- const hasMultipleContextItems = contextItemOptions.length > 1;
1836
- useEffect(() => {
1837
- if (!currentAgentId) {
1838
- setAgentContextItems([]);
1839
- return;
1840
- }
1841
- let cancelled = false;
1842
- getAgent(currentAgentId)
1843
- .then((agent) => {
1844
- if (cancelled)
1845
- return;
1846
- const rawContext = agent?.agentContext;
1847
- if (!rawContext) {
1848
- setAgentContextItems([]);
1849
- return;
1850
- }
1851
- let parsed = null;
1852
- try {
1853
- parsed = JSON.parse(rawContext);
1854
- }
1855
- catch {
1856
- parsed = null;
1857
- }
1858
- const items = (parsed?.items || []).filter((x) => !!x?.id && !!x?.language && typeof x?.version === "number");
1859
- setAgentContextItems(items);
1860
- })
1861
- .catch(() => {
1862
- if (cancelled)
1863
- return;
1864
- setAgentContextItems([]);
1865
- });
1866
- return () => {
1867
- cancelled = true;
1868
- };
1869
- }, [currentAgentId]);
1870
- useEffect(() => {
1871
- if (!editContext || agentContextItems.length === 0) {
1872
- setContextItemNamesByKey({});
1873
- setContextItemPathsByKey({});
1874
- return;
1875
- }
1876
- let cancelled = false;
1877
- Promise.all(agentContextItems.map(async (contextItem) => {
1878
- const key = `${contextItem.id}|${contextItem.language}|${contextItem.version}`;
1879
- const descriptor = {
1880
- id: contextItem.id,
1881
- language: contextItem.language,
1882
- version: contextItem.version,
1883
- };
1884
- const item = await editContext.itemsRepository.getItem(descriptor);
1885
- return {
1886
- key,
1887
- name: item?.name || contextItem.name || "",
1888
- path: item?.path || contextItem.path || "",
1889
- };
1890
- }))
1891
- .then((results) => {
1892
- if (cancelled)
1893
- return;
1894
- const nextNames = {};
1895
- const nextPaths = {};
1896
- for (const result of results) {
1897
- nextNames[result.key] = result.name;
1898
- nextPaths[result.key] = result.path;
1899
- }
1900
- setContextItemNamesByKey(nextNames);
1901
- setContextItemPathsByKey(nextPaths);
1902
- })
1903
- .catch(() => {
1904
- if (cancelled)
1905
- return;
1906
- setContextItemNamesByKey({});
1907
- setContextItemPathsByKey({});
1908
- });
1909
- return () => {
1910
- cancelled = true;
1911
- };
1912
- }, [editContext, agentContextItems]);
1913
- const handleSelectContextItem = useCallback((value) => {
1914
- const [id, language, versionText] = value.split("|");
1915
- const version = Number(versionText);
1916
- if (!id || !language || Number.isNaN(version) || !editContext?.loadItem)
1917
- return;
1918
- void editContext.loadItem({ id, language, version });
1919
- }, [editContext]);
1920
- useEffect(() => {
1921
- if (!editContext || !currentItemDescriptor) {
1922
- setPreviewItemName("");
1923
- setPreviewItemPath("");
1924
- return;
1925
- }
1926
- const activeItem = editContext.item;
1927
- const itemMatchesDescriptor = activeItem?.id === currentItemDescriptor.id &&
1928
- activeItem?.language === currentItemDescriptor.language;
1929
- if (itemMatchesDescriptor) {
1930
- setPreviewItemName(activeItem?.name || "");
1931
- setPreviewItemPath(activeItem?.path || "");
1932
- return;
1933
- }
1934
- let cancelled = false;
1935
- editContext.itemsRepository
1936
- .getItem(currentItemDescriptor)
1937
- .then((item) => {
1938
- if (cancelled)
1939
- return;
1940
- setPreviewItemName(item?.name || "");
1941
- setPreviewItemPath(item?.path || "");
1942
- })
1943
- .catch(() => {
1944
- if (cancelled)
1945
- return;
1946
- setPreviewItemName("");
1947
- setPreviewItemPath("");
1948
- });
1949
- return () => {
1950
- cancelled = true;
1951
- };
1952
- }, [
1953
- editContext,
1954
- currentItemDescriptor,
1955
- currentItemDescriptor?.id,
1956
- currentItemDescriptor?.language,
1957
- currentItemDescriptor?.version,
1958
- editContext?.item?.id,
1959
- editContext?.item?.language,
1960
- editContext?.item?.name,
1961
- editContext?.item?.path,
1962
- ]);
1963
1696
  const itemPreviewPanel = useMemo(() => {
1964
1697
  const hasCurrentItem = !!currentItemDescriptor;
1965
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" }) }) }));
@@ -2132,7 +1865,7 @@ export function TaskBoardWorkspace() {
2132
1865
  id: "agent",
2133
1866
  label: "Agent",
2134
1867
  content: null,
2135
- disabled: !currentAgentId || shouldHideAgentPanelForSelectedTask,
1868
+ disabled: !displayAgentId || shouldHideAgentPanelForSelectedTask,
2136
1869
  },
2137
1870
  ...(showEditorPanel
2138
1871
  ? [{ id: "editor", label: "Editor", content: null }]
@@ -2158,7 +1891,10 @@ export function TaskBoardWorkspace() {
2158
1891
  } }), _jsx(ProjectSettingsDialog, { open: !!settingsProjectId, onOpenChange: (open) => {
2159
1892
  if (!open)
2160
1893
  setSettingsProjectId(null);
2161
- }, projectId: settingsProjectId, selectedProject: settingsProject, onChanged: refreshProjects }), _jsx(AssignAgentDialog, { open: assignAgentDialogOpen, task: selectedTask, onOpenChange: setAssignAgentDialogOpen, onAssigned: async () => {
1894
+ }, projectId: settingsProjectId, selectedProject: settingsProject, projects: projects, onChanged: async () => {
1895
+ await refreshProjects();
1896
+ await refreshVisibleTaskData();
1897
+ } }), _jsx(AssignAgentDialog, { open: assignAgentDialogOpen, task: selectedTask, onOpenChange: setAssignAgentDialogOpen, onAssigned: async () => {
2162
1898
  if (!selectedProjectId)
2163
1899
  return;
2164
1900
  await refreshTasks(selectedProjectId);