@parhelia/core 0.1.12470 → 0.1.12479

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 (162) hide show
  1. package/dist/config/config.js +22 -3
  2. package/dist/config/config.js.map +1 -1
  3. package/dist/config/types.d.ts +2 -0
  4. package/dist/config/types.js.map +1 -1
  5. package/dist/editor/ConfirmationDialog.js +20 -4
  6. package/dist/editor/ConfirmationDialog.js.map +1 -1
  7. package/dist/editor/ContentTree.js +19 -7
  8. package/dist/editor/ContentTree.js.map +1 -1
  9. package/dist/editor/Editor.js.map +1 -1
  10. package/dist/editor/PictureCropper.js +45 -41
  11. package/dist/editor/PictureCropper.js.map +1 -1
  12. package/dist/editor/ai/AgentTerminal.js +97 -8
  13. package/dist/editor/ai/AgentTerminal.js.map +1 -1
  14. package/dist/editor/ai/AgentTerminalStatusBar.js +65 -0
  15. package/dist/editor/ai/AgentTerminalStatusBar.js.map +1 -1
  16. package/dist/editor/ai/Agents.js +19 -0
  17. package/dist/editor/ai/Agents.js.map +1 -1
  18. package/dist/editor/ai/AiResponseMessage.js +5 -0
  19. package/dist/editor/ai/AiResponseMessage.js.map +1 -1
  20. package/dist/editor/ai/ContentInspectorPopover.d.ts +1 -0
  21. package/dist/editor/ai/ContentInspectorPopover.js +22 -8
  22. package/dist/editor/ai/ContentInspectorPopover.js.map +1 -1
  23. package/dist/editor/ai/ToolCallDisplay.d.ts +2 -0
  24. package/dist/editor/ai/ToolCallDisplay.js +54 -11
  25. package/dist/editor/ai/ToolCallDisplay.js.map +1 -1
  26. package/dist/editor/ai/dialogs/AgentDialogHandler.js +32 -3
  27. package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
  28. package/dist/editor/ai/dialogs/QuestionnaireInline.js +55 -20
  29. package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
  30. package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +7 -4
  31. package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
  32. package/dist/editor/ai/types.d.ts +2 -0
  33. package/dist/editor/client/EditorShell.js +55 -10
  34. package/dist/editor/client/EditorShell.js.map +1 -1
  35. package/dist/editor/client/editContext.d.ts +2 -0
  36. package/dist/editor/client/editContext.js.map +1 -1
  37. package/dist/editor/client/ui/EditorChrome.d.ts +0 -2
  38. package/dist/editor/client/ui/EditorChrome.js +2 -13
  39. package/dist/editor/client/ui/EditorChrome.js.map +1 -1
  40. package/dist/editor/page-viewer/EditorForm.js +8 -1
  41. package/dist/editor/page-viewer/EditorForm.js.map +1 -1
  42. package/dist/editor/page-viewer/PageViewer.d.ts +3 -1
  43. package/dist/editor/page-viewer/PageViewer.js +23 -4
  44. package/dist/editor/page-viewer/PageViewer.js.map +1 -1
  45. package/dist/editor/page-viewer/PageViewerFrame.d.ts +2 -1
  46. package/dist/editor/page-viewer/PageViewerFrame.js +3 -4
  47. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  48. package/dist/editor/services/agentService.d.ts +27 -0
  49. package/dist/editor/services/agentService.js +11 -2
  50. package/dist/editor/services/agentService.js.map +1 -1
  51. package/dist/editor/services/aiService.js +54 -3
  52. package/dist/editor/services/aiService.js.map +1 -1
  53. package/dist/editor/services/serviceHelper.js +5 -2
  54. package/dist/editor/services/serviceHelper.js.map +1 -1
  55. package/dist/editor/settings/About.js +40 -4
  56. package/dist/editor/settings/About.js.map +1 -1
  57. package/dist/editor/settings/panels/PersistentLogsPanel.d.ts +2 -0
  58. package/dist/editor/settings/panels/PersistentLogsPanel.js +244 -0
  59. package/dist/editor/settings/panels/PersistentLogsPanel.js.map +1 -0
  60. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.d.ts +7 -1
  61. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js +3 -3
  62. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js.map +1 -1
  63. package/dist/editor/settings/panels/ProjectTemplatesPanel.js +165 -84
  64. package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
  65. package/dist/editor/settings/panels/index.d.ts +1 -0
  66. package/dist/editor/settings/panels/index.js +1 -0
  67. package/dist/editor/settings/panels/index.js.map +1 -1
  68. package/dist/editor/sidebar/ComponentTree.d.ts +8 -1
  69. package/dist/editor/sidebar/ComponentTree.js +23 -15
  70. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  71. package/dist/editor/sidebar/NavigationPanelItem.js +1 -1
  72. package/dist/editor/sidebar/NavigationPanelItem.js.map +1 -1
  73. package/dist/editor/sidebar/WorkspaceButton.js +1 -1
  74. package/dist/editor/sidebar/WorkspaceButton.js.map +1 -1
  75. package/dist/editor/tree-indicators/GutterColumns.js +24 -4
  76. package/dist/editor/tree-indicators/GutterColumns.js.map +1 -1
  77. package/dist/editor/tree-indicators/types.d.ts +10 -0
  78. package/dist/editor/ui/Splitter.d.ts +1 -0
  79. package/dist/editor/ui/Splitter.js +7 -1
  80. package/dist/editor/ui/Splitter.js.map +1 -1
  81. package/dist/editor/utils.js +16 -4
  82. package/dist/editor/utils.js.map +1 -1
  83. package/dist/editor/views/CompareView.d.ts +3 -1
  84. package/dist/editor/views/CompareView.js +3 -3
  85. package/dist/editor/views/CompareView.js.map +1 -1
  86. package/dist/editor/views/EditorSlot.js +7 -6
  87. package/dist/editor/views/EditorSlot.js.map +1 -1
  88. package/dist/editor/views/SingleEditView.d.ts +2 -1
  89. package/dist/editor/views/SingleEditView.js +8 -8
  90. package/dist/editor/views/SingleEditView.js.map +1 -1
  91. package/dist/licensing/LicenseContext.js +40 -4
  92. package/dist/licensing/LicenseContext.js.map +1 -1
  93. package/dist/licensing/LicenseOverlay.js +1 -1
  94. package/dist/licensing/LicenseOverlay.js.map +1 -1
  95. package/dist/licensing/types.d.ts +3 -1
  96. package/dist/licensing/types.js.map +1 -1
  97. package/dist/revision.d.ts +2 -2
  98. package/dist/revision.js +2 -2
  99. package/dist/task-board/TaskBoardWorkspace.js +165 -354
  100. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  101. package/dist/task-board/assigneeDisplay.js +1 -3
  102. package/dist/task-board/assigneeDisplay.js.map +1 -1
  103. package/dist/task-board/components/CreateProjectDialog.js +2 -1
  104. package/dist/task-board/components/CreateProjectDialog.js.map +1 -1
  105. package/dist/task-board/components/ProjectDashboard.js +2 -1
  106. package/dist/task-board/components/ProjectDashboard.js.map +1 -1
  107. package/dist/task-board/components/ProjectExecutionUserPicker.d.ts +14 -0
  108. package/dist/task-board/components/ProjectExecutionUserPicker.js +65 -0
  109. package/dist/task-board/components/ProjectExecutionUserPicker.js.map +1 -0
  110. package/dist/task-board/components/ProjectSettingsDialog.d.ts +1 -0
  111. package/dist/task-board/components/ProjectSettingsDialog.js +146 -12
  112. package/dist/task-board/components/ProjectSettingsDialog.js.map +1 -1
  113. package/dist/task-board/components/TaskAgentPanel.d.ts +1 -0
  114. package/dist/task-board/components/TaskAgentPanel.js +2 -2
  115. package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
  116. package/dist/task-board/components/TaskAssigneePicker.js +2 -2
  117. package/dist/task-board/components/TaskAssigneePicker.js.map +1 -1
  118. package/dist/task-board/components/TaskBoardMyTasksSidebar.js +1 -1
  119. package/dist/task-board/components/TaskBoardMyTasksSidebar.js.map +1 -1
  120. package/dist/task-board/components/TaskDetailDialog.d.ts +1 -0
  121. package/dist/task-board/components/TaskDetailDialog.js +2 -2
  122. package/dist/task-board/components/TaskDetailDialog.js.map +1 -1
  123. package/dist/task-board/components/TaskDetailPanel.d.ts +1 -0
  124. package/dist/task-board/components/TaskDetailPanel.js +23 -8
  125. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  126. package/dist/task-board/components/TaskRow.js +3 -2
  127. package/dist/task-board/components/TaskRow.js.map +1 -1
  128. package/dist/task-board/components/TaskboardPersistentLogPanel.d.ts +11 -0
  129. package/dist/task-board/components/TaskboardPersistentLogPanel.js +141 -0
  130. package/dist/task-board/components/TaskboardPersistentLogPanel.js.map +1 -0
  131. package/dist/task-board/components/WizardTaskDetailsPanel.js +2 -1
  132. package/dist/task-board/components/WizardTaskDetailsPanel.js.map +1 -1
  133. package/dist/task-board/persistentLogCopy.d.ts +7 -0
  134. package/dist/task-board/persistentLogCopy.js +80 -0
  135. package/dist/task-board/persistentLogCopy.js.map +1 -0
  136. package/dist/task-board/persistentLogLabels.d.ts +38 -0
  137. package/dist/task-board/persistentLogLabels.js +189 -0
  138. package/dist/task-board/persistentLogLabels.js.map +1 -0
  139. package/dist/task-board/services/taskService.d.ts +17 -1
  140. package/dist/task-board/services/taskService.js +56 -0
  141. package/dist/task-board/services/taskService.js.map +1 -1
  142. package/dist/task-board/taskExecutionRecords.js +2 -0
  143. package/dist/task-board/taskExecutionRecords.js.map +1 -1
  144. package/dist/task-board/types.d.ts +78 -1
  145. package/dist/task-board/useTaskBoardAgentPanelState.d.ts +34 -0
  146. package/dist/task-board/useTaskBoardAgentPanelState.js +283 -0
  147. package/dist/task-board/useTaskBoardAgentPanelState.js.map +1 -0
  148. package/dist/task-board/utils/taskDependencyOrdering.d.ts +6 -0
  149. package/dist/task-board/utils/taskDependencyOrdering.js +138 -1
  150. package/dist/task-board/utils/taskDependencyOrdering.js.map +1 -1
  151. package/dist/task-board/views/DependencyGraphView.d.ts +5 -2
  152. package/dist/task-board/views/DependencyGraphView.js +261 -69
  153. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  154. package/dist/task-board/views/KanbanView.js +8 -1
  155. package/dist/task-board/views/KanbanView.js.map +1 -1
  156. package/dist/task-board/views/ListView.js +1 -1
  157. package/dist/task-board/views/ListView.js.map +1 -1
  158. package/dist/task-board/views/WizardView.js +30 -24
  159. package/dist/task-board/views/WizardView.js.map +1 -1
  160. package/dist/tour/Tour.js +0 -32
  161. package/dist/tour/Tour.js.map +1 -1
  162. package/package.json +1 -1
