@parhelia/core 0.4.12818 → 0.4.12825

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 (197) hide show
  1. package/dist/config/config.js +3 -0
  2. package/dist/config/config.js.map +1 -1
  3. package/dist/editor/ai/AgentStatusBadge.js +11 -9
  4. package/dist/editor/ai/AgentStatusBadge.js.map +1 -1
  5. package/dist/editor/ai/Agents.js +2 -2
  6. package/dist/editor/ai/Agents.js.map +1 -1
  7. package/dist/editor/ai/agentDiagnostics.d.ts +1 -1
  8. package/dist/editor/ai/agentDiagnostics.js +8 -0
  9. package/dist/editor/ai/agentDiagnostics.js.map +1 -1
  10. package/dist/editor/ai/terminal/agentSessionSnapshot.d.ts +15 -0
  11. package/dist/editor/ai/terminal/agentSessionSnapshot.js +103 -3
  12. package/dist/editor/ai/terminal/agentSessionSnapshot.js.map +1 -1
  13. package/dist/editor/ai/terminal/agentSessionState.js +5 -1
  14. package/dist/editor/ai/terminal/agentSessionState.js.map +1 -1
  15. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js +5 -5
  16. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js.map +1 -1
  17. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +1 -1
  18. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js.map +1 -1
  19. package/dist/editor/ai/terminal/components/AgentSkillSettingsSection.js +2 -2
  20. package/dist/editor/ai/terminal/components/AgentSkillSettingsSection.js.map +1 -1
  21. package/dist/editor/ai/terminal/components/AiResponseMessage.js +8 -7
  22. package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
  23. package/dist/editor/ai/terminal/components/ContextInfoBar.js +1 -1
  24. package/dist/editor/ai/terminal/components/ContextInfoBar.js.map +1 -1
  25. package/dist/editor/ai/terminal/useAgentEditorContext.js +13 -3
  26. package/dist/editor/ai/terminal/useAgentEditorContext.js.map +1 -1
  27. package/dist/editor/ai/terminal/useAgentOperationHistoryLoader.js +5 -1
  28. package/dist/editor/ai/terminal/useAgentOperationHistoryLoader.js.map +1 -1
  29. package/dist/editor/ai/terminal/useAgentOperationSocketHandler.js +33 -1
  30. package/dist/editor/ai/terminal/useAgentOperationSocketHandler.js.map +1 -1
  31. package/dist/editor/ai/terminal/useAgentServerReconciler.js +11 -0
  32. package/dist/editor/ai/terminal/useAgentServerReconciler.js.map +1 -1
  33. package/dist/editor/ai/terminal/useAgentSubmitHandlers.d.ts +1 -0
  34. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js +6 -2
  35. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js.map +1 -1
  36. package/dist/editor/ai/terminal/useAgentTerminalController.js +4 -0
  37. package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
  38. package/dist/editor/bridge/protocol.d.ts +5 -0
  39. package/dist/editor/bridge/protocol.js.map +1 -1
  40. package/dist/editor/client/EditorShell.js +4 -3
  41. package/dist/editor/client/EditorShell.js.map +1 -1
  42. package/dist/editor/client/hooks/useSocketMessageHandler.js +3 -1
  43. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  44. package/dist/editor/client/operations.js +34 -2
  45. package/dist/editor/client/operations.js.map +1 -1
  46. package/dist/editor/commands/commands.d.ts +6 -0
  47. package/dist/editor/commands/commands.js.map +1 -1
  48. package/dist/editor/field-types/RichTextEditorComponent.js +10 -1
  49. package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
  50. package/dist/editor/field-types/richtext/components/ReactSlate.js +8 -2
  51. package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
  52. package/dist/editor/field-types/useFormFieldCaretPresence.js +1 -0
  53. package/dist/editor/field-types/useFormFieldCaretPresence.js.map +1 -1
  54. package/dist/editor/find-replace/FindReplacePanel.d.ts +11 -0
  55. package/dist/editor/find-replace/FindReplacePanel.js +311 -0
  56. package/dist/editor/find-replace/FindReplacePanel.js.map +1 -0
  57. package/dist/editor/find-replace/findReplaceCommand.d.ts +8 -0
  58. package/dist/editor/find-replace/findReplaceCommand.js +25 -0
  59. package/dist/editor/find-replace/findReplaceCommand.js.map +1 -0
  60. package/dist/editor/find-replace/findReplaceMatches.d.ts +42 -0
  61. package/dist/editor/find-replace/findReplaceMatches.js +66 -0
  62. package/dist/editor/find-replace/findReplaceMatches.js.map +1 -0
  63. package/dist/editor/find-replace/findReplaceStore.d.ts +30 -0
  64. package/dist/editor/find-replace/findReplaceStore.js +61 -0
  65. package/dist/editor/find-replace/findReplaceStore.js.map +1 -0
  66. package/dist/editor/find-replace/findReplaceTargets.d.ts +49 -0
  67. package/dist/editor/find-replace/findReplaceTargets.js +110 -0
  68. package/dist/editor/find-replace/findReplaceTargets.js.map +1 -0
  69. package/dist/editor/find-replace/findReplaceText.d.ts +50 -0
  70. package/dist/editor/find-replace/findReplaceText.js +189 -0
  71. package/dist/editor/find-replace/findReplaceText.js.map +1 -0
  72. package/dist/editor/menubar/ActiveUsers.js +1 -1
  73. package/dist/editor/menubar/ActiveUsers.js.map +1 -1
  74. package/dist/editor/menubar/ToolbarFactory.js +9 -1
  75. package/dist/editor/menubar/ToolbarFactory.js.map +1 -1
  76. package/dist/editor/menubar/VersionSelector.js +2 -2
  77. package/dist/editor/menubar/VersionSelector.js.map +1 -1
  78. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.d.ts +6 -0
  79. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js +31 -0
  80. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js.map +1 -0
  81. package/dist/editor/menubar/toolbar-sections/index.d.ts +1 -0
  82. package/dist/editor/menubar/toolbar-sections/index.js +1 -0
  83. package/dist/editor/menubar/toolbar-sections/index.js.map +1 -1
  84. package/dist/editor/page-editor-chrome/FieldActionIndicator.js +8 -4
  85. package/dist/editor/page-editor-chrome/FieldActionIndicator.js.map +1 -1
  86. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.d.ts +11 -0
  87. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js +117 -0
  88. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js.map +1 -0
  89. package/dist/editor/page-editor-chrome/PageEditorChrome.js +2 -1
  90. package/dist/editor/page-editor-chrome/PageEditorChrome.js.map +1 -1
  91. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js +8 -1
  92. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js.map +1 -1
  93. package/dist/editor/page-viewer/MiniMap.d.ts +6 -2
  94. package/dist/editor/page-viewer/MiniMap.js +139 -21
  95. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  96. package/dist/editor/page-viewer/PageViewerFrame.js +21 -5
  97. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  98. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.d.ts +6 -0
  99. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js +19 -1
  100. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js.map +1 -1
  101. package/dist/editor/page-viewer/minimapViewport.d.ts +2 -0
  102. package/dist/editor/page-viewer/minimapViewport.js +31 -0
  103. package/dist/editor/page-viewer/minimapViewport.js.map +1 -0
  104. package/dist/editor/reviews/CommentEditor.js +34 -29
  105. package/dist/editor/reviews/CommentEditor.js.map +1 -1
  106. package/dist/editor/reviews/CommentImageAttachments.d.ts +12 -0
  107. package/dist/editor/reviews/CommentImageAttachments.js +19 -0
  108. package/dist/editor/reviews/CommentImageAttachments.js.map +1 -0
  109. package/dist/editor/reviews/SuggestionDisplayPopover.d.ts +3 -1
  110. package/dist/editor/reviews/SuggestionDisplayPopover.js +7 -2
  111. package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
  112. package/dist/editor/reviews/commentAgentAttachments.d.ts +5 -0
  113. package/dist/editor/reviews/commentAgentAttachments.js +51 -0
  114. package/dist/editor/reviews/commentAgentAttachments.js.map +1 -0
  115. package/dist/editor/reviews/commentAi.d.ts +4 -2
  116. package/dist/editor/reviews/commentAi.js +19 -12
  117. package/dist/editor/reviews/commentAi.js.map +1 -1
  118. package/dist/editor/reviews/useCommentImagePaste.d.ts +41 -14
  119. package/dist/editor/reviews/useCommentImagePaste.js +102 -63
  120. package/dist/editor/reviews/useCommentImagePaste.js.map +1 -1
  121. package/dist/editor/services/agentStatus.d.ts +1 -0
  122. package/dist/editor/services/agentStatus.js +14 -0
  123. package/dist/editor/services/agentStatus.js.map +1 -1
  124. package/dist/editor/settings/index/RecentBatchesList.js +2 -1
  125. package/dist/editor/settings/index/RecentBatchesList.js.map +1 -1
  126. package/dist/editor/sidebar/ComponentTree.js +6 -3
  127. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  128. package/dist/editor/sidebar/OperationItem.js +2 -1
  129. package/dist/editor/sidebar/OperationItem.js.map +1 -1
  130. package/dist/editor/sidebar/liveComponentThumbnails.d.ts +6 -2
  131. package/dist/editor/sidebar/liveComponentThumbnails.js +7 -2
  132. package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -1
  133. package/dist/editor/ui/ParheliaMark.d.ts +15 -0
  134. package/dist/editor/ui/ParheliaMark.js +12 -0
  135. package/dist/editor/ui/ParheliaMark.js.map +1 -0
  136. package/dist/editor/undoEligibility.d.ts +2 -0
  137. package/dist/editor/undoEligibility.js +8 -0
  138. package/dist/editor/undoEligibility.js.map +1 -0
  139. package/dist/editor/utils/keyboardNavigation.js +16 -0
  140. package/dist/editor/utils/keyboardNavigation.js.map +1 -1
  141. package/dist/index.d.ts +1 -0
  142. package/dist/index.js +1 -0
  143. package/dist/index.js.map +1 -1
  144. package/dist/lib/utils.d.ts +5 -0
  145. package/dist/lib/utils.js +7 -0
  146. package/dist/lib/utils.js.map +1 -1
  147. package/dist/revision.d.ts +2 -2
  148. package/dist/revision.js +2 -2
  149. package/dist/splash-screen/ModernSplashScreen.js +4 -3
  150. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  151. package/dist/splash-screen/RecentPages.js +3 -3
  152. package/dist/splash-screen/RecentPages.js.map +1 -1
  153. package/dist/task-board/TaskBoardWorkspace.js +179 -33
  154. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  155. package/dist/task-board/components/AttentionPromptDialog.d.ts +13 -0
  156. package/dist/task-board/components/AttentionPromptDialog.js +45 -0
  157. package/dist/task-board/components/AttentionPromptDialog.js.map +1 -0
  158. package/dist/task-board/components/GoalDataView.d.ts +22 -1
  159. package/dist/task-board/components/GoalDataView.js +63 -17
  160. package/dist/task-board/components/GoalDataView.js.map +1 -1
  161. package/dist/task-board/components/GoalFindingsTable.d.ts +43 -0
  162. package/dist/task-board/components/GoalFindingsTable.js +160 -0
  163. package/dist/task-board/components/GoalFindingsTable.js.map +1 -0
  164. package/dist/task-board/components/GoalsMatrix.js +33 -6
  165. package/dist/task-board/components/GoalsMatrix.js.map +1 -1
  166. package/dist/task-board/components/IssuePanel.d.ts +31 -0
  167. package/dist/task-board/components/IssuePanel.js +268 -0
  168. package/dist/task-board/components/IssuePanel.js.map +1 -0
  169. package/dist/task-board/components/ProjectGoalsPanel.js +66 -13
  170. package/dist/task-board/components/ProjectGoalsPanel.js.map +1 -1
  171. package/dist/task-board/components/SubgoalFindings.d.ts +40 -0
  172. package/dist/task-board/components/SubgoalFindings.js +88 -0
  173. package/dist/task-board/components/SubgoalFindings.js.map +1 -0
  174. package/dist/task-board/components/TaskAgentPanel.d.ts +2 -0
  175. package/dist/task-board/components/TaskAgentPanel.js +5 -4
  176. package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
  177. package/dist/task-board/components/TaskDetailPanel.js +8 -12
  178. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  179. package/dist/task-board/components/WizardCommunicationCenter.d.ts +2 -0
  180. package/dist/task-board/components/WizardCommunicationCenter.js +5 -3
  181. package/dist/task-board/components/WizardCommunicationCenter.js.map +1 -1
  182. package/dist/task-board/components/WizardCommunicationShared.js +2 -1
  183. package/dist/task-board/components/WizardCommunicationShared.js.map +1 -1
  184. package/dist/task-board/components/WizardTask.d.ts +2 -0
  185. package/dist/task-board/components/WizardTask.js +2 -2
  186. package/dist/task-board/components/WizardTask.js.map +1 -1
  187. package/dist/task-board/components/WizardTaskDetailsPanel.d.ts +4 -0
  188. package/dist/task-board/components/WizardTaskDetailsPanel.js +16 -3
  189. package/dist/task-board/components/WizardTaskDetailsPanel.js.map +1 -1
  190. package/dist/task-board/services/issueService.d.ts +193 -0
  191. package/dist/task-board/services/issueService.js +97 -0
  192. package/dist/task-board/services/issueService.js.map +1 -0
  193. package/dist/task-board/types.d.ts +24 -0
  194. package/dist/task-board/utils/projectDashboardModel.js +8 -0
  195. package/dist/task-board/utils/projectDashboardModel.js.map +1 -1
  196. package/package.json +1 -1
  197. package/styles.css +57 -3
