@parhelia/core 0.3.12816 → 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/editor/ContentTree.d.ts +1 -1
- package/dist/editor/ContentTree.js +25 -3
- package/dist/editor/ContentTree.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/client/operations.js +12 -3
- package/dist/editor/client/operations.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/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/settings/panels/ProjectTemplatesPanel.js +45 -1
- package/dist/editor/settings/panels/ProjectTemplatesPanel.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 +6 -0
- package/package.json +1 -1
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo, useState } from "react";
|
|
2
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
3
3
|
import { toast } from "sonner";
|
|
4
|
-
import { ChevronDown, ChevronRight,
|
|
4
|
+
import { ChevronDown, ChevronRight, LayoutGrid, Loader2, Pencil, Plus, Target, Trash2, } from "lucide-react";
|
|
5
5
|
import { cn } from "../../lib/utils";
|
|
6
|
-
import { MarkdownDisplay } from "../../components/MarkdownDisplay";
|
|
7
6
|
import { Button } from "../../components/ui/button";
|
|
8
7
|
import { Select } from "../../components/ui/select";
|
|
9
8
|
import { Input } from "../../components/ui/input";
|
|
10
9
|
import { KpiTile, formatPercent } from "./ProjectDashboard";
|
|
11
10
|
import { GoalDialog } from "./GoalDialog";
|
|
11
|
+
import { CreateTaskDialog } from "./CreateTaskDialog";
|
|
12
|
+
import { GoalDataView } from "./GoalDataView";
|
|
13
|
+
import { GoalCoverageBar } from "./GoalCoverageBar";
|
|
14
|
+
import { GoalsMatrix } from "./GoalsMatrix";
|
|
15
|
+
import { SubgoalStatusIcon } from "./SubgoalStatusIcon";
|
|
16
|
+
import { parseGoalDisplaySpec } from "./goalDisplaySpec";
|
|
12
17
|
import { createSubgoal, deleteGoal, deleteSubgoal, updateGoal, updateSubgoal, } from "../services/goalService";
|
|
13
18
|
const CUSTOM_KEY = "__custom__";
|
|
14
19
|
const GOAL_STATUS_OPTIONS = [
|
|
@@ -48,10 +53,53 @@ function getProjectPermission(permissions, projectId) {
|
|
|
48
53
|
const normalizedKey = key.toLowerCase();
|
|
49
54
|
return Object.entries(permissions).find(([candidate]) => candidate.trim().toLowerCase() === normalizedKey)?.[1];
|
|
50
55
|
}
|
|
56
|
+
function recommendationTitle(text) {
|
|
57
|
+
const normalized = text.trim();
|
|
58
|
+
if (normalized.length <= 120)
|
|
59
|
+
return normalized;
|
|
60
|
+
const candidate = normalized.slice(0, 120);
|
|
61
|
+
const boundary = candidate.lastIndexOf(" ");
|
|
62
|
+
return `${candidate.slice(0, boundary >= 80 ? boundary : 117).trim()}…`;
|
|
63
|
+
}
|
|
64
|
+
function recommendationDescription(goal, recommendation) {
|
|
65
|
+
const lines = [recommendation.text, "", `Goal: ${goal.title}`];
|
|
66
|
+
if (recommendation.severity) {
|
|
67
|
+
lines.push(`Severity: ${recommendation.severity}`);
|
|
68
|
+
}
|
|
69
|
+
if (recommendation.itemId) {
|
|
70
|
+
const matching = goal.subgoals?.find((subgoal) => subgoal.targetItemId?.replace(/[{}]/g, "").toLowerCase() ===
|
|
71
|
+
recommendation.itemId?.replace(/[{}]/g, "").toLowerCase());
|
|
72
|
+
lines.push(`Item: ${matching?.targetItemPath ? `${matching.targetItemPath} (${recommendation.itemId})` : recommendation.itemId}`);
|
|
73
|
+
}
|
|
74
|
+
return lines.join("\n");
|
|
75
|
+
}
|
|
51
76
|
export function ProjectGoalsPanel(props) {
|
|
52
|
-
const { goals, catalog, loading, hasSubprojects, includeDescendants, onToggleIncludeDescendants, selectedProjectId, permissions, onChanged, } = props;
|
|
77
|
+
const { goals, catalog, loading, error, onRetry, hasSubprojects, includeDescendants, onToggleIncludeDescendants, selectedProjectId, permissions, onChanged, goalDisplaySpecs = {}, projectLabels = {}, onOpenItem, onSelectTask, onTaskCreated, } = props;
|
|
53
78
|
const [dialogOpen, setDialogOpen] = useState(false);
|
|
54
79
|
const [editingGoal, setEditingGoal] = useState(null);
|
|
80
|
+
const [view, setView] = useState("cards");
|
|
81
|
+
const [taskRecommendation, setTaskRecommendation] = useState(null);
|
|
82
|
+
const observedSpecsRef = useRef(new Map());
|
|
83
|
+
const parsedSpecs = useMemo(() => {
|
|
84
|
+
const parsed = new Map();
|
|
85
|
+
for (const [definitionId, raw] of Object.entries(goalDisplaySpecs)) {
|
|
86
|
+
const result = parseGoalDisplaySpec(raw);
|
|
87
|
+
parsed.set(definitionId.trim().toLowerCase(), {
|
|
88
|
+
raw,
|
|
89
|
+
...("spec" in result ? { spec: result.spec } : { error: result.error }),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return parsed;
|
|
93
|
+
}, [goalDisplaySpecs]);
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
for (const [definitionId, result] of parsedSpecs) {
|
|
96
|
+
const previous = observedSpecsRef.current.get(definitionId);
|
|
97
|
+
observedSpecsRef.current.set(definitionId, result.raw);
|
|
98
|
+
if (result.error && previous !== result.raw) {
|
|
99
|
+
console.warn(`Ignoring malformed goal Display Spec for ${definitionId}: ${result.error}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}, [parsedSpecs]);
|
|
55
103
|
const canCreate = !!selectedProjectId &&
|
|
56
104
|
canEditPermission(getProjectPermission(permissions, selectedProjectId));
|
|
57
105
|
const groups = useMemo(() => {
|
|
@@ -62,10 +110,12 @@ export function ProjectGoalsPanel(props) {
|
|
|
62
110
|
key,
|
|
63
111
|
label: goalGroupLabel(goal),
|
|
64
112
|
done: 0,
|
|
113
|
+
failed: 0,
|
|
65
114
|
total: 0,
|
|
66
115
|
};
|
|
67
116
|
if (isItemSpanning(goal) && goal.coverage) {
|
|
68
117
|
entry.done += goal.coverage.done;
|
|
118
|
+
entry.failed += goal.coverage.failed;
|
|
69
119
|
entry.total += goal.coverage.total;
|
|
70
120
|
}
|
|
71
121
|
else {
|
|
@@ -86,14 +136,22 @@ export function ProjectGoalsPanel(props) {
|
|
|
86
136
|
setEditingGoal(goal);
|
|
87
137
|
setDialogOpen(true);
|
|
88
138
|
};
|
|
89
|
-
return (_jsxs("div", { className: "flex min-h-0 flex-col gap-4", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [hasSubprojects ? (_jsxs("label", { className: "text-neutral-grey-50 flex items-center gap-2 text-xs", children: [_jsx("input", { type: "checkbox", checked: includeDescendants, onChange: (event) => onToggleIncludeDescendants(event.target.checked) }), "Include subprojects"] })) : (_jsx("span", {})), canCreate ? (_jsxs(Button, { onClick: openCreate, "data-testid": "taskboard-add-goal-button", children: [_jsx(Plus, { strokeWidth: 1, className: "mr-1 size-4", "aria-hidden": "true" }), "Add goal"] })) : null] }), loading && goals.length === 0 ? (_jsxs("div", { className: "text-neutral-grey-50 flex items-center gap-2 py-8 text-sm", children: [_jsx(Loader2, { strokeWidth: 1, className: "size-4 animate-spin", "aria-hidden": "true" }), "Loading goals\u2026"] })) : goals.length === 0 ? (_jsxs("div", { "data-testid": "taskboard-goals-empty", className: "border-border-default text-neutral-grey-50 rounded-md border border-dashed p-8 text-center text-sm", children: ["No goals yet.", " ", canCreate
|
|
139
|
+
return (_jsxs("div", { className: "flex min-h-0 flex-col gap-4", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [hasSubprojects ? (_jsxs("label", { className: "text-neutral-grey-50 flex items-center gap-2 text-xs", children: [_jsx("input", { type: "checkbox", checked: includeDescendants, onChange: (event) => onToggleIncludeDescendants(event.target.checked) }), "Include subprojects"] })) : (_jsx("span", {})), _jsxs("div", { className: "flex items-center gap-2", children: [goals.length > 0 ? (_jsxs("div", { className: "border-border-default flex rounded-md border p-0.5", children: [_jsx("button", { type: "button", "data-testid": "taskboard-goals-view-cards", "aria-pressed": view === "cards", className: cn("rounded px-2 py-1 text-xs", view === "cards" && "bg-neutral-grey-5"), onClick: () => setView("cards"), children: "Cards" }), _jsxs("button", { type: "button", "data-testid": "taskboard-goals-view-matrix", "aria-pressed": view === "matrix", className: cn("flex items-center gap-1 rounded px-2 py-1 text-xs", view === "matrix" && "bg-neutral-grey-5"), onClick: () => setView("matrix"), children: [_jsx(LayoutGrid, { strokeWidth: 1, className: "size-3.5", "aria-hidden": "true" }), "Matrix"] })] })) : null, canCreate ? (_jsxs(Button, { onClick: openCreate, "data-testid": "taskboard-add-goal-button", children: [_jsx(Plus, { strokeWidth: 1, className: "mr-1 size-4", "aria-hidden": "true" }), "Add goal"] })) : null] })] }), loading && goals.length === 0 ? (_jsxs("div", { className: "text-neutral-grey-50 flex items-center gap-2 py-8 text-sm", children: [_jsx(Loader2, { strokeWidth: 1, className: "size-4 animate-spin", "aria-hidden": "true" }), "Loading goals\u2026"] })) : error ? (_jsxs("div", { role: "alert", "data-testid": "taskboard-goals-error", className: "border-feedback-red/30 bg-feedback-red/5 text-neutral-grey-100 rounded-md border p-6 text-center text-sm", children: [_jsx("div", { children: error }), onRetry ? (_jsx(Button, { className: "mt-3", variant: "outline", onClick: onRetry, children: "Retry" })) : null] })) : goals.length === 0 ? (_jsxs("div", { "data-testid": "taskboard-goals-empty", className: "border-border-default text-neutral-grey-50 rounded-md border border-dashed p-8 text-center text-sm", children: ["No goals yet.", " ", canCreate
|
|
90
140
|
? "Add one, or let agents create them as they work."
|
|
91
|
-
: "Agents and editors can create goals for this project."] })) : (_jsxs(
|
|
141
|
+
: "Agents and editors can create goals for this project."] })) : view === "matrix" ? (_jsx(GoalsMatrix, { goals: goals, projectLabels: projectLabels, permissions: permissions, onOpenItem: onOpenItem, onChanged: onChanged })) : (_jsxs("div", { className: "mx-auto flex w-full max-w-[1000px] flex-col gap-4", children: [groups.length > 0 ? (_jsx("div", { className: "grid gap-3 sm:grid-cols-2 xl:grid-cols-3", children: groups.map((group) => {
|
|
92
142
|
const pct = group.total > 0 ? (group.done / group.total) * 100 : null;
|
|
93
|
-
return (_jsx(KpiTile, { icon: _jsx(Target, { strokeWidth: 1, className: "size-4", "aria-hidden": "true" }), label: group.label, value: `${group.done} / ${group.total}`, detail: pct === null ? "—" :
|
|
94
|
-
}) })) : null, _jsx("div", { className: "flex flex-col gap-3", children: sortedGoals.map((goal) => (_jsx(GoalCard, { goal: goal, canEdit: canEditPermission(getProjectPermission(permissions, goal.projectId)), onEdit: () => openEdit(goal), onChanged: onChanged
|
|
143
|
+
return (_jsx(KpiTile, { icon: _jsx(Target, { strokeWidth: 1, className: "size-4", "aria-hidden": "true" }), label: group.label, value: `${group.done} / ${group.total}`, detail: pct === null ? ("—") : (_jsxs(_Fragment, { children: [formatPercent(pct), " complete", group.failed > 0 ? (_jsxs("span", { className: "text-feedback-red", children: [" ", "\u00B7 ", group.failed, " failed"] })) : null] })), testId: `goal-group-${group.key}` }, group.key));
|
|
144
|
+
}) })) : null, _jsx("div", { className: "flex flex-col gap-3", children: sortedGoals.map((goal) => (_jsx(GoalCard, { goal: goal, canEdit: canEditPermission(getProjectPermission(permissions, goal.projectId)), onEdit: () => openEdit(goal), onChanged: onChanged, displaySpec: goal.sourceGoalTemplateId
|
|
145
|
+
? parsedSpecs.get(goal.sourceGoalTemplateId.toLowerCase())
|
|
146
|
+
?.spec
|
|
147
|
+
: null, onOpenItem: onOpenItem, onSelectTask: onSelectTask, onCreateTaskFromRecommendation: (recommendation) => setTaskRecommendation({ goal, recommendation }) }, goal.goalId))) })] })), selectedProjectId ? (_jsx(GoalDialog, { open: dialogOpen, onOpenChange: setDialogOpen, projectId: selectedProjectId, catalog: catalog, goal: editingGoal, onSaved: onChanged })) : null, taskRecommendation ? (_jsx(CreateTaskDialog, { open: true, onOpenChange: (open) => {
|
|
148
|
+
if (!open)
|
|
149
|
+
setTaskRecommendation(null);
|
|
150
|
+
}, projectId: taskRecommendation.goal.projectId, defaultTitle: recommendationTitle(taskRecommendation.recommendation.text), defaultDescription: recommendationDescription(taskRecommendation.goal, taskRecommendation.recommendation), onCreated: () => {
|
|
151
|
+
onTaskCreated?.(taskRecommendation.goal.projectId);
|
|
152
|
+
} })) : null] }));
|
|
95
153
|
}
|
|
96
|
-
function GoalCard({ goal, canEdit, onEdit, onChanged, }) {
|
|
154
|
+
function GoalCard({ goal, canEdit, onEdit, onChanged, displaySpec, onOpenItem, onSelectTask, onCreateTaskFromRecommendation, }) {
|
|
97
155
|
const [expanded, setExpanded] = useState(false);
|
|
98
156
|
const [addingSubgoal, setAddingSubgoal] = useState(false);
|
|
99
157
|
const [newSubgoalTitle, setNewSubgoalTitle] = useState("");
|
|
@@ -101,7 +159,6 @@ function GoalCard({ goal, canEdit, onEdit, onChanged, }) {
|
|
|
101
159
|
const subgoals = goal.subgoals ?? [];
|
|
102
160
|
const hasSubgoals = subgoals.length > 0;
|
|
103
161
|
const coverage = goal.coverage;
|
|
104
|
-
const pct = coverage && coverage.hasMeasurableSubgoals ? (coverage.percent ?? 0) : null;
|
|
105
162
|
const changeStatus = async (status) => {
|
|
106
163
|
setBusy(true);
|
|
107
164
|
try {
|
|
@@ -154,16 +211,16 @@ function GoalCard({ goal, canEdit, onEdit, onChanged, }) {
|
|
|
154
211
|
setBusy(false);
|
|
155
212
|
}
|
|
156
213
|
};
|
|
157
|
-
return (_jsxs("div", { "data-testid": "taskboard-goal-card", className: "border-border-default rounded-md border bg-white p-4", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "flex min-w-0 items-start gap-2", children: [_jsx(Target, { strokeWidth: 1, className: "text-neutral-grey-50 mt-0.5 size-4 shrink-0", "aria-hidden": "true" }), _jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("span", { className: "text-neutral-grey-100 text-sm font-medium", children: goal.title }), !canEdit ? _jsx(GoalStatusBadge, { status: goal.status }) : null, _jsx("span", { className: "bg-neutral-grey-5 text-neutral-grey-50 rounded px-2 py-0.5 text-[11px]", children: goalGroupLabel(goal) })] }), goal.description ? (_jsx("div", { className: "text-neutral-grey-50 mt-1 text-xs", children: goal.description })) : null] })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [
|
|
214
|
+
return (_jsxs("div", { "data-testid": "taskboard-goal-card", "data-goal-id": goal.goalId, className: "border-border-default rounded-md border bg-white p-4", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "flex min-w-0 items-start gap-2", children: [_jsx(Target, { strokeWidth: 1, className: "text-neutral-grey-50 mt-0.5 size-4 shrink-0", "aria-hidden": "true" }), _jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("span", { className: "text-neutral-grey-100 text-sm font-medium", children: goal.title }), !canEdit ? _jsx(GoalStatusBadge, { status: goal.status }) : null, _jsx("span", { className: "bg-neutral-grey-5 text-neutral-grey-50 rounded px-2 py-0.5 text-[11px]", children: goalGroupLabel(goal) })] }), goal.description ? (_jsx("div", { className: "text-neutral-grey-50 mt-1 text-xs", children: goal.description })) : null] })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [coverage ? (_jsxs("span", { className: "text-neutral-grey-50 text-xs", children: [coverage?.done, " / ", coverage?.total] })) : null, canEdit ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "w-32", children: _jsx(Select, { value: goal.status, onValueChange: changeStatus, options: GOAL_STATUS_OPTIONS }) }), _jsx(IconButton, { label: "Edit goal", onClick: onEdit, disabled: busy, icon: _jsx(Pencil, { strokeWidth: 1, className: "size-3.5", "aria-hidden": "true" }) }), _jsx(IconButton, { label: "Delete goal", onClick: remove, disabled: busy, icon: _jsx(Trash2, { strokeWidth: 1, className: "size-3.5", "aria-hidden": "true" }) })] })) : null] })] }), coverage ? _jsx(GoalCoverageBar, { coverage: coverage }) : null, _jsx(GoalDataView, { data: goal.data, displaySpec: displaySpec, owningProjectId: goal.projectId, onOpenItem: onOpenItem, onSelectTask: onSelectTask, onCreateTaskFromRecommendation: canEdit ? onCreateTaskFromRecommendation : undefined }), hasSubgoals ? (_jsxs("div", { className: "mt-3", children: [_jsxs("button", { type: "button", className: "text-neutral-grey-50 hover:text-neutral-grey-100 flex items-center gap-1 text-xs", onClick: () => setExpanded((value) => !value), children: [expanded ? (_jsx(ChevronDown, { strokeWidth: 1, className: "size-3.5", "aria-hidden": "true" })) : (_jsx(ChevronRight, { strokeWidth: 1, className: "size-3.5", "aria-hidden": "true" })), expanded ? "Hide" : "Show", " ", subgoals.length, " subgoal", subgoals.length === 1 ? "" : "s"] }), expanded ? (_jsx("div", { className: "border-border-default mt-2 flex flex-col divide-y rounded-md border", children: [...subgoals]
|
|
158
215
|
.sort((a, b) => a.sortOrder - b.sortOrder)
|
|
159
|
-
.map((subgoal) => (_jsx(SubgoalRow, { subgoal: subgoal, canEdit: canEdit, onChanged: onChanged }, subgoal.subgoalId))) })) : null] })) : null, canEdit ? (_jsx("div", { className: "mt-3", children: addingSubgoal ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Input, { autoFocus: true, "data-testid": "taskboard-subgoal-title-input", value: newSubgoalTitle, onChange: (e) => setNewSubgoalTitle(e.target.value), placeholder: "Subgoal title", onKeyDown: (e) => {
|
|
216
|
+
.map((subgoal) => (_jsx(SubgoalRow, { subgoal: subgoal, canEdit: canEdit, onChanged: onChanged, onOpenItem: onOpenItem }, subgoal.subgoalId))) })) : null] })) : null, canEdit ? (_jsx("div", { className: "mt-3", children: addingSubgoal ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Input, { autoFocus: true, "data-testid": "taskboard-subgoal-title-input", value: newSubgoalTitle, onChange: (e) => setNewSubgoalTitle(e.target.value), placeholder: "Subgoal title", onKeyDown: (e) => {
|
|
160
217
|
if (e.key === "Enter")
|
|
161
218
|
void addSubgoal();
|
|
162
219
|
if (e.key === "Escape")
|
|
163
220
|
setAddingSubgoal(false);
|
|
164
221
|
} }), _jsx(Button, { onClick: () => void addSubgoal(), disabled: busy || !newSubgoalTitle.trim(), "data-testid": "taskboard-subgoal-add-confirm", children: "Add" }), _jsx(Button, { variant: "outline", onClick: () => setAddingSubgoal(false), disabled: busy, children: "Cancel" })] })) : (_jsxs("button", { type: "button", "data-testid": "taskboard-add-subgoal-button", className: "text-neutral-grey-50 hover:text-neutral-grey-100 flex items-center gap-1 text-xs", onClick: () => setAddingSubgoal(true), children: [_jsx(Plus, { strokeWidth: 1, className: "size-3.5", "aria-hidden": "true" }), "Add subgoal"] })) })) : null] }));
|
|
165
222
|
}
|
|
166
|
-
function SubgoalRow({ subgoal, canEdit, onChanged, }) {
|
|
223
|
+
function SubgoalRow({ subgoal, canEdit, onChanged, onOpenItem, }) {
|
|
167
224
|
const [showData, setShowData] = useState(false);
|
|
168
225
|
const [busy, setBusy] = useState(false);
|
|
169
226
|
const label = subgoal.title || subgoal.targetItemPath || "Subgoal";
|
|
@@ -198,7 +255,10 @@ function SubgoalRow({ subgoal, canEdit, onChanged, }) {
|
|
|
198
255
|
setBusy(false);
|
|
199
256
|
}
|
|
200
257
|
};
|
|
201
|
-
return (_jsxs("div", { className: "px-3 py-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(SubgoalStatusIcon, { status: subgoal.status }), _jsx("span", { className: "text-neutral-grey-100 min-w-0 flex-1 truncate text-xs", children: label }), subgoal.data != null ? (_jsx("button", { type: "button", className: "text-neutral-grey-50 hover:text-neutral-grey-100 text-[11px]", onClick: () => setShowData((value) => !value), children: showData ? "Hide data" : "Data" })) : null, canEdit ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "w-32", children: _jsx(Select, { value: subgoal.status, onValueChange: changeStatus, options: SUBGOAL_STATUS_OPTIONS }) }), _jsx(IconButton, { label: "Delete subgoal", onClick: remove, disabled: busy, icon: _jsx(Trash2, { strokeWidth: 1, className: "size-3.5", "aria-hidden": "true" }) })] })) : null] }), subgoal.targetItemPath ? (_jsx("
|
|
258
|
+
return (_jsxs("div", { className: "px-3 py-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(SubgoalStatusIcon, { status: subgoal.status }), _jsx("span", { className: "text-neutral-grey-100 min-w-0 flex-1 truncate text-xs", children: label }), subgoal.data != null ? (_jsx("button", { type: "button", className: "text-neutral-grey-50 hover:text-neutral-grey-100 text-[11px]", onClick: () => setShowData((value) => !value), children: showData ? "Hide data" : "Data" })) : null, canEdit ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "w-32", children: _jsx(Select, { value: subgoal.status, onValueChange: changeStatus, options: SUBGOAL_STATUS_OPTIONS }) }), _jsx(IconButton, { label: "Delete subgoal", onClick: remove, disabled: busy, icon: _jsx(Trash2, { strokeWidth: 1, className: "size-3.5", "aria-hidden": "true" }) })] })) : null] }), subgoal.targetItemPath ? (subgoal.targetItemId && onOpenItem ? (_jsx("button", { type: "button", "data-testid": "taskboard-subgoal-item-link", className: "text-feedback-blue mt-0.5 ml-6 block max-w-full truncate text-[11px] hover:underline", onClick: () => onOpenItem({
|
|
259
|
+
itemId: subgoal.targetItemId,
|
|
260
|
+
language: subgoal.targetItemLanguage,
|
|
261
|
+
}), children: subgoal.targetItemPath })) : (_jsx("div", { className: "text-neutral-grey-50 mt-0.5 ml-6 truncate text-[11px]", children: subgoal.targetItemPath }))) : null, showData ? (_jsx("div", { className: "ml-6", children: _jsx(GoalDataView, { data: subgoal.data }) })) : null] }));
|
|
202
262
|
}
|
|
203
263
|
function IconButton({ label, icon, onClick, disabled, }) {
|
|
204
264
|
return (_jsx("button", { type: "button", "aria-label": label, title: label, onClick: onClick, disabled: disabled, className: "border-border-default text-neutral-grey-50 hover:text-neutral-grey-100 hover:bg-neutral-grey-5 flex size-7 items-center justify-center rounded-md border disabled:opacity-50", children: icon }));
|
|
@@ -212,103 +272,4 @@ function GoalStatusBadge({ status }) {
|
|
|
212
272
|
};
|
|
213
273
|
return (_jsx("span", { className: cn("text-[11px] font-medium", map[status]), children: status }));
|
|
214
274
|
}
|
|
215
|
-
function SubgoalStatusIcon({ status }) {
|
|
216
|
-
const className = "size-4 shrink-0";
|
|
217
|
-
switch (status) {
|
|
218
|
-
case "Done":
|
|
219
|
-
return (_jsx(CircleCheck, { strokeWidth: 1, className: cn(className, "text-feedback-green"), "aria-label": "Done" }));
|
|
220
|
-
case "InProgress":
|
|
221
|
-
return (_jsx(Loader2, { strokeWidth: 1, className: cn(className, "text-feedback-blue"), "aria-label": "In progress" }));
|
|
222
|
-
case "Failed":
|
|
223
|
-
return (_jsx(CircleX, { strokeWidth: 1, className: cn(className, "text-feedback-red"), "aria-label": "Failed" }));
|
|
224
|
-
case "Skipped":
|
|
225
|
-
return (_jsx(MinusCircle, { strokeWidth: 1, className: cn(className, "text-neutral-grey-50"), "aria-label": "Skipped" }));
|
|
226
|
-
default:
|
|
227
|
-
return (_jsx(CircleDashed, { strokeWidth: 1, className: cn(className, "text-neutral-grey-50"), "aria-label": "Pending" }));
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
// ---- Arbitrary data rendering (XSS-safe) ----
|
|
231
|
-
function asRecord(value) {
|
|
232
|
-
return value && typeof value === "object" && !Array.isArray(value)
|
|
233
|
-
? value
|
|
234
|
-
: null;
|
|
235
|
-
}
|
|
236
|
-
function asStringList(value) {
|
|
237
|
-
if (Array.isArray(value) && value.every((item) => typeof item === "string")) {
|
|
238
|
-
return value;
|
|
239
|
-
}
|
|
240
|
-
return null;
|
|
241
|
-
}
|
|
242
|
-
function asMetrics(value) {
|
|
243
|
-
if (!Array.isArray(value))
|
|
244
|
-
return null;
|
|
245
|
-
const out = [];
|
|
246
|
-
for (const item of value) {
|
|
247
|
-
const record = asRecord(item);
|
|
248
|
-
if (!record)
|
|
249
|
-
return null;
|
|
250
|
-
out.push({
|
|
251
|
-
label: String(record.label ?? ""),
|
|
252
|
-
value: String(record.value ?? ""),
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
return out;
|
|
256
|
-
}
|
|
257
|
-
function asLinks(value) {
|
|
258
|
-
if (!Array.isArray(value))
|
|
259
|
-
return null;
|
|
260
|
-
const out = [];
|
|
261
|
-
for (const item of value) {
|
|
262
|
-
const record = asRecord(item);
|
|
263
|
-
if (!record || typeof record.url !== "string")
|
|
264
|
-
return null;
|
|
265
|
-
if (!isSafeHttpUrl(record.url))
|
|
266
|
-
continue;
|
|
267
|
-
out.push({ label: String(record.label ?? record.url), url: record.url });
|
|
268
|
-
}
|
|
269
|
-
return out;
|
|
270
|
-
}
|
|
271
|
-
function isSafeHttpUrl(url) {
|
|
272
|
-
try {
|
|
273
|
-
const parsed = new URL(url, window.location.origin);
|
|
274
|
-
return parsed.protocol === "http:" || parsed.protocol === "https:";
|
|
275
|
-
}
|
|
276
|
-
catch {
|
|
277
|
-
return false;
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
function GoalDataView({ data }) {
|
|
281
|
-
const [showRaw, setShowRaw] = useState(false);
|
|
282
|
-
if (data == null)
|
|
283
|
-
return null;
|
|
284
|
-
const record = asRecord(data);
|
|
285
|
-
if (!record) {
|
|
286
|
-
return (_jsx("pre", { className: "bg-neutral-grey-5 text-neutral-grey-100 mt-2 max-h-48 overflow-auto rounded-md p-2 text-[11px]", children: safeStringify(data) }));
|
|
287
|
-
}
|
|
288
|
-
const summary = typeof record.summary === "string" ? record.summary : null;
|
|
289
|
-
const recommendations = asStringList(record.recommendations) ?? asStringList(record.items);
|
|
290
|
-
const metrics = asMetrics(record.metrics);
|
|
291
|
-
const links = asLinks(record.links);
|
|
292
|
-
const knownKeys = new Set([
|
|
293
|
-
"summary",
|
|
294
|
-
"recommendations",
|
|
295
|
-
"items",
|
|
296
|
-
"metrics",
|
|
297
|
-
"links",
|
|
298
|
-
]);
|
|
299
|
-
const otherKeys = Object.keys(record).filter((key) => !knownKeys.has(key));
|
|
300
|
-
const hasKnown = !!summary ||
|
|
301
|
-
(recommendations && recommendations.length > 0) ||
|
|
302
|
-
(metrics && metrics.length > 0) ||
|
|
303
|
-
(links && links.length > 0);
|
|
304
|
-
return (_jsxs("div", { className: "mt-2 flex flex-col gap-2", children: [summary ? (_jsx("div", { className: "text-neutral-grey-100 text-xs", children: _jsx(MarkdownDisplay, { source: summary }) })) : null, recommendations && recommendations.length > 0 ? (_jsx("ul", { className: "text-neutral-grey-100 ml-4 list-disc text-xs", children: recommendations.map((item, index) => (_jsx("li", { children: item }, index))) })) : null, metrics && metrics.length > 0 ? (_jsx("div", { className: "grid grid-cols-2 gap-2 sm:grid-cols-3", children: metrics.map((metric, index) => (_jsxs("div", { className: "bg-neutral-grey-5 rounded-md p-2 text-xs", children: [_jsx("div", { className: "text-neutral-grey-50 text-[10px] uppercase", children: metric.label }), _jsx("div", { className: "text-neutral-grey-100 font-medium", children: metric.value })] }, index))) })) : null, links && links.length > 0 ? (_jsx("div", { className: "flex flex-col gap-1 text-xs", children: links.map((link, index) => (_jsx("a", { href: link.url, target: "_blank", rel: "noopener noreferrer", className: "text-feedback-blue truncate hover:underline", children: link.label }, index))) })) : null, otherKeys.length > 0 || !hasKnown ? (_jsxs("div", { children: [_jsx("button", { type: "button", className: "text-neutral-grey-50 hover:text-neutral-grey-100 text-[11px]", onClick: () => setShowRaw((value) => !value), children: showRaw ? "Hide raw data" : "Show raw data" }), showRaw ? (_jsx("pre", { className: "bg-neutral-grey-5 text-neutral-grey-100 mt-1 max-h-48 overflow-auto rounded-md p-2 text-[11px]", children: safeStringify(data) })) : null] })) : null] }));
|
|
305
|
-
}
|
|
306
|
-
function safeStringify(value) {
|
|
307
|
-
try {
|
|
308
|
-
return JSON.stringify(value, null, 2);
|
|
309
|
-
}
|
|
310
|
-
catch {
|
|
311
|
-
return String(value);
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
275
|
//# sourceMappingURL=ProjectGoalsPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectGoalsPanel.js","sourceRoot":"","sources":["../../../src/task-board/components/ProjectGoalsPanel.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProjectGoalsPanel.js","sourceRoot":"","sources":["../../../src/task-board/components/ProjectGoalsPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { CircleCheck, CircleDashed, CircleX, Loader2, MinusCircle, } from "lucide-react";
|
|
3
|
+
import { cn } from "../../lib/utils";
|
|
4
|
+
export function SubgoalStatusIcon({ status }) {
|
|
5
|
+
const className = "size-4 shrink-0";
|
|
6
|
+
switch (status) {
|
|
7
|
+
case "Done":
|
|
8
|
+
return (_jsx(CircleCheck, { strokeWidth: 1, className: cn(className, "text-feedback-green"), "aria-label": "Done" }));
|
|
9
|
+
case "InProgress":
|
|
10
|
+
return (_jsx(Loader2, { strokeWidth: 1, className: cn(className, "text-feedback-blue"), "aria-label": "In progress" }));
|
|
11
|
+
case "Failed":
|
|
12
|
+
return (_jsx(CircleX, { strokeWidth: 1, className: cn(className, "text-feedback-red"), "aria-label": "Failed" }));
|
|
13
|
+
case "Skipped":
|
|
14
|
+
return (_jsx(MinusCircle, { strokeWidth: 1, className: cn(className, "text-neutral-grey-50"), "aria-label": "Skipped" }));
|
|
15
|
+
default:
|
|
16
|
+
return (_jsx(CircleDashed, { strokeWidth: 1, className: cn(className, "text-neutral-grey-50"), "aria-label": "Pending" }));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=SubgoalStatusIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubgoalStatusIcon.js","sourceRoot":"","sources":["../../../src/task-board/components/SubgoalStatusIcon.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,YAAY,EACZ,OAAO,EACP,OAAO,EACP,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAGrC,MAAM,UAAU,iBAAiB,CAAC,EAAE,MAAM,EAA6B;IACrE,MAAM,SAAS,GAAG,iBAAiB,CAAC;IACpC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,CACL,KAAC,WAAW,IACV,WAAW,EAAE,CAAC,EACd,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,qBAAqB,CAAC,gBACpC,MAAM,GACjB,CACH,CAAC;QACJ,KAAK,YAAY;YACf,OAAO,CACL,KAAC,OAAO,IACN,WAAW,EAAE,CAAC,EACd,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,oBAAoB,CAAC,gBACnC,aAAa,GACxB,CACH,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO,CACL,KAAC,OAAO,IACN,WAAW,EAAE,CAAC,EACd,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,mBAAmB,CAAC,gBAClC,QAAQ,GACnB,CACH,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO,CACL,KAAC,WAAW,IACV,WAAW,EAAE,CAAC,EACd,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,gBACrC,SAAS,GACpB,CACH,CAAC;QACJ;YACE,OAAO,CACL,KAAC,YAAY,IACX,WAAW,EAAE,CAAC,EACd,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,gBACrC,SAAS,GACpB,CACH,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const GOAL_DATA_WIDGETS: readonly ["summary", "metrics", "links", "recommendations", "score", "severityCounts", "checks", "table", "itemRefs", "taskRefs"];
|
|
2
|
+
export type GoalDataWidget = (typeof GOAL_DATA_WIDGETS)[number];
|
|
3
|
+
export type GoalDisplaySpecSection = {
|
|
4
|
+
widget: GoalDataWidget;
|
|
5
|
+
key: string;
|
|
6
|
+
label?: string;
|
|
7
|
+
limit?: number;
|
|
8
|
+
};
|
|
9
|
+
export type GoalDisplaySpec = {
|
|
10
|
+
version: 1;
|
|
11
|
+
sections: GoalDisplaySpecSection[];
|
|
12
|
+
};
|
|
13
|
+
export type GoalDisplaySpecParseResult = {
|
|
14
|
+
spec: GoalDisplaySpec | null;
|
|
15
|
+
} | {
|
|
16
|
+
error: string;
|
|
17
|
+
};
|
|
18
|
+
/** Parse the strict, versioned card-layout contract stored on a goal definition. */
|
|
19
|
+
export declare function parseGoalDisplaySpec(raw: string | null | undefined): GoalDisplaySpecParseResult;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export const GOAL_DATA_WIDGETS = [
|
|
2
|
+
"summary",
|
|
3
|
+
"metrics",
|
|
4
|
+
"links",
|
|
5
|
+
"recommendations",
|
|
6
|
+
"score",
|
|
7
|
+
"severityCounts",
|
|
8
|
+
"checks",
|
|
9
|
+
"table",
|
|
10
|
+
"itemRefs",
|
|
11
|
+
"taskRefs",
|
|
12
|
+
];
|
|
13
|
+
const WIDGETS = new Set(GOAL_DATA_WIDGETS);
|
|
14
|
+
/** Parse the strict, versioned card-layout contract stored on a goal definition. */
|
|
15
|
+
export function parseGoalDisplaySpec(raw) {
|
|
16
|
+
if (!raw?.trim())
|
|
17
|
+
return { spec: null };
|
|
18
|
+
let value;
|
|
19
|
+
try {
|
|
20
|
+
value = JSON.parse(raw);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return { error: "Display Spec must be valid JSON." };
|
|
24
|
+
}
|
|
25
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
26
|
+
return { error: "Display Spec must be a JSON object." };
|
|
27
|
+
}
|
|
28
|
+
const record = value;
|
|
29
|
+
if (record.version !== 1 || !Array.isArray(record.sections)) {
|
|
30
|
+
return { error: "Display Spec must have version 1 and a sections array." };
|
|
31
|
+
}
|
|
32
|
+
if (record.sections.length > 20) {
|
|
33
|
+
return { error: "Display Spec cannot contain more than 20 sections." };
|
|
34
|
+
}
|
|
35
|
+
const sections = [];
|
|
36
|
+
const seenSpecKeys = new Set();
|
|
37
|
+
for (const candidate of record.sections) {
|
|
38
|
+
if (!candidate || typeof candidate !== "object" || Array.isArray(candidate)) {
|
|
39
|
+
return { error: "Every Display Spec section must be an object." };
|
|
40
|
+
}
|
|
41
|
+
const section = candidate;
|
|
42
|
+
if (typeof section.widget !== "string" || !WIDGETS.has(section.widget)) {
|
|
43
|
+
return { error: `Unknown goal-data widget '${String(section.widget ?? "")}'.` };
|
|
44
|
+
}
|
|
45
|
+
if (section.key !== undefined &&
|
|
46
|
+
(typeof section.key !== "string" || !section.key.trim())) {
|
|
47
|
+
return { error: "A Display Spec section key must be a non-empty string." };
|
|
48
|
+
}
|
|
49
|
+
if (section.label !== undefined && typeof section.label !== "string") {
|
|
50
|
+
return { error: "A Display Spec section label must be a string." };
|
|
51
|
+
}
|
|
52
|
+
const widget = section.widget;
|
|
53
|
+
const key = typeof section.key === "string" ? section.key.trim() : widget;
|
|
54
|
+
if (seenSpecKeys.has(key))
|
|
55
|
+
continue;
|
|
56
|
+
seenSpecKeys.add(key);
|
|
57
|
+
const limit = typeof section.limit === "number" &&
|
|
58
|
+
Number.isInteger(section.limit) &&
|
|
59
|
+
section.limit >= 1 &&
|
|
60
|
+
section.limit <= 50
|
|
61
|
+
? section.limit
|
|
62
|
+
: undefined;
|
|
63
|
+
sections.push({
|
|
64
|
+
widget,
|
|
65
|
+
key,
|
|
66
|
+
...(section.label?.trim() ? { label: section.label.trim() } : {}),
|
|
67
|
+
...(limit ? { limit } : {}),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return { spec: { version: 1, sections } };
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=goalDisplaySpec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goalDisplaySpec.js","sourceRoot":"","sources":["../../../src/task-board/components/goalDisplaySpec.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,SAAS;IACT,SAAS;IACT,OAAO;IACP,iBAAiB;IACjB,OAAO;IACP,gBAAgB;IAChB,QAAQ;IACR,OAAO;IACP,UAAU;IACV,UAAU;CACF,CAAC;AAoBX,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,iBAAiB,CAAC,CAAC;AAEnD,oFAAoF;AACpF,MAAM,UAAU,oBAAoB,CAClC,GAA8B;IAE9B,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAExC,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;IAC1D,CAAC;IACD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,OAAO,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC;IAC7E,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC;IACzE,CAAC;IAED,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5E,OAAO,EAAE,KAAK,EAAE,+CAA+C,EAAE,CAAC;QACpE,CAAC;QACD,MAAM,OAAO,GAAG,SAAoC,CAAC;QACrD,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,OAAO,EAAE,KAAK,EAAE,6BAA6B,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QAClF,CAAC;QACD,IACE,OAAO,CAAC,GAAG,KAAK,SAAS;YACzB,CAAC,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EACxD,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC;QAC7E,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrE,OAAO,EAAE,KAAK,EAAE,gDAAgD,EAAE,CAAC;QACrE,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,GAAG,GACP,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAChE,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACpC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEtB,MAAM,KAAK,GACT,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;YACjC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;YAC/B,OAAO,CAAC,KAAK,IAAI,CAAC;YAClB,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,CAAC,CAAC,OAAO,CAAC,KAAK;YACf,CAAC,CAAC,SAAS,CAAC;QAChB,QAAQ,CAAC,IAAI,CAAC;YACZ,MAAM;YACN,GAAG;YACH,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type GoalRefreshScope = {
|
|
2
|
+
projectId: string;
|
|
3
|
+
includeDescendants: boolean;
|
|
4
|
+
};
|
|
5
|
+
export declare function goalScopesMatch(left: GoalRefreshScope | null | undefined, right: GoalRefreshScope | null | undefined): boolean;
|
|
6
|
+
export declare function shouldApplyGoalRefresh(responseGeneration: number, latestGeneration: number, responseScope: GoalRefreshScope, currentScope: GoalRefreshScope): boolean;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function goalScopesMatch(left, right) {
|
|
2
|
+
return (!!left &&
|
|
3
|
+
!!right &&
|
|
4
|
+
left.projectId === right.projectId &&
|
|
5
|
+
left.includeDescendants === right.includeDescendants);
|
|
6
|
+
}
|
|
7
|
+
export function shouldApplyGoalRefresh(responseGeneration, latestGeneration, responseScope, currentScope) {
|
|
8
|
+
return (responseGeneration === latestGeneration &&
|
|
9
|
+
goalScopesMatch(responseScope, currentScope));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=goalRefreshState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goalRefreshState.js","sourceRoot":"","sources":["../../src/task-board/goalRefreshState.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,eAAe,CAC7B,IAAyC,EACzC,KAA0C;IAE1C,OAAO,CACL,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,KAAK;QACP,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;QAClC,IAAI,CAAC,kBAAkB,KAAK,KAAK,CAAC,kBAAkB,CACrD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,kBAA0B,EAC1B,gBAAwB,EACxB,aAA+B,EAC/B,YAA8B;IAE9B,OAAO,CACL,kBAAkB,KAAK,gBAAgB;QACvC,eAAe,CAAC,aAAa,EAAE,YAAY,CAAC,CAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export type GoalTaskNavigationIntent = {
|
|
2
|
+
projectId: string;
|
|
3
|
+
taskId: string;
|
|
4
|
+
requiredGeneration: number;
|
|
5
|
+
};
|
|
6
|
+
export type GoalTaskNavigationOutcome = {
|
|
7
|
+
kind: "none";
|
|
8
|
+
} | {
|
|
9
|
+
kind: "select";
|
|
10
|
+
taskId: string;
|
|
11
|
+
} | {
|
|
12
|
+
kind: "missing";
|
|
13
|
+
} | {
|
|
14
|
+
kind: "load";
|
|
15
|
+
projectId: string;
|
|
16
|
+
switchProject: boolean;
|
|
17
|
+
refresh: boolean;
|
|
18
|
+
};
|
|
19
|
+
export type GoalTaskNavigationState = {
|
|
20
|
+
pending: GoalTaskNavigationIntent | null;
|
|
21
|
+
outcome: GoalTaskNavigationOutcome;
|
|
22
|
+
};
|
|
23
|
+
export type GoalTaskNavigationAction = {
|
|
24
|
+
type: "request";
|
|
25
|
+
projectId: string;
|
|
26
|
+
taskId: string;
|
|
27
|
+
currentProjectId: string | null;
|
|
28
|
+
currentTaskIds: string[];
|
|
29
|
+
inFlightGeneration?: number;
|
|
30
|
+
latestIssuedGeneration: number;
|
|
31
|
+
} | {
|
|
32
|
+
type: "projectSelected";
|
|
33
|
+
projectId: string | null;
|
|
34
|
+
} | {
|
|
35
|
+
type: "tasksLoaded";
|
|
36
|
+
projectId: string;
|
|
37
|
+
generation: number;
|
|
38
|
+
taskIds: string[];
|
|
39
|
+
} | {
|
|
40
|
+
type: "cancel";
|
|
41
|
+
};
|
|
42
|
+
export declare const initialGoalTaskNavigationState: GoalTaskNavigationState;
|
|
43
|
+
export declare function reduceGoalTaskNavigation(state: GoalTaskNavigationState, action: GoalTaskNavigationAction): GoalTaskNavigationState;
|