@parhelia/core 0.1.11873 → 0.1.11955

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 (247) hide show
  1. package/dist/agents-view/AgentsInbox.d.ts +1 -1
  2. package/dist/agents-view/AgentsInbox.js +15 -2
  3. package/dist/agents-view/AgentsInbox.js.map +1 -1
  4. package/dist/agents-view/AgentsSidebar.d.ts +20 -0
  5. package/dist/agents-view/AgentsSidebar.js +21 -0
  6. package/dist/agents-view/AgentsSidebar.js.map +1 -0
  7. package/dist/agents-view/AgentsView.d.ts +6 -7
  8. package/dist/agents-view/AgentsView.js +63 -25
  9. package/dist/agents-view/AgentsView.js.map +1 -1
  10. package/dist/agents-view/AgentsWorkspaceView.d.ts +2 -6
  11. package/dist/agents-view/AgentsWorkspaceView.js +242 -112
  12. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  13. package/dist/components/ui/context-menu.js +24 -9
  14. package/dist/components/ui/context-menu.js.map +1 -1
  15. package/dist/components/ui/select.js +1 -1
  16. package/dist/components/ui/select.js.map +1 -1
  17. package/dist/config/config.js +15 -11
  18. package/dist/config/config.js.map +1 -1
  19. package/dist/editor/ContentTree.js +2 -2
  20. package/dist/editor/ContentTree.js.map +1 -1
  21. package/dist/editor/ContextMenu.js +11 -5
  22. package/dist/editor/ContextMenu.js.map +1 -1
  23. package/dist/editor/FieldListField.js +1 -1
  24. package/dist/editor/FieldListField.js.map +1 -1
  25. package/dist/editor/MainLayout.js.map +1 -1
  26. package/dist/editor/MobileLayout.js +19 -9
  27. package/dist/editor/MobileLayout.js.map +1 -1
  28. package/dist/editor/ai/AgentStatusBadge.d.ts +1 -1
  29. package/dist/editor/ai/AgentStatusBadge.js +18 -2
  30. package/dist/editor/ai/AgentStatusBadge.js.map +1 -1
  31. package/dist/editor/ai/AgentTerminal.js +342 -55
  32. package/dist/editor/ai/AgentTerminal.js.map +1 -1
  33. package/dist/editor/ai/AiResponseMessage.js +46 -4
  34. package/dist/editor/ai/AiResponseMessage.js.map +1 -1
  35. package/dist/editor/ai/ContextInfoBar.js +151 -5
  36. package/dist/editor/ai/ContextInfoBar.js.map +1 -1
  37. package/dist/editor/ai/EditOperationsPanel.d.ts +2 -1
  38. package/dist/editor/ai/EditOperationsPanel.js +6 -1
  39. package/dist/editor/ai/EditOperationsPanel.js.map +1 -1
  40. package/dist/editor/ai/dialogs/AgentDialogHandler.js +64 -15
  41. package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
  42. package/dist/editor/ai/dialogs/QuestionnaireInline.js +111 -20
  43. package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
  44. package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +24 -0
  45. package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
  46. package/dist/editor/ai/useAgentStatus.d.ts +1 -0
  47. package/dist/editor/ai/useAgentStatus.js +74 -29
  48. package/dist/editor/ai/useAgentStatus.js.map +1 -1
  49. package/dist/editor/client/EditorShell.js +72 -8
  50. package/dist/editor/client/EditorShell.js.map +1 -1
  51. package/dist/editor/client/hooks/useQuota.d.ts +7 -0
  52. package/dist/editor/client/hooks/useQuota.js.map +1 -1
  53. package/dist/editor/client/hooks/useSocketMessageHandler.js +10 -1
  54. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  55. package/dist/editor/client/pageModelBuilder.js +3 -30
  56. package/dist/editor/client/pageModelBuilder.js.map +1 -1
  57. package/dist/editor/client/ui/EditorChrome.js +31 -1
  58. package/dist/editor/client/ui/EditorChrome.js.map +1 -1
  59. package/dist/editor/commands/componentCommands.js +106 -6
  60. package/dist/editor/commands/componentCommands.js.map +1 -1
  61. package/dist/editor/commands/itemCommands.d.ts +1 -0
  62. package/dist/editor/commands/itemCommands.js +28 -1
  63. package/dist/editor/commands/itemCommands.js.map +1 -1
  64. package/dist/editor/componentTreeHelper.js +22 -2
  65. package/dist/editor/componentTreeHelper.js.map +1 -1
  66. package/dist/editor/insertMenuItems.d.ts +4 -0
  67. package/dist/editor/insertMenuItems.js +66 -0
  68. package/dist/editor/insertMenuItems.js.map +1 -0
  69. package/dist/editor/menubar/toolbar-sections/UtilityControls.js +1 -1
  70. package/dist/editor/menubar/toolbar-sections/UtilityControls.js.map +1 -1
  71. package/dist/editor/page-editor-chrome/FrameMenus.js +8 -1
  72. package/dist/editor/page-editor-chrome/FrameMenus.js.map +1 -1
  73. package/dist/editor/page-editor-chrome/InlineEditor.js +25 -11
  74. package/dist/editor/page-editor-chrome/InlineEditor.js.map +1 -1
  75. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +32 -17
  76. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  77. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js +17 -11
  78. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js.map +1 -1
  79. package/dist/editor/page-viewer/EditorForm.js +6 -5
  80. package/dist/editor/page-viewer/EditorForm.js.map +1 -1
  81. package/dist/editor/page-viewer/PageViewerFrame.js +49 -1
  82. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  83. package/dist/editor/page-viewer/pageModelSkeletonBuilder.js +5 -0
  84. package/dist/editor/page-viewer/pageModelSkeletonBuilder.js.map +1 -1
  85. package/dist/editor/pageModel.d.ts +2 -0
  86. package/dist/editor/reviews/CreateReviewConfirmStep.d.ts +16 -0
  87. package/dist/editor/reviews/CreateReviewConfirmStep.js +37 -0
  88. package/dist/editor/reviews/CreateReviewConfirmStep.js.map +1 -0
  89. package/dist/editor/reviews/CreateReviewDetailsStep.d.ts +51 -0
  90. package/dist/editor/reviews/CreateReviewDetailsStep.js +121 -0
  91. package/dist/editor/reviews/CreateReviewDetailsStep.js.map +1 -0
  92. package/dist/editor/reviews/CreateReviewDialog.js +260 -173
  93. package/dist/editor/reviews/CreateReviewDialog.js.map +1 -1
  94. package/dist/editor/reviews/CreateReviewSuccessStep.d.ts +6 -0
  95. package/dist/editor/reviews/CreateReviewSuccessStep.js +8 -0
  96. package/dist/editor/reviews/CreateReviewSuccessStep.js.map +1 -0
  97. package/dist/editor/reviews/DecisionsMatrix.js +96 -25
  98. package/dist/editor/reviews/DecisionsMatrix.js.map +1 -1
  99. package/dist/editor/reviews/MultiReviewManager.js +25 -3
  100. package/dist/editor/reviews/MultiReviewManager.js.map +1 -1
  101. package/dist/editor/reviews/PagesPanel.js +31 -15
  102. package/dist/editor/reviews/PagesPanel.js.map +1 -1
  103. package/dist/editor/reviews/ReviewCard.js +13 -7
  104. package/dist/editor/reviews/ReviewCard.js.map +1 -1
  105. package/dist/editor/reviews/ReviewDetail.js +2 -2
  106. package/dist/editor/reviews/ReviewDetail.js.map +1 -1
  107. package/dist/editor/reviews/ReviewsList.js +7 -3
  108. package/dist/editor/reviews/ReviewsList.js.map +1 -1
  109. package/dist/editor/services/agentService.d.ts +14 -1
  110. package/dist/editor/services/agentService.js +27 -1
  111. package/dist/editor/services/agentService.js.map +1 -1
  112. package/dist/editor/services/aiService.d.ts +39 -1
  113. package/dist/editor/services/aiService.js +12 -2
  114. package/dist/editor/services/aiService.js.map +1 -1
  115. package/dist/editor/services/serviceHelper.d.ts +1 -1
  116. package/dist/editor/services/serviceHelper.js +2 -1
  117. package/dist/editor/services/serviceHelper.js.map +1 -1
  118. package/dist/editor/settings/About.js +1 -1
  119. package/dist/editor/settings/About.js.map +1 -1
  120. package/dist/editor/settings/QuotaInfo.js +202 -4
  121. package/dist/editor/settings/QuotaInfo.js.map +1 -1
  122. package/dist/editor/settings/panels/SearchConfigPanel.js +11 -13
  123. package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
  124. package/dist/editor/settings/status/useStartupChecks.js +2 -1
  125. package/dist/editor/settings/status/useStartupChecks.js.map +1 -1
  126. package/dist/editor/sidebar/ComponentTree.js +26 -20
  127. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  128. package/dist/editor/sidebar/MobileWorkspacePopover.d.ts +16 -0
  129. package/dist/editor/sidebar/MobileWorkspacePopover.js +35 -0
  130. package/dist/editor/sidebar/MobileWorkspacePopover.js.map +1 -0
  131. package/dist/editor/sidebar/NavigationSidebar.js +30 -14
  132. package/dist/editor/sidebar/NavigationSidebar.js.map +1 -1
  133. package/dist/editor/ui/ItemNameDialogNew.js +8 -8
  134. package/dist/editor/ui/ItemNameDialogNew.js.map +1 -1
  135. package/dist/editor/ui/SharedFolderSelectorDialog.d.ts +11 -0
  136. package/dist/editor/ui/SharedFolderSelectorDialog.js +79 -0
  137. package/dist/editor/ui/SharedFolderSelectorDialog.js.map +1 -0
  138. package/dist/editor/ui/SimpleTabs.js +1 -1
  139. package/dist/editor/ui/SimpleTabs.js.map +1 -1
  140. package/dist/editor/ui/Splitter.js +4 -2
  141. package/dist/editor/ui/Splitter.js.map +1 -1
  142. package/dist/editor/ui/TreeListSelector.d.ts +2 -1
  143. package/dist/editor/ui/TreeListSelector.js +2 -2
  144. package/dist/editor/ui/TreeListSelector.js.map +1 -1
  145. package/dist/editor/utils.js +42 -0
  146. package/dist/editor/utils.js.map +1 -1
  147. package/dist/editor/views/EditorSlot.js +7 -8
  148. package/dist/editor/views/EditorSlot.js.map +1 -1
  149. package/dist/index.d.ts +1 -0
  150. package/dist/index.js +1 -0
  151. package/dist/index.js.map +1 -1
  152. package/dist/revision.d.ts +2 -2
  153. package/dist/revision.js +2 -2
  154. package/dist/setup/wizard/steps/ImportModelDialog.js +24 -22
  155. package/dist/setup/wizard/steps/ImportModelDialog.js.map +1 -1
  156. package/dist/splash-screen/NewPage.js +2 -2
  157. package/dist/splash-screen/NewPage.js.map +1 -1
  158. package/dist/splash-screen/RecentPages.js +1 -1
  159. package/dist/splash-screen/RecentPages.js.map +1 -1
  160. package/dist/task-board/TaskBoardWorkspace.d.ts +1 -0
  161. package/dist/task-board/TaskBoardWorkspace.js +1094 -0
  162. package/dist/task-board/TaskBoardWorkspace.js.map +1 -0
  163. package/dist/task-board/components/AddDependencyDialog.d.ts +8 -0
  164. package/dist/task-board/components/AddDependencyDialog.js +53 -0
  165. package/dist/task-board/components/AddDependencyDialog.js.map +1 -0
  166. package/dist/task-board/components/AssignAgentDialog.d.ts +7 -0
  167. package/dist/task-board/components/AssignAgentDialog.js +96 -0
  168. package/dist/task-board/components/AssignAgentDialog.js.map +1 -0
  169. package/dist/task-board/components/CommentsList.d.ts +3 -0
  170. package/dist/task-board/components/CommentsList.js +36 -0
  171. package/dist/task-board/components/CommentsList.js.map +1 -0
  172. package/dist/task-board/components/CreateProjectDialog.d.ts +7 -0
  173. package/dist/task-board/components/CreateProjectDialog.js +175 -0
  174. package/dist/task-board/components/CreateProjectDialog.js.map +1 -0
  175. package/dist/task-board/components/CreateTaskDialog.d.ts +7 -0
  176. package/dist/task-board/components/CreateTaskDialog.js +76 -0
  177. package/dist/task-board/components/CreateTaskDialog.js.map +1 -0
  178. package/dist/task-board/components/ProjectAgentsPanel.d.ts +4 -0
  179. package/dist/task-board/components/ProjectAgentsPanel.js +159 -0
  180. package/dist/task-board/components/ProjectAgentsPanel.js.map +1 -0
  181. package/dist/task-board/components/ProjectDashboard.d.ts +25 -0
  182. package/dist/task-board/components/ProjectDashboard.js +91 -0
  183. package/dist/task-board/components/ProjectDashboard.js.map +1 -0
  184. package/dist/task-board/components/ProjectList.d.ts +7 -0
  185. package/dist/task-board/components/ProjectList.js +74 -0
  186. package/dist/task-board/components/ProjectList.js.map +1 -0
  187. package/dist/task-board/components/ProjectSettingsDialog.d.ts +8 -0
  188. package/dist/task-board/components/ProjectSettingsDialog.js +146 -0
  189. package/dist/task-board/components/ProjectSettingsDialog.js.map +1 -0
  190. package/dist/task-board/components/TaskAgentPanel.d.ts +10 -0
  191. package/dist/task-board/components/TaskAgentPanel.js +42 -0
  192. package/dist/task-board/components/TaskAgentPanel.js.map +1 -0
  193. package/dist/task-board/components/TaskAssigneePicker.d.ts +12 -0
  194. package/dist/task-board/components/TaskAssigneePicker.js +115 -0
  195. package/dist/task-board/components/TaskAssigneePicker.js.map +1 -0
  196. package/dist/task-board/components/TaskBoardTitlebar.d.ts +1 -0
  197. package/dist/task-board/components/TaskBoardTitlebar.js +60 -0
  198. package/dist/task-board/components/TaskBoardTitlebar.js.map +1 -0
  199. package/dist/task-board/components/TaskCard.d.ts +9 -0
  200. package/dist/task-board/components/TaskCard.js +24 -0
  201. package/dist/task-board/components/TaskCard.js.map +1 -0
  202. package/dist/task-board/components/TaskDetailDialog.d.ts +11 -0
  203. package/dist/task-board/components/TaskDetailDialog.js +8 -0
  204. package/dist/task-board/components/TaskDetailDialog.js.map +1 -0
  205. package/dist/task-board/components/TaskDetailPanel.d.ts +13 -0
  206. package/dist/task-board/components/TaskDetailPanel.js +322 -0
  207. package/dist/task-board/components/TaskDetailPanel.js.map +1 -0
  208. package/dist/task-board/components/TaskRow.d.ts +9 -0
  209. package/dist/task-board/components/TaskRow.js +25 -0
  210. package/dist/task-board/components/TaskRow.js.map +1 -0
  211. package/dist/task-board/index.d.ts +15 -0
  212. package/dist/task-board/index.js +18 -0
  213. package/dist/task-board/index.js.map +1 -0
  214. package/dist/task-board/services/taskService.d.ts +52 -0
  215. package/dist/task-board/services/taskService.js +74 -0
  216. package/dist/task-board/services/taskService.js.map +1 -0
  217. package/dist/task-board/taskAgentConfig.d.ts +7 -0
  218. package/dist/task-board/taskAgentConfig.js +43 -0
  219. package/dist/task-board/taskAgentConfig.js.map +1 -0
  220. package/dist/task-board/taskAgentLink.d.ts +2 -0
  221. package/dist/task-board/taskAgentLink.js +35 -0
  222. package/dist/task-board/taskAgentLink.js.map +1 -0
  223. package/dist/task-board/taskBoardNavStore.d.ts +35 -0
  224. package/dist/task-board/taskBoardNavStore.js +42 -0
  225. package/dist/task-board/taskBoardNavStore.js.map +1 -0
  226. package/dist/task-board/taskExecutionStatus.d.ts +12 -0
  227. package/dist/task-board/taskExecutionStatus.js +96 -0
  228. package/dist/task-board/taskExecutionStatus.js.map +1 -0
  229. package/dist/task-board/taskStatus.d.ts +2 -0
  230. package/dist/task-board/taskStatus.js +26 -0
  231. package/dist/task-board/taskStatus.js.map +1 -0
  232. package/dist/task-board/types.d.ts +169 -0
  233. package/dist/task-board/types.js +2 -0
  234. package/dist/task-board/types.js.map +1 -0
  235. package/dist/task-board/utils/projectHierarchy.d.ts +13 -0
  236. package/dist/task-board/utils/projectHierarchy.js +34 -0
  237. package/dist/task-board/utils/projectHierarchy.js.map +1 -0
  238. package/dist/task-board/views/KanbanView.d.ts +14 -0
  239. package/dist/task-board/views/KanbanView.js +136 -0
  240. package/dist/task-board/views/KanbanView.js.map +1 -0
  241. package/dist/task-board/views/ListView.d.ts +13 -0
  242. package/dist/task-board/views/ListView.js +74 -0
  243. package/dist/task-board/views/ListView.js.map +1 -0
  244. package/dist/task-board/views/PlanningView.d.ts +7 -0
  245. package/dist/task-board/views/PlanningView.js +112 -0
  246. package/dist/task-board/views/PlanningView.js.map +1 -0
  247. package/package.json +1 -1