@@ -0,0 +1,34 @@
1
+ import { type Dispatch, type SetStateAction } from "react";
2
+ import type { SelectOption } from "../components/ui/select";
3
+ import type { EditContextType } from "../editor/client/editContext";
4
+ import type { ItemDescriptor } from "../editor/pageModel";
5
+ import type { TaskAgentPanelMode } from "./components/TaskAgentPanel";
6
+ import type { TaskItem } from "./types";
7
+ type UseTaskBoardAgentPanelStateOptions = {
8
+ currentItemDescriptor: ItemDescriptor | undefined;
9
+ editContext: EditContextType | undefined;
10
+ isMobile: boolean;
11
+ mobileActiveTab: number;
12
+ selectedTask: TaskItem | null;
13
+ selectedTaskId: string | null;
14
+ setMobileActiveTab: Dispatch<SetStateAction<number>>;
15
+ showEditorPanel: boolean;
16
+ };
17
+ export declare function useTaskBoardAgentPanelState({ currentItemDescriptor, editContext, isMobile, mobileActiveTab, selectedTask, selectedTaskId, setMobileActiveTab, showEditorPanel, }: UseTaskBoardAgentPanelStateOptions): {
18
+ agentPanelMode: TaskAgentPanelMode;
19
+ canRunAssignedAgent: boolean;
20
+ contextItemOptions: SelectOption[];
21
+ displayAgentId: string | null;
22
+ handleSelectContextItem: (value: string) => void;
23
+ hasMultipleContextItems: boolean;
24
+ previewItemName: string;
25
+ previewItemPath: string;
26
+ previewItemVersion: number | null;
27
+ runAssignedAgentDisabledReason: string | undefined;
28
+ selectedContextItemValue: string;
29
+ selectedTaskHasAssignedAgentProfile: boolean;
30
+ selectedTaskIsBlocked: boolean;
31
+ selectedTaskIsPlan: boolean;
32
+ shouldHideAgentPanelForSelectedTask: boolean;
33
+ };
34
+ export {};
@@ -0,0 +1,283 @@
1
+ import { useCallback, useEffect, useMemo, useState, } from "react";
2
+ import { getAgent, } from "../editor/services/agentService";
3
+ import { getLinkedAgentId } from "./taskAgentLink";
4
+ import { normalizeTaskStatus } from "./taskStatus";
5
+ export function useTaskBoardAgentPanelState({ currentItemDescriptor, editContext, isMobile, mobileActiveTab, selectedTask, selectedTaskId, setMobileActiveTab, showEditorPanel, }) {
6
+ const [previewItemName, setPreviewItemName] = useState("");
7
+ const [previewItemPath, setPreviewItemPath] = useState("");
8
+ const [agentContextItems, setAgentContextItems] = useState([]);
9
+ const [contextItemNamesByKey, setContextItemNamesByKey] = useState({});
10
+ const [contextItemPathsByKey, setContextItemPathsByKey] = useState({});
11
+ const selectedTaskIsPlan = useMemo(() => {
12
+ const taskType = String(selectedTask?.taskType ?? "").toLowerCase();
13
+ return taskType === "plan" || selectedTask?.title === "Project Plan";
14
+ }, [selectedTask]);
15
+ const selectedTaskIsBlocked = useMemo(() => {
16
+ if (!selectedTask)
17
+ return false;
18
+ if ((selectedTask.executionBlockedByProjectIds?.length ?? 0) > 0)
19
+ return true;
20
+ return selectedTask.executionState === "WaitingForDependency";
21
+ }, [selectedTask]);
22
+ const selectedTaskHasAssignedAgentProfile = useMemo(() => {
23
+ if (!selectedTask)
24
+ return false;
25
+ return selectedTask.assigneeType === "Agent" && !!selectedTask.assigneeId;
26
+ }, [selectedTask]);
27
+ const canRunAssignedAgent = useMemo(() => {
28
+ return !selectedTaskIsBlocked;
29
+ }, [selectedTaskIsBlocked]);
30
+ const runAssignedAgentDisabledReason = useMemo(() => {
31
+ if (selectedTaskIsBlocked) {
32
+ return "This task is blocked by unfinished dependencies.";
33
+ }
34
+ return undefined;
35
+ }, [selectedTaskIsBlocked]);
36
+ const currentAgentId = useMemo(() => {
37
+ return getLinkedAgentId(selectedTask);
38
+ }, [selectedTask]);
39
+ const selectedTaskStatus = useMemo(() => {
40
+ if (!selectedTask)
41
+ return null;
42
+ return normalizeTaskStatus(selectedTask.status, selectedTask.executionState);
43
+ }, [selectedTask]);
44
+ const selectedTaskHasResultData = useMemo(() => {
45
+ return !!selectedTask?.resultData?.trim();
46
+ }, [selectedTask?.resultData]);
47
+ const shouldHideAgentPanelForSelectedTask = useMemo(() => {
48
+ return (!!selectedTask &&
49
+ selectedTaskIsPlan &&
50
+ selectedTaskStatus === "Done" &&
51
+ selectedTaskHasResultData);
52
+ }, [
53
+ selectedTask,
54
+ selectedTaskIsPlan,
55
+ selectedTaskStatus,
56
+ selectedTaskHasResultData,
57
+ ]);
58
+ const displayAgentId = useMemo(() => {
59
+ return currentAgentId;
60
+ }, [currentAgentId]);
61
+ useEffect(() => {
62
+ if (isMobile && selectedTaskId) {
63
+ setMobileActiveTab(1);
64
+ }
65
+ }, [selectedTaskId, isMobile, setMobileActiveTab]);
66
+ useEffect(() => {
67
+ if (isMobile && displayAgentId && !shouldHideAgentPanelForSelectedTask) {
68
+ setMobileActiveTab(2);
69
+ }
70
+ }, [
71
+ displayAgentId,
72
+ isMobile,
73
+ setMobileActiveTab,
74
+ shouldHideAgentPanelForSelectedTask,
75
+ ]);
76
+ useEffect(() => {
77
+ if (!isMobile)
78
+ return;
79
+ if (!shouldHideAgentPanelForSelectedTask)
80
+ return;
81
+ if (mobileActiveTab !== 2)
82
+ return;
83
+ setMobileActiveTab(1);
84
+ }, [
85
+ isMobile,
86
+ mobileActiveTab,
87
+ setMobileActiveTab,
88
+ shouldHideAgentPanelForSelectedTask,
89
+ ]);
90
+ useEffect(() => {
91
+ if (!showEditorPanel && mobileActiveTab === 3) {
92
+ setMobileActiveTab(0);
93
+ }
94
+ }, [mobileActiveTab, setMobileActiveTab, showEditorPanel]);
95
+ const currentItemKey = useMemo(() => {
96
+ if (!currentItemDescriptor)
97
+ return "";
98
+ return `${currentItemDescriptor.id}|${currentItemDescriptor.language}|${currentItemDescriptor.version}`;
99
+ }, [currentItemDescriptor]);
100
+ const agentPanelMode = useMemo(() => {
101
+ if (!selectedTask)
102
+ return "no-task-selected";
103
+ if (displayAgentId)
104
+ return "agent";
105
+ return "no-agent";
106
+ }, [displayAgentId, selectedTask]);
107
+ const previewItemVersion = useMemo(() => {
108
+ if (!currentItemDescriptor)
109
+ return null;
110
+ return currentItemDescriptor.version === 0
111
+ ? (editContext?.item?.version ?? null)
112
+ : currentItemDescriptor.version;
113
+ }, [currentItemDescriptor, editContext?.item?.version]);
114
+ const contextItemOptions = useMemo(() => {
115
+ return agentContextItems.map((contextItem) => {
116
+ const key = `${contextItem.id}|${contextItem.language}|${contextItem.version}`;
117
+ const name = contextItemNamesByKey[key] || contextItem.name || contextItem.id;
118
+ const path = contextItemPathsByKey[key] || contextItem.path || "";
119
+ return {
120
+ value: key,
121
+ label: name,
122
+ description: `${path || contextItem.id} (${contextItem.language}/v${contextItem.version})`,
123
+ };
124
+ });
125
+ }, [agentContextItems, contextItemNamesByKey, contextItemPathsByKey]);
126
+ const selectedContextItemValue = useMemo(() => {
127
+ if (currentItemKey)
128
+ return currentItemKey;
129
+ const first = agentContextItems[0];
130
+ if (!first)
131
+ return "";
132
+ return `${first.id}|${first.language}|${first.version}`;
133
+ }, [currentItemKey, agentContextItems]);
134
+ const hasMultipleContextItems = contextItemOptions.length > 1;
135
+ useEffect(() => {
136
+ if (!currentAgentId) {
137
+ setAgentContextItems([]);
138
+ return;
139
+ }
140
+ let cancelled = false;
141
+ getAgent(currentAgentId)
142
+ .then((agent) => {
143
+ if (cancelled)
144
+ return;
145
+ const rawContext = agent?.agentContext;
146
+ if (!rawContext) {
147
+ setAgentContextItems([]);
148
+ return;
149
+ }
150
+ let parsed = null;
151
+ try {
152
+ parsed = JSON.parse(rawContext);
153
+ }
154
+ catch {
155
+ parsed = null;
156
+ }
157
+ const items = (parsed?.items || []).filter((item) => !!item?.id &&
158
+ !!item?.language &&
159
+ typeof item?.version === "number");
160
+ setAgentContextItems(items);
161
+ })
162
+ .catch(() => {
163
+ if (cancelled)
164
+ return;
165
+ setAgentContextItems([]);
166
+ });
167
+ return () => {
168
+ cancelled = true;
169
+ };
170
+ }, [currentAgentId]);
171
+ useEffect(() => {
172
+ if (!editContext || agentContextItems.length === 0) {
173
+ setContextItemNamesByKey({});
174
+ setContextItemPathsByKey({});
175
+ return;
176
+ }
177
+ let cancelled = false;
178
+ Promise.all(agentContextItems.map(async (contextItem) => {
179
+ const key = `${contextItem.id}|${contextItem.language}|${contextItem.version}`;
180
+ const descriptor = {
181
+ id: contextItem.id,
182
+ language: contextItem.language,
183
+ version: contextItem.version,
184
+ };
185
+ const item = await editContext.itemsRepository.getItem(descriptor);
186
+ return {
187
+ key,
188
+ name: item?.name || contextItem.name || "",
189
+ path: item?.path || contextItem.path || "",
190
+ };
191
+ }))
192
+ .then((results) => {
193
+ if (cancelled)
194
+ return;
195
+ const nextNames = {};
196
+ const nextPaths = {};
197
+ for (const result of results) {
198
+ nextNames[result.key] = result.name;
199
+ nextPaths[result.key] = result.path;
200
+ }
201
+ setContextItemNamesByKey(nextNames);
202
+ setContextItemPathsByKey(nextPaths);
203
+ })
204
+ .catch(() => {
205
+ if (cancelled)
206
+ return;
207
+ setContextItemNamesByKey({});
208
+ setContextItemPathsByKey({});
209
+ });
210
+ return () => {
211
+ cancelled = true;
212
+ };
213
+ }, [editContext, agentContextItems]);
214
+ const handleSelectContextItem = useCallback((value) => {
215
+ const [id, language, versionText] = value.split("|");
216
+ const version = Number(versionText);
217
+ if (!id || !language || Number.isNaN(version) || !editContext?.loadItem) {
218
+ return;
219
+ }
220
+ void editContext.loadItem({ id, language, version });
221
+ }, [editContext]);
222
+ useEffect(() => {
223
+ if (!editContext || !currentItemDescriptor) {
224
+ setPreviewItemName("");
225
+ setPreviewItemPath("");
226
+ return;
227
+ }
228
+ const activeItem = editContext.item;
229
+ const itemMatchesDescriptor = activeItem?.id === currentItemDescriptor.id &&
230
+ activeItem?.language === currentItemDescriptor.language;
231
+ if (itemMatchesDescriptor) {
232
+ setPreviewItemName(activeItem?.name || "");
233
+ setPreviewItemPath(activeItem?.path || "");
234
+ return;
235
+ }
236
+ let cancelled = false;
237
+ editContext.itemsRepository
238
+ .getItem(currentItemDescriptor)
239
+ .then((item) => {
240
+ if (cancelled)
241
+ return;
242
+ setPreviewItemName(item?.name || "");
243
+ setPreviewItemPath(item?.path || "");
244
+ })
245
+ .catch(() => {
246
+ if (cancelled)
247
+ return;
248
+ setPreviewItemName("");
249
+ setPreviewItemPath("");
250
+ });
251
+ return () => {
252
+ cancelled = true;
253
+ };
254
+ }, [
255
+ currentItemDescriptor,
256
+ currentItemDescriptor?.id,
257
+ currentItemDescriptor?.language,
258
+ currentItemDescriptor?.version,
259
+ editContext,
260
+ editContext?.item?.id,
261
+ editContext?.item?.language,
262
+ editContext?.item?.name,
263
+ editContext?.item?.path,
264
+ ]);
265
+ return {
266
+ agentPanelMode,
267
+ canRunAssignedAgent,
268
+ contextItemOptions,
269
+ displayAgentId,
270
+ handleSelectContextItem,
271
+ hasMultipleContextItems,
272
+ previewItemName,
273
+ previewItemPath,
274
+ previewItemVersion,
275
+ runAssignedAgentDisabledReason,
276
+ selectedContextItemValue,
277
+ selectedTaskHasAssignedAgentProfile,
278
+ selectedTaskIsBlocked,
279
+ selectedTaskIsPlan,
280
+ shouldHideAgentPanelForSelectedTask,
281
+ };
282
+ }
283
+ //# sourceMappingURL=useTaskBoardAgentPanelState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTaskBoardAgentPanelState.js","sourceRoot":"","sources":["../../src/task-board/useTaskBoardAgentPanelState.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,9 @@
1
1
  import type { TaskDependency, TaskItem } from "../types";
