@parhelia/core 0.3.12831 → 0.3.12833
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/components/emoji/EmojiPicker.d.ts +18 -0
- package/dist/components/emoji/EmojiPicker.js +102 -0
- package/dist/components/emoji/EmojiPicker.js.map +1 -0
- package/dist/components/emoji/EmojiText.d.ts +19 -0
- package/dist/components/emoji/EmojiText.js +30 -0
- package/dist/components/emoji/EmojiText.js.map +1 -0
- package/dist/components/emoji/emojiData.generated.d.ts +2 -0
- package/dist/components/emoji/emojiData.generated.js +1878 -0
- package/dist/components/emoji/emojiData.generated.js.map +1 -0
- package/dist/components/emoji/emojiIndex.d.ts +46 -0
- package/dist/components/emoji/emojiIndex.js +173 -0
- package/dist/components/emoji/emojiIndex.js.map +1 -0
- package/dist/components/emoji/emoticons.d.ts +21 -0
- package/dist/components/emoji/emoticons.js +167 -0
- package/dist/components/emoji/emoticons.js.map +1 -0
- package/dist/components/emoji/textareaInsert.d.ts +19 -0
- package/dist/components/emoji/textareaInsert.js +29 -0
- package/dist/components/emoji/textareaInsert.js.map +1 -0
- package/dist/components/emoji/twemoji.d.ts +30 -0
- package/dist/components/emoji/twemoji.js +84 -0
- package/dist/components/emoji/twemoji.js.map +1 -0
- package/dist/editor/agent-changes/agentChangeTargets.d.ts +58 -0
- package/dist/editor/agent-changes/agentChangeTargets.js +180 -0
- package/dist/editor/agent-changes/agentChangeTargets.js.map +1 -0
- package/dist/editor/agent-changes/agentChangeTextHighlight.d.ts +101 -0
- package/dist/editor/agent-changes/agentChangeTextHighlight.js +167 -0
- package/dist/editor/agent-changes/agentChangeTextHighlight.js.map +1 -0
- package/dist/editor/ai/AgentImagePreview.d.ts +13 -0
- package/dist/editor/ai/AgentImagePreview.js +41 -0
- package/dist/editor/ai/AgentImagePreview.js.map +1 -0
- package/dist/editor/ai/activityRowNavigation.d.ts +28 -0
- package/dist/editor/ai/activityRowNavigation.js +53 -0
- package/dist/editor/ai/activityRowNavigation.js.map +1 -0
- package/dist/editor/ai/terminal/activeReasoningModel.d.ts +9 -0
- package/dist/editor/ai/terminal/activeReasoningModel.js +20 -0
- package/dist/editor/ai/terminal/activeReasoningModel.js.map +1 -0
- package/dist/editor/ai/terminal/agentDurations.d.ts +27 -0
- package/dist/editor/ai/terminal/agentDurations.js +89 -0
- package/dist/editor/ai/terminal/agentDurations.js.map +1 -0
- package/dist/editor/ai/terminal/agentTurnTiming.d.ts +35 -0
- package/dist/editor/ai/terminal/agentTurnTiming.js +128 -0
- package/dist/editor/ai/terminal/agentTurnTiming.js.map +1 -0
- package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.d.ts +9 -0
- package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js +75 -0
- package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js.map +1 -0
- package/dist/editor/ai/terminal/components/AgentProfileRecovery.d.ts +10 -0
- package/dist/editor/ai/terminal/components/AgentProfileRecovery.js +12 -0
- package/dist/editor/ai/terminal/components/AgentProfileRecovery.js.map +1 -0
- package/dist/editor/ai/terminal/components/CreateItemToolCallContent.d.ts +3 -0
- package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js +47 -0
- package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js.map +1 -0
- package/dist/editor/ai/terminal/components/ResponseTurnDuration.d.ts +15 -0
- package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +62 -0
- package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -0
- package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.d.ts +6 -0
- package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js +61 -0
- package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js.map +1 -0
- package/dist/editor/ai/terminal/components/toolCallResultJson.d.ts +1 -0
- package/dist/editor/ai/terminal/components/toolCallResultJson.js +46 -0
- package/dist/editor/ai/terminal/components/toolCallResultJson.js.map +1 -0
- package/dist/editor/ai/terminal/reasoningEffortLevels.d.ts +8 -0
- package/dist/editor/ai/terminal/reasoningEffortLevels.js +54 -0
- package/dist/editor/ai/terminal/reasoningEffortLevels.js.map +1 -0
- package/dist/editor/ai/terminal/requestUsage.d.ts +3 -0
- package/dist/editor/ai/terminal/requestUsage.js +22 -0
- package/dist/editor/ai/terminal/requestUsage.js.map +1 -0
- package/dist/editor/ai/terminal/toolCallDiagnostics.d.ts +34 -0
- package/dist/editor/ai/terminal/toolCallDiagnostics.js +218 -0
- package/dist/editor/ai/terminal/toolCallDiagnostics.js.map +1 -0
- package/dist/editor/ai/terminal/useAgentProviderWait.d.ts +18 -0
- package/dist/editor/ai/terminal/useAgentProviderWait.js +23 -0
- package/dist/editor/ai/terminal/useAgentProviderWait.js.map +1 -0
- package/dist/editor/ai/terminal/useAgentReasoningEffortState.d.ts +5 -0
- package/dist/editor/ai/terminal/useAgentReasoningEffortState.js +10 -0
- package/dist/editor/ai/terminal/useAgentReasoningEffortState.js.map +1 -0
- package/dist/editor/bridge/bridgeKeys.d.ts +5 -0
- package/dist/editor/bridge/bridgeKeys.js +8 -0
- package/dist/editor/bridge/bridgeKeys.js.map +1 -0
- package/dist/editor/bridge/linkDownload.d.ts +3 -0
- package/dist/editor/bridge/linkDownload.js +52 -0
- package/dist/editor/bridge/linkDownload.js.map +1 -0
- package/dist/editor/client/SessionsDialog.d.ts +2 -0
- package/dist/editor/client/SessionsDialog.js +27 -0
- package/dist/editor/client/SessionsDialog.js.map +1 -0
- package/dist/editor/client/agentLoadItemPolicy.d.ts +22 -0
- package/dist/editor/client/agentLoadItemPolicy.js +60 -0
- package/dist/editor/client/agentLoadItemPolicy.js.map +1 -0
- package/dist/editor/client/clipboardStorage.d.ts +10 -0
- package/dist/editor/client/clipboardStorage.js +57 -0
- package/dist/editor/client/clipboardStorage.js.map +1 -0
- package/dist/editor/client/hooks/useRepositoryItemRefresh.d.ts +4 -0
- package/dist/editor/client/hooks/useRepositoryItemRefresh.js +62 -0
- package/dist/editor/client/hooks/useRepositoryItemRefresh.js.map +1 -0
- package/dist/editor/client/liveEditState.d.ts +16 -0
- package/dist/editor/client/liveEditState.js +25 -0
- package/dist/editor/client/liveEditState.js.map +1 -0
- package/dist/editor/client/liveSessionState.d.ts +6 -0
- package/dist/editor/client/liveSessionState.js +20 -0
- package/dist/editor/client/liveSessionState.js.map +1 -0
- package/dist/editor/client/localUserEditActivity.d.ts +3 -0
- package/dist/editor/client/localUserEditActivity.js +12 -0
- package/dist/editor/client/localUserEditActivity.js.map +1 -0
- package/dist/editor/client/valueStore.d.ts +22 -0
- package/dist/editor/client/valueStore.js +29 -0
- package/dist/editor/client/valueStore.js.map +1 -0
- package/dist/editor/commands/componentClipboardCommands.d.ts +35 -0
- package/dist/editor/commands/componentClipboardCommands.js +271 -0
- package/dist/editor/commands/componentClipboardCommands.js.map +1 -0
- package/dist/editor/commands/componentMenuGroups.d.ts +2 -0
- package/dist/editor/commands/componentMenuGroups.js +43 -0
- package/dist/editor/commands/componentMenuGroups.js.map +1 -0
- package/dist/editor/commands/mediaCommands.d.ts +5 -0
- package/dist/editor/commands/mediaCommands.js +59 -0
- package/dist/editor/commands/mediaCommands.js.map +1 -0
- package/dist/editor/component-conversion/ComponentTypePickerDialog.d.ts +12 -0
- package/dist/editor/component-conversion/ComponentTypePickerDialog.js +40 -0
- package/dist/editor/component-conversion/ComponentTypePickerDialog.js.map +1 -0
- package/dist/editor/component-conversion/ConversionAiDebugButton.d.ts +17 -0
- package/dist/editor/component-conversion/ConversionAiDebugButton.js +80 -0
- package/dist/editor/component-conversion/ConversionAiDebugButton.js.map +1 -0
- package/dist/editor/component-conversion/ConvertComponentDialog.d.ts +28 -0
- package/dist/editor/component-conversion/ConvertComponentDialog.js +633 -0
- package/dist/editor/component-conversion/ConvertComponentDialog.js.map +1 -0
- package/dist/editor/component-conversion/conversionModel.d.ts +109 -0
- package/dist/editor/component-conversion/conversionModel.js +519 -0
- package/dist/editor/component-conversion/conversionModel.js.map +1 -0
- package/dist/editor/component-conversion/conversionService.d.ts +12 -0
- package/dist/editor/component-conversion/conversionService.js +16 -0
- package/dist/editor/component-conversion/conversionService.js.map +1 -0
- package/dist/editor/component-conversion/conversionTypes.d.ts +214 -0
- package/dist/editor/component-conversion/conversionTypes.js +2 -0
- package/dist/editor/component-conversion/conversionTypes.js.map +1 -0
- package/dist/editor/component-conversion/convertComponentsCommand.d.ts +25 -0
- package/dist/editor/component-conversion/convertComponentsCommand.js +196 -0
- package/dist/editor/component-conversion/convertComponentsCommand.js.map +1 -0
- package/dist/editor/componentVisualMode.d.ts +14 -0
- package/dist/editor/componentVisualMode.js +43 -0
- package/dist/editor/componentVisualMode.js.map +1 -0
- package/dist/editor/field-types/FieldHistoryBoundary.d.ts +7 -0
- package/dist/editor/field-types/FieldHistoryBoundary.js +40 -0
- package/dist/editor/field-types/FieldHistoryBoundary.js.map +1 -0
- package/dist/editor/field-types/fieldStyles.d.ts +21 -0
- package/dist/editor/field-types/fieldStyles.js +22 -0
- package/dist/editor/field-types/fieldStyles.js.map +1 -0
- package/dist/editor/field-types/richtext/utils/changeHighlight.d.ts +32 -0
- package/dist/editor/field-types/richtext/utils/changeHighlight.js +68 -0
- package/dist/editor/field-types/richtext/utils/changeHighlight.js.map +1 -0
- package/dist/editor/field-types/richtext/utils/spellCheckText.d.ts +31 -0
- package/dist/editor/field-types/richtext/utils/spellCheckText.js +82 -0
- package/dist/editor/field-types/richtext/utils/spellCheckText.js.map +1 -0
- package/dist/editor/field-types/useFocusedFieldInput.d.ts +13 -0
- package/dist/editor/field-types/useFocusedFieldInput.js +50 -0
- package/dist/editor/field-types/useFocusedFieldInput.js.map +1 -0
- package/dist/editor/field-types/useFormFieldSelectionRange.d.ts +43 -0
- package/dist/editor/field-types/useFormFieldSelectionRange.js +149 -0
- package/dist/editor/field-types/useFormFieldSelectionRange.js.map +1 -0
- package/dist/editor/find-replace/FindReplacePanel.d.ts +11 -0
- package/dist/editor/find-replace/FindReplacePanel.js +311 -0
- package/dist/editor/find-replace/FindReplacePanel.js.map +1 -0
- package/dist/editor/find-replace/findReplaceCommand.d.ts +8 -0
- package/dist/editor/find-replace/findReplaceCommand.js +25 -0
- package/dist/editor/find-replace/findReplaceCommand.js.map +1 -0
- package/dist/editor/find-replace/findReplaceMatches.d.ts +42 -0
- package/dist/editor/find-replace/findReplaceMatches.js +66 -0
- package/dist/editor/find-replace/findReplaceMatches.js.map +1 -0
- package/dist/editor/find-replace/findReplaceStore.d.ts +30 -0
- package/dist/editor/find-replace/findReplaceStore.js +61 -0
- package/dist/editor/find-replace/findReplaceStore.js.map +1 -0
- package/dist/editor/find-replace/findReplaceTargets.d.ts +51 -0
- package/dist/editor/find-replace/findReplaceTargets.js +110 -0
- package/dist/editor/find-replace/findReplaceTargets.js.map +1 -0
- package/dist/editor/find-replace/findReplaceText.d.ts +50 -0
- package/dist/editor/find-replace/findReplaceText.js +189 -0
- package/dist/editor/find-replace/findReplaceText.js.map +1 -0
- package/dist/editor/itemContextMenuGroups.d.ts +16 -0
- package/dist/editor/itemContextMenuGroups.js +57 -0
- package/dist/editor/itemContextMenuGroups.js.map +1 -0
- package/dist/editor/media-selector/MediaDetailsView.d.ts +14 -0
- package/dist/editor/media-selector/MediaDetailsView.js +152 -0
- package/dist/editor/media-selector/MediaDetailsView.js.map +1 -0
- package/dist/editor/media-selector/UploadMediaFileDialog.d.ts +5 -0
- package/dist/editor/media-selector/UploadMediaFileDialog.js +14 -0
- package/dist/editor/media-selector/UploadMediaFileDialog.js.map +1 -0
- package/dist/editor/media-selector/useMediaFolderDrag.d.ts +26 -0
- package/dist/editor/media-selector/useMediaFolderDrag.js +153 -0
- package/dist/editor/media-selector/useMediaFolderDrag.js.map +1 -0
- package/dist/editor/menubar/OpenPublishedPageButton.d.ts +1 -0
- package/dist/editor/menubar/OpenPublishedPageButton.js +22 -0
- package/dist/editor/menubar/OpenPublishedPageButton.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.d.ts +11 -0
- package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js +65 -0
- package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/FindReplaceControls.d.ts +6 -0
- package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js +31 -0
- package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.d.ts +5 -0
- package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js +16 -0
- package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js.map +1 -0
- package/dist/editor/mobileBottomPanel.d.ts +40 -0
- package/dist/editor/mobileBottomPanel.js +63 -0
- package/dist/editor/mobileBottomPanel.js.map +1 -0
- package/dist/editor/page-editor-chrome/AgentChangeHighlightings.d.ts +17 -0
- package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js +33 -0
- package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js.map +1 -0
- package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.d.ts +6 -0
- package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js +100 -0
- package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js.map +1 -0
- package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.d.ts +9 -0
- package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js +32 -0
- package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js.map +1 -0
- package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.d.ts +14 -0
- package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js +110 -0
- package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js.map +1 -0
- package/dist/editor/page-editor-chrome/ConversionIndicators.d.ts +8 -0
- package/dist/editor/page-editor-chrome/ConversionIndicators.js +75 -0
- package/dist/editor/page-editor-chrome/ConversionIndicators.js.map +1 -0
- package/dist/editor/page-editor-chrome/DiffHighlightOverlay.d.ts +29 -0
- package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js +295 -0
- package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js.map +1 -0
- package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.d.ts +15 -0
- package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js +31 -0
- package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js.map +1 -0
- package/dist/editor/page-editor-chrome/FindReplaceHighlightings.d.ts +11 -0
- package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js +120 -0
- package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js.map +1 -0
- package/dist/editor/page-editor-chrome/SpellCheckHighlightings.d.ts +12 -0
- package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js +197 -0
- package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js.map +1 -0
- package/dist/editor/page-editor-chrome/ValidationRulerMarks.d.ts +11 -0
- package/dist/editor/page-editor-chrome/ValidationRulerMarks.js +56 -0
- package/dist/editor/page-editor-chrome/ValidationRulerMarks.js.map +1 -0
- package/dist/editor/page-editor-chrome/diffRulerSegments.d.ts +18 -0
- package/dist/editor/page-editor-chrome/diffRulerSegments.js +37 -0
- package/dist/editor/page-editor-chrome/diffRulerSegments.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.d.ts +44 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js +89 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.d.ts +17 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js +53 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.d.ts +11 -0
- package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js +84 -0
- package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.d.ts +34 -0
- package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js +229 -0
- package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.d.ts +9 -0
- package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js +34 -0
- package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.d.ts +49 -0
- package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js +241 -0
- package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js.map +1 -0
- package/dist/editor/page-viewer/CanvasOverviewRuler.d.ts +11 -0
- package/dist/editor/page-viewer/CanvasOverviewRuler.js +65 -0
- package/dist/editor/page-viewer/CanvasOverviewRuler.js.map +1 -0
- package/dist/editor/page-viewer/DynamicRenderingsBar.d.ts +23 -0
- package/dist/editor/page-viewer/DynamicRenderingsBar.js +28 -0
- package/dist/editor/page-viewer/DynamicRenderingsBar.js.map +1 -0
- package/dist/editor/page-viewer/DynamicRenderingsStrip.d.ts +18 -0
- package/dist/editor/page-viewer/DynamicRenderingsStrip.js +29 -0
- package/dist/editor/page-viewer/DynamicRenderingsStrip.js.map +1 -0
- package/dist/editor/page-viewer/FeedbackMargin.d.ts +57 -0
- package/dist/editor/page-viewer/FeedbackMargin.js +377 -0
- package/dist/editor/page-viewer/FeedbackMargin.js.map +1 -0
- package/dist/editor/page-viewer/FeedbackMarginController.d.ts +76 -0
- package/dist/editor/page-viewer/FeedbackMarginController.js +241 -0
- package/dist/editor/page-viewer/FeedbackMarginController.js.map +1 -0
- package/dist/editor/page-viewer/FeedbackMarginMarker.d.ts +16 -0
- package/dist/editor/page-viewer/FeedbackMarginMarker.js +24 -0
- package/dist/editor/page-viewer/FeedbackMarginMarker.js.map +1 -0
- package/dist/editor/page-viewer/FeedbackMarginResizeHandle.d.ts +23 -0
- package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js +105 -0
- package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js.map +1 -0
- package/dist/editor/page-viewer/InteractivePreviewBar.d.ts +24 -0
- package/dist/editor/page-viewer/InteractivePreviewBar.js +31 -0
- package/dist/editor/page-viewer/InteractivePreviewBar.js.map +1 -0
- package/dist/editor/page-viewer/MobileCommentsPanel.d.ts +16 -0
- package/dist/editor/page-viewer/MobileCommentsPanel.js +112 -0
- package/dist/editor/page-viewer/MobileCommentsPanel.js.map +1 -0
- package/dist/editor/page-viewer/PreviewModeNotice.d.ts +7 -0
- package/dist/editor/page-viewer/PreviewModeNotice.js +19 -0
- package/dist/editor/page-viewer/PreviewModeNotice.js.map +1 -0
- package/dist/editor/page-viewer/RenderingAiCheck.d.ts +18 -0
- package/dist/editor/page-viewer/RenderingAiCheck.js +45 -0
- package/dist/editor/page-viewer/RenderingAiCheck.js.map +1 -0
- package/dist/editor/page-viewer/RenderingApprovalDialog.d.ts +32 -0
- package/dist/editor/page-viewer/RenderingApprovalDialog.js +191 -0
- package/dist/editor/page-viewer/RenderingApprovalDialog.js.map +1 -0
- package/dist/editor/page-viewer/SealedClientCodePreview.d.ts +17 -0
- package/dist/editor/page-viewer/SealedClientCodePreview.js +38 -0
- package/dist/editor/page-viewer/SealedClientCodePreview.js.map +1 -0
- package/dist/editor/page-viewer/canvasFrameNavigation.d.ts +18 -0
- package/dist/editor/page-viewer/canvasFrameNavigation.js +36 -0
- package/dist/editor/page-viewer/canvasFrameNavigation.js.map +1 -0
- package/dist/editor/page-viewer/canvasLoadSettling.d.ts +42 -0
- package/dist/editor/page-viewer/canvasLoadSettling.js +46 -0
- package/dist/editor/page-viewer/canvasLoadSettling.js.map +1 -0
- package/dist/editor/page-viewer/canvasScrollHandoff.d.ts +34 -0
- package/dist/editor/page-viewer/canvasScrollHandoff.js +55 -0
- package/dist/editor/page-viewer/canvasScrollHandoff.js.map +1 -0
- package/dist/editor/page-viewer/compareFrameWidth.d.ts +8 -0
- package/dist/editor/page-viewer/compareFrameWidth.js +25 -0
- package/dist/editor/page-viewer/compareFrameWidth.js.map +1 -0
- package/dist/editor/page-viewer/feedbackMarginLayout.d.ts +119 -0
- package/dist/editor/page-viewer/feedbackMarginLayout.js +155 -0
- package/dist/editor/page-viewer/feedbackMarginLayout.js.map +1 -0
- package/dist/editor/page-viewer/feedbackMarginSources.d.ts +36 -0
- package/dist/editor/page-viewer/feedbackMarginSources.js +196 -0
- package/dist/editor/page-viewer/feedbackMarginSources.js.map +1 -0
- package/dist/editor/page-viewer/feedbackMarginWidth.d.ts +43 -0
- package/dist/editor/page-viewer/feedbackMarginWidth.js +107 -0
- package/dist/editor/page-viewer/feedbackMarginWidth.js.map +1 -0
- package/dist/editor/page-viewer/interactivePreview.d.ts +168 -0
- package/dist/editor/page-viewer/interactivePreview.js +344 -0
- package/dist/editor/page-viewer/interactivePreview.js.map +1 -0
- package/dist/editor/page-viewer/minimapViewport.d.ts +2 -0
- package/dist/editor/page-viewer/minimapViewport.js +34 -0
- package/dist/editor/page-viewer/minimapViewport.js.map +1 -0
- package/dist/editor/page-viewer/openPageItems.d.ts +29 -0
- package/dist/editor/page-viewer/openPageItems.js +73 -0
- package/dist/editor/page-viewer/openPageItems.js.map +1 -0
- package/dist/editor/page-viewer/overviewRuler.d.ts +128 -0
- package/dist/editor/page-viewer/overviewRuler.js +226 -0
- package/dist/editor/page-viewer/overviewRuler.js.map +1 -0
- package/dist/editor/page-viewer/previewEditAttempt.d.ts +31 -0
- package/dist/editor/page-viewer/previewEditAttempt.js +68 -0
- package/dist/editor/page-viewer/previewEditAttempt.js.map +1 -0
- package/dist/editor/page-viewer/renderingApproval.d.ts +59 -0
- package/dist/editor/page-viewer/renderingApproval.js +186 -0
- package/dist/editor/page-viewer/renderingApproval.js.map +1 -0
- package/dist/editor/page-viewer/renderingChanges.d.ts +29 -0
- package/dist/editor/page-viewer/renderingChanges.js +40 -0
- package/dist/editor/page-viewer/renderingChanges.js.map +1 -0
- package/dist/editor/page-viewer/scrollIntoViewTextRanges.d.ts +23 -0
- package/dist/editor/page-viewer/scrollIntoViewTextRanges.js +26 -0
- package/dist/editor/page-viewer/scrollIntoViewTextRanges.js.map +1 -0
- package/dist/editor/page-viewer/useInteractivePreview.d.ts +77 -0
- package/dist/editor/page-viewer/useInteractivePreview.js +210 -0
- package/dist/editor/page-viewer/useInteractivePreview.js.map +1 -0
- package/dist/editor/reviews/CollapsibleText.d.ts +13 -0
- package/dist/editor/reviews/CollapsibleText.js +41 -0
- package/dist/editor/reviews/CollapsibleText.js.map +1 -0
- package/dist/editor/reviews/CommentImageAttachments.d.ts +12 -0
- package/dist/editor/reviews/CommentImageAttachments.js +19 -0
- package/dist/editor/reviews/CommentImageAttachments.js.map +1 -0
- package/dist/editor/reviews/CommentQuote.d.ts +13 -0
- package/dist/editor/reviews/CommentQuote.js +35 -0
- package/dist/editor/reviews/CommentQuote.js.map +1 -0
- package/dist/editor/reviews/CommentTargetOutline.d.ts +13 -0
- package/dist/editor/reviews/CommentTargetOutline.js +21 -0
- package/dist/editor/reviews/CommentTargetOutline.js.map +1 -0
- package/dist/editor/reviews/CommentTargetPickerDomLayer.d.ts +7 -0
- package/dist/editor/reviews/CommentTargetPickerDomLayer.js +117 -0
- package/dist/editor/reviews/CommentTargetPickerDomLayer.js.map +1 -0
- package/dist/editor/reviews/CommentThreadAgentLink.d.ts +28 -0
- package/dist/editor/reviews/CommentThreadAgentLink.js +37 -0
- package/dist/editor/reviews/CommentThreadAgentLink.js.map +1 -0
- package/dist/editor/reviews/CommentThreadCard.d.ts +34 -0
- package/dist/editor/reviews/CommentThreadCard.js +156 -0
- package/dist/editor/reviews/CommentThreadCard.js.map +1 -0
- package/dist/editor/reviews/SuggestionThreadCard.d.ts +19 -0
- package/dist/editor/reviews/SuggestionThreadCard.js +25 -0
- package/dist/editor/reviews/SuggestionThreadCard.js.map +1 -0
- package/dist/editor/reviews/addCommentOnTarget.d.ts +22 -0
- package/dist/editor/reviews/addCommentOnTarget.js +32 -0
- package/dist/editor/reviews/addCommentOnTarget.js.map +1 -0
- package/dist/editor/reviews/balloonLayout.d.ts +51 -0
- package/dist/editor/reviews/balloonLayout.js +101 -0
- package/dist/editor/reviews/balloonLayout.js.map +1 -0
- package/dist/editor/reviews/commentAgentAttachments.d.ts +5 -0
- package/dist/editor/reviews/commentAgentAttachments.js +51 -0
- package/dist/editor/reviews/commentAgentAttachments.js.map +1 -0
- package/dist/editor/reviews/commentImages.d.ts +48 -0
- package/dist/editor/reviews/commentImages.js +128 -0
- package/dist/editor/reviews/commentImages.js.map +1 -0
- package/dist/editor/reviews/commentTargetPicker.d.ts +114 -0
- package/dist/editor/reviews/commentTargetPicker.js +153 -0
- package/dist/editor/reviews/commentTargetPicker.js.map +1 -0
- package/dist/editor/reviews/feedbackBalloonDate.d.ts +8 -0
- package/dist/editor/reviews/feedbackBalloonDate.js +22 -0
- package/dist/editor/reviews/feedbackBalloonDate.js.map +1 -0
- package/dist/editor/reviews/feedbackDrafts.d.ts +49 -0
- package/dist/editor/reviews/feedbackDrafts.js +74 -0
- package/dist/editor/reviews/feedbackDrafts.js.map +1 -0
- package/dist/editor/reviews/feedbackHoverState.d.ts +18 -0
- package/dist/editor/reviews/feedbackHoverState.js +35 -0
- package/dist/editor/reviews/feedbackHoverState.js.map +1 -0
- package/dist/editor/reviews/feedbackPersonFilter.d.ts +3 -0
- package/dist/editor/reviews/feedbackPersonFilter.js +32 -0
- package/dist/editor/reviews/feedbackPersonFilter.js.map +1 -0
- package/dist/editor/reviews/feedbackThreadSelection.d.ts +10 -0
- package/dist/editor/reviews/feedbackThreadSelection.js +31 -0
- package/dist/editor/reviews/feedbackThreadSelection.js.map +1 -0
- package/dist/editor/reviews/feedbackThreads.d.ts +50 -0
- package/dist/editor/reviews/feedbackThreads.js +135 -0
- package/dist/editor/reviews/feedbackThreads.js.map +1 -0
- package/dist/editor/reviews/feedbackWheelForwarding.d.ts +34 -0
- package/dist/editor/reviews/feedbackWheelForwarding.js +108 -0
- package/dist/editor/reviews/feedbackWheelForwarding.js.map +1 -0
- package/dist/editor/reviews/reviewUrlScope.d.ts +23 -0
- package/dist/editor/reviews/reviewUrlScope.js +86 -0
- package/dist/editor/reviews/reviewUrlScope.js.map +1 -0
- package/dist/editor/reviews/scrollWithin.d.ts +29 -0
- package/dist/editor/reviews/scrollWithin.js +87 -0
- package/dist/editor/reviews/scrollWithin.js.map +1 -0
- package/dist/editor/reviews/subtreeFeedback.d.ts +57 -0
- package/dist/editor/reviews/subtreeFeedback.js +137 -0
- package/dist/editor/reviews/subtreeFeedback.js.map +1 -0
- package/dist/editor/reviews/useCommentImagePaste.d.ts +80 -0
- package/dist/editor/reviews/useCommentImagePaste.js +252 -0
- package/dist/editor/reviews/useCommentImagePaste.js.map +1 -0
- package/dist/editor/reviews/useFeedbackThreads.d.ts +35 -0
- package/dist/editor/reviews/useFeedbackThreads.js +137 -0
- package/dist/editor/reviews/useFeedbackThreads.js.map +1 -0
- package/dist/editor/reviews/useMeasuredHeights.d.ts +25 -0
- package/dist/editor/reviews/useMeasuredHeights.js +176 -0
- package/dist/editor/reviews/useMeasuredHeights.js.map +1 -0
- package/dist/editor/reviews/usePendingFeedbackFocus.d.ts +7 -0
- package/dist/editor/reviews/usePendingFeedbackFocus.js +42 -0
- package/dist/editor/reviews/usePendingFeedbackFocus.js.map +1 -0
- package/dist/editor/services/mcpAccessService.d.ts +93 -0
- package/dist/editor/services/mcpAccessService.js +41 -0
- package/dist/editor/services/mcpAccessService.js.map +1 -0
- package/dist/editor/services/migrationService.d.ts +31 -0
- package/dist/editor/services/migrationService.js +22 -0
- package/dist/editor/services/migrationService.js.map +1 -0
- package/dist/editor/services/previewTokenService.d.ts +14 -0
- package/dist/editor/services/previewTokenService.js +34 -0
- package/dist/editor/services/previewTokenService.js.map +1 -0
- package/dist/editor/services/publicSiteService.d.ts +40 -0
- package/dist/editor/services/publicSiteService.js +5 -0
- package/dist/editor/services/publicSiteService.js.map +1 -0
- package/dist/editor/services/renderingsService.d.ts +117 -0
- package/dist/editor/services/renderingsService.js +245 -0
- package/dist/editor/services/renderingsService.js.map +1 -0
- package/dist/editor/services/spellCheckService.d.ts +13 -0
- package/dist/editor/services/spellCheckService.js +33 -0
- package/dist/editor/services/spellCheckService.js.map +1 -0
- package/dist/editor/settings/MigrationJournalCard.d.ts +12 -0
- package/dist/editor/settings/MigrationJournalCard.js +114 -0
- package/dist/editor/settings/MigrationJournalCard.js.map +1 -0
- package/dist/editor/settings/panels/McpAccessPanel.d.ts +7 -0
- package/dist/editor/settings/panels/McpAccessPanel.js +95 -0
- package/dist/editor/settings/panels/McpAccessPanel.js.map +1 -0
- package/dist/editor/settings/panels/McpAccessSettingsView.d.ts +8 -0
- package/dist/editor/settings/panels/McpAccessSettingsView.js +221 -0
- package/dist/editor/settings/panels/McpAccessSettingsView.js.map +1 -0
- package/dist/editor/settings/panels/PublicSiteEntryDialog.d.ts +8 -0
- package/dist/editor/settings/panels/PublicSiteEntryDialog.js +113 -0
- package/dist/editor/settings/panels/PublicSiteEntryDialog.js.map +1 -0
- package/dist/editor/settings/panels/PublicSitesPanel.d.ts +1 -0
- package/dist/editor/settings/panels/PublicSitesPanel.js +153 -0
- package/dist/editor/settings/panels/PublicSitesPanel.js.map +1 -0
- package/dist/editor/settings/panels/SpellCheckPanel.d.ts +8 -0
- package/dist/editor/settings/panels/SpellCheckPanel.js +253 -0
- package/dist/editor/settings/panels/SpellCheckPanel.js.map +1 -0
- package/dist/editor/settings/panels/publicSiteHelpers.d.ts +6 -0
- package/dist/editor/settings/panels/publicSiteHelpers.js +30 -0
- package/dist/editor/settings/panels/publicSiteHelpers.js.map +1 -0
- package/dist/editor/sidebar/FeedbackSidebar.d.ts +7 -0
- package/dist/editor/sidebar/FeedbackSidebar.js +300 -0
- package/dist/editor/sidebar/FeedbackSidebar.js.map +1 -0
- package/dist/editor/sidebar/OperationDetailsContent.d.ts +14 -0
- package/dist/editor/sidebar/OperationDetailsContent.js +571 -0
- package/dist/editor/sidebar/OperationDetailsContent.js.map +1 -0
- package/dist/editor/sidebar/liveComponentThumbnails.d.ts +66 -0
- package/dist/editor/sidebar/liveComponentThumbnails.js +225 -0
- package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -0
- package/dist/editor/spellcheck/canvasSpellCheckContextMenu.d.ts +30 -0
- package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js +69 -0
- package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js.map +1 -0
- package/dist/editor/spellcheck/htmlSpellDocument.d.ts +60 -0
- package/dist/editor/spellcheck/htmlSpellDocument.js +181 -0
- package/dist/editor/spellcheck/htmlSpellDocument.js.map +1 -0
- package/dist/editor/spellcheck/htmlSpellTokenizer.d.ts +45 -0
- package/dist/editor/spellcheck/htmlSpellTokenizer.js +277 -0
- package/dist/editor/spellcheck/htmlSpellTokenizer.js.map +1 -0
- package/dist/editor/spellcheck/replacementGuard.d.ts +27 -0
- package/dist/editor/spellcheck/replacementGuard.js +29 -0
- package/dist/editor/spellcheck/replacementGuard.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckCanvasStore.d.ts +17 -0
- package/dist/editor/spellcheck/spellCheckCanvasStore.js +37 -0
- package/dist/editor/spellcheck/spellCheckCanvasStore.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckCanvasTargets.d.ts +71 -0
- package/dist/editor/spellcheck/spellCheckCanvasTargets.js +126 -0
- package/dist/editor/spellcheck/spellCheckCanvasTargets.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckClient.d.ts +66 -0
- package/dist/editor/spellcheck/spellCheckClient.js +0 -0
- package/dist/editor/spellcheck/spellCheckClient.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckContextMenu.d.ts +52 -0
- package/dist/editor/spellcheck/spellCheckContextMenu.js +120 -0
- package/dist/editor/spellcheck/spellCheckContextMenu.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckReplace.d.ts +8 -0
- package/dist/editor/spellcheck/spellCheckReplace.js +20 -0
- package/dist/editor/spellcheck/spellCheckReplace.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckStyles.d.ts +11 -0
- package/dist/editor/spellcheck/spellCheckStyles.js +12 -0
- package/dist/editor/spellcheck/spellCheckStyles.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckTypes.d.ts +94 -0
- package/dist/editor/spellcheck/spellCheckTypes.js +2 -0
- package/dist/editor/spellcheck/spellCheckTypes.js.map +1 -0
- package/dist/editor/spellcheck/textMarkHitTest.d.ts +14 -0
- package/dist/editor/spellcheck/textMarkHitTest.js +39 -0
- package/dist/editor/spellcheck/textMarkHitTest.js.map +1 -0
- package/dist/editor/spellcheck/useSpellCheck.d.ts +16 -0
- package/dist/editor/spellcheck/useSpellCheck.js +57 -0
- package/dist/editor/spellcheck/useSpellCheck.js.map +1 -0
- package/dist/editor/ui/DynamicRenderingsPublishWarning.d.ts +14 -0
- package/dist/editor/ui/DynamicRenderingsPublishWarning.js +40 -0
- package/dist/editor/ui/DynamicRenderingsPublishWarning.js.map +1 -0
- package/dist/editor/ui/ParheliaMark.d.ts +15 -0
- package/dist/editor/ui/ParheliaMark.js +12 -0
- package/dist/editor/ui/ParheliaMark.js.map +1 -0
- package/dist/editor/ui/PublishReadinessSummary.d.ts +12 -0
- package/dist/editor/ui/PublishReadinessSummary.js +34 -0
- package/dist/editor/ui/PublishReadinessSummary.js.map +1 -0
- package/dist/editor/ui/RootItemPicker.d.ts +18 -0
- package/dist/editor/ui/RootItemPicker.js +112 -0
- package/dist/editor/ui/RootItemPicker.js.map +1 -0
- package/dist/editor/ui/publishReadiness.d.ts +98 -0
- package/dist/editor/ui/publishReadiness.js +307 -0
- package/dist/editor/ui/publishReadiness.js.map +1 -0
- package/dist/editor/ui/usePublishingItem.d.ts +8 -0
- package/dist/editor/ui/usePublishingItem.js +47 -0
- package/dist/editor/ui/usePublishingItem.js.map +1 -0
- package/dist/editor/undoEligibility.d.ts +2 -0
- package/dist/editor/undoEligibility.js +8 -0
- package/dist/editor/undoEligibility.js.map +1 -0
- package/dist/editor/utils/dataTransferImages.d.ts +7 -0
- package/dist/editor/utils/dataTransferImages.js +43 -0
- package/dist/editor/utils/dataTransferImages.js.map +1 -0
- package/dist/editor/utils/linkDisplay.d.ts +12 -0
- package/dist/editor/utils/linkDisplay.js +23 -0
- package/dist/editor/utils/linkDisplay.js.map +1 -0
- package/dist/editor/validation/ValidationIssuesPopover.d.ts +39 -0
- package/dist/editor/validation/ValidationIssuesPopover.js +51 -0
- package/dist/editor/validation/ValidationIssuesPopover.js.map +1 -0
- package/dist/editor/validation/navigateToValidationIssue.d.ts +13 -0
- package/dist/editor/validation/navigateToValidationIssue.js +43 -0
- package/dist/editor/validation/navigateToValidationIssue.js.map +1 -0
- package/dist/editor/validation/validationFixAgent.d.ts +26 -0
- package/dist/editor/validation/validationFixAgent.js +124 -0
- package/dist/editor/validation/validationFixAgent.js.map +1 -0
- package/dist/editor/validation/validationRulerIssues.d.ts +17 -0
- package/dist/editor/validation/validationRulerIssues.js +44 -0
- package/dist/editor/validation/validationRulerIssues.js.map +1 -0
- package/dist/editor/validation/validationSeverity.d.ts +15 -0
- package/dist/editor/validation/validationSeverity.js +47 -0
- package/dist/editor/validation/validationSeverity.js.map +1 -0
- package/dist/lib/viewportClip.d.ts +18 -0
- package/dist/lib/viewportClip.js +22 -0
- package/dist/lib/viewportClip.js.map +1 -0
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/task-board/components/AttentionPromptDialog.d.ts +13 -0
- package/dist/task-board/components/AttentionPromptDialog.js +45 -0
- package/dist/task-board/components/AttentionPromptDialog.js.map +1 -0
- package/dist/task-board/components/GoalFindingsTable.d.ts +43 -0
- package/dist/task-board/components/GoalFindingsTable.js +160 -0
- package/dist/task-board/components/GoalFindingsTable.js.map +1 -0
- package/dist/task-board/components/IssuePanel.d.ts +31 -0
- package/dist/task-board/components/IssuePanel.js +268 -0
- package/dist/task-board/components/IssuePanel.js.map +1 -0
- package/dist/task-board/components/ProjectProgressIndicator.d.ts +8 -0
- package/dist/task-board/components/ProjectProgressIndicator.js +17 -0
- package/dist/task-board/components/ProjectProgressIndicator.js.map +1 -0
- package/dist/task-board/components/SubgoalFindings.d.ts +40 -0
- package/dist/task-board/components/SubgoalFindings.js +88 -0
- package/dist/task-board/components/SubgoalFindings.js.map +1 -0
- package/dist/task-board/components/commentAuthor.d.ts +14 -0
- package/dist/task-board/components/commentAuthor.js +25 -0
- package/dist/task-board/components/commentAuthor.js.map +1 -0
- package/dist/task-board/services/issueService.d.ts +193 -0
- package/dist/task-board/services/issueService.js +97 -0
- package/dist/task-board/services/issueService.js.map +1 -0
- package/dist/task-board/taskBlockers.d.ts +10 -0
- package/dist/task-board/taskBlockers.js +66 -0
- package/dist/task-board/taskBlockers.js.map +1 -0
- package/dist/task-board/utils/projectDashboardModel.d.ts +68 -0
- package/dist/task-board/utils/projectDashboardModel.js +369 -0
- package/dist/task-board/utils/projectDashboardModel.js.map +1 -0
- package/dist/task-board/views/ProjectDashboardView.d.ts +28 -0
- package/dist/task-board/views/ProjectDashboardView.js +308 -0
- package/dist/task-board/views/ProjectDashboardView.js.map +1 -0
- package/dist/tour/TourInputBoundary.d.ts +6 -0
- package/dist/tour/TourInputBoundary.js +82 -0
- package/dist/tour/TourInputBoundary.js.map +1 -0
- package/dist/tour/sandbox-tour-copy.d.ts +8 -0
- package/dist/tour/sandbox-tour-copy.js +8 -0
- package/dist/tour/sandbox-tour-copy.js.map +1 -1
- package/dist/tour/sandbox-tour.d.ts +3 -0
- package/dist/tour/sandbox-tour.js +112 -6
- package/dist/tour/sandbox-tour.js.map +1 -1
- package/dist/tour/tour-utils.d.ts +6 -0
- package/dist/tour/tour-utils.js +10 -0
- package/dist/tour/tour-utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/editor/page-editor-chrome/bridgeLinkValue.d.ts +0 -10
- package/dist/editor/page-editor-chrome/bridgeLinkValue.js +0 -55
- package/dist/editor/page-editor-chrome/bridgeLinkValue.js.map +0 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { GoalData } from "../types";
|
|
2
|
+
import type { IssueSummary } from "../services/issueService";
|
|
3
|
+
import { type GoalSeverity } from "./GoalDataView";
|
|
4
|
+
export type SubgoalFindings = {
|
|
5
|
+
/** Non-zero severity buckets in severity order (critical first). */
|
|
6
|
+
counts: Array<{
|
|
7
|
+
severity: GoalSeverity;
|
|
8
|
+
count: number;
|
|
9
|
+
}>;
|
|
10
|
+
/** Findings that carry a severity, info included. */
|
|
11
|
+
total: number;
|
|
12
|
+
/** Checks with status "fail"; 0 when the data has no checks. */
|
|
13
|
+
failedChecks: number;
|
|
14
|
+
/** Where the numbers come from: the typed issue summary or legacy report data. */
|
|
15
|
+
source: "issues" | "legacy";
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Condenses a subgoal's findings into what a list row needs: how many findings
|
|
19
|
+
* each severity has and how many checks failed.
|
|
20
|
+
*
|
|
21
|
+
* The data source is an explicit choice, not a guess from the numbers: when the
|
|
22
|
+
* goal has Issues enabled the typed summary is authoritative, a missing summary
|
|
23
|
+
* meaning zero unresolved issues. Otherwise the legacy report data is read and
|
|
24
|
+
* null is returned when it carries neither severity counts nor checks, so
|
|
25
|
+
* callers can leave the row blank instead of claiming "no findings". When
|
|
26
|
+
* `issuesEnabled` is not given, the presence of a summary decides.
|
|
27
|
+
*/
|
|
28
|
+
export declare function readSubgoalFindings(data: GoalData, summary?: IssueSummary, issuesEnabled?: boolean): SubgoalFindings | null;
|
|
29
|
+
export declare function describeSubgoalFindings(findings: SubgoalFindings): string;
|
|
30
|
+
type FindingsProps = {
|
|
31
|
+
data: GoalData;
|
|
32
|
+
summary?: IssueSummary;
|
|
33
|
+
/** The owning goal's Issues flag; decides the data source (see readSubgoalFindings). */
|
|
34
|
+
issuesEnabled?: boolean;
|
|
35
|
+
};
|
|
36
|
+
/** Inline severity chips for a subgoal row; "No findings" when the data is clean. */
|
|
37
|
+
export declare function SubgoalFindingsChips({ data, summary, issuesEnabled, }: FindingsProps): import("react").JSX.Element | null;
|
|
38
|
+
/** Compact count for a matrix cell, coloured by the worst severity present. */
|
|
39
|
+
export declare function SubgoalFindingsBadge({ data, summary, issuesEnabled, }: FindingsProps): import("react").JSX.Element | null;
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../lib/utils";
|
|
3
|
+
import { SEVERITIES, asRecord, asSeverityCounts, readGoalChecks, severityStyles, } from "./GoalDataView";
|
|
4
|
+
const EMPTY_SUMMARY = {
|
|
5
|
+
total: 0,
|
|
6
|
+
open: 0,
|
|
7
|
+
awaitingConfirmation: 0,
|
|
8
|
+
resolved: 0,
|
|
9
|
+
dismissed: 0,
|
|
10
|
+
needsHumanReview: 0,
|
|
11
|
+
subjectsWithUnresolvedIssues: 0,
|
|
12
|
+
unresolvedBySeverity: {},
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Condenses a subgoal's findings into what a list row needs: how many findings
|
|
16
|
+
* each severity has and how many checks failed.
|
|
17
|
+
*
|
|
18
|
+
* The data source is an explicit choice, not a guess from the numbers: when the
|
|
19
|
+
* goal has Issues enabled the typed summary is authoritative, a missing summary
|
|
20
|
+
* meaning zero unresolved issues. Otherwise the legacy report data is read and
|
|
21
|
+
* null is returned when it carries neither severity counts nor checks, so
|
|
22
|
+
* callers can leave the row blank instead of claiming "no findings". When
|
|
23
|
+
* `issuesEnabled` is not given, the presence of a summary decides.
|
|
24
|
+
*/
|
|
25
|
+
export function readSubgoalFindings(data, summary, issuesEnabled) {
|
|
26
|
+
const useIssues = issuesEnabled ?? summary !== undefined;
|
|
27
|
+
if (useIssues) {
|
|
28
|
+
const s = summary ?? EMPTY_SUMMARY;
|
|
29
|
+
return {
|
|
30
|
+
counts: SEVERITIES.flatMap((severity) => s.unresolvedBySeverity[severity]
|
|
31
|
+
? [{ severity, count: s.unresolvedBySeverity[severity] }]
|
|
32
|
+
: []),
|
|
33
|
+
total: s.open + s.awaitingConfirmation,
|
|
34
|
+
failedChecks: 0,
|
|
35
|
+
source: "issues",
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const record = asRecord(data);
|
|
39
|
+
if (!record)
|
|
40
|
+
return null;
|
|
41
|
+
const severityCounts = asSeverityCounts(record.severityCounts);
|
|
42
|
+
const checks = readGoalChecks(data);
|
|
43
|
+
if (!severityCounts && !checks)
|
|
44
|
+
return null;
|
|
45
|
+
const counts = SEVERITIES.flatMap((severity) => {
|
|
46
|
+
const count = severityCounts?.[severity] ?? 0;
|
|
47
|
+
return count > 0 ? [{ severity, count }] : [];
|
|
48
|
+
});
|
|
49
|
+
return {
|
|
50
|
+
counts,
|
|
51
|
+
total: counts.reduce((sum, entry) => sum + entry.count, 0),
|
|
52
|
+
failedChecks: checks?.filter((check) => check.status === "fail").length ?? 0,
|
|
53
|
+
source: "legacy",
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export function describeSubgoalFindings(findings) {
|
|
57
|
+
if (findings.counts.length > 0) {
|
|
58
|
+
return findings.counts
|
|
59
|
+
.map((entry) => `${entry.count} ${entry.severity}`)
|
|
60
|
+
.join(", ");
|
|
61
|
+
}
|
|
62
|
+
if (findings.failedChecks > 0) {
|
|
63
|
+
return `${findings.failedChecks} ${findings.failedChecks === 1 ? "check" : "checks"} failed`;
|
|
64
|
+
}
|
|
65
|
+
return findings.source === "issues" ? "No unresolved issues" : "No findings";
|
|
66
|
+
}
|
|
67
|
+
/** Inline severity chips for a subgoal row; "No findings" when the data is clean. */
|
|
68
|
+
export function SubgoalFindingsChips({ data, summary, issuesEnabled, }) {
|
|
69
|
+
const findings = readSubgoalFindings(data, summary, issuesEnabled);
|
|
70
|
+
if (!findings)
|
|
71
|
+
return null;
|
|
72
|
+
const clean = findings.counts.length === 0 && findings.failedChecks === 0;
|
|
73
|
+
return (_jsxs("span", { "data-testid": "taskboard-subgoal-findings", "data-total": findings.total, "data-failed-checks": findings.failedChecks, "data-source": findings.source, className: "flex shrink-0 flex-wrap items-center gap-1", title: describeSubgoalFindings(findings), children: [findings.counts.map((entry) => (_jsxs("span", { className: cn("rounded px-1.5 py-0.5 text-[10px] leading-none font-medium tabular-nums", severityStyles[entry.severity].chip), children: [entry.count, " ", entry.severity] }, entry.severity))), findings.counts.length === 0 && findings.failedChecks > 0 ? (_jsxs("span", { className: "bg-feedback-red-light text-feedback-red rounded px-1.5 py-0.5 text-[10px] leading-none font-medium tabular-nums", children: [findings.failedChecks, " failed"] })) : null, clean ? (_jsx("span", { className: "text-neutral-grey-50 text-[10px] leading-none", children: describeSubgoalFindings(findings) })) : null] }));
|
|
74
|
+
}
|
|
75
|
+
/** Compact count for a matrix cell, coloured by the worst severity present. */
|
|
76
|
+
export function SubgoalFindingsBadge({ data, summary, issuesEnabled, }) {
|
|
77
|
+
const findings = readSubgoalFindings(data, summary, issuesEnabled);
|
|
78
|
+
if (!findings)
|
|
79
|
+
return null;
|
|
80
|
+
const worst = findings.counts[0]?.severity;
|
|
81
|
+
const count = findings.total > 0 ? findings.total : findings.failedChecks;
|
|
82
|
+
if (count === 0)
|
|
83
|
+
return null;
|
|
84
|
+
return (_jsx("span", { "data-testid": "taskboard-subgoal-findings-badge", className: cn("rounded px-1 py-0.5 text-[10px] leading-none font-medium tabular-nums", worst
|
|
85
|
+
? severityStyles[worst].chip
|
|
86
|
+
: "bg-feedback-red-light text-feedback-red"), title: describeSubgoalFindings(findings), children: count }));
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=SubgoalFindings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubgoalFindings.js","sourceRoot":"","sources":["../../../src/task-board/components/SubgoalFindings.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TaskComment } from "../types";
|
|
2
|
+
export type CommentAuthorPresentation = {
|
|
3
|
+
/** The comment was written by an agent on behalf of the execution user. */
|
|
4
|
+
isAgent: boolean;
|
|
5
|
+
/** A human comment written by the viewer. Never true for agent comments. */
|
|
6
|
+
isCurrentUser: boolean;
|
|
7
|
+
/** The name shown in the comment header. */
|
|
8
|
+
label: string;
|
|
9
|
+
/** The viewer owns the row (execution user) and may delete it, agent comments included. */
|
|
10
|
+
canDelete: boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare function normalizeUserName(value: string | null | undefined): string;
|
|
13
|
+
export declare function isAgentComment(comment: Pick<TaskComment, "authorType">): boolean;
|
|
14
|
+
export declare function resolveCommentAuthorPresentation(comment: TaskComment, currentUsername: string | null | undefined, resolvedDisplayName: string): CommentAuthorPresentation;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export function normalizeUserName(value) {
|
|
2
|
+
return (value || "").trim().toLowerCase();
|
|
3
|
+
}
|
|
4
|
+
export function isAgentComment(comment) {
|
|
5
|
+
return (comment.authorType ?? "").trim().toLowerCase() === "agent";
|
|
6
|
+
}
|
|
7
|
+
export function resolveCommentAuthorPresentation(comment, currentUsername, resolvedDisplayName) {
|
|
8
|
+
const isAgent = isAgentComment(comment);
|
|
9
|
+
const normalizedCurrentUser = normalizeUserName(currentUsername);
|
|
10
|
+
const authorMatchesViewer = !!normalizedCurrentUser &&
|
|
11
|
+
normalizeUserName(comment.author) === normalizedCurrentUser;
|
|
12
|
+
const isCurrentUser = !isAgent && authorMatchesViewer;
|
|
13
|
+
const label = isAgent
|
|
14
|
+
? comment.authorDisplayName?.trim() || "Agent"
|
|
15
|
+
: isCurrentUser
|
|
16
|
+
? "You"
|
|
17
|
+
: resolvedDisplayName;
|
|
18
|
+
return {
|
|
19
|
+
isAgent,
|
|
20
|
+
isCurrentUser,
|
|
21
|
+
label,
|
|
22
|
+
canDelete: authorMatchesViewer,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=commentAuthor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commentAuthor.js","sourceRoot":"","sources":["../../../src/task-board/components/commentAuthor.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,iBAAiB,CAAC,KAAgC;IAChE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,OAAwC;IAExC,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,OAAoB,EACpB,eAA0C,EAC1C,mBAA2B;IAE3B,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACjE,MAAM,mBAAmB,GACvB,CAAC,CAAC,qBAAqB;QACvB,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,qBAAqB,CAAC;IAC9D,MAAM,aAAa,GAAG,CAAC,OAAO,IAAI,mBAAmB,CAAC;IAEtD,MAAM,KAAK,GAAG,OAAO;QACnB,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,OAAO;QAC9C,CAAC,CAAC,aAAa;YACb,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,mBAAmB,CAAC;IAE1B,OAAO;QACL,OAAO;QACP,aAAa;QACb,KAAK;QACL,SAAS,EAAE,mBAAmB;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
export type Issue = {
|
|
2
|
+
issueId: string;
|
|
3
|
+
goalId: string;
|
|
4
|
+
subgoalId?: string;
|
|
5
|
+
version: string;
|
|
6
|
+
title: string;
|
|
7
|
+
suggestion?: string;
|
|
8
|
+
subjectType: string;
|
|
9
|
+
subjectKey: string;
|
|
10
|
+
subjectLabel?: string;
|
|
11
|
+
targetItemId?: string;
|
|
12
|
+
language?: string;
|
|
13
|
+
categoryKey: string;
|
|
14
|
+
categoryTitle?: string;
|
|
15
|
+
severity: string;
|
|
16
|
+
disposition: string;
|
|
17
|
+
resolutionMode: string;
|
|
18
|
+
closureBasis?: string;
|
|
19
|
+
closureReason?: string;
|
|
20
|
+
needsHumanReview: boolean;
|
|
21
|
+
reviewReason?: string;
|
|
22
|
+
evidence?: unknown;
|
|
23
|
+
location?: unknown;
|
|
24
|
+
taskLinks: {
|
|
25
|
+
taskId?: string;
|
|
26
|
+
originalTaskId: string;
|
|
27
|
+
taskTitle: string;
|
|
28
|
+
taskStatus?: string;
|
|
29
|
+
active: boolean;
|
|
30
|
+
}[];
|
|
31
|
+
};
|
|
32
|
+
export type IssueSummary = {
|
|
33
|
+
total: number;
|
|
34
|
+
open: number;
|
|
35
|
+
awaitingConfirmation: number;
|
|
36
|
+
resolved: number;
|
|
37
|
+
dismissed: number;
|
|
38
|
+
needsHumanReview: number;
|
|
39
|
+
subjectsWithUnresolvedIssues: number;
|
|
40
|
+
unresolvedBySeverity: Record<string, number>;
|
|
41
|
+
};
|
|
42
|
+
export type IssueList = {
|
|
43
|
+
issues: Issue[];
|
|
44
|
+
totals: IssueSummary;
|
|
45
|
+
filteredTotals: IssueSummary;
|
|
46
|
+
issueRevision: number;
|
|
47
|
+
hasMore: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* SQL read consistency. `false` means the rows and totals may come from
|
|
50
|
+
* different revisions because issues were changing during the read; the
|
|
51
|
+
* service already retried with backoff before handing such a result out.
|
|
52
|
+
*/
|
|
53
|
+
consistent?: boolean;
|
|
54
|
+
};
|
|
55
|
+
export type IssueFilter = {
|
|
56
|
+
goalId: string;
|
|
57
|
+
disposition?: string;
|
|
58
|
+
severity?: string;
|
|
59
|
+
categoryKey?: string;
|
|
60
|
+
search?: string;
|
|
61
|
+
page?: number;
|
|
62
|
+
limit?: number;
|
|
63
|
+
};
|
|
64
|
+
export type IssueSelection = {
|
|
65
|
+
issueId: string;
|
|
66
|
+
version: string;
|
|
67
|
+
};
|
|
68
|
+
export type IssueTaskBundle = {
|
|
69
|
+
title: string;
|
|
70
|
+
description?: string;
|
|
71
|
+
priority: string;
|
|
72
|
+
issues: IssueSelection[];
|
|
73
|
+
};
|
|
74
|
+
export type IssueHistory = {
|
|
75
|
+
historyId: string;
|
|
76
|
+
action: string;
|
|
77
|
+
disposition: string;
|
|
78
|
+
basis?: string;
|
|
79
|
+
reason?: string;
|
|
80
|
+
actor: string;
|
|
81
|
+
createdAt: string;
|
|
82
|
+
};
|
|
83
|
+
/** Fields accepted by createIssues (server: NewIssue). */
|
|
84
|
+
export type NewIssue = {
|
|
85
|
+
subgoalId?: string;
|
|
86
|
+
subjectType: "Local" | "SitecoreItem";
|
|
87
|
+
subjectKey?: string;
|
|
88
|
+
subjectLabel?: string;
|
|
89
|
+
targetItemId?: string;
|
|
90
|
+
language?: string;
|
|
91
|
+
categoryKey?: string;
|
|
92
|
+
categoryTitle?: string;
|
|
93
|
+
occurrenceKey?: string;
|
|
94
|
+
severity?: string;
|
|
95
|
+
title: string;
|
|
96
|
+
suggestion?: string;
|
|
97
|
+
needsHumanReview?: boolean;
|
|
98
|
+
reviewReason?: string;
|
|
99
|
+
};
|
|
100
|
+
export type QaDomain = {
|
|
101
|
+
checkKey: string;
|
|
102
|
+
subgoalId?: string;
|
|
103
|
+
};
|
|
104
|
+
export type QaCheck = {
|
|
105
|
+
checkKey: string;
|
|
106
|
+
subgoalId?: string;
|
|
107
|
+
domainKey: string;
|
|
108
|
+
generation: number;
|
|
109
|
+
fingerprint: string;
|
|
110
|
+
state: string;
|
|
111
|
+
outcome?: string;
|
|
112
|
+
reason?: string;
|
|
113
|
+
definitionStatus: string;
|
|
114
|
+
diagnostics?: string[];
|
|
115
|
+
subjectLabel: string;
|
|
116
|
+
inputs?: {
|
|
117
|
+
rootId?: string;
|
|
118
|
+
language?: string;
|
|
119
|
+
sourceLanguage?: string;
|
|
120
|
+
};
|
|
121
|
+
beganAt?: string;
|
|
122
|
+
beganBy?: string;
|
|
123
|
+
beganByAgentId?: string;
|
|
124
|
+
reportedAt?: string;
|
|
125
|
+
reportedBy?: string;
|
|
126
|
+
abandonedAt?: string;
|
|
127
|
+
abandonedBy?: string;
|
|
128
|
+
abandonReason?: string;
|
|
129
|
+
definition: {
|
|
130
|
+
title: string;
|
|
131
|
+
kind: string;
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
export type QaCheckList = {
|
|
135
|
+
checks: QaCheck[];
|
|
136
|
+
hasMore: boolean;
|
|
137
|
+
configurationFingerprint?: string;
|
|
138
|
+
warnings?: string[];
|
|
139
|
+
consistent?: boolean;
|
|
140
|
+
issueRevision?: number;
|
|
141
|
+
};
|
|
142
|
+
export type IssueConflict = {
|
|
143
|
+
code: string;
|
|
144
|
+
message?: string;
|
|
145
|
+
issues: Issue[];
|
|
146
|
+
currentGeneration?: number;
|
|
147
|
+
domain?: QaDomain;
|
|
148
|
+
domainKey?: string;
|
|
149
|
+
};
|
|
150
|
+
export declare class IssueRequestError extends Error {
|
|
151
|
+
conflict?: IssueConflict | undefined;
|
|
152
|
+
status?: number | undefined;
|
|
153
|
+
constructor(message: string, conflict?: IssueConflict | undefined, status?: number | undefined);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Backoff for reads that report `consistent=false` and for exports refused
|
|
157
|
+
* with 503. Tests shorten it; production keeps 500 ms, 1 s, 2 s.
|
|
158
|
+
*/
|
|
159
|
+
export declare let consistencyBackoffMs: number[];
|
|
160
|
+
export declare const setConsistencyBackoff: (delays: number[]) => void;
|
|
161
|
+
export declare const issueQuery: (query: IssueFilter) => string;
|
|
162
|
+
export declare const listIssues: (query: IssueFilter) => Promise<IssueList>;
|
|
163
|
+
export declare const createIssues: (goalId: string, issues: NewIssue[]) => Promise<{
|
|
164
|
+
issues: Issue[];
|
|
165
|
+
}>;
|
|
166
|
+
export declare const updateIssues: (issues: IssueSelection[], action: string, reason?: string) => Promise<{
|
|
167
|
+
issues: Issue[];
|
|
168
|
+
}>;
|
|
169
|
+
export declare const issueHistory: (issueId: string) => Promise<{
|
|
170
|
+
history: IssueHistory[];
|
|
171
|
+
}>;
|
|
172
|
+
export declare const createIssueTasks: (goalId: string, operationKey: string, bundles: IssueTaskBundle[], dryRun: boolean) => Promise<{
|
|
173
|
+
tasks: {
|
|
174
|
+
taskId: string;
|
|
175
|
+
title: string;
|
|
176
|
+
}[];
|
|
177
|
+
bundles: IssueTaskBundle[];
|
|
178
|
+
}>;
|
|
179
|
+
export declare const listQaChecks: (goalId: string, page?: number) => Promise<QaCheckList>;
|
|
180
|
+
/**
|
|
181
|
+
* Marks a running generation as abandoned (terminal; no new generation is
|
|
182
|
+
* started). Only the current generation can be abandoned and a later report
|
|
183
|
+
* against it is refused with GenerationAbandoned.
|
|
184
|
+
*/
|
|
185
|
+
export declare const abandonQaCheck: (goalId: string, domain: QaDomain, generation: number, reason: string) => Promise<{
|
|
186
|
+
check: QaCheck;
|
|
187
|
+
}>;
|
|
188
|
+
/**
|
|
189
|
+
* Downloads the CSV export. The server refuses to emit mixed data with 503
|
|
190
|
+
* while issues are changing; the download is retried three times before the
|
|
191
|
+
* error reaches the caller.
|
|
192
|
+
*/
|
|
193
|
+
export declare const exportIssues: (query: IssueFilter) => Promise<string>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { get, post, } from "../../editor/services/serviceHelper";
|
|
2
|
+
export class IssueRequestError extends Error {
|
|
3
|
+
conflict;
|
|
4
|
+
status;
|
|
5
|
+
constructor(message, conflict, status) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.conflict = conflict;
|
|
8
|
+
this.status = status;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
async function unwrap(result) {
|
|
12
|
+
if (result.type === "success" && result.data !== undefined)
|
|
13
|
+
return result.data;
|
|
14
|
+
let conflict;
|
|
15
|
+
try {
|
|
16
|
+
conflict = JSON.parse(result.rawDetails || result.details || "{}").conflict;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
/* Non-JSON server errors retain their message. */
|
|
20
|
+
}
|
|
21
|
+
throw new IssueRequestError(conflict?.message || result.summary || "Issue request failed", conflict, result.response?.status);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Backoff for reads that report `consistent=false` and for exports refused
|
|
25
|
+
* with 503. Tests shorten it; production keeps 500 ms, 1 s, 2 s.
|
|
26
|
+
*/
|
|
27
|
+
export let consistencyBackoffMs = [500, 1000, 2000];
|
|
28
|
+
export const setConsistencyBackoff = (delays) => {
|
|
29
|
+
consistencyBackoffMs = delays;
|
|
30
|
+
};
|
|
31
|
+
const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
32
|
+
/**
|
|
33
|
+
* Reads again while the server reports an inconsistent result, then returns
|
|
34
|
+
* the last result as is (still flagged) so the caller can say that counts are
|
|
35
|
+
* changing. A later goal:changed is never relied on to repair the view.
|
|
36
|
+
*/
|
|
37
|
+
async function consistentRead(read) {
|
|
38
|
+
let result = await read();
|
|
39
|
+
for (const delay of consistencyBackoffMs) {
|
|
40
|
+
if (result.consistent !== false)
|
|
41
|
+
break;
|
|
42
|
+
await wait(delay);
|
|
43
|
+
result = await read();
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
export const issueQuery = (query) => new URLSearchParams(Object.entries(query)
|
|
48
|
+
.filter(([, value]) => value !== undefined && value !== "")
|
|
49
|
+
.map(([key, value]) => [key, String(value)])).toString();
|
|
50
|
+
export const listIssues = (query) => consistentRead(async () => unwrap(await get(`/parhelia/tasks/listIssues?${issueQuery(query)}`)));
|
|
51
|
+
export const createIssues = async (goalId, issues) => unwrap(await post("/parhelia/tasks/createIssues", {
|
|
52
|
+
goalId,
|
|
53
|
+
issues,
|
|
54
|
+
}));
|
|
55
|
+
export const updateIssues = async (issues, action, reason) => unwrap(await post("/parhelia/tasks/updateIssues", {
|
|
56
|
+
issues,
|
|
57
|
+
action,
|
|
58
|
+
reason,
|
|
59
|
+
}));
|
|
60
|
+
export const issueHistory = async (issueId) => unwrap(await get(`/parhelia/tasks/issueHistory?issueId=${encodeURIComponent(issueId)}`));
|
|
61
|
+
export const createIssueTasks = async (goalId, operationKey, bundles, dryRun) => unwrap(await post("/parhelia/tasks/createIssueTasks", {
|
|
62
|
+
goalId,
|
|
63
|
+
operationKey,
|
|
64
|
+
bundles,
|
|
65
|
+
dryRun,
|
|
66
|
+
}));
|
|
67
|
+
export const listQaChecks = (goalId, page = 1) => consistentRead(async () => unwrap(await get(`/parhelia/tasks/listQaChecks?goalId=${encodeURIComponent(goalId)}&page=${page}&limit=100`)));
|
|
68
|
+
/**
|
|
69
|
+
* Marks a running generation as abandoned (terminal; no new generation is
|
|
70
|
+
* started). Only the current generation can be abandoned and a later report
|
|
71
|
+
* against it is refused with GenerationAbandoned.
|
|
72
|
+
*/
|
|
73
|
+
export const abandonQaCheck = async (goalId, domain, generation, reason) => unwrap(await post("/parhelia/tasks/abandonQaCheck", {
|
|
74
|
+
goalId,
|
|
75
|
+
domain,
|
|
76
|
+
generation,
|
|
77
|
+
reason,
|
|
78
|
+
}));
|
|
79
|
+
/**
|
|
80
|
+
* Downloads the CSV export. The server refuses to emit mixed data with 503
|
|
81
|
+
* while issues are changing; the download is retried three times before the
|
|
82
|
+
* error reaches the caller.
|
|
83
|
+
*/
|
|
84
|
+
export const exportIssues = async (query) => {
|
|
85
|
+
const url = `/parhelia/tasks/exportIssues?${issueQuery(query)}`;
|
|
86
|
+
let attempt = 0;
|
|
87
|
+
for (;;) {
|
|
88
|
+
const result = await get(url);
|
|
89
|
+
if (result.type === "success")
|
|
90
|
+
return result.response.text();
|
|
91
|
+
if (result.response?.status !== 503 || attempt >= 3)
|
|
92
|
+
throw new IssueRequestError(result.details || result.summary || "Export failed", undefined, result.response?.status);
|
|
93
|
+
await wait(consistencyBackoffMs[attempt] ?? 2000);
|
|
94
|
+
attempt++;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=issueService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issueService.js","sourceRoot":"","sources":["../../../src/task-board/services/issueService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TaskDependency, TaskItem } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Unfinished BlockedBy blockers per task. A subtask also waits for the blockers of
|
|
4
|
+
* every ancestor, except blockers inside that ancestor's own subtask tree (a parent
|
|
5
|
+
* waiting for one of its subtasks). Mirrors TaskBlockerResolver on the server.
|
|
6
|
+
*
|
|
7
|
+
* Own blockers come first, then inherited ones from the nearest ancestor outwards.
|
|
8
|
+
* A blocker that is not loaded counts as open. Tasks without open blockers are absent.
|
|
9
|
+
*/
|
|
10
|
+
export declare function collectOpenBlockerIdsByTaskId(tasks: readonly TaskItem[], dependencies: readonly TaskDependency[]): Map<string, string[]>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { normalizeTaskStatus } from "./taskStatus";
|
|
2
|
+
/**
|
|
3
|
+
* Unfinished BlockedBy blockers per task. A subtask also waits for the blockers of
|
|
4
|
+
* every ancestor, except blockers inside that ancestor's own subtask tree (a parent
|
|
5
|
+
* waiting for one of its subtasks). Mirrors TaskBlockerResolver on the server.
|
|
6
|
+
*
|
|
7
|
+
* Own blockers come first, then inherited ones from the nearest ancestor outwards.
|
|
8
|
+
* A blocker that is not loaded counts as open. Tasks without open blockers are absent.
|
|
9
|
+
*/
|
|
10
|
+
export function collectOpenBlockerIdsByTaskId(tasks, dependencies) {
|
|
11
|
+
const taskById = new Map(tasks.map((task) => [task.taskId, task]));
|
|
12
|
+
const blockerIdsByTaskId = new Map();
|
|
13
|
+
for (const dependency of dependencies) {
|
|
14
|
+
if (dependency.dependencyType !== "BlockedBy")
|
|
15
|
+
continue;
|
|
16
|
+
const blockerIds = blockerIdsByTaskId.get(dependency.taskId) ?? [];
|
|
17
|
+
if (!blockerIds.includes(dependency.dependsOnTaskId)) {
|
|
18
|
+
blockerIds.push(dependency.dependsOnTaskId);
|
|
19
|
+
}
|
|
20
|
+
blockerIdsByTaskId.set(dependency.taskId, blockerIds);
|
|
21
|
+
}
|
|
22
|
+
const getParentId = (taskId) => taskById.get(taskId)?.parentTaskId || null;
|
|
23
|
+
const isOpen = (blockerId) => {
|
|
24
|
+
const blocker = taskById.get(blockerId);
|
|
25
|
+
return (!blocker ||
|
|
26
|
+
normalizeTaskStatus(blocker.status, blocker.executionState) !== "Done");
|
|
27
|
+
};
|
|
28
|
+
const isDescendantOf = (taskId, ancestorId) => {
|
|
29
|
+
const visited = new Set([taskId]);
|
|
30
|
+
let currentId = getParentId(taskId);
|
|
31
|
+
while (currentId && !visited.has(currentId)) {
|
|
32
|
+
if (currentId === ancestorId)
|
|
33
|
+
return true;
|
|
34
|
+
visited.add(currentId);
|
|
35
|
+
currentId = getParentId(currentId);
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
};
|
|
39
|
+
const result = new Map();
|
|
40
|
+
for (const task of tasks) {
|
|
41
|
+
const openBlockerIds = [];
|
|
42
|
+
const addOpenBlockers = (ownerId, inherited) => {
|
|
43
|
+
for (const blockerId of blockerIdsByTaskId.get(ownerId) ?? []) {
|
|
44
|
+
if (blockerId === task.taskId || openBlockerIds.includes(blockerId)) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (inherited && isDescendantOf(blockerId, ownerId))
|
|
48
|
+
continue;
|
|
49
|
+
if (isOpen(blockerId))
|
|
50
|
+
openBlockerIds.push(blockerId);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
addOpenBlockers(task.taskId, false);
|
|
54
|
+
const visited = new Set([task.taskId]);
|
|
55
|
+
let ancestorId = getParentId(task.taskId);
|
|
56
|
+
while (ancestorId && !visited.has(ancestorId)) {
|
|
57
|
+
visited.add(ancestorId);
|
|
58
|
+
addOpenBlockers(ancestorId, true);
|
|
59
|
+
ancestorId = getParentId(ancestorId);
|
|
60
|
+
}
|
|
61
|
+
if (openBlockerIds.length > 0)
|
|
62
|
+
result.set(task.taskId, openBlockerIds);
|
|
63
|
+
}
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=taskBlockers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskBlockers.js","sourceRoot":"","sources":["../../src/task-board/taskBlockers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { GoalDisplaySpec } from "../components/goalDisplaySpec";
|
|
2
|
+
import type { Goal, TaskItem } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* The dashboard reduces the fifteen execution states to four buckets that a
|
|
5
|
+
* project owner acts on differently: nothing (done), watch (running), act
|
|
6
|
+
* (attention) or wait (open, which includes blocked and unassigned work).
|
|
7
|
+
*/
|
|
8
|
+
export type DashboardTaskBucket = "done" | "running" | "attention" | "open";
|
|
9
|
+
export declare function getDashboardTaskBucket(task: TaskItem): DashboardTaskBucket;
|
|
10
|
+
export declare function isFailedTask(task: TaskItem): boolean;
|
|
11
|
+
export type DashboardPhase = "empty" | "finished" | "running" | "attention" | "idle";
|
|
12
|
+
export type DashboardStatusSummary = {
|
|
13
|
+
total: number;
|
|
14
|
+
done: number;
|
|
15
|
+
running: number;
|
|
16
|
+
attention: number;
|
|
17
|
+
failed: number;
|
|
18
|
+
open: number;
|
|
19
|
+
phase: DashboardPhase;
|
|
20
|
+
/** Short lead ("Running.") shown in bold. */
|
|
21
|
+
headline: string;
|
|
22
|
+
/** Plain-language sentence(s) after the headline. */
|
|
23
|
+
detail: string;
|
|
24
|
+
};
|
|
25
|
+
export declare function buildDashboardStatusSummary(tasks: TaskItem[]): DashboardStatusSummary;
|
|
26
|
+
export type DashboardAttentionAction = "Review" | "Answer" | "Open";
|
|
27
|
+
export type DashboardAttentionEntry = {
|
|
28
|
+
task: TaskItem;
|
|
29
|
+
/** What the task needs from the user, in plain words. */
|
|
30
|
+
description: string;
|
|
31
|
+
action: DashboardAttentionAction;
|
|
32
|
+
};
|
|
33
|
+
export declare function describeAttention(task: TaskItem): {
|
|
34
|
+
description: string;
|
|
35
|
+
action: DashboardAttentionAction;
|
|
36
|
+
};
|
|
37
|
+
export declare function listAttentionTasks(tasks: TaskItem[]): DashboardAttentionEntry[];
|
|
38
|
+
export declare function listRunningTasks(tasks: TaskItem[]): TaskItem[];
|
|
39
|
+
/** Row label for the pipeline; null means the row shows no status text. */
|
|
40
|
+
export declare function getDashboardTaskStatusLabel(task: TaskItem, isBlocked: boolean): string | null;
|
|
41
|
+
/** Wall-clock duration of a finished execution, or null when unknown. */
|
|
42
|
+
export declare function getTaskDurationMs(task: TaskItem): number | null;
|
|
43
|
+
/** Time since the execution started, or null when the task never started. */
|
|
44
|
+
export declare function getTaskElapsedMs(task: TaskItem, now: number): number | null;
|
|
45
|
+
export declare function formatDurationShort(ms: number): string;
|
|
46
|
+
/** Earliest execution start across the run, or null when nothing started. */
|
|
47
|
+
export declare function getRunStartedAt(tasks: TaskItem[]): number | null;
|
|
48
|
+
export type DashboardTile = {
|
|
49
|
+
key: string;
|
|
50
|
+
label: string;
|
|
51
|
+
value: string;
|
|
52
|
+
suffix?: string;
|
|
53
|
+
/** Muted trailing text under the value. */
|
|
54
|
+
detail?: string;
|
|
55
|
+
/** Emphasised (red) lead-in for `detail`, e.g. "9 high". */
|
|
56
|
+
emphasis?: string;
|
|
57
|
+
/** 0..100 progress bar under the value. */
|
|
58
|
+
progress?: number | null;
|
|
59
|
+
tone?: "ok" | "neutral";
|
|
60
|
+
};
|
|
61
|
+
export declare const MAX_GOAL_TILES = 4;
|
|
62
|
+
export declare function readGoalSummary(goal: Goal): string | null;
|
|
63
|
+
/**
|
|
64
|
+
* Turns the generic goal widgets (coverage, score, severity counts, metrics)
|
|
65
|
+
* into at most four figures. The goal template's display spec decides the
|
|
66
|
+
* order, so no project type needs its own dashboard code.
|
|
67
|
+
*/
|
|
68
|
+
export declare function buildGoalTiles(goal: Goal, spec: GoalDisplaySpec | null): DashboardTile[];
|