@@ -0,0 +1,322 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useMemo, useState, useEffect } from "react";
3
+ import { toast } from "sonner";
4
+ import { Button } from "../../components/ui/button";
5
+ import { Badge } from "../../components/ui/badge";
6
+ import { Label } from "../../components/ui/label";
7
+ import { Textarea } from "../../components/ui/textarea";
8
+ import { Select } from "../../components/ui/select";
9
+ import { Plus, Link as LinkIcon, Trash2, X, Loader2 } from "lucide-react";
10
+ import { useEditContext } from "../../editor/client/editContext";
11
+ import { addComment, updateTask, deleteTask } from "../services/taskService";
12
+ import { CommentsList } from "./CommentsList";
13
+ import { TaskCard } from "./TaskCard";
14
+ import { CreateTaskDialog } from "./CreateTaskDialog";
15
+ import { AddDependencyDialog } from "./AddDependencyDialog";
16
+ import { getTaskExecutionDisplay } from "../taskExecutionStatus";
17
+ import { getLinkedAgentId } from "../taskAgentLink";
18
+ import { TaskAssigneePicker } from "./TaskAssigneePicker";
19
+ import { stripAgentConfigFromResultData, } from "../taskAgentConfig";
20
+ const statuses = [
21
+ { value: "Todo", label: "Todo" },
22
+ { value: "InProgress", label: "In progress" },
23
+ { value: "Review", label: "Review" },
24
+ { value: "Done", label: "Done" },
25
+ ];
26
+ const priorities = [
27
+ { value: "none", label: "No priority" },
28
+ { value: "Low", label: "Low" },
29
+ { value: "Medium", label: "Medium" },
30
+ { value: "High", label: "High" },
31
+ { value: "Critical", label: "Critical" },
32
+ ];
33
+ export function TaskDetailPanel(props) {
34
+ const { project, task, allTasks, dependencies, onTaskChanged, onSelectTask, onClose, variant = "panel", agentStatusesById = {} } = props;
35
+ const [commentText, setCommentText] = useState("");
36
+ const [isCreateSubtaskOpen, setIsCreateSubtaskOpen] = useState(false);
37
+ const [isAddDependencyOpen, setIsAddDependencyOpen] = useState(false);
38
+ const [localDescription, setLocalDescription] = useState(task?.description ?? "");
39
+ const [localResultData, setLocalResultData] = useState(task?.resultData ?? "");
40
+ const editContext = useEditContext();
41
+ const getStatusForTask = useCallback((taskItem) => {
42
+ const linkedAgentId = getLinkedAgentId(taskItem);
43
+ return linkedAgentId ? agentStatusesById[linkedAgentId.toLowerCase()] : undefined;
44
+ }, [agentStatusesById]);
45
+ const canEdit = project?.permission === "Owner" || project?.permission === "Editor";
46
+ const isPlanTask = useMemo(() => {
47
+ const t = task?.taskType;
48
+ return typeof t === "string" && t.toLowerCase() === "plan";
49
+ }, [task]);
50
+ // Sync local state when the task changes
51
+ useEffect(() => {
52
+ setLocalDescription(task?.description ?? "");
53
+ }, [task?.taskId, task?.description]);
54
+ useEffect(() => {
55
+ setLocalResultData(task?.resultData ?? "");
56
+ }, [task?.taskId, task?.resultData]);
57
+ const saveDescription = useCallback(async () => {
58
+ if (!task)
59
+ return;
60
+ const trimmed = localDescription.trim();
61
+ if (trimmed === (task.description ?? "").trim())
62
+ return;
63
+ const result = await updateTask({ taskId: task.taskId, description: trimmed || undefined });
64
+ if (result.type !== "success") {
65
+ toast.error(result.summary || "Failed to update description");
66
+ return;
67
+ }
68
+ await onTaskChanged();
69
+ }, [task, localDescription, onTaskChanged]);
70
+ const saveResultData = useCallback(async () => {
71
+ if (!task)
72
+ return;
73
+ const trimmed = localResultData.trim();
74
+ if (trimmed === (task.resultData ?? "").trim())
75
+ return;
76
+ const result = await updateTask({ taskId: task.taskId, resultData: trimmed || null });
77
+ if (result.type !== "success") {
78
+ toast.error(result.summary || "Failed to update plan");
79
+ return;
80
+ }
81
+ await onTaskChanged();
82
+ }, [task, localResultData, onTaskChanged]);
83
+ const title = useMemo(() => task?.title ?? "Task details", [task?.title]);
84
+ const displayTaskId = useMemo(() => {
85
+ if (!task)
86
+ return null;
87
+ return task.taskKey || task.taskId.slice(0, 8).toUpperCase();
88
+ }, [task]);
89
+ const formatTaskLabel = useCallback((item) => {
90
+ const id = item.taskKey || item.taskId.slice(0, 8).toUpperCase();
91
+ return `${id} - ${item.title}`;
92
+ }, []);
93
+ const getDependencyTaskIds = useCallback((taskId) => {
94
+ const ids = [];
95
+ for (const dep of dependencies) {
96
+ if (dep.taskId !== taskId)
97
+ continue;
98
+ const linked = allTasks.find((t) => t.taskId === dep.dependsOnTaskId);
99
+ const displayId = linked?.taskKey || dep.dependsOnTaskId.slice(0, 8).toUpperCase();
100
+ if (!ids.includes(displayId))
101
+ ids.push(displayId);
102
+ }
103
+ return ids;
104
+ }, [allTasks, dependencies]);
105
+ const compactPanel = variant === "panel";
106
+ // Calculate related tasks
107
+ const childTasks = useMemo(() => {
108
+ if (!task)
109
+ return [];
110
+ return allTasks.filter((t) => t.parentTaskId === task.taskId);
111
+ }, [task, allTasks]);
112
+ const blockedByTasks = useMemo(() => {
113
+ if (!task)
114
+ return [];
115
+ const blockingDeps = dependencies.filter((d) => d.taskId === task.taskId && d.dependencyType === "BlockedBy");
116
+ return blockingDeps
117
+ .map((dep) => allTasks.find((t) => t.taskId === dep.dependsOnTaskId))
118
+ .filter((t) => t !== undefined);
119
+ }, [task, dependencies, allTasks]);
120
+ const relatedTasks = useMemo(() => {
121
+ if (!task)
122
+ return [];
123
+ const relatedDeps = dependencies.filter((d) => d.taskId === task.taskId && d.dependencyType === "RelatedTo");
124
+ return relatedDeps
125
+ .map((dep) => allTasks.find((t) => t.taskId === dep.dependsOnTaskId))
126
+ .filter((t) => t !== undefined);
127
+ }, [task, dependencies, allTasks]);
128
+ const blockingTasks = useMemo(() => {
129
+ if (!task)
130
+ return [];
131
+ // Tasks that are blocked by this task
132
+ const blockingDeps = dependencies.filter((d) => d.dependsOnTaskId === task.taskId && d.dependencyType === "BlockedBy");
133
+ return blockingDeps
134
+ .map((dep) => allTasks.find((t) => t.taskId === dep.taskId))
135
+ .filter((t) => t !== undefined);
136
+ }, [task, dependencies, allTasks]);
137
+ const setStatus = async (status) => {
138
+ if (!task)
139
+ return;
140
+ const result = await updateTask({ taskId: task.taskId, status });
141
+ if (result.type !== "success") {
142
+ toast.error(result.summary || "Failed to update task");
143
+ return;
144
+ }
145
+ toast.success("Task updated");
146
+ await onTaskChanged();
147
+ };
148
+ const setPriority = async (priority) => {
149
+ if (!task)
150
+ return;
151
+ const nextPriority = priority === "none" ? null : priority;
152
+ const result = await updateTask({ taskId: task.taskId, priority: nextPriority });
153
+ if (result.type !== "success") {
154
+ toast.error(result.summary || "Failed to update task");
155
+ return;
156
+ }
157
+ toast.success("Task updated");
158
+ await onTaskChanged();
159
+ };
160
+ const setAssignee = async (assignee) => {
161
+ if (!task)
162
+ return;
163
+ const nextAssigneeId = assignee?.userName ?? null;
164
+ const currentAssigneeId = task.assigneeType === "Human" ? (task.assigneeId ?? null) : null;
165
+ if (nextAssigneeId === currentAssigneeId)
166
+ return;
167
+ const result = await updateTask({
168
+ taskId: task.taskId,
169
+ assigneeType: "Human",
170
+ assigneeId: nextAssigneeId ?? "",
171
+ executionStatus: "Idle",
172
+ });
173
+ if (result.type !== "success") {
174
+ toast.error(result.summary || "Failed to assign user");
175
+ return;
176
+ }
177
+ toast.success(assignee ? "Assignee updated" : "Assignee cleared");
178
+ await onTaskChanged();
179
+ };
180
+ const upsertAssignee = async (selection) => {
181
+ if (!task)
182
+ return;
183
+ if (!selection) {
184
+ const clear = await updateTask({
185
+ taskId: task.taskId,
186
+ assigneeType: "Human",
187
+ assigneeId: "",
188
+ executionStatus: "Idle",
189
+ });
190
+ if (clear.type !== "success") {
191
+ toast.error(clear.summary || "Failed to clear assignee");
192
+ return;
193
+ }
194
+ toast.success("Assignee cleared");
195
+ return;
196
+ }
197
+ if (selection.assigneeType === "Human") {
198
+ await setAssignee({
199
+ userName: selection.assigneeId,
200
+ displayName: selection.displayName,
201
+ });
202
+ return;
203
+ }
204
+ const result = await updateTask({
205
+ taskId: task.taskId,
206
+ assigneeType: "Agent",
207
+ assigneeId: selection.assigneeId,
208
+ resultData: stripAgentConfigFromResultData(task.resultData),
209
+ executionStatus: "Idle",
210
+ });
211
+ if (result.type !== "success") {
212
+ toast.error(result.summary || "Failed to assign agent profile");
213
+ return;
214
+ }
215
+ toast.success("Assignee updated");
216
+ await onTaskChanged();
217
+ };
218
+ const submitComment = async () => {
219
+ if (!task)
220
+ return;
221
+ if (!commentText.trim())
222
+ return;
223
+ const result = await addComment({ taskId: task.taskId, text: commentText.trim() });
224
+ if (result.type !== "success") {
225
+ toast.error(result.summary || "Failed to add comment");
226
+ return;
227
+ }
228
+ setCommentText("");
229
+ toast.success("Comment added");
230
+ await onTaskChanged();
231
+ };
232
+ const parentOptions = useMemo(() => {
233
+ if (!task)
234
+ return [];
235
+ // Get all tasks except the current one
236
+ const otherTasks = allTasks.filter((t) => t.taskId !== task.taskId);
237
+ // Build options from available tasks
238
+ const options = otherTasks.map((t) => ({ value: t.taskId, label: formatTaskLabel(t) }));
239
+ // If there's a parent task that's not in the options, add it
240
+ if (task.parentTaskId) {
241
+ const parentExists = options.some((opt) => opt.value === task.parentTaskId);
242
+ if (!parentExists) {
243
+ // Parent task not found in allTasks - add a placeholder
244
+ options.push({
245
+ value: task.parentTaskId,
246
+ label: `[Parent: ${task.parentTaskId.substring(0, 8)}...]`,
247
+ });
248
+ }
249
+ }
250
+ return [{ value: "none", label: "None" }, ...options];
251
+ }, [allTasks, formatTaskLabel, task]);
252
+ // Compute the current parent value - ensure it's valid
253
+ const currentParentValue = useMemo(() => {
254
+ if (!task)
255
+ return "none";
256
+ if (!task.parentTaskId)
257
+ return "none";
258
+ // Check if the parent task ID exists in the options
259
+ const exists = parentOptions.some((opt) => opt.value === task.parentTaskId);
260
+ return exists ? task.parentTaskId : "none";
261
+ }, [task, parentOptions]);
262
+ const setParent = async (newParentId) => {
263
+ if (!task)
264
+ return;
265
+ const result = await updateTask({
266
+ taskId: task.taskId,
267
+ parentTaskId: newParentId === "none" ? null : newParentId,
268
+ });
269
+ if (result.type !== "success") {
270
+ toast.error(result.summary || "Failed to update parent task");
271
+ return;
272
+ }
273
+ toast.success("Parent task updated");
274
+ await onTaskChanged();
275
+ };
276
+ // Count all descendant tasks (including nested subtasks)
277
+ const descendantCount = useMemo(() => {
278
+ if (!task)
279
+ return 0;
280
+ const countDescendants = (parentId) => {
281
+ const directChildren = allTasks.filter((t) => t.parentTaskId === parentId);
282
+ let count = directChildren.length;
283
+ for (const child of directChildren) {
284
+ count += countDescendants(child.taskId);
285
+ }
286
+ return count;
287
+ };
288
+ return countDescendants(task.taskId);
289
+ }, [task, allTasks]);
290
+ const handleDelete = async () => {
291
+ if (!task || !editContext)
292
+ return;
293
+ let message = `Are you sure you want to delete "${task.title}"?`;
294
+ if (descendantCount > 0) {
295
+ message += `\n\nThis will also delete ${descendantCount} ${descendantCount === 1 ? 'subtask' : 'subtasks'} (including nested subtasks).`;
296
+ }
297
+ message += "\n\nThis action cannot be undone.";
298
+ editContext.confirm({
299
+ header: "Delete task",
300
+ message,
301
+ acceptLabel: "Delete",
302
+ showCancel: true,
303
+ accept: async () => {
304
+ const result = await deleteTask(task.taskId);
305
+ if (result.type !== "success") {
306
+ toast.error(result.summary || "Failed to delete task");
307
+ return;
308
+ }
309
+ toast.success("Task deleted");
310
+ onClose();
311
+ await onTaskChanged();
312
+ },
313
+ });
314
+ };
315
+ const executionDisplay = useMemo(() => {
316
+ if (!task)
317
+ return null;
318
+ return getTaskExecutionDisplay(task.executionStatus, getStatusForTask(task), task.status);
319
+ }, [task, getStatusForTask]);
320
+ return (_jsxs("div", { className: `flex h-full flex-col bg-slate-50/50 ${variant === "panel" ? "border-t" : ""}`, children: [_jsx("div", { className: "flex flex-col border-b bg-white p-4 shadow-sm", children: _jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsxs("div", { className: "min-w-0 flex-1 space-y-1", children: [_jsxs("div", { className: "flex items-center gap-2 min-w-0", children: [task && (_jsx(Badge, { variant: "outline", className: "h-5 px-1.5 text-[10px] font-bold uppercase tracking-tight shrink-0 bg-slate-50 text-slate-500 border-slate-200", children: displayTaskId })), _jsx("h2", { className: "truncate text-base font-bold tracking-tight text-slate-900 leading-none", children: title })] }), task ? (_jsxs("div", { className: "flex flex-wrap items-center gap-2 pt-1", children: [_jsx(Select, { value: task.status, onValueChange: (v) => setStatus(v), disabled: !canEdit, options: statuses, className: "h-7 w-[130px] text-xs font-medium" }), _jsx(Select, { value: task.priority ?? "none", onValueChange: (v) => setPriority(v), disabled: !canEdit, options: priorities, className: "h-7 w-[140px] text-xs font-medium" }), !isPlanTask && project && (_jsx(TaskAssigneePicker, { projectId: project.project.projectId, assigneeType: task.assigneeType ?? null, value: task.assigneeId ?? null, displayValue: task.assigneeDisplayName ?? task.assigneeId ?? null, disabled: !canEdit, onChange: upsertAssignee, placeholder: "Assign user or agent" })), executionDisplay && (_jsxs(Badge, { variant: executionDisplay.variant, className: `h-5 gap-1 text-[10px] font-bold uppercase tracking-wider ${executionDisplay.className || ""}`, children: [executionDisplay.showSpinner && _jsx(Loader2, { className: "h-2.5 w-2.5 animate-spin" }), executionDisplay.label] }))] })) : (_jsx("div", { className: "truncate text-sm text-muted-foreground italic", children: "No task selected" }))] }), _jsxs("div", { className: "flex items-center gap-1 shrink-0", children: [task && canEdit && (_jsx(Button, { variant: "ghost", size: "icon", onClick: handleDelete, className: "h-8 w-8 text-slate-400 hover:text-destructive hover:bg-destructive/5", title: "Delete task", children: _jsx(Trash2, { className: "h-4 w-4" }) })), _jsx(Button, { variant: "ghost", size: "icon", onClick: onClose, className: "h-8 w-8 text-slate-400 hover:text-slate-600 hover:bg-slate-100", title: "Close", children: _jsx(X, { className: "h-4 w-4" }) })] })] }) }), _jsx("div", { className: compactPanel ? "min-h-0 flex-1 overflow-auto bg-slate-50/30 p-4" : "min-h-0 flex-1 overflow-auto bg-slate-50/30 p-6", children: !task ? (_jsx("div", { className: "flex h-full items-center justify-center text-sm text-muted-foreground italic", children: "Select a task to view details." })) : (_jsxs("div", { className: compactPanel ? "grid gap-6" : "grid gap-8", children: [_jsxs("div", { className: "grid gap-2", children: [_jsx(Label, { className: "text-[11px] font-bold uppercase tracking-wider text-slate-500", children: "Description" }), _jsx(Textarea, { value: localDescription, onChange: (e) => setLocalDescription(e.target.value), onBlur: () => void saveDescription(), rows: compactPanel ? 2 : 3, placeholder: "Add a description\u2026", disabled: !canEdit, className: "resize-none bg-white text-[13px] leading-relaxed shadow-sm focus-visible:ring-1" })] }), isPlanTask && (_jsxs("div", { className: "grid gap-2", children: [_jsx(Label, { className: "text-[11px] font-bold uppercase tracking-wider text-slate-500", children: "Plan" }), _jsx(Textarea, { value: localResultData, onChange: (e) => setLocalResultData(e.target.value), onBlur: () => void saveResultData(), rows: compactPanel ? 6 : 10, placeholder: "Write the plan\u2026", disabled: !canEdit, className: "min-h-[200px] bg-white font-mono text-[12px] leading-relaxed shadow-sm focus-visible:ring-1" }), _jsxs("div", { className: "text-[11px] text-slate-500 bg-blue-50/50 border border-blue-100 rounded px-2 py-1.5", children: [_jsx("span", { className: "font-semibold text-blue-700", children: "Approval:" }), " Move this plan task to ", _jsx("span", { className: "font-bold text-blue-800", children: "Done" }), " to approve."] })] })), compactPanel && (_jsxs("div", { className: "grid gap-6 border-t border-slate-200/60 pt-6", children: [_jsxs("div", { className: "grid gap-2", children: [_jsx(Label, { className: "text-[11px] font-bold uppercase tracking-wider text-slate-500", children: "Subtasks" }), childTasks.length > 0 ? (_jsx("div", { className: "grid gap-1.5", children: childTasks.map((child) => (_jsxs("button", { type: "button", onClick: () => onSelectTask(child.taskId), className: "group flex items-center gap-2 truncate rounded-md border border-slate-200 bg-white px-3 py-2 text-left text-xs transition-colors hover:border-slate-300 hover:bg-slate-50", children: [_jsx(Badge, { variant: "outline", className: "h-4 px-1 text-[8px] font-bold bg-slate-50 text-slate-400 border-slate-200 group-hover:border-slate-300", children: child.taskKey || child.taskId.slice(0, 4) }), _jsx("span", { className: "truncate font-medium text-slate-700", children: child.title })] }, child.taskId))) })) : (_jsx("div", { className: "text-[11px] text-slate-400 italic", children: "No subtasks." }))] }), _jsxs("div", { className: "grid gap-3", children: [_jsx(Label, { className: "text-[11px] font-bold uppercase tracking-wider text-slate-500", children: "Dependencies" }), blockedByTasks.length > 0 && (_jsxs("div", { className: "grid gap-2", children: [_jsx("div", { className: "text-[10px] font-bold uppercase tracking-wider text-slate-400", children: "Blocked By" }), _jsx("div", { className: "grid gap-1.5", children: blockedByTasks.map((blocking) => (_jsxs("button", { type: "button", onClick: () => onSelectTask(blocking.taskId), className: "group flex items-center gap-2 truncate rounded-md border border-slate-200 bg-white px-3 py-2 text-left text-xs transition-colors hover:border-slate-300 hover:bg-slate-50", children: [_jsx(Badge, { variant: "outline", className: "h-4 px-1 text-[8px] font-bold bg-slate-50 text-slate-400 border-slate-200 group-hover:border-slate-300", children: blocking.taskKey || blocking.taskId.slice(0, 4) }), _jsx("span", { className: "truncate font-medium text-slate-700", children: blocking.title })] }, blocking.taskId))) })] })), blockingTasks.length > 0 && (_jsxs("div", { className: "grid gap-2", children: [_jsx("div", { className: "text-[10px] font-bold uppercase tracking-wider text-slate-400", children: "Blocks" }), _jsx("div", { className: "grid gap-1.5", children: blockingTasks.map((blocked) => (_jsxs("button", { type: "button", onClick: () => onSelectTask(blocked.taskId), className: "group flex items-center gap-2 truncate rounded-md border border-slate-200 bg-white px-3 py-2 text-left text-xs transition-colors hover:border-slate-300 hover:bg-slate-50", children: [_jsx(Badge, { variant: "outline", className: "h-4 px-1 text-[8px] font-bold bg-slate-50 text-slate-400 border-slate-200 group-hover:border-slate-300", children: blocked.taskKey || blocked.taskId.slice(0, 4) }), _jsx("span", { className: "truncate font-medium text-slate-700", children: blocked.title })] }, blocked.taskId))) })] })), relatedTasks.length > 0 && (_jsxs("div", { className: "grid gap-2", children: [_jsx("div", { className: "text-[10px] font-bold uppercase tracking-wider text-slate-400", children: "Related To" }), _jsx("div", { className: "grid gap-1.5", children: relatedTasks.map((related) => (_jsxs("button", { type: "button", onClick: () => onSelectTask(related.taskId), className: "group flex items-center gap-2 truncate rounded-md border border-slate-200 bg-white px-3 py-2 text-left text-xs transition-colors hover:border-slate-300 hover:bg-slate-50", children: [_jsx(Badge, { variant: "outline", className: "h-4 px-1 text-[8px] font-bold bg-slate-50 text-slate-400 border-slate-200 group-hover:border-slate-300", children: related.taskKey || related.taskId.slice(0, 4) }), _jsx("span", { className: "truncate font-medium text-slate-700", children: related.title })] }, related.taskId))) })] })), blockedByTasks.length === 0 && blockingTasks.length === 0 && relatedTasks.length === 0 && (_jsx("div", { className: "text-[11px] text-slate-400 italic", children: "No dependencies." }))] })] })), !compactPanel && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "grid gap-2", children: [_jsx(Label, { className: "text-[11px] font-bold uppercase tracking-wider text-slate-500", children: "Parent Task" }), _jsx(Select, { value: currentParentValue, onValueChange: setParent, disabled: !canEdit, options: parentOptions, className: "bg-white text-[13px] shadow-sm" })] }), _jsxs("div", { className: "grid gap-2 pt-2", children: [_jsxs(Label, { className: "flex items-center justify-between text-[11px] font-bold uppercase tracking-wider text-slate-500", children: ["Subtasks ", childTasks.length > 0 && `(${childTasks.length})`, canEdit && (_jsx(Button, { variant: "ghost", size: "icon", className: "h-6 w-6 text-slate-400 hover:text-slate-600", onClick: () => setIsCreateSubtaskOpen(true), title: "Add subtask", children: _jsx(Plus, { className: "h-3 w-3" }) }))] }), childTasks.length > 0 ? (_jsx("div", { className: "grid gap-2", children: childTasks.map((child) => (_jsx(TaskCard, { task: child, selected: false, onClick: () => onSelectTask(child.taskId), dependencyTaskIds: getDependencyTaskIds(child.taskId), assignedAgentStatus: getStatusForTask(child) }, child.taskId))) })) : (_jsx("div", { className: "text-[11px] text-slate-400 italic", children: "No subtasks." }))] }), _jsxs("div", { className: "grid gap-4 border-t border-slate-200/60 pt-6", children: [_jsxs(Label, { className: "flex items-center justify-between text-[11px] font-bold uppercase tracking-wider text-slate-500", children: ["Relationships", canEdit && (_jsx(Button, { variant: "ghost", size: "icon", className: "h-6 w-6 text-slate-400 hover:text-slate-600", onClick: () => setIsAddDependencyOpen(true), title: "Add relationship", children: _jsx(LinkIcon, { className: "h-3 w-3" }) }))] }), _jsxs("div", { className: "grid gap-6", children: [blockedByTasks.length > 0 && (_jsxs("div", { className: "grid gap-2", children: [_jsx("div", { className: "text-[10px] font-bold uppercase tracking-wider text-slate-400", children: "Blocked By" }), _jsx("div", { className: "grid gap-2", children: blockedByTasks.map((blocking) => (_jsx(TaskCard, { task: blocking, selected: false, onClick: () => onSelectTask(blocking.taskId), dependencyTaskIds: getDependencyTaskIds(blocking.taskId), assignedAgentStatus: getStatusForTask(blocking) }, blocking.taskId))) })] })), blockingTasks.length > 0 && (_jsxs("div", { className: "grid gap-2", children: [_jsx("div", { className: "text-[10px] font-bold uppercase tracking-wider text-slate-400", children: "Blocks" }), _jsx("div", { className: "grid gap-2", children: blockingTasks.map((blocked) => (_jsx(TaskCard, { task: blocked, selected: false, onClick: () => onSelectTask(blocked.taskId), dependencyTaskIds: getDependencyTaskIds(blocked.taskId), assignedAgentStatus: getStatusForTask(blocked) }, blocked.taskId))) })] })), relatedTasks.length > 0 && (_jsxs("div", { className: "grid gap-2", children: [_jsx("div", { className: "text-[10px] font-bold uppercase tracking-wider text-slate-400", children: "Related To" }), _jsx("div", { className: "grid gap-2", children: relatedTasks.map((related) => (_jsx(TaskCard, { task: related, selected: false, onClick: () => onSelectTask(related.taskId), dependencyTaskIds: getDependencyTaskIds(related.taskId), assignedAgentStatus: getStatusForTask(related) }, related.taskId))) })] })), blockedByTasks.length === 0 && blockingTasks.length === 0 && relatedTasks.length === 0 && (_jsx("div", { className: "text-[11px] text-slate-400 italic", children: "No relationships defined." }))] })] }), _jsxs("div", { className: "grid gap-3 border-t border-slate-200/60 pt-6", children: [_jsx(Label, { className: "text-[11px] font-bold uppercase tracking-wider text-slate-500", children: "Comments" }), _jsxs("div", { className: "grid gap-2", children: [_jsx(Textarea, { value: commentText, onChange: (e) => setCommentText(e.target.value), rows: 3, placeholder: "Write a comment\u2026", disabled: !canEdit, className: "resize-none bg-white text-[13px] shadow-sm focus-visible:ring-1" }), _jsx("div", { className: "flex justify-end", children: _jsx(Button, { size: "sm", onClick: submitComment, disabled: !canEdit || !commentText.trim(), className: "px-4", children: "Post comment" }) })] }), _jsx("div", { className: "pt-2", children: _jsx(CommentsList, { taskId: task.taskId }) })] })] }))] })) }), task && project && (_jsxs(_Fragment, { children: [_jsx(CreateTaskDialog, { open: isCreateSubtaskOpen, onOpenChange: setIsCreateSubtaskOpen, projectId: project.project.projectId, parentTaskId: task.taskId, onCreated: onTaskChanged }), _jsx(AddDependencyDialog, { open: isAddDependencyOpen, onOpenChange: setIsAddDependencyOpen, task: task, allTasks: allTasks, onCreated: onTaskChanged })] }))] }));
321
+ }
322
+ //# sourceMappingURL=TaskDetailPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskDetailPanel.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskDetailPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { TaskItem } from "../types";
2
+ import type { AgentStatus } from "../../editor/services/agentService";
3
+ export declare function TaskRow(props: {
4
+ task: TaskItem;
5
+ selected: boolean;
6
+ onClick: () => void;
7
+ onDelete?: () => void;
8
+ assignedAgentStatus?: AgentStatus;
9
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../../lib/utils";
3
+ import { Loader2, User, Bot, Trash2 } from "lucide-react";
4
+ import { Badge } from "../../components/ui/badge";
5
+ import { getTaskExecutionDisplay } from "../taskExecutionStatus";
6
+ import { normalizeTaskStatus } from "../taskStatus";
7
+ const priorityVariants = {
8
+ Critical: "destructive",
9
+ High: "default",
10
+ Medium: "secondary",
11
+ Low: "outline",
12
+ };
13
+ export function TaskRow(props) {
14
+ const { task, selected, onClick, onDelete, assignedAgentStatus } = props;
15
+ const taskStatus = normalizeTaskStatus(task.status, task.executionStatus);
16
+ const executionDisplay = getTaskExecutionDisplay(task.executionStatus, assignedAgentStatus, taskStatus);
17
+ const isPlanTask = String(task.taskType ?? "").toLowerCase() === "plan" || task.title === "Project Plan";
18
+ const assigneeValue = task.assigneeDisplayName ||
19
+ task.assigneeId ||
20
+ (task.assigneeType === "Agent" && isPlanTask ? "Project Planner" : "Unassigned");
21
+ return (_jsxs("div", { className: cn("grid w-full grid-cols-[minmax(12rem,3fr)_minmax(6.5rem,1fr)_minmax(8rem,1.1fr)_minmax(6.5rem,1fr)_minmax(7.5rem,1fr)_2.5rem] gap-3.5 px-5 py-2.5 text-[13px] transition-colors border-l-2", selected
22
+ ? "bg-primary/5 border-primary shadow-sm"
23
+ : "hover:bg-slate-50 border-transparent"), children: [_jsxs("button", { type: "button", onClick: onClick, className: "contents text-left", children: [_jsxs("div", { className: "flex flex-col min-w-0", children: [_jsx("span", { className: cn("truncate font-medium tracking-tight", selected ? "text-primary" : "text-slate-900"), children: task.title }), task.description && (_jsx("span", { className: "truncate text-xs text-slate-500 italic mt-0.5", children: task.description }))] }), _jsx("div", { className: "flex items-center", children: _jsx(Badge, { variant: "outline", className: "h-5 text-[10px] font-bold uppercase tracking-wider", children: taskStatus }) }), _jsxs("div", { className: "flex items-center gap-2 text-slate-600", children: [task.assigneeType === "Agent" ? (_jsx(Bot, { className: "h-3.5 w-3.5 text-slate-400" })) : (_jsx(User, { className: "h-3.5 w-3.5 text-slate-400" })), _jsx("span", { className: "truncate text-xs font-medium", title: assigneeValue, children: assigneeValue })] }), _jsx("div", { className: "flex items-center", children: task.priority ? (_jsx(Badge, { variant: priorityVariants[task.priority], className: "h-5 text-[10px] font-bold uppercase tracking-wider", children: task.priority })) : (_jsx("span", { className: "text-slate-300", children: "\u2014" })) }), _jsx("div", { className: "flex items-center", children: executionDisplay ? (_jsxs(Badge, { variant: executionDisplay.variant, className: cn("h-5 text-[10px] font-bold uppercase tracking-wider", 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 })] }), _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, children: _jsx(Trash2, { className: "h-3.5 w-3.5" }) })) : null })] }));
24
+ }
25
+ //# sourceMappingURL=TaskRow.js.map
@@ -0,0 +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,cAAc,CAAC;AAG1D,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,gBAAgB,GAA8E;IAClG,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;IACnB,GAAG,EAAE,SAAS;CACf,CAAC;AAEF,MAAM,UAAU,OAAO,CAAC,KAMvB;IACC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC;IACzE,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1E,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,IAAI,CAAC,eAAe,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAAC;IACxG,MAAM,UAAU,GACd,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC;IACxF,MAAM,aAAa,GACjB,IAAI,CAAC,mBAAmB;QACxB,IAAI,CAAC,UAAU;QACf,CAAC,IAAI,CAAC,YAAY,KAAK,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAEnF,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,2LAA2L,EAC3L,QAAQ;YACN,CAAC,CAAC,uCAAuC;YACzC,CAAC,CAAC,sCAAsC,CAC3C,aAED,kBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,oBAAoB,aACtE,eAAK,SAAS,EAAC,uBAAuB,aACpC,eAAM,SAAS,EAAE,EAAE,CAAC,qCAAqC,EAAE,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,YACrG,IAAI,CAAC,KAAK,GACN,EACN,IAAI,CAAC,WAAW,IAAI,CACnB,eAAM,SAAS,EAAC,+CAA+C,YAC5D,IAAI,CAAC,WAAW,GACZ,CACR,IACG,EAEN,cAAK,SAAS,EAAC,mBAAmB,YAChC,KAAC,KAAK,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,oDAAoD,YACpF,UAAU,GACL,GACJ,EAEN,eAAK,SAAS,EAAC,wCAAwC,aACpD,IAAI,CAAC,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,CAC/B,KAAC,GAAG,IAAC,SAAS,EAAC,4BAA4B,GAAG,CAC/C,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,SAAS,EAAC,4BAA4B,GAAG,CAChD,EACD,eAAM,SAAS,EAAC,8BAA8B,EAAC,KAAK,EAAE,aAAa,YAChE,aAAa,GACT,IACH,EAEN,cAAK,SAAS,EAAC,mBAAmB,YAC/B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CACf,KAAC,KAAK,IACJ,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxC,SAAS,EAAC,oDAAoD,YAE7D,IAAI,CAAC,QAAQ,GACR,CACT,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,gBAAgB,uBAAS,CAC1C,GACG,EAEN,cAAK,SAAS,EAAC,mBAAmB,YAC/B,gBAAgB,CAAC,CAAC,CAAC,CAClB,MAAC,KAAK,IACJ,OAAO,EAAE,gBAAgB,CAAC,OAAO,EACjC,SAAS,EAAE,EAAE,CAAC,oDAAoD,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAC/F,KAAK,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,SAAS,aAEvF,gBAAgB,CAAC,WAAW,IAAI,KAAC,OAAO,IAAC,SAAS,EAAC,+BAA+B,GAAG,EACrF,gBAAgB,CAAC,KAAK,IACjB,CACT,CAAC,CAAC,CAAC,IAAI,GACJ,IACG,EAET,cAAK,SAAS,EAAC,+BAA+B,YAC3C,QAAQ,CAAC,CAAC,CAAC,CACV,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,gGAAgG,EAC1G,KAAK,EAAC,aAAa,EACnB,OAAO,EAAE,QAAQ,YAEjB,KAAC,MAAM,IAAC,SAAS,EAAC,aAAa,GAAG,GAC3B,CACV,CAAC,CAAC,CAAC,IAAI,GACJ,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ export { TaskBoardWorkspace } from "./TaskBoardWorkspace";
2
+ export { KanbanView } from "./views/KanbanView";
3
+ export { ListView } from "./views/ListView";
4
+ export { ProjectList } from "./components/ProjectList";
5
+ export { CreateProjectDialog } from "./components/CreateProjectDialog";
6
+ export { ProjectSettingsDialog } from "./components/ProjectSettingsDialog";
7
+ export { CreateTaskDialog } from "./components/CreateTaskDialog";
8
+ export { TaskCard } from "./components/TaskCard";
9
+ export { TaskRow } from "./components/TaskRow";
10
+ export { TaskDetailPanel } from "./components/TaskDetailPanel";
11
+ export { CommentsList } from "./components/CommentsList";
12
+ export { TaskAgentPanel, TaskAgentPanel as DispatcherPanel } from "./components/TaskAgentPanel";
13
+ export * from "./services/taskService";
14
+ export type { OrchestratorStatus, OrchestratorResult } from "./services/taskService";
15
+ export type { Project, ProjectWithPermission, ProjectMember, ProjectStatus, ProjectPermission, ProjectMemberType, TaskItem, TaskComment, TaskDependency, TaskAttachment, TaskStatus, TaskExecutionStatus, TaskAssigneeType, TaskPriority, TaskDependencyType, CreateProjectRequest, DeleteProjectRequest, AddMemberRequest, RemoveMemberRequest, CreateTaskRequest, UpdateTaskRequest, DeleteTaskRequest, AddTaskCommentRequest, AddTaskDependencyRequest, UploadTaskAttachmentRequest, DeleteTaskAttachmentRequest, } from "./types";
@@ -0,0 +1,18 @@
1
+ // Task Board Module
2
+ export { TaskBoardWorkspace } from "./TaskBoardWorkspace";
3
+ // Views
4
+ export { KanbanView } from "./views/KanbanView";
5
+ export { ListView } from "./views/ListView";
6
+ // Components
7
+ export { ProjectList } from "./components/ProjectList";
8
+ export { CreateProjectDialog } from "./components/CreateProjectDialog";
9
+ export { ProjectSettingsDialog } from "./components/ProjectSettingsDialog";
10
+ export { CreateTaskDialog } from "./components/CreateTaskDialog";
11
+ export { TaskCard } from "./components/TaskCard";
12
+ export { TaskRow } from "./components/TaskRow";
13
+ export { TaskDetailPanel } from "./components/TaskDetailPanel";
14
+ export { CommentsList } from "./components/CommentsList";
15
+ export { TaskAgentPanel, TaskAgentPanel as DispatcherPanel } from "./components/TaskAgentPanel";
16
+ // Services
17
+ export * from "./services/taskService";
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/task-board/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,QAAQ;AACR,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEhG,WAAW;AACX,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { type ExecutionResult } from "../../editor/services/serviceHelper";
2
+ import type { AddMemberRequest, AddTaskCommentRequest, AddTaskDependencyRequest, CreateProjectRequest, CreateTaskRequest, ProjectMember, ProjectWithPermission, TaskAttachment, TaskAssignableUser, TaskComment, TaskDependency, TaskItem, UpdateProjectRequest, UpdateTaskRequest, UploadTaskAttachmentRequest } from "../types";
3
+ export declare function getProjects(): Promise<ExecutionResult<ProjectWithPermission[]>>;
4
+ export declare function createProject(data: CreateProjectRequest): Promise<ExecutionResult<ProjectWithPermission>>;
5
+ export declare function deleteProject(projectId: string): Promise<ExecutionResult<{
6
+ success: boolean;
7
+ }>>;
8
+ export declare function updateProject(data: UpdateProjectRequest): Promise<ExecutionResult<ProjectWithPermission>>;
9
+ export declare function getProject(projectId: string): Promise<ExecutionResult<ProjectWithPermission>>;
10
+ export declare function getProjectMembers(projectId: string): Promise<ExecutionResult<ProjectMember[]>>;
11
+ export declare function addProjectMember(data: AddMemberRequest): Promise<ExecutionResult<ProjectMember>>;
12
+ export declare function searchTaskAssignableUsers(projectId: string, query: string, limit?: number): Promise<ExecutionResult<TaskAssignableUser[]>>;
13
+ export declare function removeProjectMember(memberId: string): Promise<ExecutionResult<{
14
+ success: boolean;
15
+ }>>;
16
+ export declare function getTasks(projectId: string): Promise<ExecutionResult<TaskItem[]>>;
17
+ export declare function createTask(data: CreateTaskRequest): Promise<ExecutionResult<TaskItem>>;
18
+ export declare function updateTask(data: UpdateTaskRequest): Promise<ExecutionResult<{
19
+ success: boolean;
20
+ }>>;
21
+ export declare function deleteTask(taskId: string): Promise<ExecutionResult<{
22
+ success: boolean;
23
+ }>>;
24
+ export declare function addComment(data: AddTaskCommentRequest): Promise<ExecutionResult<TaskComment>>;
25
+ export declare function getDependencies(projectId: string): Promise<ExecutionResult<TaskDependency[]>>;
26
+ export declare function addDependency(data: AddTaskDependencyRequest): Promise<ExecutionResult<TaskDependency>>;
27
+ export declare function uploadAttachment(data: UploadTaskAttachmentRequest): Promise<ExecutionResult<TaskAttachment>>;
28
+ export declare function deleteAttachment(attachmentId: string): Promise<ExecutionResult<{
29
+ success: boolean;
30
+ }>>;
31
+ export interface OrchestratorStatus {
32
+ projectId: string;
33
+ costLimit: number | null;
34
+ costUsed: number;
35
+ runningAgentCount: number;
36
+ queuedTaskCount: number;
37
+ runnableTaskCount: number;
38
+ costLimitReached: boolean;
39
+ concurrencyLimitReached: boolean;
40
+ }
41
+ export interface OrchestratorResult {
42
+ projectId: string;
43
+ tasksDispatched: string[];
44
+ tasksLaunched: string[];
45
+ errors: string[];
46
+ costLimitReached: boolean;
47
+ }
48
+ export declare function getOrchestratorStatus(projectId: string): Promise<ExecutionResult<OrchestratorStatus>>;
49
+ export declare function runOrchestrator(projectId: string): Promise<ExecutionResult<OrchestratorResult>>;
50
+ export declare function triggerPlanning(projectId: string): Promise<ExecutionResult<{
51
+ success: boolean;
52
+ }>>;
@@ -0,0 +1,74 @@
1
+ import { get, post } from "../../editor/services/serviceHelper";
2
+ export function getProjects() {
3
+ return get("/parhelia/tasks/projects");
4
+ }
5
+ export function createProject(data) {
6
+ return post("/parhelia/tasks/createProject", data);
7
+ }
8
+ export function deleteProject(projectId) {
9
+ const body = { projectId };
10
+ return post("/parhelia/tasks/deleteProject", body);
11
+ }
12
+ export function updateProject(data) {
13
+ return post("/parhelia/tasks/updateProject", data);
14
+ }
15
+ export function getProject(projectId) {
16
+ return get(`/parhelia/tasks/project?projectId=${encodeURIComponent(projectId)}`);
17
+ }
18
+ export function getProjectMembers(projectId) {
19
+ return get(`/parhelia/tasks/members?projectId=${encodeURIComponent(projectId)}`);
20
+ }
21
+ export function addProjectMember(data) {
22
+ return post("/parhelia/tasks/addMember", data);
23
+ }
24
+ export function searchTaskAssignableUsers(projectId, query, limit = 20) {
25
+ const params = new URLSearchParams({
26
+ projectId,
27
+ query,
28
+ limit: String(limit),
29
+ });
30
+ return get(`/parhelia/tasks/users?${params.toString()}`);
31
+ }
32
+ export function removeProjectMember(memberId) {
33
+ const body = { memberId };
34
+ return post("/parhelia/tasks/removeMember", body);
35
+ }
36
+ export function getTasks(projectId) {
37
+ return get(`/parhelia/tasks/tasks?projectId=${encodeURIComponent(projectId)}`);
38
+ }
39
+ export function createTask(data) {
40
+ return post("/parhelia/tasks/createTask", data);
41
+ }
42
+ export function updateTask(data) {
43
+ return post("/parhelia/tasks/updateTask", data);
44
+ }
45
+ export function deleteTask(taskId) {
46
+ const body = { taskId };
47
+ return post("/parhelia/tasks/deleteTask", body);
48
+ }
49
+ export function addComment(data) {
50
+ return post("/parhelia/tasks/addComment", data);
51
+ }
52
+ export function getDependencies(projectId) {
53
+ return get(`/parhelia/tasks/dependencies?projectId=${encodeURIComponent(projectId)}`);
54
+ }
55
+ export function addDependency(data) {
56
+ return post("/parhelia/tasks/addDependency", data);
57
+ }
58
+ export function uploadAttachment(data) {
59
+ return post("/parhelia/tasks/uploadAttachment", data);
60
+ }
61
+ export function deleteAttachment(attachmentId) {
62
+ const body = { attachmentId };
63
+ return post("/parhelia/tasks/deleteAttachment", body);
64
+ }
65
+ export function getOrchestratorStatus(projectId) {
66
+ return get(`/parhelia/tasks/orchestrator/status?projectId=${encodeURIComponent(projectId)}`);
67
+ }
68
+ export function runOrchestrator(projectId) {
69
+ return post("/parhelia/tasks/orchestrator/run", { projectId });
70
+ }
71
+ export function triggerPlanning(projectId) {
72
+ return post("/parhelia/tasks/triggerPlanning", { projectId });
73
+ }
74
+ //# sourceMappingURL=taskService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskService.js","sourceRoot":"","sources":["../../../src/task-board/services/taskService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const INITIAL_PROMPT_PREFIX = "TASK_AGENT_INITIAL_PROMPT:";
2
+ export declare const PROFILE_ID_PREFIX = "TASK_AGENT_PROFILE_ID:";
3
+ export declare const DEFAULT_INITIAL_PROMPT = "Read the task description first and start working on this task.";
4
+ export declare function getStoredPrompt(resultData: string | null | undefined): string;
5
+ export declare function getStoredProfileId(resultData: string | null | undefined): string;
6
+ export declare function mergeAgentConfigIntoResultData(resultData: string | null | undefined, prompt: string, profileId: string): string;
7
+ export declare function stripAgentConfigFromResultData(resultData: string | null | undefined): string | null;