2
2
  export declare function compareWizardTasks(a: TaskItem, b: TaskItem): number;
3
+ type OrderedTaskHierarchyEntry = {
4
+ task: TaskItem;
5
+ depth: number;
6
+ };
7
+ export declare function orderTasksByBlockedDependenciesWithDepth(tasks: readonly TaskItem[], dependencies: readonly TaskDependency[]): OrderedTaskHierarchyEntry[];
3
8
  export declare function orderTasksByBlockedDependencies(tasks: readonly TaskItem[], dependencies: readonly TaskDependency[]): TaskItem[];
9
+ export {};
@@ -3,7 +3,7 @@ export function compareWizardTasks(a, b) {
3
3
  return a.sortOrder - b.sortOrder;
4
4
  return a.createdAt.localeCompare(b.createdAt);
5
5
  }
6
- export function orderTasksByBlockedDependencies(tasks, dependencies) {
6
+ function buildBaseDependencyOrder(tasks, dependencies) {
7
7
  const baseOrder = [...tasks].sort(compareWizardTasks);
8
8
  if (baseOrder.length <= 1) {
9
9
  return baseOrder;
@@ -61,4 +61,141 @@ export function orderTasksByBlockedDependencies(tasks, dependencies) {
61
61
  ...baseOrder.filter((task) => !orderedTaskIds.has(task.taskId)),
62
62
  ];
63
63
  }
64
+ export function orderTasksByBlockedDependenciesWithDepth(tasks, dependencies) {
65
+ const baseOrder = buildBaseDependencyOrder(tasks, dependencies);
66
+ if (baseOrder.length === 0) {
67
+ return [];
68
+ }
69
+ const taskIds = new Set(baseOrder.map((task) => task.taskId));
70
+ const baseIndexByTaskId = new Map(baseOrder.map((task, index) => [task.taskId, index]));
71
+ const childrenByParentId = new Map();
72
+ for (const task of baseOrder) {
73
+ const parentTaskId = task.parentTaskId &&
74
+ task.parentTaskId !== task.taskId &&
75
+ taskIds.has(task.parentTaskId)
76
+ ? task.parentTaskId
77
+ : null;
78
+ const siblings = childrenByParentId.get(parentTaskId) ?? [];
79
+ siblings.push(task);
80
+ childrenByParentId.set(parentTaskId, siblings);
81
+ }
82
+ const blockedDependencies = dependencies.filter((dependency) => dependency.dependencyType === "BlockedBy" &&
83
+ dependency.taskId !== dependency.dependsOnTaskId &&
84
+ taskIds.has(dependency.taskId) &&
85
+ taskIds.has(dependency.dependsOnTaskId));
86
+ const subtreeTaskIdsCache = new Map();
87
+ const subtreeTaskIdsInProgress = new Set();
88
+ const getSubtreeTaskIds = (taskId) => {
89
+ const cached = subtreeTaskIdsCache.get(taskId);
90
+ if (cached) {
91
+ return cached;
92
+ }
93
+ if (subtreeTaskIdsInProgress.has(taskId)) {
94
+ return new Set([taskId]);
95
+ }
96
+ subtreeTaskIdsInProgress.add(taskId);
97
+ const subtreeTaskIds = new Set([taskId]);
98
+ for (const child of childrenByParentId.get(taskId) ?? []) {
99
+ for (const childTaskId of getSubtreeTaskIds(child.taskId)) {
100
+ subtreeTaskIds.add(childTaskId);
101
+ }
102
+ }
103
+ subtreeTaskIdsInProgress.delete(taskId);
104
+ subtreeTaskIdsCache.set(taskId, subtreeTaskIds);
105
+ return subtreeTaskIds;
106
+ };
107
+ const compareByBaseOrder = (a, b) => (baseIndexByTaskId.get(a) ?? Number.MAX_SAFE_INTEGER) -
108
+ (baseIndexByTaskId.get(b) ?? Number.MAX_SAFE_INTEGER);
109
+ const orderSiblingBranches = (parentTaskId) => {
110
+ const siblings = childrenByParentId.get(parentTaskId) ?? [];
111
+ if (siblings.length <= 1) {
112
+ return siblings;
113
+ }
114
+ const siblingIds = new Set(siblings.map((task) => task.taskId));
115
+ const branchOwnerByTaskId = new Map();
116
+ for (const sibling of siblings) {
117
+ for (const subtreeTaskId of getSubtreeTaskIds(sibling.taskId)) {
118
+ branchOwnerByTaskId.set(subtreeTaskId, sibling.taskId);
119
+ }
120
+ }
121
+ const inDegree = new Map();
122
+ const outgoing = new Map();
123
+ const seenEdges = new Set();
124
+ for (const sibling of siblings) {
125
+ inDegree.set(sibling.taskId, 0);
126
+ outgoing.set(sibling.taskId, []);
127
+ }
128
+ for (const dependency of blockedDependencies) {
129
+ const blockedBranchId = branchOwnerByTaskId.get(dependency.taskId);
130
+ const blockerBranchId = branchOwnerByTaskId.get(dependency.dependsOnTaskId);
131
+ if (!blockedBranchId ||
132
+ !blockerBranchId ||
133
+ blockedBranchId === blockerBranchId ||
134
+ !siblingIds.has(blockedBranchId) ||
135
+ !siblingIds.has(blockerBranchId)) {
136
+ continue;
137
+ }
138
+ const edgeKey = `${blockerBranchId}->${blockedBranchId}`;
139
+ if (seenEdges.has(edgeKey))
140
+ continue;
141
+ seenEdges.add(edgeKey);
142
+ outgoing.get(blockerBranchId)?.push(blockedBranchId);
143
+ inDegree.set(blockedBranchId, (inDegree.get(blockedBranchId) ?? 0) + 1);
144
+ }
145
+ const ready = siblings
146
+ .filter((task) => (inDegree.get(task.taskId) ?? 0) === 0)
147
+ .map((task) => task.taskId);
148
+ const orderedBranchIds = [];
149
+ while (ready.length > 0) {
150
+ ready.sort(compareByBaseOrder);
151
+ const nextBranchId = ready.shift();
152
+ if (!nextBranchId)
153
+ break;
154
+ orderedBranchIds.push(nextBranchId);
155
+ for (const dependentBranchId of outgoing.get(nextBranchId) ?? []) {
156
+ const nextInDegree = (inDegree.get(dependentBranchId) ?? 0) - 1;
157
+ inDegree.set(dependentBranchId, nextInDegree);
158
+ if (nextInDegree === 0) {
159
+ ready.push(dependentBranchId);
160
+ }
161
+ }
162
+ }
163
+ if (orderedBranchIds.length !== siblings.length) {
164
+ return [...siblings].sort((a, b) => compareByBaseOrder(a.taskId, b.taskId));
165
+ }
166
+ const siblingById = new Map(siblings.map((task) => [task.taskId, task]));
167
+ return orderedBranchIds
168
+ .map((taskId) => siblingById.get(taskId))
169
+ .filter((task) => !!task);
170
+ };
171
+ const orderedEntries = [];
172
+ const seenTaskIds = new Set();
173
+ const appendBranch = (task, depth, lineage) => {
174
+ if (seenTaskIds.has(task.taskId)) {
175
+ return;
176
+ }
177
+ seenTaskIds.add(task.taskId);
178
+ orderedEntries.push({ task, depth });
179
+ if (lineage.has(task.taskId)) {
180
+ return;
181
+ }
182
+ const nextLineage = new Set(lineage);
183
+ nextLineage.add(task.taskId);
184
+ for (const child of orderSiblingBranches(task.taskId)) {
185
+ appendBranch(child, depth + 1, nextLineage);
186
+ }
187
+ };
188
+ for (const rootTask of orderSiblingBranches(null)) {
189
+ appendBranch(rootTask, 0, new Set());
190
+ }
191
+ for (const task of baseOrder) {
192
+ if (!seenTaskIds.has(task.taskId)) {
193
+ appendBranch(task, 0, new Set());
194
+ }
195
+ }
196
+ return orderedEntries;
197
+ }
198
+ export function orderTasksByBlockedDependencies(tasks, dependencies) {
199
+ return orderTasksByBlockedDependenciesWithDepth(tasks, dependencies).map(({ task }) => task);
200
+ }
64
201
  //# sourceMappingURL=taskDependencyOrdering.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taskDependencyOrdering.js","sourceRoot":"","sources":["../../../src/task-board/utils/taskDependencyOrdering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taskDependencyOrdering.js","sourceRoot":"","sources":["../../../src/task-board/utils/taskDependencyOrdering.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import "@xyflow/react/dist/style.css";
2
- import type { GraphLayoutSnapshot, TaskDependency, TaskItem, ProjectPermission } from "../types";
2
+ import type { GraphOrientation, GraphLayoutSnapshot, TaskDependency, TaskItem, ProjectPermission } from "../types";
3
3
  export declare function DependencyGraphView(props: {
4
4
  projectId?: string;
5
5
  layoutKey?: string;
@@ -19,8 +19,9 @@ export declare function DependencyGraphView(props: {
19
19
  showExecutionStateBadges?: boolean;
20
20
  emptyStateTitle?: string;
21
21
  emptyStateDescription?: string;
22
- orientation?: "vertical" | "horizontal";
22
+ orientation?: GraphOrientation;
23
23
  autoLayoutStrategy?: "allEdges" | "hierarchy";
24
+ showOrientationToggle?: boolean;
24
25
  /** Debounce before persisting layout (API or parent callback). Use 0 for immediate sync (e.g. project template draft). */
25
26
  layoutSaveDebounceMs?: number;
26
27
  /** When set, shows a create-dependent-task action near the right handle of each node. */
@@ -39,4 +40,6 @@ export declare function DependencyGraphView(props: {
39
40
  miniMapWidth?: number;
40
41
  /** MiniMap (overview) height in px. */
41
42
  miniMapHeight?: number;
43
+ /** When false, the overview minimap is not rendered (e.g. narrow mobile layouts). */
44
+ showMiniMap?: boolean;
42
45
  }): import("react/jsx-runtime").JSX.Element;