@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.
Files changed (116) hide show
  1. package/dist/agents-view/AgentsView.js +10 -11
  2. package/dist/agents-view/AgentsView.js.map +1 -1
  3. package/dist/components/ui/LanguageSelector.js +12 -1
  4. package/dist/components/ui/LanguageSelector.js.map +1 -1
  5. package/dist/config/config.js +11 -1
  6. package/dist/config/config.js.map +1 -1
  7. package/dist/editor/ContentTree.d.ts +1 -1
  8. package/dist/editor/ContentTree.js +31 -4
  9. package/dist/editor/ContentTree.js.map +1 -1
  10. package/dist/editor/FieldListFieldWithFallbacks.js +1 -1
  11. package/dist/editor/FieldListFieldWithFallbacks.js.map +1 -1
  12. package/dist/editor/LinkEditorDialog.js +1 -5
  13. package/dist/editor/LinkEditorDialog.js.map +1 -1
  14. package/dist/editor/ai/terminal/useAgentStopCommand.js +16 -14
  15. package/dist/editor/ai/terminal/useAgentStopCommand.js.map +1 -1
  16. package/dist/editor/ai-image-editor/AiImageEditorDialog.js +57 -39
  17. package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
  18. package/dist/editor/client/EditorShell.js +1 -0
  19. package/dist/editor/client/EditorShell.js.map +1 -1
  20. package/dist/editor/client/editContext.d.ts +6 -0
  21. package/dist/editor/client/editContext.js.map +1 -1
  22. package/dist/editor/client/itemsRepository.d.ts +2 -0
  23. package/dist/editor/client/itemsRepository.js +64 -0
  24. package/dist/editor/client/itemsRepository.js.map +1 -1
  25. package/dist/editor/client/operations.js +60 -8
  26. package/dist/editor/client/operations.js.map +1 -1
  27. package/dist/editor/commands/deleteVersionCommand.js +1 -0
  28. package/dist/editor/commands/deleteVersionCommand.js.map +1 -1
  29. package/dist/editor/field-types/richtext/components/ReactSlate.js +48 -3
  30. package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
  31. package/dist/editor/media-selector/Thumbnails.js +23 -10
  32. package/dist/editor/media-selector/Thumbnails.js.map +1 -1
  33. package/dist/editor/media-selector/TreeSelector.js +39 -20
  34. package/dist/editor/media-selector/TreeSelector.js.map +1 -1
  35. package/dist/editor/media-selector/mediaItemDrag.d.ts +22 -5
  36. package/dist/editor/media-selector/mediaItemDrag.js +108 -10
  37. package/dist/editor/media-selector/mediaItemDrag.js.map +1 -1
  38. package/dist/editor/menubar/PageSelector.js +2 -8
  39. package/dist/editor/menubar/PageSelector.js.map +1 -1
  40. package/dist/editor/menubar/pageSelectorHistoryFilter.d.ts +9 -0
  41. package/dist/editor/menubar/pageSelectorHistoryFilter.js +40 -6
  42. package/dist/editor/menubar/pageSelectorHistoryFilter.js.map +1 -1
  43. package/dist/editor/page-viewer/PageViewerFrame.js +17 -6
  44. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  45. package/dist/editor/page-viewer/internalLinkNavigation.d.ts +2 -0
  46. package/dist/editor/page-viewer/internalLinkNavigation.js +10 -0
  47. package/dist/editor/page-viewer/internalLinkNavigation.js.map +1 -1
  48. package/dist/editor/reviews/ReviewersPanel.js +1 -1
  49. package/dist/editor/reviews/ReviewersPanel.js.map +1 -1
  50. package/dist/editor/services/aiService.d.ts +20 -0
  51. package/dist/editor/services/aiService.js +12 -0
  52. package/dist/editor/services/aiService.js.map +1 -1
  53. package/dist/editor/settings/UsageLeaderboard.d.ts +2 -0
  54. package/dist/editor/settings/UsageLeaderboard.js +108 -0
  55. package/dist/editor/settings/UsageLeaderboard.js.map +1 -0
  56. package/dist/editor/settings/panels/ProjectTemplatesPanel.js +45 -1
  57. package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
  58. package/dist/editor/setup-wizard/steps/CompleteStep.js +2 -2
  59. package/dist/editor/setup-wizard/steps/CompleteStep.js.map +1 -1
  60. package/dist/editor/setup-wizard/steps/ModelSelectionStep.d.ts +1 -1
  61. package/dist/editor/setup-wizard/steps/ModelSelectionStep.js +6 -6
  62. package/dist/editor/setup-wizard/steps/ModelSelectionStep.js.map +1 -1
  63. package/dist/editor/setup-wizard/steps/ProviderStep.js +7 -7
  64. package/dist/editor/setup-wizard/steps/ProviderStep.js.map +1 -1
  65. package/dist/editor/sidebar/ComponentPalette.js +15 -11
  66. package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
  67. package/dist/editor/template-wizard/TemplateBuilderDialog.js +6 -2
  68. package/dist/editor/template-wizard/TemplateBuilderDialog.js.map +1 -1
  69. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js +6 -6
  70. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js.map +1 -1
  71. package/dist/editor/ui/ItemSearch.d.ts +1 -1
  72. package/dist/editor/ui/ItemSearch.js +4 -0
  73. package/dist/editor/ui/ItemSearch.js.map +1 -1
  74. package/dist/editor/ui/PerfectTree.d.ts +3 -1
  75. package/dist/editor/ui/PerfectTree.js +8 -7
  76. package/dist/editor/ui/PerfectTree.js.map +1 -1
  77. package/dist/licensing/LicenseContext.js +14 -7
  78. package/dist/licensing/LicenseContext.js.map +1 -1
  79. package/dist/revision.d.ts +2 -2
  80. package/dist/revision.js +2 -2
  81. package/dist/task-board/TaskBoardWorkspace.js +186 -7
  82. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  83. package/dist/task-board/components/CreateTaskDialog.d.ts +2 -0
  84. package/dist/task-board/components/CreateTaskDialog.js +6 -3
  85. package/dist/task-board/components/CreateTaskDialog.js.map +1 -1
  86. package/dist/task-board/components/GoalCoverageBar.d.ts +4 -0
  87. package/dist/task-board/components/GoalCoverageBar.js +22 -0
  88. package/dist/task-board/components/GoalCoverageBar.js.map +1 -0
  89. package/dist/task-board/components/GoalDataView.d.ts +39 -0
  90. package/dist/task-board/components/GoalDataView.js +385 -0
  91. package/dist/task-board/components/GoalDataView.js.map +1 -0
  92. package/dist/task-board/components/GoalsMatrix.d.ts +16 -0
  93. package/dist/task-board/components/GoalsMatrix.js +129 -0
  94. package/dist/task-board/components/GoalsMatrix.js.map +1 -0
  95. package/dist/task-board/components/ProjectDashboard.d.ts +1 -1
  96. package/dist/task-board/components/ProjectGoalsPanel.d.ts +16 -0
  97. package/dist/task-board/components/ProjectGoalsPanel.js +74 -113
  98. package/dist/task-board/components/ProjectGoalsPanel.js.map +1 -1
  99. package/dist/task-board/components/SubgoalStatusIcon.d.ts +4 -0
  100. package/dist/task-board/components/SubgoalStatusIcon.js +19 -0
  101. package/dist/task-board/components/SubgoalStatusIcon.js.map +1 -0
  102. package/dist/task-board/components/goalDisplaySpec.d.ts +19 -0
  103. package/dist/task-board/components/goalDisplaySpec.js +72 -0
  104. package/dist/task-board/components/goalDisplaySpec.js.map +1 -0
  105. package/dist/task-board/goalRefreshState.d.ts +6 -0
  106. package/dist/task-board/goalRefreshState.js +11 -0
  107. package/dist/task-board/goalRefreshState.js.map +1 -0
  108. package/dist/task-board/goalTaskNavigationState.d.ts +43 -0
  109. package/dist/task-board/goalTaskNavigationState.js +65 -0
  110. package/dist/task-board/goalTaskNavigationState.js.map +1 -0
  111. package/dist/task-board/types.d.ts +7 -0
  112. package/dist/task-board/views/DependencyGraphView.d.ts +42 -4
  113. package/dist/task-board/views/DependencyGraphView.js +467 -95
  114. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  115. package/dist/types.d.ts +2 -0
  116. 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: Node<TaskNodeData>[];
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<T extends Record<string, unknown>>(previousNodes: Array<Node<T>> | null | undefined, nextNodes: Array<Node<T>>): Array<Node<T>>;
56
- export declare function resolveLatestGraphNodes<T extends Record<string, unknown>>(referenceNodes: Array<Node<T>>, liveNodes: Array<Node<T>> | null | undefined): Array<Node<T>>;
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;