@parhelia/core 0.3.12815 → 0.3.12818
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents-view/AgentsView.js +10 -11
- package/dist/agents-view/AgentsView.js.map +1 -1
- package/dist/components/ui/LanguageSelector.js +12 -1
- package/dist/components/ui/LanguageSelector.js.map +1 -1
- package/dist/config/config.js +11 -1
- package/dist/config/config.js.map +1 -1
- package/dist/editor/ContentTree.d.ts +1 -1
- package/dist/editor/ContentTree.js +31 -4
- package/dist/editor/ContentTree.js.map +1 -1
- package/dist/editor/FieldListFieldWithFallbacks.js +1 -1
- package/dist/editor/FieldListFieldWithFallbacks.js.map +1 -1
- package/dist/editor/LinkEditorDialog.js +1 -5
- package/dist/editor/LinkEditorDialog.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentStopCommand.js +16 -14
- package/dist/editor/ai/terminal/useAgentStopCommand.js.map +1 -1
- package/dist/editor/ai-image-editor/AiImageEditorDialog.js +57 -39
- package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
- package/dist/editor/client/EditorShell.js +1 -0
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/editContext.d.ts +6 -0
- package/dist/editor/client/editContext.js.map +1 -1
- package/dist/editor/client/itemsRepository.d.ts +2 -0
- package/dist/editor/client/itemsRepository.js +64 -0
- package/dist/editor/client/itemsRepository.js.map +1 -1
- package/dist/editor/client/operations.js +60 -8
- package/dist/editor/client/operations.js.map +1 -1
- package/dist/editor/commands/deleteVersionCommand.js +1 -0
- package/dist/editor/commands/deleteVersionCommand.js.map +1 -1
- package/dist/editor/field-types/richtext/components/ReactSlate.js +48 -3
- package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
- package/dist/editor/media-selector/Thumbnails.js +23 -10
- package/dist/editor/media-selector/Thumbnails.js.map +1 -1
- package/dist/editor/media-selector/TreeSelector.js +39 -20
- package/dist/editor/media-selector/TreeSelector.js.map +1 -1
- package/dist/editor/media-selector/mediaItemDrag.d.ts +22 -5
- package/dist/editor/media-selector/mediaItemDrag.js +108 -10
- package/dist/editor/media-selector/mediaItemDrag.js.map +1 -1
- package/dist/editor/menubar/PageSelector.js +2 -8
- package/dist/editor/menubar/PageSelector.js.map +1 -1
- package/dist/editor/menubar/pageSelectorHistoryFilter.d.ts +9 -0
- package/dist/editor/menubar/pageSelectorHistoryFilter.js +40 -6
- package/dist/editor/menubar/pageSelectorHistoryFilter.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +17 -6
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/page-viewer/internalLinkNavigation.d.ts +2 -0
- package/dist/editor/page-viewer/internalLinkNavigation.js +10 -0
- package/dist/editor/page-viewer/internalLinkNavigation.js.map +1 -1
- package/dist/editor/reviews/ReviewersPanel.js +1 -1
- package/dist/editor/reviews/ReviewersPanel.js.map +1 -1
- package/dist/editor/services/aiService.d.ts +20 -0
- package/dist/editor/services/aiService.js +12 -0
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/settings/UsageLeaderboard.d.ts +2 -0
- package/dist/editor/settings/UsageLeaderboard.js +108 -0
- package/dist/editor/settings/UsageLeaderboard.js.map +1 -0
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js +45 -1
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
- package/dist/editor/setup-wizard/steps/CompleteStep.js +2 -2
- package/dist/editor/setup-wizard/steps/CompleteStep.js.map +1 -1
- package/dist/editor/setup-wizard/steps/ModelSelectionStep.d.ts +1 -1
- package/dist/editor/setup-wizard/steps/ModelSelectionStep.js +6 -6
- package/dist/editor/setup-wizard/steps/ModelSelectionStep.js.map +1 -1
- package/dist/editor/setup-wizard/steps/ProviderStep.js +7 -7
- package/dist/editor/setup-wizard/steps/ProviderStep.js.map +1 -1
- package/dist/editor/sidebar/ComponentPalette.js +15 -11
- package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
- package/dist/editor/template-wizard/TemplateBuilderDialog.js +6 -2
- package/dist/editor/template-wizard/TemplateBuilderDialog.js.map +1 -1
- package/dist/editor/template-wizard/TemplateStructureInlineEditor.js +6 -6
- package/dist/editor/template-wizard/TemplateStructureInlineEditor.js.map +1 -1
- package/dist/editor/ui/ItemSearch.d.ts +1 -1
- package/dist/editor/ui/ItemSearch.js +4 -0
- package/dist/editor/ui/ItemSearch.js.map +1 -1
- package/dist/editor/ui/PerfectTree.d.ts +3 -1
- package/dist/editor/ui/PerfectTree.js +8 -7
- package/dist/editor/ui/PerfectTree.js.map +1 -1
- package/dist/licensing/LicenseContext.js +14 -7
- package/dist/licensing/LicenseContext.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/task-board/TaskBoardWorkspace.js +186 -7
- package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
- package/dist/task-board/components/CreateTaskDialog.d.ts +2 -0
- package/dist/task-board/components/CreateTaskDialog.js +6 -3
- package/dist/task-board/components/CreateTaskDialog.js.map +1 -1
- package/dist/task-board/components/GoalCoverageBar.d.ts +4 -0
- package/dist/task-board/components/GoalCoverageBar.js +22 -0
- package/dist/task-board/components/GoalCoverageBar.js.map +1 -0
- package/dist/task-board/components/GoalDataView.d.ts +39 -0
- package/dist/task-board/components/GoalDataView.js +385 -0
- package/dist/task-board/components/GoalDataView.js.map +1 -0
- package/dist/task-board/components/GoalsMatrix.d.ts +16 -0
- package/dist/task-board/components/GoalsMatrix.js +129 -0
- package/dist/task-board/components/GoalsMatrix.js.map +1 -0
- package/dist/task-board/components/ProjectDashboard.d.ts +1 -1
- package/dist/task-board/components/ProjectGoalsPanel.d.ts +16 -0
- package/dist/task-board/components/ProjectGoalsPanel.js +74 -113
- package/dist/task-board/components/ProjectGoalsPanel.js.map +1 -1
- package/dist/task-board/components/SubgoalStatusIcon.d.ts +4 -0
- package/dist/task-board/components/SubgoalStatusIcon.js +19 -0
- package/dist/task-board/components/SubgoalStatusIcon.js.map +1 -0
- package/dist/task-board/components/goalDisplaySpec.d.ts +19 -0
- package/dist/task-board/components/goalDisplaySpec.js +72 -0
- package/dist/task-board/components/goalDisplaySpec.js.map +1 -0
- package/dist/task-board/goalRefreshState.d.ts +6 -0
- package/dist/task-board/goalRefreshState.js +11 -0
- package/dist/task-board/goalRefreshState.js.map +1 -0
- package/dist/task-board/goalTaskNavigationState.d.ts +43 -0
- package/dist/task-board/goalTaskNavigationState.js +65 -0
- package/dist/task-board/goalTaskNavigationState.js.map +1 -0
- package/dist/task-board/types.d.ts +7 -0
- package/dist/task-board/views/DependencyGraphView.d.ts +42 -4
- package/dist/task-board/views/DependencyGraphView.js +467 -95
- package/dist/task-board/views/DependencyGraphView.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export const initialGoalTaskNavigationState = {
|
|
2
|
+
pending: null,
|
|
3
|
+
outcome: { kind: "none" },
|
|
4
|
+
};
|
|
5
|
+
function sameId(left, right) {
|
|
6
|
+
return left?.toLowerCase() === right.toLowerCase();
|
|
7
|
+
}
|
|
8
|
+
export function reduceGoalTaskNavigation(state, action) {
|
|
9
|
+
switch (action.type) {
|
|
10
|
+
case "request": {
|
|
11
|
+
const isCurrentProject = sameId(action.currentProjectId, action.projectId);
|
|
12
|
+
const existingTask = isCurrentProject
|
|
13
|
+
? action.currentTaskIds.find((taskId) => sameId(taskId, action.taskId))
|
|
14
|
+
: undefined;
|
|
15
|
+
if (existingTask) {
|
|
16
|
+
return {
|
|
17
|
+
pending: null,
|
|
18
|
+
outcome: { kind: "select", taskId: existingTask },
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if (isCurrentProject &&
|
|
22
|
+
action.inFlightGeneration === undefined &&
|
|
23
|
+
action.latestIssuedGeneration > 0) {
|
|
24
|
+
return { pending: null, outcome: { kind: "missing" } };
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
pending: {
|
|
28
|
+
projectId: action.projectId,
|
|
29
|
+
taskId: action.taskId,
|
|
30
|
+
requiredGeneration: action.inFlightGeneration ?? action.latestIssuedGeneration + 1,
|
|
31
|
+
},
|
|
32
|
+
outcome: {
|
|
33
|
+
kind: "load",
|
|
34
|
+
projectId: action.projectId,
|
|
35
|
+
switchProject: !isCurrentProject,
|
|
36
|
+
refresh: isCurrentProject && action.inFlightGeneration === undefined,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
case "projectSelected":
|
|
41
|
+
return {
|
|
42
|
+
pending: state.pending && sameId(action.projectId, state.pending.projectId)
|
|
43
|
+
? state.pending
|
|
44
|
+
: null,
|
|
45
|
+
outcome: { kind: "none" },
|
|
46
|
+
};
|
|
47
|
+
case "tasksLoaded": {
|
|
48
|
+
if (!state.pending ||
|
|
49
|
+
!sameId(action.projectId, state.pending.projectId) ||
|
|
50
|
+
action.generation < state.pending.requiredGeneration) {
|
|
51
|
+
return { ...state, outcome: { kind: "none" } };
|
|
52
|
+
}
|
|
53
|
+
const matchedTask = action.taskIds.find((taskId) => sameId(taskId, state.pending.taskId));
|
|
54
|
+
return {
|
|
55
|
+
pending: null,
|
|
56
|
+
outcome: matchedTask
|
|
57
|
+
? { kind: "select", taskId: matchedTask }
|
|
58
|
+
: { kind: "missing" },
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
case "cancel":
|
|
62
|
+
return initialGoalTaskNavigationState;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=goalTaskNavigationState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goalTaskNavigationState.js","sourceRoot":"","sources":["../../src/task-board/goalTaskNavigationState.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,6 +65,9 @@ export type GoalData = unknown;
|
|
|
65
65
|
export type GoalCoverage = {
|
|
66
66
|
total: number;
|
|
67
67
|
done: number;
|
|
68
|
+
inProgress: number;
|
|
69
|
+
failed: number;
|
|
70
|
+
pending: number;
|
|
68
71
|
skipped: number;
|
|
69
72
|
hasMeasurableSubgoals: boolean;
|
|
70
73
|
percent?: number | null;
|
|
@@ -115,12 +118,15 @@ export type GoalDefinition = {
|
|
|
115
118
|
sortOrder?: number;
|
|
116
119
|
defaultScopeJson?: string | null;
|
|
117
120
|
dataShape?: string | null;
|
|
121
|
+
displaySpec?: string | null;
|
|
118
122
|
};
|
|
119
123
|
export type ProjectGoalsResponse = {
|
|
120
124
|
projectId: string;
|
|
121
125
|
includeDescendants: boolean;
|
|
122
126
|
goals: Goal[];
|
|
123
127
|
catalog: GoalDefinition[];
|
|
128
|
+
/** Raw Display Spec JSON keyed by source goal-definition id, including disabled definitions. */
|
|
129
|
+
displaySpecs?: Record<string, string>;
|
|
124
130
|
/** Effective permission per project id in scope (row-by-row edit gating). */
|
|
125
131
|
permissions: Record<string, ProjectPermission | string>;
|
|
126
132
|
};
|
|
@@ -215,6 +221,7 @@ export type TaskItem = {
|
|
|
215
221
|
parentTaskId?: string | null;
|
|
216
222
|
taskType?: TaskType | string | null;
|
|
217
223
|
sourceTaskTemplateId?: string | null;
|
|
224
|
+
batchId?: string | null;
|
|
218
225
|
decisionData?: string | null;
|
|
219
226
|
title: string;
|
|
220
227
|
description?: string | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Edge, type Node } from "@xyflow/react";
|
|
1
|
+
import { type Edge, type Node, type NodeProps } from "@xyflow/react";
|
|
2
2
|
import "@xyflow/react/dist/style.css";
|
|
3
3
|
import type { GraphOrientation, GraphLayoutSnapshot, TaskDependency, TaskItem, TaskStatus, TaskPriority, TaskExecutionState, ProjectPermission, TaskAssigneeType } from "../types";
|
|
4
4
|
type TaskNodeData = {
|
|
@@ -25,19 +25,57 @@ type TaskNodeData = {
|
|
|
25
25
|
/** When set (e.g. project template editor), shows a remove control on each node. */
|
|
26
26
|
onRemoveTask?: (taskId: string) => void;
|
|
27
27
|
};
|
|
28
|
+
type TaskGroupStatusCounts = {
|
|
29
|
+
done: number;
|
|
30
|
+
inProgress: number;
|
|
31
|
+
needsAttention: number;
|
|
32
|
+
todo: number;
|
|
33
|
+
};
|
|
34
|
+
type TaskGroupMember = {
|
|
35
|
+
taskId: string;
|
|
36
|
+
taskKey: string | null;
|
|
37
|
+
title: string;
|
|
38
|
+
status: TaskStatus;
|
|
39
|
+
executionState: TaskExecutionState | null | undefined;
|
|
40
|
+
isBlocked: boolean;
|
|
41
|
+
isOutlier: boolean;
|
|
42
|
+
};
|
|
43
|
+
type TaskGroupNodeData = {
|
|
44
|
+
groupId: string;
|
|
45
|
+
parentTaskId: string;
|
|
46
|
+
batchId: string;
|
|
47
|
+
label: string;
|
|
48
|
+
memberCount: number;
|
|
49
|
+
statusCounts: TaskGroupStatusCounts;
|
|
50
|
+
members: TaskGroupMember[];
|
|
51
|
+
status: TaskStatus;
|
|
52
|
+
isBlocked: boolean;
|
|
53
|
+
orientation: GraphOrientation;
|
|
54
|
+
dependencySourceHandle: "right" | "bottom";
|
|
55
|
+
hierarchySourceHandle: "right" | "bottom";
|
|
56
|
+
onSelect: (taskId: string) => void;
|
|
57
|
+
};
|
|
58
|
+
type TaskGraphNode = Node<TaskNodeData, "taskNode">;
|
|
59
|
+
type TaskGroupGraphNode = Node<TaskGroupNodeData, "taskGroupNode">;
|
|
60
|
+
type DependencyGraphNode = TaskGraphNode | TaskGroupGraphNode;
|
|
28
61
|
type TaskGraphEdgeData = {
|
|
29
62
|
relationship: "dependency" | "hierarchy";
|
|
30
63
|
taskId?: string;
|
|
31
64
|
dependsOnTaskId?: string;
|
|
65
|
+
dependencyType?: string;
|
|
66
|
+
count?: number;
|
|
32
67
|
};
|
|
33
68
|
type TaskGraphEdge = Edge<TaskGraphEdgeData>;
|
|
69
|
+
declare function TaskGraphNode({ data }: NodeProps<TaskGraphNode>): import("react").JSX.Element;
|
|
70
|
+
declare function TaskGroupGraphNode({ data }: NodeProps<TaskGroupGraphNode>): import("react").JSX.Element;
|
|
34
71
|
export declare function buildDependencyGraphLayout(args: {
|
|
35
72
|
tasks: TaskItem[];
|
|
36
73
|
dependencies: TaskDependency[];
|
|
74
|
+
selectedTaskId?: string | null;
|
|
37
75
|
orientation?: GraphOrientation;
|
|
38
76
|
autoLayoutStrategy?: "allEdges" | "hierarchy";
|
|
39
77
|
}): {
|
|
40
|
-
nodes:
|
|
78
|
+
nodes: DependencyGraphNode[];
|
|
41
79
|
edges: TaskGraphEdge[];
|
|
42
80
|
};
|
|
43
81
|
/**
|
|
@@ -52,8 +90,8 @@ export declare function buildDependencyGraphLayout(args: {
|
|
|
52
90
|
* remounted. Carrying the measurements over keeps nodes measured across
|
|
53
91
|
* rebuilds, which also preserves their handle bounds.
|
|
54
92
|
*/
|
|
55
|
-
export declare function preserveNodeMeasurements<
|
|
56
|
-
export declare function resolveLatestGraphNodes<
|
|
93
|
+
export declare function preserveNodeMeasurements<TNode extends Node>(previousNodes: TNode[] | null | undefined, nextNodes: TNode[]): TNode[];
|
|
94
|
+
export declare function resolveLatestGraphNodes<TNode extends Node>(referenceNodes: TNode[], liveNodes: TNode[] | null | undefined): TNode[];
|
|
57
95
|
export declare function DependencyGraphView(props: {
|
|
58
96
|
projectId?: string;
|
|
59
97
|
layoutKey?: string;
|