@@ -1,9 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useMemo, useState } from "react";
3
3
  import { toast } from "sonner";
4
- import { Popover, PopoverContent, PopoverTrigger } from "../../components/ui/popover";
4
+ import { Popover, PopoverContent, PopoverTrigger, } from "../../components/ui/popover";
5
5
  import { Select } from "../../components/ui/select";
6
6
  import { updateSubgoal } from "../services/goalService";
7
+ import { SubgoalFindingsBadge, describeSubgoalFindings, readSubgoalFindings, } from "./SubgoalFindings";
7
8
  import { SubgoalStatusIcon } from "./SubgoalStatusIcon";
8
9
  const MAX_GOALS = 30;
9
10
  const MAX_ROWS = 200;
@@ -17,6 +18,9 @@ const STATUS_OPTIONS = [
17
18
  function normalizedLanguage(value) {
18
19
  return value?.trim().toLowerCase() || "none";
19
20
  }
21
+ function pathSegments(path) {
22
+ return path?.split("/").filter(Boolean) ?? [];
23
+ }
20
24
  function canEdit(permission) {
21
25
  return permission === "Owner" || permission === "Editor";
22
26
  }
@@ -75,8 +79,12 @@ export function GoalsMatrix(props) {
75
79
  const allRows = Array.from(rowsByKey.values()).sort((a, b) => (a.path ?? a.itemId).localeCompare(b.path ?? b.itemId) ||
76
80
  a.language.localeCompare(b.language));
77
81
  const languageCounts = new Map();
82
+ const leafCounts = new Map();
78
83
  for (const row of allRows) {
79
84
  languageCounts.set(row.itemId, (languageCounts.get(row.itemId) ?? 0) + 1);
85
+ const leaf = pathSegments(row.path).at(-1);
86
+ if (leaf)
87
+ leafCounts.set(leaf, (leafCounts.get(leaf) ?? 0) + 1);
80
88
  }
81
89
  return {
82
90
  columns,
@@ -86,6 +94,7 @@ export function GoalsMatrix(props) {
86
94
  omittedRows: Math.max(0, allRows.length - MAX_ROWS),
87
95
  unboundSubgoals,
88
96
  languageCounts,
97
+ leafCounts,
89
98
  };
90
99
  }, [goals, projectLabels]);
91
100
  return (_jsxs("div", { "data-testid": "taskboard-goals-matrix", className: "min-w-0 overflow-auto", children: [_jsxs("table", { className: "border-border-default min-w-max border-separate border-spacing-0 text-xs", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { className: "border-border-default bg-neutral-grey-5 sticky top-0 left-0 z-30 min-w-56 border-r border-b p-2 text-left", children: "Page" }), model.columns.map((goal) => {
@@ -93,24 +102,37 @@ export function GoalsMatrix(props) {
93
102
  return (_jsx("th", { title: label, className: "border-border-default bg-neutral-grey-5 sticky top-0 z-20 w-36 max-w-36 border-r border-b p-2 text-left font-medium", children: _jsx("span", { className: "block truncate", children: label }) }, goal.goalId));
94
103
  })] }) }), _jsxs("tbody", { children: [model.rows.map((row) => {
95
104
  const fullLabel = row.path || row.itemId;
96
- const shortLabel = row.path?.split("/").filter(Boolean).at(-1) ?? row.itemId.slice(0, 8);
105
+ const segments = pathSegments(row.path);
106
+ const leaf = segments.at(-1);
107
+ // Pages named like their siblings ("01-default" under every
108
+ // component folder) keep their parent folder so rows stay distinct.
109
+ const shortLabel = leaf
110
+ ? (model.leafCounts.get(leaf) ?? 0) > 1 && segments.length > 1
111
+ ? segments.slice(-2).join("/")
112
+ : leaf
113
+ : row.itemId.slice(0, 8);
97
114
  const showLanguage = (model.languageCounts.get(row.itemId) ?? 0) > 1;
98
- return (_jsxs("tr", { "data-testid": `taskboard-goals-matrix-row-${row.itemId}-${row.language}`, children: [_jsx("th", { className: "border-border-default bg-white sticky left-0 z-10 border-r border-b p-2 text-left font-normal", children: onOpenItem ? (_jsxs("button", { type: "button", title: fullLabel, "aria-label": `Open ${fullLabel}`, className: "text-feedback-blue block max-w-52 truncate hover:underline", onClick: () => onOpenItem({
115
+ return (_jsxs("tr", { "data-testid": `taskboard-goals-matrix-row-${row.itemId}-${row.language}`, children: [_jsx("th", { className: "border-border-default sticky left-0 z-10 border-r border-b bg-white p-2 text-left font-normal", children: onOpenItem ? (_jsxs("button", { type: "button", title: fullLabel, "aria-label": `Open ${fullLabel}`, className: "text-feedback-blue block max-w-52 truncate hover:underline", onClick: () => onOpenItem({
99
116
  itemId: row.itemId,
100
117
  language: row.language === "none" ? null : row.language,
101
118
  }), children: [shortLabel, showLanguage ? ` · ${row.language}` : ""] })) : (_jsxs("span", { title: fullLabel, className: "block max-w-52 truncate", children: [shortLabel, showLanguage ? ` · ${row.language}` : ""] })) }), model.columns.map((goal) => {
102
119
  const subgoal = row.cells.get(goal.goalId);
103
120
  return (_jsx("td", { "data-testid": `taskboard-goals-matrix-cell-${goal.goalId}-${row.itemId}-${row.language}`, className: "border-border-default border-r border-b p-2 text-center", children: subgoal ? (_jsx(MatrixCell, { goal: goal, subgoal: subgoal, itemLabel: fullLabel, editable: canEdit(permissionFor(permissions, goal.projectId)), onOpenItem: onOpenItem, onChanged: onChanged })) : (_jsx("span", { className: "text-neutral-grey-50", children: "\u2014" })) }, goal.goalId));
104
121
  })] }, row.key));
105
- }), _jsxs("tr", { children: [_jsx("th", { className: "border-border-default bg-neutral-grey-5 sticky left-0 z-10 border-r border-b p-2 text-left font-medium", children: "Goal status" }), model.columns.map((goal) => (_jsx("td", { className: "border-border-default bg-neutral-grey-5 border-r border-b p-2 text-center", children: goal.status }, goal.goalId)))] })] })] }), _jsxs("div", { className: "text-neutral-grey-50 mt-2 flex flex-wrap gap-3 text-[11px]", children: [model.omittedRows > 0 ? _jsxs("span", { children: ["+", model.omittedRows, " rows omitted"] }) : null, model.omittedGoals > 0 ? _jsxs("span", { children: ["+", model.omittedGoals, " goals omitted"] }) : null, model.unboundSubgoals > 0 ? _jsxs("span", { children: [model.unboundSubgoals, " unbound subgoals are not shown"] }) : null] })] }));
122
+ }), _jsxs("tr", { children: [_jsx("th", { className: "border-border-default bg-neutral-grey-5 sticky left-0 z-10 border-r border-b p-2 text-left font-medium", children: "Goal status" }), model.columns.map((goal) => (_jsx("td", { className: "border-border-default bg-neutral-grey-5 border-r border-b p-2 text-center", children: goal.status }, goal.goalId)))] })] })] }), _jsxs("div", { className: "text-neutral-grey-50 mt-2 flex flex-wrap gap-3 text-[11px]", children: [model.omittedRows > 0 ? (_jsxs("span", { children: ["+", model.omittedRows, " rows omitted"] })) : null, model.omittedGoals > 0 ? (_jsxs("span", { children: ["+", model.omittedGoals, " goals omitted"] })) : null, model.unboundSubgoals > 0 ? (_jsxs("span", { children: [model.unboundSubgoals, " unbound subgoals are not shown"] })) : null] })] }));
106
123
  }
107
124
  function MatrixCell(props) {
108
125
  const { goal, subgoal, itemLabel, editable, onOpenItem, onChanged } = props;
109
126
  const [busy, setBusy] = useState(false);
127
+ const findings = readSubgoalFindings(subgoal.data, subgoal.issueSummary, goal.issuesEnabled);
128
+ const findingsLabel = findings ? describeSubgoalFindings(findings) : null;
110
129
  const changeStatus = async (status) => {
111
130
  setBusy(true);
112
131
  try {
113
- const result = await updateSubgoal({ subgoalId: subgoal.subgoalId, status });
132
+ const result = await updateSubgoal({
133
+ subgoalId: subgoal.subgoalId,
134
+ status,
135
+ });
114
136
  if (result.type !== "success") {
115
137
  toast.error(result.summary || "Failed to update subgoal");
116
138
  return;
@@ -121,7 +143,12 @@ function MatrixCell(props) {
121
143
  setBusy(false);
122
144
  }
123
145
  };
124
- return (_jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx("button", { type: "button", "aria-label": `${goal.title}, ${itemLabel}, ${subgoal.status}`, className: "inline-flex rounded p-1 hover:bg-neutral-grey-5", children: _jsx(SubgoalStatusIcon, { status: subgoal.status }) }) }), _jsxs(PopoverContent, { className: "w-64", align: "start", children: [_jsx("div", { className: "text-neutral-grey-100 text-sm font-medium", children: subgoal.title || itemLabel }), _jsx("div", { className: "mt-3", children: editable ? (_jsx(Select, { value: subgoal.status, onValueChange: changeStatus, options: STATUS_OPTIONS, disabled: busy })) : (_jsx("div", { className: "text-neutral-grey-50 text-xs", children: subgoal.status })) }), subgoal.targetItemId && onOpenItem ? (_jsx("button", { type: "button", className: "text-feedback-blue mt-3 text-xs hover:underline", onClick: () => onOpenItem({
146
+ return (_jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("button", { type: "button", "aria-label": [
147
+ goal.title,
148
+ itemLabel,
149
+ subgoal.status,
150
+ ...(findingsLabel ? [findingsLabel] : []),
151
+ ].join(", "), className: "hover:bg-neutral-grey-5 inline-flex items-center gap-1 rounded p-1", children: [_jsx(SubgoalStatusIcon, { status: subgoal.status }), _jsx(SubgoalFindingsBadge, { summary: subgoal.issueSummary, data: subgoal.data, issuesEnabled: goal.issuesEnabled })] }) }), _jsxs(PopoverContent, { className: "w-64", align: "start", children: [_jsx("div", { className: "text-neutral-grey-100 text-sm font-medium", children: subgoal.title || itemLabel }), findingsLabel ? (_jsx("div", { className: "text-neutral-grey-50 mt-1 text-xs", children: findingsLabel })) : null, _jsx("div", { className: "mt-3", children: editable ? (_jsx(Select, { value: subgoal.status, onValueChange: changeStatus, options: STATUS_OPTIONS, disabled: busy })) : (_jsx("div", { className: "text-neutral-grey-50 text-xs", children: subgoal.status })) }), subgoal.targetItemId && onOpenItem ? (_jsx("button", { type: "button", className: "text-feedback-blue mt-3 text-xs hover:underline", onClick: () => onOpenItem({
125
152
  itemId: subgoal.targetItemId,
126
153
  language: subgoal.targetItemLanguage,
127
154
  }), children: "Open item" })) : null] })] }));
@@ -1 +1 @@
1
- {"version":3,"file":"GoalsMatrix.js","sourceRoot":"","sources":["../../../src/task-board/components/GoalsMatrix.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GoalsMatrix.js","sourceRoot":"","sources":["../../../src/task-board/components/GoalsMatrix.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type Issue, type QaCheck } from "../services/issueService";
2
+ export type IssuePanelSubgoal = {
3
+ subgoalId: string;
4
+ title: string;
5
+ targetItemId?: string | null;
6
+ targetItemLanguage?: string | null;
7
+ targetItemPath?: string | null;
8
+ };
9
+ type Props = {
10
+ goalId: string;
11
+ revision?: number;
12
+ scopeVersion?: string;
13
+ canEdit: boolean;
14
+ actionsEnabled?: boolean;
15
+ qaEnabled?: boolean;
16
+ /** Page subgoals offered as subjects when a human adds an issue by hand. */
17
+ subgoals?: IssuePanelSubgoal[];
18
+ onChanged: () => void;
19
+ onRequestReview?: (issues: Issue[]) => void;
20
+ /** Creates a review task asking an agent to run the check again; the UI never starts a generation itself. */
21
+ onRequestRecheck?: (check: QaCheck) => void;
22
+ onOpenItem?: (ref: {
23
+ itemId: string;
24
+ language?: string | null;
25
+ }) => void;
26
+ onSelectTask?: (ref: {
27
+ taskId: string;
28
+ }) => void;
29
+ };
30
+ export declare function IssuePanel({ goalId, revision, scopeVersion, canEdit, actionsEnabled, qaEnabled, subgoals, onChanged, onRequestReview, onRequestRecheck, onOpenItem, onSelectTask, }: Props): import("react").JSX.Element;
31
+ export {};
@@ -0,0 +1,268 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from "react";
3
+ import { Button } from "../../components/ui/button";
4
+ import { Input } from "../../components/ui/input";
5
+ import { abandonQaCheck, createIssueTasks, createIssues, exportIssues, issueHistory, issueQuery, IssueRequestError, listIssues, listQaChecks, updateIssues, } from "../services/issueService";
6
+ const SEVERITIES = ["critical", "high", "medium", "low", "info"];
7
+ const emptyDraft = {
8
+ title: "",
9
+ severity: "medium",
10
+ subgoalId: "",
11
+ label: "",
12
+ suggestion: "",
13
+ };
14
+ export function IssuePanel({ goalId, revision, scopeVersion, canEdit, actionsEnabled, qaEnabled, subgoals, onChanged, onRequestReview, onRequestRecheck, onOpenItem, onSelectTask, }) {
15
+ const [data, setData] = useState();
16
+ const [page, setPage] = useState(1);
17
+ const [search, setSearch] = useState("");
18
+ const [disposition, setDisposition] = useState("");
19
+ const [severity, setSeverity] = useState("");
20
+ const [selected, setSelected] = useState([]);
21
+ const [error, setError] = useState("");
22
+ const [busy, setBusy] = useState(false);
23
+ const [refresh, setRefresh] = useState(0);
24
+ const [decision, setDecision] = useState("");
25
+ const [reason, setReason] = useState("");
26
+ const [preview, setPreview] = useState();
27
+ const [history, setHistory] = useState();
28
+ const [checks, setChecks] = useState([]);
29
+ const [checkWarnings, setCheckWarnings] = useState([]);
30
+ const [checkPage, setCheckPage] = useState(1);
31
+ const [moreChecks, setMoreChecks] = useState(false);
32
+ const [abandoning, setAbandoning] = useState();
33
+ const [abandonReason, setAbandonReason] = useState("");
34
+ const [adding, setAdding] = useState(false);
35
+ const [draft, setDraft] = useState(emptyDraft);
36
+ const request = useRef(0);
37
+ const query = { goalId, page, limit: 50, search, disposition, severity };
38
+ useEffect(() => {
39
+ const token = ++request.current;
40
+ setSelected([]);
41
+ setData(undefined);
42
+ listIssues({ goalId, page, limit: 50, search, disposition, severity })
43
+ .then((result) => {
44
+ if (token === request.current) {
45
+ setData(result);
46
+ setError("");
47
+ }
48
+ })
49
+ .catch((e) => {
50
+ if (token === request.current)
51
+ setError(e.message);
52
+ });
53
+ return () => {
54
+ request.current++;
55
+ };
56
+ }, [goalId, revision, page, search, disposition, severity, refresh]);
57
+ useEffect(() => {
58
+ if (!qaEnabled)
59
+ return;
60
+ let active = true;
61
+ listQaChecks(goalId, checkPage)
62
+ .then((result) => {
63
+ if (active) {
64
+ setChecks(result.checks);
65
+ setMoreChecks(result.hasMore);
66
+ setCheckWarnings(result.warnings ?? []);
67
+ }
68
+ })
69
+ .catch((e) => {
70
+ if (active)
71
+ setError(e.message);
72
+ });
73
+ return () => {
74
+ active = false;
75
+ };
76
+ }, [goalId, qaEnabled, revision, scopeVersion, refresh, checkPage]);
77
+ const rows = (data?.issues || []).filter((i) => selected.includes(i.issueId));
78
+ const selections = rows.map((i) => ({
79
+ issueId: i.issueId,
80
+ version: i.version,
81
+ }));
82
+ const changed = () => {
83
+ setRefresh((n) => n + 1);
84
+ onChanged();
85
+ };
86
+ const run = async (action) => {
87
+ setBusy(true);
88
+ setError("");
89
+ try {
90
+ await action();
91
+ }
92
+ catch (e) {
93
+ if (e instanceof IssueRequestError && e.conflict) {
94
+ // The server answered with the current issues: show them, drop every
95
+ // stale intent (selection, pending decision, task preview), reload.
96
+ const fresh = e.conflict.issues ?? [];
97
+ setData((current) => current && {
98
+ ...current,
99
+ issues: current.issues.map((issue) => fresh.find((f) => f.issueId === issue.issueId) ?? issue),
100
+ });
101
+ setPreview(undefined);
102
+ setDecision("");
103
+ setReason("");
104
+ setSelected([]);
105
+ setError(e.message);
106
+ changed();
107
+ }
108
+ else {
109
+ setError(e instanceof Error ? e.message : String(e));
110
+ }
111
+ }
112
+ finally {
113
+ setBusy(false);
114
+ }
115
+ };
116
+ const apply = () => run(async () => {
117
+ await updateIssues(selections, decision, reason || undefined);
118
+ setDecision("");
119
+ setReason("");
120
+ changed();
121
+ });
122
+ const prepare = (groupBySubject) => run(async () => {
123
+ const eligible = rows.filter((i) => ["Open", "AwaitingConfirmation"].includes(i.disposition) &&
124
+ !i.taskLinks.some((l) => l.active));
125
+ if (!eligible.length)
126
+ throw new Error("Select unresolved issues without an active task.");
127
+ const groups = new Map();
128
+ for (const issue of eligible) {
129
+ const key = groupBySubject
130
+ ? issue.subjectType + issue.subjectKey
131
+ : issue.issueId;
132
+ groups.set(key, [...(groups.get(key) || []), issue]);
133
+ }
134
+ const bundles = [...groups.values()].map((group) => ({
135
+ title: (group.length === 1
136
+ ? group[0].title
137
+ : `Resolve ${group.length} issues: ${group[0].subjectLabel || group[0].subjectKey}`).slice(0, 255),
138
+ description: group
139
+ .map((i) => `${i.title}\n${i.suggestion || ""}\nSubject: ${i.subjectLabel || i.subjectKey}\nIssue: ${i.issueId}`)
140
+ .join("\n\n"),
141
+ priority: group.some((i) => ["critical", "high"].includes(i.severity))
142
+ ? "High"
143
+ : "Medium",
144
+ issues: group.map((i) => ({ issueId: i.issueId, version: i.version })),
145
+ }));
146
+ const operationKey = crypto.randomUUID();
147
+ await createIssueTasks(goalId, operationKey, bundles, true);
148
+ setPreview({
149
+ operationKey,
150
+ bundles,
151
+ issueRevision: data?.issueRevision ?? 0,
152
+ });
153
+ });
154
+ const submitDraft = () => run(async () => {
155
+ const subgoal = subgoals?.find((s) => s.subgoalId === draft.subgoalId);
156
+ const label = draft.label.trim();
157
+ if (!draft.title.trim())
158
+ throw new Error("Give the issue a title.");
159
+ if (!subgoal && !label)
160
+ throw new Error("Choose a page or describe the subject.");
161
+ const issue = {
162
+ title: draft.title.trim(),
163
+ severity: draft.severity,
164
+ suggestion: draft.suggestion.trim() || undefined,
165
+ categoryKey: "manual",
166
+ categoryTitle: "Manual",
167
+ subgoalId: subgoal?.subgoalId,
168
+ subjectLabel: label || subgoal?.targetItemPath || subgoal?.title,
169
+ ...(subgoal?.targetItemId && subgoal.targetItemLanguage
170
+ ? {
171
+ subjectType: "SitecoreItem",
172
+ targetItemId: subgoal.targetItemId,
173
+ language: subgoal.targetItemLanguage,
174
+ }
175
+ : {
176
+ subjectType: "Local",
177
+ subjectKey: (label || subgoal?.title || "").slice(0, 255),
178
+ }),
179
+ };
180
+ await createIssues(goalId, [issue]);
181
+ setDraft(emptyDraft);
182
+ setAdding(false);
183
+ changed();
184
+ });
185
+ const download = (csv) => {
186
+ const url = URL.createObjectURL(new Blob([csv], { type: "text/csv;charset=utf-8" }));
187
+ const anchor = document.createElement("a");
188
+ anchor.href = url;
189
+ anchor.download = "issues.csv";
190
+ anchor.click();
191
+ URL.revokeObjectURL(url);
192
+ };
193
+ const previewStale = preview !== undefined && preview.issueRevision !== data?.issueRevision;
194
+ return (_jsxs("section", { className: "mt-3 space-y-3 rounded border p-3", "data-testid": "taskboard-issues", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [_jsx("strong", { children: "Issues" }), data && (_jsxs("span", { className: "text-sm", children: [data.totals.open, " open \u00B7 ", data.totals.awaitingConfirmation, " ", "awaiting confirmation \u00B7 ", data.totals.needsHumanReview, " need review \u00B7", " ", data.totals.resolved, " resolved \u00B7 ", data.totals.dismissed, " dismissed"] })), canEdit && (_jsx(Button, { size: "sm", disabled: busy, onClick: () => setAdding((value) => !value), children: adding ? "Close form" : "Add issue" }))] }), data?.consistent === false && (_jsxs("p", { role: "status", "data-testid": "taskboard-issues-inconsistent", className: "text-sm text-amber-700", children: ["Issue counts are changing.", " ", _jsx(Button, { size: "sm", disabled: busy, onClick: changed, children: "Refresh" })] })), error && (_jsxs("div", { role: "alert", className: "text-destructive text-sm", children: [error, " ", _jsx(Button, { size: "sm", onClick: changed, children: "Refresh current state" })] })), adding && canEdit && (_jsxs("form", { "aria-label": "Add issue", className: "space-y-2 rounded border p-3", onSubmit: (e) => {
195
+ e.preventDefault();
196
+ void submitDraft();
197
+ }, children: [_jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Input, { "aria-label": "Issue title", value: draft.title, onChange: (e) => setDraft({ ...draft, title: e.target.value }), placeholder: "What is wrong?", className: "max-w-md" }), _jsx("select", { "aria-label": "New issue severity", value: draft.severity, onChange: (e) => setDraft({ ...draft, severity: e.target.value }), className: "bg-background rounded border p-1", children: SEVERITIES.map((s) => (_jsx("option", { children: s }, s))) })] }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsxs("select", { "aria-label": "Issue subject", value: draft.subgoalId, onChange: (e) => setDraft({ ...draft, subgoalId: e.target.value }), className: "bg-background max-w-md rounded border p-1", children: [_jsx("option", { value: "", children: "Goal-level subject (label below)" }), (subgoals ?? []).map((s) => (_jsx("option", { value: s.subgoalId, children: s.targetItemPath || s.title }, s.subgoalId)))] }), _jsx(Input, { "aria-label": "Subject label", value: draft.label, onChange: (e) => setDraft({ ...draft, label: e.target.value }), placeholder: "Subject label (required without a page)", className: "max-w-xs" })] }), _jsx(Input, { "aria-label": "Suggestion", value: draft.suggestion, onChange: (e) => setDraft({ ...draft, suggestion: e.target.value }), placeholder: "How to fix it (optional)", className: "max-w-md" }), _jsx(Button, { type: "submit", size: "sm", disabled: busy, children: "Create issue" })] })), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Input, { "aria-label": "Search issues", value: search, onChange: (e) => {
198
+ setSearch(e.target.value);
199
+ setPage(1);
200
+ }, placeholder: "Search issues", className: "max-w-xs" }), _jsxs("select", { "aria-label": "Issue disposition", value: disposition, onChange: (e) => {
201
+ setDisposition(e.target.value);
202
+ setPage(1);
203
+ }, className: "bg-background rounded border p-1", children: [_jsx("option", { value: "", children: "Unresolved" }), ["All", "Open", "AwaitingConfirmation", "Resolved", "Dismissed"].map((s) => (_jsx("option", { children: s }, s)))] }), _jsxs("select", { "aria-label": "Issue severity", value: severity, onChange: (e) => {
204
+ setSeverity(e.target.value);
205
+ setPage(1);
206
+ }, className: "bg-background rounded border p-1", children: [_jsx("option", { value: "", children: "All severities" }), SEVERITIES.map((s) => (_jsx("option", { children: s }, s)))] }), _jsx("button", { type: "button", className: "self-center text-sm underline disabled:opacity-50", disabled: busy, "data-href": `/parhelia/tasks/exportIssues?${issueQuery(query)}`, onClick: () => run(async () => download(await exportIssues(query))), children: "Export all matching issues" })] }), !data ? (_jsx("p", { role: "status", children: "Loading issues\u2026" })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full text-left text-sm", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: canEdit && (_jsx("input", { type: "checkbox", "aria-label": "Select visible issues", checked: data.issues.length > 0 &&
207
+ selected.length === data.issues.length, onChange: (e) => setSelected(e.target.checked
208
+ ? data.issues.map((i) => i.issueId)
209
+ : []) })) }), _jsx("th", { children: "Severity / check" }), _jsx("th", { children: "Subject and issue" }), _jsx("th", { children: "Status" }), _jsx("th", { children: "Tasks / history" })] }) }), _jsx("tbody", { children: data.issues.map((issue) => (_jsxs("tr", { className: "border-t align-top", "data-testid": "taskboard-issue-row", children: [_jsx("td", { className: "p-2", children: canEdit && (_jsx("input", { type: "checkbox", "aria-label": `Select ${issue.title}`, checked: selected.includes(issue.issueId), onChange: (e) => setSelected((s) => e.target.checked
210
+ ? [...s, issue.issueId]
211
+ : s.filter((id) => id !== issue.issueId)) })) }), _jsxs("td", { className: "p-2", children: [issue.severity, _jsx("div", { className: "text-muted-foreground text-xs", children: issue.categoryTitle || issue.categoryKey })] }), _jsxs("td", { className: "p-2", children: [_jsx("button", { className: "underline", disabled: !issue.targetItemId || !onOpenItem, onClick: () => issue.targetItemId &&
212
+ onOpenItem?.({
213
+ itemId: issue.targetItemId,
214
+ language: issue.language,
215
+ }), children: issue.subjectLabel || issue.subjectKey }), _jsx("div", { children: issue.title }), issue.suggestion && (_jsx("p", { className: "text-muted-foreground", children: issue.suggestion })), issue.evidence != null && (_jsxs("details", { children: [_jsx("summary", { children: "Evidence" }), _jsx("pre", { className: "max-w-xl whitespace-pre-wrap", children: JSON.stringify(issue.evidence, null, 2) })] }))] }), _jsxs("td", { className: "p-2", children: [issue.disposition === "AwaitingConfirmation"
216
+ ? "Awaiting confirmation"
217
+ : issue.disposition, issue.closureBasis && (_jsxs("div", { className: "text-xs", children: [issue.closureBasis, ": ", issue.closureReason] })), issue.needsHumanReview && (_jsxs("div", { className: "text-amber-700", children: ["Needs review: ", issue.reviewReason] }))] }), _jsxs("td", { className: "p-2", children: [issue.taskLinks.map((link) => (_jsxs("div", { children: [_jsx("button", { disabled: !link.taskId || !onSelectTask, className: "underline", onClick: () => link.taskId &&
218
+ onSelectTask?.({ taskId: link.taskId }), children: link.taskTitle }), " ", link.taskId ? link.taskStatus : "(deleted)", !link.active && link.taskId ? " · retired" : ""] }, link.originalTaskId))), _jsx("button", { className: "underline", onClick: () => run(async () => setHistory({
219
+ title: issue.title,
220
+ rows: (await issueHistory(issue.issueId)).history,
221
+ })), children: "History" })] })] }, issue.issueId))) })] }) }), !data.issues.length && (_jsx("p", { children: "No matching issues. This does not mean all checks passed." })), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Button, { size: "sm", disabled: page === 1, onClick: () => setPage((p) => p - 1), children: "Previous" }), _jsxs("span", { children: ["Page ", page, " \u00B7 ", data.filteredTotals.total, " matching"] }), _jsx(Button, { size: "sm", disabled: !data.hasMore, onClick: () => setPage((p) => p + 1), children: "Next" })] })] })), canEdit && rows.length > 0 && (_jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsxs("span", { children: [rows.length, " selected"] }), onRequestReview &&
222
+ rows.some((i) => i.resolutionMode === "Recheck" || i.needsHumanReview) ? (_jsx(Button, { size: "sm", disabled: busy, onClick: () => onRequestReview(rows), children: "Request recheck or review" })) : null, [
223
+ "Dismiss",
224
+ "Reopen",
225
+ ...(rows.every((i) => i.resolutionMode === "Decision")
226
+ ? ["Resolve"]
227
+ : []),
228
+ ...(rows.every((i) => i.resolutionMode === "Decision" &&
229
+ i.disposition === "AwaitingConfirmation")
230
+ ? ["ConfirmResolved"]
231
+ : []),
232
+ ].map((action) => (_jsx(Button, { "data-testid": action === "ConfirmResolved"
233
+ ? "taskboard-issue-confirm-resolved"
234
+ : undefined, size: "sm", disabled: busy, onClick: () => {
235
+ setDecision(action);
236
+ setReason(action === "ConfirmResolved"
237
+ ? "Task completion confirmed"
238
+ : "");
239
+ }, children: action === "ConfirmResolved" ? "Confirm resolved" : action }, action))), actionsEnabled && (_jsxs(_Fragment, { children: [_jsx(Button, { size: "sm", disabled: busy, onClick: () => prepare(false), children: "One task per issue" }), _jsx(Button, { size: "sm", disabled: busy, onClick: () => prepare(true), children: "Group tasks by subject" })] }))] }), decision && (_jsxs("div", { className: "flex gap-2", children: [_jsx(Input, { "aria-label": "Decision reason", value: reason, onChange: (e) => setReason(e.target.value), placeholder: "Reason for this decision" }), _jsxs(Button, { disabled: busy ||
240
+ (["Dismiss", "Resolve"].includes(decision) && !reason.trim()), onClick: apply, children: ["Apply", " ", decision === "ConfirmResolved"
241
+ ? "confirmation"
242
+ : decision.toLowerCase()] }), _jsx(Button, { onClick: () => setDecision(""), children: "Cancel" })] }))] })), preview && (_jsxs("div", { className: "space-y-2 rounded border p-3", role: "dialog", "aria-label": "Task creation preview", children: [_jsxs("strong", { children: ["Create ", preview.bundles.length, " tasks"] }), preview.bundles.map((bundle, index) => (_jsxs("div", { children: [_jsxs("p", { children: [bundle.title, " \u00B7 ", bundle.priority, " \u00B7 ", bundle.issues.length, " ", "issues"] }), _jsx("pre", { className: "text-xs whitespace-pre-wrap", children: bundle.description })] }, index))), previewStale && (_jsx("p", { role: "status", className: "text-sm text-amber-700", children: "Issues changed since this preview. Select the issues again and run a new preview." })), _jsx(Button, { disabled: busy || previewStale, onClick: () => run(async () => {
243
+ await createIssueTasks(goalId, preview.operationKey, preview.bundles, false);
244
+ setPreview(undefined);
245
+ changed();
246
+ }), children: "Create tasks" }), _jsx(Button, { disabled: busy, onClick: () => setPreview(undefined), children: "Cancel" }), _jsx("p", { className: "text-xs", children: "Completing a task will request confirmation. It will not resolve its issues automatically." })] })), history && (_jsxs("div", { className: "rounded border p-3", role: "dialog", "aria-label": "Issue history", children: [_jsx("strong", { children: history.title }), _jsx("ol", { children: history.rows.map((h) => (_jsxs("li", { className: "py-1 text-sm", children: [new Date(h.createdAt).toLocaleString(), " \u00B7 ", h.actor, " \u00B7", " ", h.action, " \u2192 ", h.disposition, h.basis && ` (${h.basis})`, h.reason && `: ${h.reason}`] }, h.historyId))) }), _jsx(Button, { onClick: () => setHistory(undefined), children: "Close history" })] })), qaEnabled && (_jsxs("details", { children: [_jsx("summary", { children: "QA checks and observation times" }), _jsx("p", { className: "text-xs", children: "These are recorded observations. Content may have changed since the check. Completed with \u201CNeedsReview\u201D requires a human decision." }), checkWarnings.map((warning) => (_jsx("p", { role: "status", className: "text-sm text-amber-700", children: warning }, warning))), _jsx("ul", { children: checks.map((check) => (_jsxs("li", { className: "flex flex-wrap items-center gap-2 border-t py-2 text-sm", children: [_jsxs("span", { children: [check.subjectLabel, " \u00B7 ", check.definition.title, " \u00B7", " ", check.state, " \u00B7 ", check.outcome, " \u00B7 ", check.definitionStatus, check.reportedAt &&
247
+ ` · ${new Date(check.reportedAt).toLocaleString()}`] }), check.state === "Running" && (_jsxs("span", { className: "text-muted-foreground text-xs", children: ["began ", check.beganBy ? `by ${check.beganBy} ` : "", check.beganAt
248
+ ? `at ${new Date(check.beganAt).toLocaleString()}`
249
+ : ""] })), check.abandonedAt && (_jsxs("span", { className: "text-muted-foreground text-xs", children: ["abandoned by ", check.abandonedBy, " at", " ", new Date(check.abandonedAt).toLocaleString(), check.abandonReason ? `: ${check.abandonReason}` : ""] })), check.reason && !check.abandonedAt && (_jsx("span", { children: check.reason })), (check.diagnostics ?? []).map((line) => (_jsx("span", { className: "text-destructive text-xs", children: line }, line))), canEdit &&
250
+ check.state === "Running" &&
251
+ check.definitionStatus !== "Retired" && (_jsx(Button, { size: "sm", disabled: busy, onClick: () => {
252
+ setAbandoning(check);
253
+ setAbandonReason("");
254
+ }, children: "Abandon check" })), canEdit &&
255
+ onRequestRecheck &&
256
+ check.state !== "Running" &&
257
+ check.definitionStatus !== "Retired" && (_jsx(Button, { size: "sm", disabled: busy, onClick: () => onRequestRecheck(check), children: "Request re-check" }))] }, check.domainKey))) }), abandoning && (_jsxs("div", { role: "dialog", "aria-label": "Abandon check", className: "space-y-2 rounded border p-3", children: [_jsxs("p", { className: "text-sm", children: ["Abandon generation ", abandoning.generation, " of", " ", abandoning.definition.title, " on ", abandoning.subjectLabel, "? Began", abandoning.beganBy ? ` by ${abandoning.beganBy}` : "", abandoning.beganAt
258
+ ? ` at ${new Date(abandoning.beganAt).toLocaleString()}`
259
+ : "", "."] }), _jsx("p", { className: "text-xs", children: "The 30-minute \u201Cinterrupted\u201D hint is a heuristic. Make sure no worker is still reporting on this generation; its report will be refused once the check is abandoned, and a re-check needs a new begin." }), _jsx(Input, { "aria-label": "Abandon reason", value: abandonReason, onChange: (e) => setAbandonReason(e.target.value), placeholder: "Why this run is abandoned" }), _jsx(Button, { size: "sm", disabled: busy || !abandonReason.trim(), onClick: () => run(async () => {
260
+ await abandonQaCheck(goalId, {
261
+ checkKey: abandoning.checkKey,
262
+ subgoalId: abandoning.subgoalId,
263
+ }, abandoning.generation, abandonReason.trim());
264
+ setAbandoning(undefined);
265
+ changed();
266
+ }), children: "Confirm abandon" }), _jsx(Button, { size: "sm", disabled: busy, onClick: () => setAbandoning(undefined), children: "Cancel" })] })), _jsx(Button, { size: "sm", disabled: checkPage === 1, onClick: () => setCheckPage((p) => p - 1), children: "Previous checks" }), _jsx(Button, { size: "sm", disabled: !moreChecks, onClick: () => setCheckPage((p) => p + 1), children: "Next checks" })] }))] }));
267
+ }
268
+ //# sourceMappingURL=IssuePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IssuePanel.js","sourceRoot":"","sources":["../../../src/task-board/components/IssuePanel.tsx"],"names":[],"mappings":"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"}