@parhelia/core 0.3.12771 → 0.3.12788
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents-view/AgentCard.js +1 -5
- package/dist/agents-view/AgentCard.js.map +1 -1
- package/dist/agents-view/AgentsView.js +1 -1
- package/dist/agents-view/AgentsView.js.map +1 -1
- package/dist/components/ActionButton.d.ts +7 -0
- package/dist/components/ActionButton.js +2 -2
- package/dist/components/ActionButton.js.map +1 -1
- package/dist/components/MarkdownDisplay.js +1 -1
- package/dist/components/ui/CardConnector.js +1 -1
- package/dist/components/ui/LanguageSelectionGrid.js +1 -1
- package/dist/components/ui/LanguageSelector.js +3 -3
- package/dist/components/ui/LanguageSelector.js.map +1 -1
- package/dist/components/ui/PlaceholderItemSelector.js +1 -1
- package/dist/components/ui/alert.d.ts +1 -1
- package/dist/components/ui/button.d.ts +2 -2
- package/dist/components/ui/card.js +1 -1
- package/dist/components/ui/close-button.d.ts +1 -1
- package/dist/components/ui/context-menu.js +1 -1
- package/dist/components/ui/copy-button.js +1 -1
- package/dist/components/ui/delete-button.d.ts +1 -1
- package/dist/components/ui/paste-button.js +1 -1
- package/dist/components/ui/popover.d.ts +1 -0
- package/dist/components/ui/popover.js +16 -7
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/sonner.js +1 -1
- package/dist/components/ui/upload-button.js +1 -1
- package/dist/config/config.js +18 -4
- package/dist/config/config.js.map +1 -1
- package/dist/editor/ConcurrentUserLimitDialog.js +1 -1
- package/dist/editor/ContentTree.d.ts +12 -1
- package/dist/editor/ContentTree.js +20 -3
- package/dist/editor/ContentTree.js.map +1 -1
- package/dist/editor/FieldActionsOverlay.js.map +1 -1
- package/dist/editor/FieldHistory.d.ts +15 -1
- package/dist/editor/FieldHistory.js +85 -52
- package/dist/editor/FieldHistory.js.map +1 -1
- package/dist/editor/FieldList.js +5 -2
- package/dist/editor/FieldList.js.map +1 -1
- package/dist/editor/FieldListField.js +7 -2
- package/dist/editor/FieldListField.js.map +1 -1
- package/dist/editor/FieldListFieldWithFallbacks.js +1 -1
- package/dist/editor/GlobalMenuBar.js +1 -1
- package/dist/editor/ItemInfo.js +2 -2
- package/dist/editor/ItemInfo.js.map +1 -1
- package/dist/editor/LinkEditorDialog.js +1 -1
- package/dist/editor/MigrationsView.js +1 -1
- package/dist/editor/PictureCropper.js +1 -1
- package/dist/editor/PictureCropper.js.map +1 -1
- package/dist/editor/SetupWizard.js.map +1 -1
- package/dist/editor/WorkspaceTitleSwitcher.js +1 -1
- package/dist/editor/ai/AgentImageCopyButton.d.ts +6 -0
- package/dist/editor/ai/AgentImageCopyButton.js +93 -0
- package/dist/editor/ai/AgentImageCopyButton.js.map +1 -0
- package/dist/editor/ai/AgentSharingSection.js +1 -1
- package/dist/editor/ai/Agents.d.ts +2 -2
- package/dist/editor/ai/Agents.js +2 -10
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/ai/GuidanceOverlay.js +1 -1
- package/dist/editor/ai/GuidanceOverlay.js.map +1 -1
- package/dist/editor/ai/InlineAiDialog.js +1 -1
- package/dist/editor/ai/InlineAiDialog.js.map +1 -1
- package/dist/editor/ai/InlineAiTrigger.js +1 -1
- package/dist/editor/ai/MediaImage.js +2 -1
- package/dist/editor/ai/MediaImage.js.map +1 -1
- package/dist/editor/ai/agentActivitySummary.js.map +1 -1
- package/dist/editor/ai/agentMessageHelpers.js.map +1 -1
- package/dist/editor/ai/dialogs/AgentDialogHandler.js +103 -6
- package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
- package/dist/editor/ai/dialogs/QuestionnaireInline.js +1 -1
- package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +21 -0
- package/dist/editor/ai/dialogs/agentDialogTypes.js +3 -1
- package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
- package/dist/editor/ai/dialogs/offscreenPageCapture.d.ts +14 -1
- package/dist/editor/ai/dialogs/offscreenPageCapture.js +95 -27
- package/dist/editor/ai/dialogs/offscreenPageCapture.js.map +1 -1
- package/dist/editor/ai/terminal/agentCost.d.ts +1 -0
- package/dist/editor/ai/terminal/agentCost.js +10 -3
- package/dist/editor/ai/terminal/agentCost.js.map +1 -1
- package/dist/editor/ai/terminal/agentSessionSelectors.js.map +1 -1
- package/dist/editor/ai/terminal/agentSessionState.js +4 -1
- package/dist/editor/ai/terminal/agentSessionState.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentCostDisplay.d.ts +1 -1
- package/dist/editor/ai/terminal/components/AgentCostDisplay.js +3 -3
- package/dist/editor/ai/terminal/components/AgentCostDisplay.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentDocumentList.js +2 -2
- package/dist/editor/ai/terminal/components/AgentDocumentList.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentFullPromptControls.js +1 -1
- package/dist/editor/ai/terminal/components/AgentMemoryPanel.d.ts +22 -5
- package/dist/editor/ai/terminal/components/AgentMemoryPanel.js +102 -19
- package/dist/editor/ai/terminal/components/AgentMemoryPanel.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentProfileModelSettingsSection.js +1 -1
- package/dist/editor/ai/terminal/components/AgentProfileSwitcher.js +1 -1
- package/dist/editor/ai/terminal/components/AgentPromptInputArea.js +8 -3
- package/dist/editor/ai/terminal/components/AgentPromptInputArea.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +46 -6
- package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentRunStatusBanners.js +1 -1
- package/dist/editor/ai/terminal/components/AgentSettingsContent.js +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalContextChrome.d.ts +1 -0
- package/dist/editor/ai/terminal/components/AgentTerminalContextChrome.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalContextPanels.js +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalContextPanels.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalView.d.ts +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalView.js +1 -1
- package/dist/editor/ai/terminal/components/AiResponseMessage.js +1 -1
- package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
- package/dist/editor/ai/terminal/components/ContextInfoBar.d.ts +2 -1
- package/dist/editor/ai/terminal/components/ContextInfoBar.js +2 -2
- package/dist/editor/ai/terminal/components/ContextInfoBar.js.map +1 -1
- package/dist/editor/ai/terminal/components/EditOperationsPanel.js +1 -1
- package/dist/editor/ai/terminal/components/QuestionnaireRecap.d.ts +2 -2
- package/dist/editor/ai/terminal/components/ToolCallDisplay.js +3 -2
- package/dist/editor/ai/terminal/components/ToolCallDisplay.js.map +1 -1
- package/dist/editor/ai/terminal/components/UserMessage.js +1 -1
- package/dist/editor/ai/terminal/useAgentContextDisplayNames.d.ts +2 -0
- package/dist/editor/ai/terminal/useAgentContextDisplayNames.js +73 -29
- package/dist/editor/ai/terminal/useAgentContextDisplayNames.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentEditorContextPipeline.d.ts +1 -0
- package/dist/editor/ai/terminal/useAgentInlineDialogPipeline.d.ts +1 -1
- package/dist/editor/ai/terminal/useAgentLoader.js +5 -2
- package/dist/editor/ai/terminal/useAgentLoader.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentPromptComposerSurface.d.ts +2 -2
- package/dist/editor/ai/terminal/useAgentPromptQueueSocketHandler.d.ts +2 -0
- package/dist/editor/ai/terminal/useAgentPromptQueueSocketHandler.js +5 -3
- package/dist/editor/ai/terminal/useAgentPromptQueueSocketHandler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentRunMessagePipeline.d.ts +4 -4
- package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js +3 -0
- package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSettingsPanel.d.ts +31 -31
- package/dist/editor/ai/terminal/useAgentSettleCompletedRun.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentStopCommand.js +4 -0
- package/dist/editor/ai/terminal/useAgentStopCommand.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentStreamPipeline.js +1 -0
- package/dist/editor/ai/terminal/useAgentStreamPipeline.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentTerminalChrome.d.ts +1 -0
- package/dist/editor/ai/terminal/useAgentTerminalChrome.js +2 -2
- package/dist/editor/ai/terminal/useAgentTerminalChrome.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentTerminalController.js +3 -1
- package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
- package/dist/editor/ai/useAgentPanes.js.map +1 -1
- package/dist/editor/ai/useAgentStatus.js.map +1 -1
- package/dist/editor/ai/useInlineAiPosition.js.map +1 -1
- package/dist/editor/ai-image-editor/AiImageEditorDialog.js +42 -23
- package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
- package/dist/editor/bridge/BridgeClient.js +6 -6
- package/dist/editor/bridge/BridgeClient.js.map +1 -1
- package/dist/editor/bridge/protocol.d.ts +26 -0
- package/dist/editor/bridge/protocol.js +1 -1
- package/dist/editor/bridge/protocol.js.map +1 -1
- package/dist/editor/client/AboutDialog.js +1 -1
- package/dist/editor/client/EditorShell.js +125 -90
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/SessionExpiredOverlay.js +1 -1
- package/dist/editor/client/SessionExpiredOverlay.js.map +1 -1
- package/dist/editor/client/editContext.d.ts +26 -3
- package/dist/editor/client/editContext.js.map +1 -1
- package/dist/editor/client/fieldModificationStore.js +0 -21
- package/dist/editor/client/fieldModificationStore.js.map +1 -1
- package/dist/editor/client/hooks/useClientInfoRegistration.d.ts +13 -0
- package/dist/editor/client/hooks/useClientInfoRegistration.js +38 -0
- package/dist/editor/client/hooks/useClientInfoRegistration.js.map +1 -0
- package/dist/editor/client/itemsRepository.js +1 -34
- package/dist/editor/client/itemsRepository.js.map +1 -1
- package/dist/editor/client/operations.d.ts +4 -2
- package/dist/editor/client/operations.js +89 -65
- package/dist/editor/client/operations.js.map +1 -1
- package/dist/editor/client/pageModelBuilder.js +7 -1
- package/dist/editor/client/pageModelBuilder.js.map +1 -1
- package/dist/editor/client/ui/EditorChrome.d.ts +1 -0
- package/dist/editor/client/ui/EditorChrome.js +7 -2
- package/dist/editor/client/ui/EditorChrome.js.map +1 -1
- package/dist/editor/client/ui/FullscreenControls.d.ts +3 -0
- package/dist/editor/client/ui/FullscreenControls.js +7 -12
- package/dist/editor/client/ui/FullscreenControls.js.map +1 -1
- package/dist/editor/client/undoTargetResolution.d.ts +28 -0
- package/dist/editor/client/undoTargetResolution.js +69 -0
- package/dist/editor/client/undoTargetResolution.js.map +1 -0
- package/dist/editor/commands/componentCommands.js +2 -2
- package/dist/editor/commands/componentCommands.js.map +1 -1
- package/dist/editor/commands/customCommandConverter.js.map +1 -1
- package/dist/editor/commands/itemCommands.js +19 -2
- package/dist/editor/commands/itemCommands.js.map +1 -1
- package/dist/editor/componentTreeHelper.js +13 -7
- package/dist/editor/componentTreeHelper.js.map +1 -1
- package/dist/editor/content-tree/IndicatorSettings.js +1 -1
- package/dist/editor/content-tree/TreeOptions.js +1 -1
- package/dist/editor/context-menu/InsertMenu.js +1 -1
- package/dist/editor/editor-warnings/NoLanguageWriteAccess.js +1 -1
- package/dist/editor/field-types/AttachmentEditor.js +7 -0
- package/dist/editor/field-types/AttachmentEditor.js.map +1 -1
- package/dist/editor/field-types/LinkFieldEditor.js +1 -1
- package/dist/editor/field-types/PictureFieldEditor.js +21 -21
- package/dist/editor/field-types/PictureFieldEditor.js.map +1 -1
- package/dist/editor/field-types/RichTextEditor.js +1 -1
- package/dist/editor/field-types/RichTextEditorComponent.js +6 -0
- package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
- package/dist/editor/field-types/SingleLineText.js +0 -34
- package/dist/editor/field-types/SingleLineText.js.map +1 -1
- package/dist/editor/field-types/richtext/bridgeRichTextProfile.d.ts +1 -1
- package/dist/editor/field-types/richtext/components/EditorDropdown.js +1 -1
- package/dist/editor/field-types/richtext/components/ReactSlate.js +1 -1
- package/dist/editor/field-types/richtext/components/SimpleDropdown.js +1 -1
- package/dist/editor/field-types/richtext/components/SimpleToolbar.js +1 -1
- package/dist/editor/field-types/richtext/hooks/useRichTextProfile.js.map +1 -1
- package/dist/editor/field-types/richtext/utils/conversion.js +2 -4
- package/dist/editor/field-types/richtext/utils/conversion.js.map +1 -1
- package/dist/editor/field-types/richtext/utils/plugins.d.ts +1 -0
- package/dist/editor/field-types/richtext/utils/plugins.js +12 -0
- package/dist/editor/field-types/richtext/utils/plugins.js.map +1 -1
- package/dist/editor/field-types/richtext/utils/profileMapper.js.map +1 -1
- package/dist/editor/field-types/useFormFieldCaretPresence.js.map +1 -1
- package/dist/editor/fieldValueDiagnostics.js.map +1 -1
- package/dist/editor/insertOptionCompatibility.d.ts +7 -0
- package/dist/editor/insertOptionCompatibility.js +15 -0
- package/dist/editor/insertOptionCompatibility.js.map +1 -0
- package/dist/editor/media-selector/MediaFolderBrowser.js +26 -4
- package/dist/editor/media-selector/MediaFolderBrowser.js.map +1 -1
- package/dist/editor/media-selector/Preview.js +6 -11
- package/dist/editor/media-selector/Preview.js.map +1 -1
- package/dist/editor/media-selector/Thumbnails.js +31 -3
- package/dist/editor/media-selector/Thumbnails.js.map +1 -1
- package/dist/editor/media-selector/TreeSelector.js +53 -6
- package/dist/editor/media-selector/TreeSelector.js.map +1 -1
- package/dist/editor/media-selector/UploadZone.d.ts +1 -2
- package/dist/editor/media-selector/UploadZone.js +3 -4
- package/dist/editor/media-selector/UploadZone.js.map +1 -1
- package/dist/editor/media-selector/mediaItemDrag.d.ts +28 -0
- package/dist/editor/media-selector/mediaItemDrag.js +42 -0
- package/dist/editor/media-selector/mediaItemDrag.js.map +1 -0
- package/dist/editor/menubar/ActiveUsers.js +6 -3
- package/dist/editor/menubar/ActiveUsers.js.map +1 -1
- package/dist/editor/menubar/GenericToolbar.js +1 -1
- package/dist/editor/menubar/GenericToolbar.js.map +1 -1
- package/dist/editor/menubar/ItemActionsMenu.js +1 -1
- package/dist/editor/menubar/ItemLanguageVersion.js +1 -1
- package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
- package/dist/editor/menubar/OperationsIndicator.js +1 -1
- package/dist/editor/menubar/PageSelector.d.ts +2 -1
- package/dist/editor/menubar/PageSelector.js +14 -4
- package/dist/editor/menubar/PageSelector.js.map +1 -1
- package/dist/editor/menubar/VersionPreviewCard.js +1 -1
- package/dist/editor/menubar/VersionSelector.js +1 -1
- package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js +1 -1
- package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.d.ts +3 -1
- package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js +6 -7
- package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/EditControls.js +5 -5
- package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/InsertControls.js +1 -1
- package/dist/editor/menubar/toolbar-sections/InsertControls.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/ManualBrowser.js +14 -4
- package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/PreviewModeControl.d.ts +1 -0
- package/dist/editor/menubar/toolbar-sections/PreviewModeControl.js +14 -0
- package/dist/editor/menubar/toolbar-sections/PreviewModeControl.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/RefreshPageControl.d.ts +7 -0
- package/dist/editor/menubar/toolbar-sections/RefreshPageControl.js +44 -0
- package/dist/editor/menubar/toolbar-sections/RefreshPageControl.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/ReviewCommands.js +1 -1
- package/dist/editor/menubar/toolbar-sections/UtilityControls.js +1 -1
- package/dist/editor/menubar/toolbar-sections/ViewportControls.d.ts +7 -0
- package/dist/editor/menubar/toolbar-sections/ViewportControls.js +16 -8
- package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/index.d.ts +1 -0
- package/dist/editor/menubar/toolbar-sections/index.js +1 -0
- package/dist/editor/menubar/toolbar-sections/index.js.map +1 -1
- package/dist/editor/notifications/NotificationCenter.js +1 -1
- package/dist/editor/notifications/WatchButton.js +1 -1
- package/dist/editor/notifications/notificationListState.d.ts +1 -1
- package/dist/editor/notifications/notificationRoutes.js.map +1 -1
- package/dist/editor/notifications/useNotifications.d.ts +1 -1
- package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +6 -3
- package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
- package/dist/editor/page-editor-chrome/CommentHighlightings.js +1 -1
- package/dist/editor/page-editor-chrome/DragInsertionOverlay.js +51 -23
- package/dist/editor/page-editor-chrome/DragInsertionOverlay.js.map +1 -1
- package/dist/editor/page-editor-chrome/EmptyImageFieldIndicators.js +1 -1
- package/dist/editor/page-editor-chrome/FeedbackHighlightBadge.js.map +1 -1
- package/dist/editor/page-editor-chrome/FieldActionIndicators.js +1 -1
- package/dist/editor/page-editor-chrome/FieldEditedIndicators.js +1 -1
- package/dist/editor/page-editor-chrome/FrameMenu.js +1 -1
- package/dist/editor/page-editor-chrome/FrameMenus.js +1 -1
- package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.d.ts +58 -0
- package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js +709 -0
- package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js.map +1 -0
- package/dist/editor/page-editor-chrome/LockedFieldIndicator.js +12 -2
- package/dist/editor/page-editor-chrome/LockedFieldIndicator.js.map +1 -1
- package/dist/editor/page-editor-chrome/PageEditorChrome.js +7 -2
- package/dist/editor/page-editor-chrome/PageEditorChrome.js.map +1 -1
- package/dist/editor/page-editor-chrome/PictureEditorOverlay.js +57 -10
- package/dist/editor/page-editor-chrome/PictureEditorOverlay.js.map +1 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +1 -8
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZones.d.ts +1 -0
- package/dist/editor/page-editor-chrome/PlaceholderDropZones.js +10 -3
- package/dist/editor/page-editor-chrome/PlaceholderDropZones.js.map +1 -1
- package/dist/editor/page-editor-chrome/SuggestionHighlightings.js +5 -2
- package/dist/editor/page-editor-chrome/SuggestionHighlightings.js.map +1 -1
- package/dist/editor/page-editor-chrome/SuggestionVariantSwitcher.js +7 -2
- package/dist/editor/page-editor-chrome/SuggestionVariantSwitcher.js.map +1 -1
- package/dist/editor/page-editor-chrome/VersionDiffHighlightings.d.ts +5 -2
- package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js +153 -51
- package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js.map +1 -1
- package/dist/editor/page-editor-chrome/componentDragObject.d.ts +5 -4
- package/dist/editor/page-editor-chrome/componentDragObject.js +8 -8
- package/dist/editor/page-editor-chrome/componentDragObject.js.map +1 -1
- package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
- package/dist/editor/page-editor-chrome/overlay/geometry.d.ts +7 -0
- package/dist/editor/page-editor-chrome/overlay/geometry.js +35 -17
- package/dist/editor/page-editor-chrome/overlay/geometry.js.map +1 -1
- package/dist/editor/page-editor-chrome/overlay/placeholderZones.js +4 -9
- package/dist/editor/page-editor-chrome/overlay/placeholderZones.js.map +1 -1
- package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js +18 -70
- package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js.map +1 -1
- package/dist/editor/page-viewer/MiniMap.js +1 -1
- package/dist/editor/page-viewer/MiniMap.js.map +1 -1
- package/dist/editor/page-viewer/MinimapDropTargets.js +1 -1
- package/dist/editor/page-viewer/PageViewer.js +5 -3
- package/dist/editor/page-viewer/PageViewer.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +256 -125
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/page-viewer/bridgeFieldPatch.js +0 -45
- package/dist/editor/page-viewer/bridgeFieldPatch.js.map +1 -1
- package/dist/editor/page-viewer/bridgeKeyboardShortcuts.d.ts +12 -0
- package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js +27 -0
- package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js.map +1 -1
- package/dist/editor/page-viewer/fullscreenPagePath.d.ts +1 -0
- package/dist/editor/page-viewer/fullscreenPagePath.js +11 -0
- package/dist/editor/page-viewer/fullscreenPagePath.js.map +1 -0
- package/dist/editor/page-viewer/internalLinkNavigation.d.ts +9 -0
- package/dist/editor/page-viewer/internalLinkNavigation.js +104 -0
- package/dist/editor/page-viewer/internalLinkNavigation.js.map +1 -0
- package/dist/editor/page-viewer/pageViewContext.d.ts +3 -1
- package/dist/editor/page-viewer/pageViewContext.js +14 -10
- package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
- package/dist/editor/page-viewer/parentBridgeInjection.d.ts +6 -1
- package/dist/editor/page-viewer/parentBridgeInjection.js +117 -24
- package/dist/editor/page-viewer/parentBridgeInjection.js.map +1 -1
- package/dist/editor/page-viewer/renderUrl.d.ts +1 -1
- package/dist/editor/personalization/ConditionTreeEditor.js +1 -1
- package/dist/editor/personalization/ConditionTreeEditor.js.map +1 -1
- package/dist/editor/personalization/PersonalizationPanel.js +1 -1
- package/dist/editor/personalization/TreeItemPicker.js +7 -1
- package/dist/editor/personalization/TreeItemPicker.js.map +1 -1
- package/dist/editor/personalization/utils.js.map +1 -1
- package/dist/editor/reviews/CommentEditor.js +1 -1
- package/dist/editor/reviews/CommentEditor.js.map +1 -1
- package/dist/editor/reviews/CommentView.js +1 -1
- package/dist/editor/reviews/Comments.js +5 -20
- package/dist/editor/reviews/Comments.js.map +1 -1
- package/dist/editor/reviews/CreateReviewDialog.js +1 -1
- package/dist/editor/reviews/DecisionsMatrix.js +1 -1
- package/dist/editor/reviews/EditReviewSettingsDialog.js +1 -1
- package/dist/editor/reviews/FeedbackFilters.d.ts +16 -0
- package/dist/editor/reviews/FeedbackFilters.js +45 -0
- package/dist/editor/reviews/FeedbackFilters.js.map +1 -0
- package/dist/editor/reviews/FeedbackModeIntro.js +2 -2
- package/dist/editor/reviews/FeedbackModeIntro.js.map +1 -1
- package/dist/editor/reviews/MentionText.js +1 -1
- package/dist/editor/reviews/ReviewCard.js +1 -1
- package/dist/editor/reviews/ReviewDetail.js +5 -1
- package/dist/editor/reviews/ReviewDetail.js.map +1 -1
- package/dist/editor/reviews/ReviewItemsPanel.js +74 -11
- package/dist/editor/reviews/ReviewItemsPanel.js.map +1 -1
- package/dist/editor/reviews/SecretPhraseInput.js +1 -1
- package/dist/editor/reviews/suggestedEditState.js.map +1 -1
- package/dist/editor/reviews/useMultiReview.js +45 -17
- package/dist/editor/reviews/useMultiReview.js.map +1 -1
- package/dist/editor/reviews/useReviews.js +24 -5
- package/dist/editor/reviews/useReviews.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +91 -10
- package/dist/editor/services/agentService.js +100 -27
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/services/contentService.d.ts +3 -1
- package/dist/editor/services/contentService.js +8 -0
- package/dist/editor/services/contentService.js.map +1 -1
- package/dist/editor/services/contextService.js.map +1 -1
- package/dist/editor/services/editService.js.map +1 -1
- package/dist/editor/services/favouritesService.d.ts +0 -7
- package/dist/editor/services/favouritesService.js +0 -7
- package/dist/editor/services/favouritesService.js.map +1 -1
- package/dist/editor/services/indexService.d.ts +3 -1
- package/dist/editor/services/indexService.js +8 -0
- package/dist/editor/services/indexService.js.map +1 -1
- package/dist/editor/services/localStorageService.js.map +1 -1
- package/dist/editor/services/reviewsService.js.map +1 -1
- package/dist/editor/services/serviceHelper.d.ts +3 -0
- package/dist/editor/services/serviceHelper.js +51 -1
- package/dist/editor/services/serviceHelper.js.map +1 -1
- package/dist/editor/services/suggestedEditsService.js.map +1 -1
- package/dist/editor/services/systemService.d.ts +10 -0
- package/dist/editor/services/systemService.js +3 -0
- package/dist/editor/services/systemService.js.map +1 -1
- package/dist/editor/services/textCompletionService.js +5 -0
- package/dist/editor/services/textCompletionService.js.map +1 -1
- package/dist/editor/settings/About.js +2 -4
- package/dist/editor/settings/About.js.map +1 -1
- package/dist/editor/settings/IndexOverview.js +3 -2
- package/dist/editor/settings/IndexOverview.js.map +1 -1
- package/dist/editor/settings/SettingsBreadcrumb.js +1 -1
- package/dist/editor/settings/SettingsView.js +1 -1
- package/dist/editor/settings/StatusSummary.js +1 -1
- package/dist/editor/settings/index/IndexGenerationsSection.d.ts +8 -0
- package/dist/editor/settings/index/IndexGenerationsSection.js +93 -0
- package/dist/editor/settings/index/IndexGenerationsSection.js.map +1 -0
- package/dist/editor/settings/panels/AgentProfileConfigPanel.js +1 -1
- package/dist/editor/settings/panels/AgentsPanel.js +1 -1
- package/dist/editor/settings/panels/CreateAgentProfileDialog.js +1 -1
- package/dist/editor/settings/panels/CreateJavaScriptToolDialog.js +1 -1
- package/dist/editor/settings/panels/CreateMcpServerDialog.js +1 -1
- package/dist/editor/settings/panels/JavaScriptToolsPanel.js +1 -1
- package/dist/editor/settings/panels/MemoriesPanel.d.ts +16 -0
- package/dist/editor/settings/panels/MemoriesPanel.js +291 -0
- package/dist/editor/settings/panels/MemoriesPanel.js.map +1 -0
- package/dist/editor/settings/panels/MemoryEntryDialog.d.ts +45 -0
- package/dist/editor/settings/panels/MemoryEntryDialog.js +167 -0
- package/dist/editor/settings/panels/MemoryEntryDialog.js.map +1 -0
- package/dist/editor/settings/panels/ModelsPanel.js +1 -1
- package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
- package/dist/editor/settings/panels/NotificationSubscriptionsPanel.js +1 -1
- package/dist/editor/settings/panels/NotificationSubscriptionsPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js +1 -1
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProvidersPanel.js +1 -1
- package/dist/editor/settings/panels/RenderingHostsPanel.d.ts +2 -0
- package/dist/editor/settings/panels/RenderingHostsPanel.js +63 -0
- package/dist/editor/settings/panels/RenderingHostsPanel.js.map +1 -0
- package/dist/editor/settings/panels/SearchConfigPanel.js +6 -4
- package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/StatusPanel.js +1 -1
- package/dist/editor/settings/panels/index.d.ts +2 -0
- package/dist/editor/settings/panels/index.js +2 -0
- package/dist/editor/settings/panels/index.js.map +1 -1
- package/dist/editor/setup-wizard/steps/CompleteStep.js +1 -1
- package/dist/editor/setup-wizard/steps/CreateSettingsStep.js +1 -1
- package/dist/editor/setup-wizard/steps/LicenseActivationStep.js +1 -1
- package/dist/editor/setup-wizard/steps/LicenseEmailStep.js +1 -1
- package/dist/editor/setup-wizard/steps/ModelSelectionStep.js +1 -1
- package/dist/editor/setup-wizard/steps/ProviderStep.js +1 -1
- package/dist/editor/sidebar/ComponentPalette.js +4 -4
- package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
- package/dist/editor/sidebar/ComponentTree.js +206 -113
- package/dist/editor/sidebar/ComponentTree.js.map +1 -1
- package/dist/editor/sidebar/ContentTreePanel.d.ts +2 -2
- package/dist/editor/sidebar/DictionaryEditor.js +1 -1
- package/dist/editor/sidebar/EditHistory.js +1 -1
- package/dist/editor/sidebar/Favorites.js.map +1 -1
- package/dist/editor/sidebar/NavigationPanelItem.js +1 -1
- package/dist/editor/sidebar/OperationItem.js +1 -1
- package/dist/editor/sidebar/Sessions.js +20 -9
- package/dist/editor/sidebar/Sessions.js.map +1 -1
- package/dist/editor/sidebar/Workbox.d.ts +8 -0
- package/dist/editor/sidebar/Workbox.js +94 -12
- package/dist/editor/sidebar/Workbox.js.map +1 -1
- package/dist/editor/sidebar/WorkboxFilters.d.ts +11 -0
- package/dist/editor/sidebar/WorkboxFilters.js +61 -0
- package/dist/editor/sidebar/WorkboxFilters.js.map +1 -0
- package/dist/editor/sidebar/WorkspaceRail.js +1 -1
- package/dist/editor/sidebar/useSharedComponentPublishState.js.map +1 -1
- package/dist/editor/template-wizard/TemplateBuilderDialog.js +1 -1
- package/dist/editor/template-wizard/TemplateStructureInlineEditor.js +1 -1
- package/dist/editor/tree-indicators/GutterColumns.js +1 -1
- package/dist/editor/tree-indicators/GutterContext.js +2 -2
- package/dist/editor/tree-indicators/GutterContext.js.map +1 -1
- package/dist/editor/ui/DragPreview.js.map +1 -1
- package/dist/editor/ui/ItemCollectionEditor.js +1 -1
- package/dist/editor/ui/ItemNameDialogNew.d.ts +11 -0
- package/dist/editor/ui/ItemNameDialogNew.js +12 -7
- package/dist/editor/ui/ItemNameDialogNew.js.map +1 -1
- package/dist/editor/ui/ItemSearch.js +1 -1
- package/dist/editor/ui/PerfectTree.d.ts +5 -1
- package/dist/editor/ui/PerfectTree.js +7 -5
- package/dist/editor/ui/PerfectTree.js.map +1 -1
- package/dist/editor/ui/PublishDialog.js +1 -1
- package/dist/editor/ui/PublishItemDialog.js +1 -1
- package/dist/editor/ui/PublishRestrictionsDialog.js +2 -2
- package/dist/editor/ui/PublishRestrictionsDialog.js.map +1 -1
- package/dist/editor/ui/RemoveComponentsConfirmMessage.js +1 -1
- package/dist/editor/ui/SimpleIconButton.d.ts +1 -1
- package/dist/editor/ui/SimpleTable.d.ts +5 -1
- package/dist/editor/ui/SimpleTable.js +5 -1
- package/dist/editor/ui/SimpleTable.js.map +1 -1
- package/dist/editor/ui/Spinner.js +1 -1
- package/dist/editor/ui/Spinner.js.map +1 -1
- package/dist/editor/ui/WorkboxItemsTable.js +49 -20
- package/dist/editor/ui/WorkboxItemsTable.js.map +1 -1
- package/dist/editor/utils/selectionContext.js.map +1 -1
- package/dist/editor/utils/sitecoreDate.js +8 -2
- package/dist/editor/utils/sitecoreDate.js.map +1 -1
- package/dist/editor/version-diff/versionDiffGeometryKeys.d.ts +10 -0
- package/dist/editor/version-diff/versionDiffGeometryKeys.js +16 -0
- package/dist/editor/version-diff/versionDiffGeometryKeys.js.map +1 -0
- package/dist/editor/version-diff/versionDiffHighlightStyles.d.ts +6 -0
- package/dist/editor/version-diff/versionDiffHighlightStyles.js +6 -0
- package/dist/editor/version-diff/versionDiffHighlightStyles.js.map +1 -1
- package/dist/editor/version-diff/versionDiffTargets.d.ts +40 -1
- package/dist/editor/version-diff/versionDiffTargets.js +176 -15
- package/dist/editor/version-diff/versionDiffTargets.js.map +1 -1
- package/dist/editor/views/ItemEditor.js +1 -1
- package/dist/editor/views/ItemEditorPane.js +1 -1
- package/dist/editor/views/ItemEditorPane.js.map +1 -1
- package/dist/editor/views/SingleEditView.js +1 -1
- package/dist/lib/pointerDrag.js.map +1 -1
- package/dist/lib/safelist.js +1 -1
- package/dist/licensing/FeatureGate.d.ts +1 -1
- package/dist/licensing/LicenseContext.js.map +1 -1
- package/dist/licensing/LicenseOverlay.js +1 -1
- package/dist/logging/consolePrefix.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/revision.js.map +1 -1
- package/dist/setup/services/setupWizardService.d.ts +3 -56
- package/dist/setup/services/setupWizardService.js +0 -43
- package/dist/setup/services/setupWizardService.js.map +1 -1
- package/dist/setup/wizard/steps/ImportModelDialog.js +1 -1
- package/dist/splash-screen/NewPage.js +1 -1
- package/dist/splash-screen/RecentPages.js +1 -1
- package/dist/task-board/TaskBoardWorkspace.js +5 -0
- package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
- package/dist/task-board/components/ItemCollectionEditorDialog.js +1 -1
- package/dist/task-board/components/ProjectDashboard.js +1 -1
- package/dist/task-board/components/ProjectGoalsPanel.js +1 -1
- package/dist/task-board/components/ProjectSettingsDialog.js +1 -1
- package/dist/task-board/components/TaskBoardBreadcrumb.js +1 -1
- package/dist/task-board/components/TaskBoardProjectListSidebar.js +1 -1
- package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
- package/dist/task-board/components/TaskBoardTitlebar.js +1 -1
- package/dist/task-board/components/TaskDetailPanel.js +1 -1
- package/dist/task-board/components/TaskReviewActions.js +1 -1
- package/dist/task-board/components/TaskRow.js +1 -1
- package/dist/task-board/components/TaskboardPersistentLogPanel.js +1 -1
- package/dist/task-board/components/WizardCommunicationCenter.js +1 -1
- package/dist/task-board/components/WizardTask.js +1 -1
- package/dist/task-board/components/WizardTaskDetailsPanel.js +1 -1
- package/dist/task-board/services/goalService.d.ts +1 -14
- package/dist/task-board/services/goalService.js +0 -10
- package/dist/task-board/services/goalService.js.map +1 -1
- package/dist/task-board/services/taskService.d.ts +0 -11
- package/dist/task-board/services/taskService.js +0 -3
- package/dist/task-board/services/taskService.js.map +1 -1
- package/dist/task-board/views/DependencyGraphView.d.ts +13 -0
- package/dist/task-board/views/DependencyGraphView.js +62 -11
- package/dist/task-board/views/DependencyGraphView.js.map +1 -1
- package/dist/task-board/views/ListView.js +1 -1
- package/dist/tour/Tour.js +1 -1
- package/dist/tour/Tour.js.map +1 -1
- package/dist/tour/default-tour.js +1 -1
- package/dist/tour/preview-tour.js +1 -1
- package/dist/types.d.ts +33 -9
- package/package.json +5 -4
- package/styles.css +4 -4
- package/dist/editor/ai/terminal/components/AgentEditHistoryButton.d.ts +0 -5
- package/dist/editor/ai/terminal/components/AgentEditHistoryButton.js +0 -12
- package/dist/editor/ai/terminal/components/AgentEditHistoryButton.js.map +0 -1
- package/dist/editor/ai/terminal/components/AgentThinkingDots.d.ts +0 -5
- package/dist/editor/ai/terminal/components/AgentThinkingDots.js +0 -9
- package/dist/editor/ai/terminal/components/AgentThinkingDots.js.map +0 -1
- package/dist/editor/reviews/CommentsAndFeedback.d.ts +0 -8
- package/dist/editor/reviews/CommentsAndFeedback.js +0 -17
- package/dist/editor/reviews/CommentsAndFeedback.js.map +0 -1
- package/dist/editor/reviews/CreateReviewDetailsStep.d.ts +0 -53
- package/dist/editor/reviews/CreateReviewDetailsStep.js +0 -77
- package/dist/editor/reviews/CreateReviewDetailsStep.js.map +0 -1
- package/dist/splash-screen/ParheliaAssistantChat.d.ts +0 -8
- package/dist/splash-screen/ParheliaAssistantChat.js +0 -507
- package/dist/splash-screen/ParheliaAssistantChat.js.map +0 -1
- package/dist/splash-screen/SplashScreenAgentContext.d.ts +0 -28
- package/dist/splash-screen/SplashScreenAgentContext.js +0 -51
- package/dist/splash-screen/SplashScreenAgentContext.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useState, useMemo } from "react";
|
|
3
3
|
import { CheckCircle, AlertCircle, AlertTriangle, RefreshCw, ChevronRight, } from "lucide-react";
|
|
4
4
|
import { cn } from "../../lib/utils";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shows the index generations and lets a completed one be promoted to serving queries.
|
|
3
|
+
*
|
|
4
|
+
* A rebuild collects into a new generation while the previous one keeps answering
|
|
5
|
+
* searches, so switching embedding models never leaves the index half-migrated. The
|
|
6
|
+
* activate button stays disabled until that generation's queue is fully drained.
|
|
7
|
+
*/
|
|
8
|
+
export declare function IndexGenerationsSection(): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useState } from "react";
|
|
3
|
+
import { Layers, RefreshCw } from "lucide-react";
|
|
4
|
+
import { SettingsCard as Card } from "../SettingsCard";
|
|
5
|
+
import { Button } from "../../../components/ui/button";
|
|
6
|
+
import { cn } from "../../../lib/utils";
|
|
7
|
+
import * as indexService from "../../services/indexService";
|
|
8
|
+
function statusLabel(generation) {
|
|
9
|
+
switch (generation.status) {
|
|
10
|
+
case "active":
|
|
11
|
+
return "Serving queries";
|
|
12
|
+
case "building":
|
|
13
|
+
return "Being built";
|
|
14
|
+
case "retired":
|
|
15
|
+
return "Retired";
|
|
16
|
+
default:
|
|
17
|
+
return generation.status;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function statusClass(status) {
|
|
21
|
+
if (status === "active")
|
|
22
|
+
return "text-feedback-green";
|
|
23
|
+
if (status === "building")
|
|
24
|
+
return "text-feedback-orange";
|
|
25
|
+
return "text-neutral-grey-50";
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Shows the index generations and lets a completed one be promoted to serving queries.
|
|
29
|
+
*
|
|
30
|
+
* A rebuild collects into a new generation while the previous one keeps answering
|
|
31
|
+
* searches, so switching embedding models never leaves the index half-migrated. The
|
|
32
|
+
* activate button stays disabled until that generation's queue is fully drained.
|
|
33
|
+
*/
|
|
34
|
+
export function IndexGenerationsSection() {
|
|
35
|
+
const [generations, setGenerations] = useState([]);
|
|
36
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
37
|
+
const [isActivating, setIsActivating] = useState(false);
|
|
38
|
+
const [message, setMessage] = useState(null);
|
|
39
|
+
const [isError, setIsError] = useState(false);
|
|
40
|
+
const load = useCallback(async () => {
|
|
41
|
+
try {
|
|
42
|
+
setIsLoading(true);
|
|
43
|
+
setGenerations(await indexService.getGenerations());
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
setIsError(true);
|
|
47
|
+
setMessage(e?.message || "Could not load index generations");
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
setIsLoading(false);
|
|
51
|
+
}
|
|
52
|
+
}, []);
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
load();
|
|
55
|
+
}, [load]);
|
|
56
|
+
const handleActivate = useCallback(async (generationId) => {
|
|
57
|
+
try {
|
|
58
|
+
setIsActivating(true);
|
|
59
|
+
setMessage(null);
|
|
60
|
+
const result = await indexService.activateGeneration(generationId);
|
|
61
|
+
setIsError(!result.success);
|
|
62
|
+
setMessage(result.message);
|
|
63
|
+
await load();
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
setIsError(true);
|
|
67
|
+
setMessage(e?.message || "Could not activate generation");
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
setIsActivating(false);
|
|
71
|
+
}
|
|
72
|
+
}, [load]);
|
|
73
|
+
// A single active generation and nothing else is the steady state; there is nothing
|
|
74
|
+
// to choose between, so the section stays out of the way.
|
|
75
|
+
if (generations.length <= 1 && !message) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
return (_jsx(Card, { icon: _jsx(Layers, { strokeWidth: 1, className: "h-5 w-5" }), title: "Index generations", description: "A rebuild builds a new generation while the current one keeps serving searches. Activate it once it has finished to switch over.", children: _jsxs("div", { className: "flex flex-col gap-2", "data-testid": "index-generations", children: [generations.map((generation) => {
|
|
79
|
+
const outstanding = generation.pendingRequests +
|
|
80
|
+
generation.processingRequests +
|
|
81
|
+
generation.failedRequests;
|
|
82
|
+
return (_jsxs("div", { className: "bg-neutral-grey-5 flex flex-wrap items-center gap-3 rounded p-2", "data-testid": `index-generation-${generation.generationId}`, children: [_jsxs("div", { className: "min-w-[120px] flex-1", children: [_jsxs("div", { className: "text-neutral-grey-50 text-xs", children: ["Generation ", generation.generationId] }), _jsx("div", { className: cn("text-xs font-medium", statusClass(generation.status)), children: statusLabel(generation) })] }), _jsxs("div", { className: "min-w-[140px] flex-1", children: [_jsx("div", { className: "text-neutral-grey-50 text-xs", children: "Model" }), _jsxs("div", { className: "text-neutral-grey-100 truncate text-xs font-medium", children: [generation.modelName || "Not recorded", generation.supportsImages ? " · images" : ""] })] }), _jsxs("div", { className: "min-w-[90px] flex-1", children: [_jsx("div", { className: "text-neutral-grey-50 text-xs", children: "Items" }), _jsx("div", { className: "text-neutral-grey-100 text-xs font-medium", children: generation.indexedItemCount.toLocaleString() })] }), _jsxs("div", { className: "min-w-[110px] flex-1", children: [_jsx("div", { className: "text-neutral-grey-50 text-xs", children: "Queue" }), _jsx("div", { className: cn("text-xs font-medium", generation.failedRequests > 0
|
|
83
|
+
? "text-feedback-red"
|
|
84
|
+
: "text-neutral-grey-100"), children: outstanding === 0
|
|
85
|
+
? "Drained"
|
|
86
|
+
: `${outstanding.toLocaleString()} left${generation.failedRequests > 0
|
|
87
|
+
? ` (${generation.failedRequests.toLocaleString()} failed)`
|
|
88
|
+
: ""}` })] }), generation.status !== "active" && (_jsx(Button, { variant: "secondary", size: "sm", disabled: !generation.canActivate || isActivating, onClick: () => handleActivate(generation.generationId), "data-testid": `activate-generation-${generation.generationId}`, children: isActivating ? "Activating..." : "Activate" }))] }, generation.generationId));
|
|
89
|
+
}), message && (_jsx("div", { className: cn("rounded border p-2 text-xs", isError
|
|
90
|
+
? "border-feedback-red bg-feedback-red-light text-feedback-red"
|
|
91
|
+
: "border-feedback-green bg-feedback-green-light text-feedback-green"), "data-testid": "index-generations-message", children: message })), _jsx("div", { children: _jsxs(Button, { variant: "ghost", size: "sm", onClick: load, disabled: isLoading, "data-testid": "refresh-generations", children: [_jsx(RefreshCw, { strokeWidth: 1, className: cn("h-3 w-3", isLoading && "animate-spin") }), "Refresh"] }) })] }) }));
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=IndexGenerationsSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexGenerationsSection.js","sourceRoot":"","sources":["../../../../src/editor/settings/index/IndexGenerationsSection.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Brain, Layers, Sparkles, Type, Wrench } from "lucide-react";
|
|
3
3
|
import { ParheliaAgentIcon } from "../../ui/Icons";
|
|
4
4
|
import { CopyButton } from "../../../components/ui/copy-button";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
3
3
|
import { Plus, Search, Shield } from "lucide-react";
|
|
4
4
|
import { useSearchParams } from "../../client/navigation";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useState } from "react";
|
|
3
3
|
import { Dialog, DialogContent, DialogFooter, } from "../../../components/ui/dialog";
|
|
4
4
|
import { Button } from "../../../components/ui/button";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useState } from "react";
|
|
3
3
|
import { Dialog, DialogContent, DialogFooter, } from "../../../components/ui/dialog";
|
|
4
4
|
import { Button } from "../../../components/ui/button";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useState } from "react";
|
|
3
3
|
import { AlertCircle, Loader2, Plus, Server } from "lucide-react";
|
|
4
4
|
import { Button } from "../../../components/ui/button";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useRef, useState, } from "react";
|
|
3
3
|
import { FileCode2, Plus, RefreshCw, ShieldAlert } from "lucide-react";
|
|
4
4
|
import { DeleteIcon } from "../../../components/ui/delete-icon";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Management UI for agent memories.
|
|
4
|
+
*
|
|
5
|
+
* Two kinds live here because they share one store and one prompt pipeline:
|
|
6
|
+
* - Content memories, attached to a content item and inherited by everything below it. This
|
|
7
|
+
* is where tone of voice is authored.
|
|
8
|
+
* - The signed-in user's personal memories, grouped by agent profile.
|
|
9
|
+
*
|
|
10
|
+
* Sits in the AI settings group rather than Personal, because content memories are shared.
|
|
11
|
+
*
|
|
12
|
+
* All creation and editing goes through {@link MemoryEntryDialog}; this panel owns every
|
|
13
|
+
* entry list itself so counts and the left list stay consistent without cross-component
|
|
14
|
+
* syncing. (The chat tray's compact AgentMemoryPanel is intentionally not reused here.)
|
|
15
|
+
*/
|
|
16
|
+
export declare function MemoriesPanel(): React.JSX.Element;
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
3
|
+
import { Brain, Lock, Pencil, Plus, RefreshCw } from "lucide-react";
|
|
4
|
+
import { Button } from "../../../components/ui/button";
|
|
5
|
+
import { DeleteIcon } from "../../../components/ui/delete-icon";
|
|
6
|
+
import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "../../../components/ui/alert-dialog";
|
|
7
|
+
import { SettingsPanelLayout } from "../SettingsPanelLayout";
|
|
8
|
+
import { SearchInput } from "../../../components/SearchInput";
|
|
9
|
+
import { cn } from "../../../lib/utils";
|
|
10
|
+
import { Splitter } from "../../ui/Splitter";
|
|
11
|
+
import { LoadingState } from "../../ui/LoadingState";
|
|
12
|
+
import { SimpleIconButton } from "../../ui/SimpleIconButton";
|
|
13
|
+
import { formatDateTime } from "../../utils";
|
|
14
|
+
import { useRequiredSettingsHeaderActions } from "../SettingsHeaderActionsContext";
|
|
15
|
+
import { loadAiProfiles } from "../../services/aiService";
|
|
16
|
+
import { deleteAgentMemory, getSubtreeMemories, listMyAgentMemories, listSubtreeMemoryScopes, memoryLanguageBadges, } from "../../services/agentService";
|
|
17
|
+
import { MemoryEntryDialog, } from "./MemoryEntryDialog";
|
|
18
|
+
/**
|
|
19
|
+
* Management UI for agent memories.
|
|
20
|
+
*
|
|
21
|
+
* Two kinds live here because they share one store and one prompt pipeline:
|
|
22
|
+
* - Content memories, attached to a content item and inherited by everything below it. This
|
|
23
|
+
* is where tone of voice is authored.
|
|
24
|
+
* - The signed-in user's personal memories, grouped by agent profile.
|
|
25
|
+
*
|
|
26
|
+
* Sits in the AI settings group rather than Personal, because content memories are shared.
|
|
27
|
+
*
|
|
28
|
+
* All creation and editing goes through {@link MemoryEntryDialog}; this panel owns every
|
|
29
|
+
* entry list itself so counts and the left list stay consistent without cross-component
|
|
30
|
+
* syncing. (The chat tray's compact AgentMemoryPanel is intentionally not reused here.)
|
|
31
|
+
*/
|
|
32
|
+
export function MemoriesPanel() {
|
|
33
|
+
const [state, setState] = useState("loading");
|
|
34
|
+
const [error, setError] = useState(null);
|
|
35
|
+
const [scopes, setScopes] = useState([]);
|
|
36
|
+
const [personalMemories, setPersonalMemories] = useState([]);
|
|
37
|
+
const [profiles, setProfiles] = useState([]);
|
|
38
|
+
const [searchQuery, setSearchQuery] = useState("");
|
|
39
|
+
const [selection, setSelection] = useState(null);
|
|
40
|
+
const [dialogTarget, setDialogTarget] = useState(null);
|
|
41
|
+
const [pendingDelete, setPendingDelete] = useState(null);
|
|
42
|
+
const setSettingsHeaderActions = useRequiredSettingsHeaderActions();
|
|
43
|
+
// Entries of the selected scope. Owned here (not by the detail pane) so saves and
|
|
44
|
+
// deletes can update the list and the left column's counts in one place.
|
|
45
|
+
const [scopeEntries, setScopeEntries] = useState([]);
|
|
46
|
+
const [scopeCanWrite, setScopeCanWrite] = useState(false);
|
|
47
|
+
const [entriesState, setEntriesState] = useState("loading");
|
|
48
|
+
const [entriesError, setEntriesError] = useState(null);
|
|
49
|
+
const [entriesRefresh, setEntriesRefresh] = useState(0);
|
|
50
|
+
const load = useCallback(async () => {
|
|
51
|
+
try {
|
|
52
|
+
setState("loading");
|
|
53
|
+
const [scopeResult, personalResult, profileList] = await Promise.all([
|
|
54
|
+
listSubtreeMemoryScopes({ take: 200 }),
|
|
55
|
+
listMyAgentMemories(0, 200),
|
|
56
|
+
// Names for the personal grouping; a failure here must not blank the panel.
|
|
57
|
+
loadAiProfiles().catch(() => []),
|
|
58
|
+
]);
|
|
59
|
+
if (!scopeResult.success) {
|
|
60
|
+
throw new Error(scopeResult.error || "Failed to load memory scopes");
|
|
61
|
+
}
|
|
62
|
+
const scopeList = scopeResult.scopes ?? [];
|
|
63
|
+
setScopes(scopeList);
|
|
64
|
+
setPersonalMemories(personalResult.memories ?? []);
|
|
65
|
+
setProfiles(profileList);
|
|
66
|
+
setError(null);
|
|
67
|
+
setState("success");
|
|
68
|
+
// Land the user on something real instead of an empty "select on the left" pane.
|
|
69
|
+
setSelection((prev) => prev ??
|
|
70
|
+
(scopeList.length > 0
|
|
71
|
+
? { kind: "scope", scopeId: scopeList[0].scopeId }
|
|
72
|
+
: { kind: "personal" }));
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
console.error("Failed to load memories", err);
|
|
76
|
+
setError(err instanceof Error ? err.message : "Failed to load memories");
|
|
77
|
+
setState("error");
|
|
78
|
+
}
|
|
79
|
+
}, []);
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
void load();
|
|
82
|
+
}, [load]);
|
|
83
|
+
const selectedScopeId = selection?.kind === "scope" ? selection.scopeId : null;
|
|
84
|
+
useEffect(() => {
|
|
85
|
+
if (!selectedScopeId)
|
|
86
|
+
return;
|
|
87
|
+
let cancelled = false;
|
|
88
|
+
setEntriesState("loading");
|
|
89
|
+
setEntriesError(null);
|
|
90
|
+
getSubtreeMemories({ scopeId: selectedScopeId, includeInherited: false })
|
|
91
|
+
.then((result) => {
|
|
92
|
+
if (cancelled)
|
|
93
|
+
return;
|
|
94
|
+
if (result.success) {
|
|
95
|
+
setScopeEntries(result.memories ?? []);
|
|
96
|
+
setScopeCanWrite(result.canWrite ?? false);
|
|
97
|
+
setEntriesState("success");
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
setEntriesError(result.error || "Failed to load memories");
|
|
101
|
+
setEntriesState("error");
|
|
102
|
+
}
|
|
103
|
+
})
|
|
104
|
+
.catch((err) => {
|
|
105
|
+
if (cancelled)
|
|
106
|
+
return;
|
|
107
|
+
console.error("Failed to load content memories", err);
|
|
108
|
+
setEntriesError(err instanceof Error ? err.message : "Failed to load memories");
|
|
109
|
+
setEntriesState("error");
|
|
110
|
+
});
|
|
111
|
+
return () => {
|
|
112
|
+
cancelled = true;
|
|
113
|
+
};
|
|
114
|
+
}, [selectedScopeId, entriesRefresh]);
|
|
115
|
+
const filteredScopes = useMemo(() => {
|
|
116
|
+
const query = searchQuery.trim().toLowerCase();
|
|
117
|
+
if (!query)
|
|
118
|
+
return scopes;
|
|
119
|
+
return scopes.filter((scope) => scope.name?.toLowerCase().includes(query) ||
|
|
120
|
+
scope.path?.toLowerCase().includes(query));
|
|
121
|
+
}, [scopes, searchQuery]);
|
|
122
|
+
const addGuidanceButton = useMemo(() => (_jsxs(Button, { size: "sm", variant: "default", onClick: () => setDialogTarget({ kind: "guidance" }), disabled: state === "loading", "data-testid": "memories-panel-new-guidance", title: "Add content memory", children: [_jsx(Plus, { className: "mr-1 h-4 w-4", strokeWidth: 1 }), "New memory"] })), [state]);
|
|
123
|
+
// Surface the primary action in the settings header bar (desktop only; the toolbar below
|
|
124
|
+
// carries a mobile duplicate).
|
|
125
|
+
useEffect(() => {
|
|
126
|
+
if (!setSettingsHeaderActions)
|
|
127
|
+
return;
|
|
128
|
+
setSettingsHeaderActions(addGuidanceButton);
|
|
129
|
+
return () => {
|
|
130
|
+
setSettingsHeaderActions(null);
|
|
131
|
+
};
|
|
132
|
+
}, [addGuidanceButton, setSettingsHeaderActions]);
|
|
133
|
+
const setScopeCount = useCallback((scopeId, count) => {
|
|
134
|
+
setScopes((prev) => {
|
|
135
|
+
if (count === 0) {
|
|
136
|
+
// A scope only exists in this list because it carries memories.
|
|
137
|
+
return prev.filter((s) => s.scopeId !== scopeId);
|
|
138
|
+
}
|
|
139
|
+
return prev.map((s) => s.scopeId === scopeId ? { ...s, entryCount: count } : s);
|
|
140
|
+
});
|
|
141
|
+
if (count === 0 && selectedScopeId === scopeId) {
|
|
142
|
+
setSelection(null);
|
|
143
|
+
}
|
|
144
|
+
}, [selectedScopeId]);
|
|
145
|
+
const handleDialogSaved = useCallback(async (memory, scopeId) => {
|
|
146
|
+
if (!dialogTarget)
|
|
147
|
+
return;
|
|
148
|
+
if (dialogTarget.kind === "personal") {
|
|
149
|
+
setPersonalMemories((prev) => {
|
|
150
|
+
const index = prev.findIndex((m) => m.id === memory.id);
|
|
151
|
+
if (index === -1)
|
|
152
|
+
return [memory, ...prev];
|
|
153
|
+
const next = [...prev];
|
|
154
|
+
next[index] = memory;
|
|
155
|
+
return next;
|
|
156
|
+
});
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
// Saved into the scope that is already open: update in place.
|
|
160
|
+
if (scopeId && scopeId === selectedScopeId) {
|
|
161
|
+
setScopeEntries((prev) => {
|
|
162
|
+
const index = prev.findIndex((m) => m.id === memory.id);
|
|
163
|
+
const next = index === -1
|
|
164
|
+
? [memory, ...prev]
|
|
165
|
+
: prev.map((m, i) => (i === index ? memory : m));
|
|
166
|
+
if (index === -1)
|
|
167
|
+
setScopeCount(scopeId, next.length);
|
|
168
|
+
return next;
|
|
169
|
+
});
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
// A newly picked scope: only the server can resolve the item's
|
|
173
|
+
// name, path and write access, so reload and select it.
|
|
174
|
+
await load();
|
|
175
|
+
if (scopeId) {
|
|
176
|
+
setSelection({ kind: "scope", scopeId });
|
|
177
|
+
setEntriesRefresh((n) => n + 1);
|
|
178
|
+
}
|
|
179
|
+
}, [dialogTarget, selectedScopeId, setScopeCount, load]);
|
|
180
|
+
const deleteEntry = useCallback(async (entry) => {
|
|
181
|
+
try {
|
|
182
|
+
const result = await deleteAgentMemory(entry.id);
|
|
183
|
+
if (!result.success) {
|
|
184
|
+
setError(result.error || "Failed to delete");
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
if (entry.scopeId) {
|
|
188
|
+
setScopeEntries((prev) => {
|
|
189
|
+
const next = prev.filter((m) => m.id !== entry.id);
|
|
190
|
+
setScopeCount(entry.scopeId, next.length);
|
|
191
|
+
return next;
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
setPersonalMemories((prev) => prev.filter((m) => m.id !== entry.id));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
console.error("Failed to delete memory", err);
|
|
200
|
+
setError(err instanceof Error ? err.message : "Failed to delete");
|
|
201
|
+
}
|
|
202
|
+
}, [setScopeCount]);
|
|
203
|
+
// Confirmation is rendered by this panel itself: the settings workspace has no
|
|
204
|
+
// editor shell, so editContext.confirm silently does nothing there (other panels
|
|
205
|
+
// fell back to window.confirm for the same reason).
|
|
206
|
+
const confirmDelete = useCallback((entry) => {
|
|
207
|
+
setPendingDelete(entry);
|
|
208
|
+
}, []);
|
|
209
|
+
const profileName = useCallback((profileId) => {
|
|
210
|
+
const profile = profiles.find((p) => p.id?.toLowerCase() === profileId.toLowerCase());
|
|
211
|
+
return profile?.displayTitle || profile?.name || "Unknown profile";
|
|
212
|
+
}, [profiles]);
|
|
213
|
+
const personalByProfile = useMemo(() => {
|
|
214
|
+
const grouped = new Map();
|
|
215
|
+
for (const memory of personalMemories) {
|
|
216
|
+
const key = memory.profileId ?? "unknown";
|
|
217
|
+
const existing = grouped.get(key);
|
|
218
|
+
if (existing)
|
|
219
|
+
existing.push(memory);
|
|
220
|
+
else
|
|
221
|
+
grouped.set(key, [memory]);
|
|
222
|
+
}
|
|
223
|
+
return grouped;
|
|
224
|
+
}, [personalMemories]);
|
|
225
|
+
const selectedScope = selection?.kind === "scope"
|
|
226
|
+
? scopes.find((s) => s.scopeId === selection.scopeId)
|
|
227
|
+
: undefined;
|
|
228
|
+
const listContent = (_jsx(SettingsPanelLayout, { children: _jsxs("div", { className: "overflow-hidden rounded-lg bg-white", children: [_jsxs("div", { className: "shrink-0 px-4 py-3", children: [_jsxs("div", { className: "flex flex-col gap-2 sm:flex-row sm:items-center", children: [_jsx(SearchInput, { value: searchQuery, onChange: setSearchQuery, placeholder: "Filter by name or path...", className: "w-full" }), _jsx("div", { className: "shrink-0 md:hidden", children: addGuidanceButton }), _jsx(Button, { size: "sm", variant: "ghost", onClick: () => void load(), title: "Refresh", children: _jsx(RefreshCw, { className: "h-4 w-4", strokeWidth: 1 }) })] }), error ? (_jsx("div", { className: "border-feedback-red bg-feedback-red-light text-feedback-red mt-2 rounded border p-2 text-xs whitespace-pre-wrap", children: error })) : null] }), _jsx("div", { className: "px-4 py-3", children: state === "loading" ? (_jsx(LoadingState, { message: "Loading memories..." })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "text-neutral-grey-50 mb-1 px-2 text-[11px] font-medium uppercase", children: "Content memories" }), filteredScopes.length === 0 ? (_jsxs("div", { className: "flex flex-col items-center justify-center px-6 py-8 text-center", children: [_jsx(Brain, { className: "text-neutral-grey-50 mb-3 h-9 w-9", strokeWidth: 1 }), _jsx("p", { className: "text-neutral-grey-50 text-sm font-medium", children: scopes.length === 0
|
|
229
|
+
? "No content memories yet"
|
|
230
|
+
: "No matching content" }), _jsx("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: scopes.length === 0
|
|
231
|
+
? "Add tone of voice or terminology to a site, and every AI feature working below it will follow it."
|
|
232
|
+
: "Try a different search term." })] })) : (_jsx("div", { className: "divide-border-default divide-y", children: filteredScopes.map((scope) => {
|
|
233
|
+
const isSelected = selection?.kind === "scope" &&
|
|
234
|
+
selection.scopeId === scope.scopeId;
|
|
235
|
+
return (_jsxs("button", { type: "button", onClick: () => setSelection({
|
|
236
|
+
kind: "scope",
|
|
237
|
+
scopeId: scope.scopeId,
|
|
238
|
+
}), className: cn("hover:bg-neutral-grey-5 flex w-full flex-col items-start gap-0.5 px-2 py-2 text-left", isSelected && "bg-neutral-grey-5"), "data-testid": "memories-panel-scope", children: [_jsxs("span", { className: "text-neutral-grey-100 flex items-center gap-1.5 truncate text-sm font-medium", children: [scope.name || scope.path || scope.scopeId, !scope.canWrite && (_jsx(Lock, { className: "text-neutral-grey-50 h-3 w-3 shrink-0", strokeWidth: 1.5, "aria-label": "Read-only" }))] }), _jsx("span", { className: "text-neutral-grey-50 truncate text-[11px]", children: scope.path }), _jsxs("span", { className: "text-neutral-grey-50 text-[11px]", children: [scope.entryCount, " ", scope.entryCount === 1 ? "entry" : "entries"] })] }, scope.scopeId));
|
|
239
|
+
}) })), _jsx("div", { className: "text-neutral-grey-50 mt-4 mb-1 px-2 text-[11px] font-medium uppercase", children: "My memories" }), _jsxs("button", { type: "button", onClick: () => setSelection({ kind: "personal" }), className: cn("hover:bg-neutral-grey-5 flex w-full flex-col items-start gap-0.5 px-2 py-2 text-left", selection?.kind === "personal" && "bg-neutral-grey-5"), "data-testid": "memories-panel-personal", children: [_jsx("span", { className: "text-neutral-grey-100 text-sm font-medium", children: "Personal memories" }), _jsxs("span", { className: "text-neutral-grey-50 text-[11px]", children: [personalMemories.length, " ", personalMemories.length === 1 ? "entry" : "entries", " across", " ", personalByProfile.size, " ", personalByProfile.size === 1 ? "profile" : "profiles"] })] })] })) })] }) }));
|
|
240
|
+
const scopeDetail = selectedScopeId && (_jsxs("div", { className: "py-3", "data-testid": "memories-scope-detail", children: [_jsxs("div", { className: "flex items-start justify-between gap-3 px-4 pb-1", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-neutral-grey-100 truncate text-sm font-medium", children: selectedScope?.name || "Content memories" }), _jsx("div", { className: "text-neutral-grey-50 truncate text-[11px]", title: selectedScope?.path ?? undefined, children: selectedScope?.path })] }), entriesState === "success" && scopeCanWrite && (_jsxs(Button, { size: "sm", variant: "outline", className: "shrink-0", onClick: () => setDialogTarget({
|
|
241
|
+
kind: "guidance",
|
|
242
|
+
scopeId: selectedScopeId,
|
|
243
|
+
scopeLabel: selectedScope?.path || selectedScope?.name || undefined,
|
|
244
|
+
}), "data-testid": "memories-scope-add", children: [_jsx(Plus, { className: "mr-1 h-4 w-4", strokeWidth: 1 }), "Add memory"] }))] }), _jsxs("div", { className: "text-neutral-grey-50 px-4 pb-2 text-xs", children: ["Applies to this content and everything below it \u2014 in every language, or only the languages shown on the entry. Treated as a strong preference, not an enforced rule.", entriesState === "success" && !scopeCanWrite && (_jsxs("span", { className: "text-neutral-grey-100", children: [" ", "You don't have write access to this content, so these memories are read-only for you."] }))] }), entriesState === "loading" ? (_jsx("div", { className: "px-4 py-2", children: _jsx(LoadingState, { message: "Loading memories..." }) })) : entriesState === "error" ? (_jsx("div", { className: "border-feedback-red bg-feedback-red-light text-feedback-red mx-4 my-2 rounded border p-2 text-xs whitespace-pre-wrap", children: entriesError })) : scopeEntries.length === 0 ? (_jsx("div", { className: "text-neutral-grey-50 px-4 py-4 text-xs", children: "No memories on this content yet." })) : (_jsx("div", { className: "divide-border-default divide-y", children: scopeEntries.map((entry) => (_jsx(MemoryEntryRow, { entry: entry, canEdit: scopeCanWrite, onEdit: () => setDialogTarget({
|
|
245
|
+
kind: "guidance",
|
|
246
|
+
scopeId: selectedScopeId,
|
|
247
|
+
scopeLabel: selectedScope?.path || selectedScope?.name || undefined,
|
|
248
|
+
entry,
|
|
249
|
+
}), onDelete: () => confirmDelete(entry) }, entry.id))) }))] }));
|
|
250
|
+
const personalDetail = (_jsxs("div", { className: "py-3", "data-testid": "memories-personal-detail", children: [_jsxs("div", { className: "px-4 pb-1", children: [_jsx("div", { className: "text-neutral-grey-100 text-sm font-medium", children: "Personal memories" }), _jsx("div", { className: "text-neutral-grey-50 text-xs", children: "Facts and preferences agents keep in mind when working with you. Agents add to these as you work with them; only you see them." })] }), personalByProfile.size === 0 ? (_jsx("div", { className: "text-neutral-grey-50 px-4 py-4 text-xs", children: "No personal memories yet. Agents store durable facts here as you work with them." })) : (Array.from(personalByProfile.entries()).map(([profileId, entries]) => (_jsxs("div", { className: "mt-3", children: [_jsxs("div", { className: "flex items-center justify-between gap-2 px-4", children: [_jsx("div", { className: "text-neutral-grey-50 text-[11px] font-medium uppercase", children: profileName(profileId) }), _jsx(SimpleIconButton, { icon: _jsx(Plus, { className: "h-4 w-4", strokeWidth: 1 }), label: "Add memory", onClick: () => setDialogTarget({
|
|
251
|
+
kind: "personal",
|
|
252
|
+
profileId,
|
|
253
|
+
profileName: profileName(profileId),
|
|
254
|
+
}), "data-testid": "memories-personal-add" })] }), _jsx("div", { className: "divide-border-default divide-y", children: entries.map((entry) => (_jsx(MemoryEntryRow, { entry: entry, canEdit: true, onEdit: () => setDialogTarget({
|
|
255
|
+
kind: "personal",
|
|
256
|
+
profileId,
|
|
257
|
+
profileName: profileName(profileId),
|
|
258
|
+
entry,
|
|
259
|
+
}), onDelete: () => confirmDelete(entry) }, entry.id))) })] }, profileId))))] }));
|
|
260
|
+
const detailContent = (_jsx(SettingsPanelLayout, { children: _jsx("div", { className: "overflow-hidden rounded-lg bg-white", children: selection?.kind === "scope" ? (scopeDetail) : selection?.kind === "personal" ? (personalDetail) : (_jsx("div", { className: "text-neutral-grey-50 px-4 py-8 text-sm", children: "Select content on the left to see the memories that apply to it, or choose your personal memories." })) }) }));
|
|
261
|
+
const panels = [
|
|
262
|
+
{ name: "list", content: listContent, defaultSize: 40, minSize: 25 },
|
|
263
|
+
{ name: "detail", content: detailContent, defaultSize: 60, minSize: 30 },
|
|
264
|
+
];
|
|
265
|
+
return (_jsxs(_Fragment, { children: [_jsx(Splitter, { panels: panels, localStorageKey: "memories-panel-splitter-v1", direction: "horizontal" }), _jsx(MemoryEntryDialog, { target: dialogTarget, onClose: () => setDialogTarget(null), onSaved: handleDialogSaved }), _jsx(AlertDialog, { open: !!pendingDelete, onOpenChange: (open) => !open && setPendingDelete(null), children: _jsxs(AlertDialogContent, { "data-testid": "memories-delete-confirm", children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: "Delete memory" }), _jsx(AlertDialogDescription, { children: pendingDelete?.scopeId
|
|
266
|
+
? "Delete this memory? It applies to everyone working below this content, and this cannot be undone."
|
|
267
|
+
: "Delete this memory? This action cannot be undone." })] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { children: "Cancel" }), _jsx(AlertDialogAction, { "data-testid": "memories-delete-confirm-accept", onClick: () => {
|
|
268
|
+
const entry = pendingDelete;
|
|
269
|
+
setPendingDelete(null);
|
|
270
|
+
if (entry)
|
|
271
|
+
void deleteEntry(entry);
|
|
272
|
+
}, children: "Delete" })] })] }) })] }));
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* One memory entry in a detail list. The content is intentionally only available
|
|
276
|
+
* in the edit dialog, keeping potentially sensitive or lengthy memories out of
|
|
277
|
+
* the list.
|
|
278
|
+
*/
|
|
279
|
+
function MemoryEntryRow({ entry, canEdit, onEdit, onDelete, }) {
|
|
280
|
+
const languageBadges = memoryLanguageBadges(entry.languages);
|
|
281
|
+
const isOnDemand = entry.loadMode === "ondemand";
|
|
282
|
+
const updated = new Date(entry.updatedDate);
|
|
283
|
+
const meta = [
|
|
284
|
+
isNaN(updated.getTime()) ? null : `Updated ${formatDateTime(updated)}`,
|
|
285
|
+
entry.createdBy || null,
|
|
286
|
+
]
|
|
287
|
+
.filter(Boolean)
|
|
288
|
+
.join(" · ");
|
|
289
|
+
return (_jsxs("div", { className: "flex items-start gap-3 px-4 py-3", "data-testid": "memories-entry", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [(entry.title || languageBadges.length > 0 || isOnDemand) && (_jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [entry.title && (_jsx("span", { className: "text-neutral-grey-100 text-sm font-medium", children: entry.title })), isOnDemand && (_jsx("span", { className: "border-border-default text-neutral-grey-50 rounded-full border px-1.5 text-[10px]", "data-testid": "memories-entry-load-mode", title: "Not in every prompt - the agent loads it by title when relevant", children: "On demand" })), languageBadges.map((badge) => (_jsx("span", { className: "border-border-default text-neutral-grey-50 rounded-full border px-1.5 text-[10px]", "data-testid": "memories-entry-language", children: badge }, badge)))] })), meta && (_jsx("div", { className: "text-neutral-grey-50 mt-1 text-[11px]", children: meta }))] }), canEdit && (_jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [_jsx(SimpleIconButton, { icon: _jsx(Pencil, { className: "h-4 w-4", strokeWidth: 1 }), label: "Edit", onClick: onEdit, "data-testid": "memories-entry-edit" }), _jsx(SimpleIconButton, { icon: _jsx(DeleteIcon, { size: "lg" }), label: "Delete", onClick: onDelete, "data-testid": "memories-entry-delete" })] }))] }));
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=MemoriesPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoriesPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/MemoriesPanel.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAsB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,cAAc,EAAkB,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,GAGrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,iBAAiB,GAElB,MAAM,qBAAqB,CAAC;AAO7B;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAY,SAAS,CAAC,CAAC;IACzD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAA4B,EAAE,CAAC,CAAC;IACpE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CACtD,EAAE,CACH,CAAC;IACF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAc,EAAE,CAAC,CAAC;IAC1D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IACnE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GACnC,QAAQ,CAAiC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAChD,IAAI,CACL,CAAC;IACF,MAAM,wBAAwB,GAAG,gCAAgC,EAAE,CAAC;IAEpE,kFAAkF;IAClF,yEAAyE;IACzE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAqB,EAAE,CAAC,CAAC;IACzE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAY,SAAS,CAAC,CAAC;IACvE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACtE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAExD,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClC,IAAI,CAAC;YACH,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,MAAM,CAAC,WAAW,EAAE,cAAc,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACnE,uBAAuB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;gBACtC,mBAAmB,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC3B,4EAA4E;gBAC5E,cAAc,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAiB,CAAC;aAChD,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,8BAA8B,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;YAC3C,SAAS,CAAC,SAAS,CAAC,CAAC;YACrB,mBAAmB,CAAC,cAAc,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YACnD,WAAW,CAAC,WAAW,CAAC,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,QAAQ,CAAC,SAAS,CAAC,CAAC;YAEpB,iFAAiF;YACjF,YAAY,CACV,CAAC,IAAI,EAAE,EAAE,CACP,IAAI;gBACJ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;oBACnB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;oBAClD,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAC5B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;YAC9C,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;YACzE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,IAAI,EAAE,CAAC;IACd,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,eAAe,GACnB,SAAS,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe;YAAE,OAAO;QAC7B,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,eAAe,CAAC,SAAS,CAAC,CAAC;QAC3B,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,kBAAkB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;aACtE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,IAAI,SAAS;gBAAE,OAAO;YACtB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,eAAe,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;gBACvC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC;gBAC3C,eAAe,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,eAAe,CAAC,MAAM,CAAC,KAAK,IAAI,yBAAyB,CAAC,CAAC;gBAC3D,eAAe,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,SAAS;gBAAE,OAAO;YACtB,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;YACtD,eAAe,CACb,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAC/D,CAAC;YACF,eAAe,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;IAEtC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,CAAC,KAAK;YAAE,OAAO,MAAM,CAAC;QAC1B,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACzC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC5C,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAE1B,MAAM,iBAAiB,GAAG,OAAO,CAC/B,GAAG,EAAE,CAAC,CACJ,MAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EACpD,QAAQ,EAAE,KAAK,KAAK,SAAS,iBACjB,6BAA6B,EACzC,KAAK,EAAC,oBAAoB,aAE1B,KAAC,IAAI,IAAC,SAAS,EAAC,cAAc,EAAC,WAAW,EAAE,CAAC,GAAI,kBAE1C,CACV,EACD,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,yFAAyF;IACzF,+BAA+B;IAC/B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,wBAAwB;YAAE,OAAO;QACtC,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE;YACV,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAElD,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,OAAe,EAAE,KAAa,EAAE,EAAE;QACjC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YACjB,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,gEAAgE;gBAChE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACpB,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CACxD,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,KAAK,KAAK,CAAC,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;YAC/C,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,EACD,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,MAAM,iBAAiB,GAAG,WAAW,CACnC,KAAK,EAAE,MAAwB,EAAE,OAAgB,EAAE,EAAE;QACnD,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,IAAI,YAAY,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACrC,mBAAmB,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxD,IAAI,KAAK,KAAK,CAAC,CAAC;oBAAE,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;gBACrB,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,8DAA8D;QAC9D,IAAI,OAAO,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;YAC3C,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE;gBACvB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxD,MAAM,IAAI,GACR,KAAK,KAAK,CAAC,CAAC;oBACV,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;oBACnB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,KAAK,KAAK,CAAC,CAAC;oBAAE,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,+DAA+D;QAC/D,wDAAwD;QACxD,MAAM,IAAI,EAAE,CAAC;QACb,IAAI,OAAO,EAAE,CAAC;YACZ,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACzC,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,EACD,CAAC,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,IAAI,CAAC,CACrD,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAC7B,KAAK,EAAE,KAAuB,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,kBAAkB,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE;oBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;oBACnD,aAAa,CAAC,KAAK,CAAC,OAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3C,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,mBAAmB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;YAC9C,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACpE,CAAC;IACH,CAAC,EACD,CAAC,aAAa,CAAC,CAChB,CAAC;IAEF,+EAA+E;IAC/E,iFAAiF;IACjF,oDAAoD;IACpD,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,KAAuB,EAAE,EAAE;QAC5D,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,SAAiB,EAAE,EAAE;QACpB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,CACvD,CAAC;QACF,OAAO,OAAO,EAAE,YAAY,IAAI,OAAO,EAAE,IAAI,IAAI,iBAAiB,CAAC;IACrE,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAA8B,CAAC;QACtD,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC;YAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,QAAQ;gBAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;gBAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,MAAM,aAAa,GACjB,SAAS,EAAE,IAAI,KAAK,OAAO;QACzB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,CAAC;QACrD,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,WAAW,GAAG,CAClB,KAAC,mBAAmB,cAClB,eAAK,SAAS,EAAC,qCAAqC,aAClD,eAAK,SAAS,EAAC,oBAAoB,aACjC,eAAK,SAAS,EAAC,iDAAiD,aAC9D,KAAC,WAAW,IACV,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAC,2BAA2B,EACvC,SAAS,EAAC,QAAQ,GAClB,EACF,cAAK,SAAS,EAAC,oBAAoB,YAAE,iBAAiB,GAAO,EAC7D,KAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,OAAO,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAC1B,KAAK,EAAC,SAAS,YAEf,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,GAC1C,IACL,EAEL,KAAK,CAAC,CAAC,CAAC,CACP,cAAK,SAAS,EAAC,iHAAiH,YAC7H,KAAK,GACF,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,EAEN,cAAK,SAAS,EAAC,WAAW,YACvB,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CACrB,KAAC,YAAY,IAAC,OAAO,EAAC,qBAAqB,GAAG,CAC/C,CAAC,CAAC,CAAC,CACF,8BAEE,cAAK,SAAS,EAAC,kEAAkE,iCAE3E,EACL,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC7B,eAAK,SAAS,EAAC,iEAAiE,aAC9E,KAAC,KAAK,IACJ,SAAS,EAAC,mCAAmC,EAC7C,WAAW,EAAE,CAAC,GACd,EACF,YAAG,SAAS,EAAC,0CAA0C,YACpD,MAAM,CAAC,MAAM,KAAK,CAAC;4CAClB,CAAC,CAAC,yBAAyB;4CAC3B,CAAC,CAAC,qBAAqB,GACvB,EACJ,YAAG,SAAS,EAAC,mCAAmC,YAC7C,MAAM,CAAC,MAAM,KAAK,CAAC;4CAClB,CAAC,CAAC,mGAAmG;4CACrG,CAAC,CAAC,8BAA8B,GAChC,IACA,CACP,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,gCAAgC,YAC5C,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oCAC5B,MAAM,UAAU,GACd,SAAS,EAAE,IAAI,KAAK,OAAO;wCAC3B,SAAS,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;oCACtC,OAAO,CACL,kBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CACZ,YAAY,CAAC;4CACX,IAAI,EAAE,OAAO;4CACb,OAAO,EAAE,KAAK,CAAC,OAAO;yCACvB,CAAC,EAEJ,SAAS,EAAE,EAAE,CACX,sFAAsF,EACtF,UAAU,IAAI,mBAAmB,CAClC,iBACW,sBAAsB,aAElC,gBAAM,SAAS,EAAC,8EAA8E,aAC3F,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,EACzC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAClB,KAAC,IAAI,IACH,SAAS,EAAC,uCAAuC,EACjD,WAAW,EAAE,GAAG,gBACL,WAAW,GACtB,CACH,IACI,EACP,eAAM,SAAS,EAAC,2CAA2C,YACxD,KAAK,CAAC,IAAI,GACN,EACP,gBAAM,SAAS,EAAC,kCAAkC,aAC/C,KAAK,CAAC,UAAU,EAAE,GAAG,EACrB,KAAK,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IACxC,KA9BF,KAAK,CAAC,OAAO,CA+BX,CACV,CAAC;gCACJ,CAAC,CAAC,GACE,CACP,EAED,cAAK,SAAS,EAAC,uEAAuE,4BAEhF,EACN,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EACjD,SAAS,EAAE,EAAE,CACX,sFAAsF,EACtF,SAAS,EAAE,IAAI,KAAK,UAAU,IAAI,mBAAmB,CACtD,iBACW,yBAAyB,aAErC,eAAM,SAAS,EAAC,2CAA2C,kCAEpD,EACP,gBAAM,SAAS,EAAC,kCAAkC,aAC/C,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAC5B,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,aAAS,GAAG,EAC/D,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAC3B,iBAAiB,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,IACjD,IACA,IACR,CACJ,GACG,IACF,GACc,CACvB,CAAC;IAEF,MAAM,WAAW,GAAG,eAAe,IAAI,CACrC,eAAK,SAAS,EAAC,MAAM,iBAAa,uBAAuB,aACvD,eAAK,SAAS,EAAC,kDAAkD,aAC/D,eAAK,SAAS,EAAC,SAAS,aACtB,cAAK,SAAS,EAAC,oDAAoD,YAChE,aAAa,EAAE,IAAI,IAAI,kBAAkB,GACtC,EACN,cACE,SAAS,EAAC,2CAA2C,EACrD,KAAK,EAAE,aAAa,EAAE,IAAI,IAAI,SAAS,YAEtC,aAAa,EAAE,IAAI,GAChB,IACF,EACL,YAAY,KAAK,SAAS,IAAI,aAAa,IAAI,CAC9C,MAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,SAAS,EACjB,SAAS,EAAC,UAAU,EACpB,OAAO,EAAE,GAAG,EAAE,CACZ,eAAe,CAAC;4BACd,IAAI,EAAE,UAAU;4BAChB,OAAO,EAAE,eAAe;4BACxB,UAAU,EACR,aAAa,EAAE,IAAI,IAAI,aAAa,EAAE,IAAI,IAAI,SAAS;yBAC1D,CAAC,iBAEQ,oBAAoB,aAEhC,KAAC,IAAI,IAAC,SAAS,EAAC,cAAc,EAAC,WAAW,EAAE,CAAC,GAAI,kBAE1C,CACV,IACG,EACN,eAAK,SAAS,EAAC,wCAAwC,0LAIpD,YAAY,KAAK,SAAS,IAAI,CAAC,aAAa,IAAI,CAC/C,gBAAM,SAAS,EAAC,uBAAuB,aACpC,GAAG,6FAGC,CACR,IACG,EAEL,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,CAC5B,cAAK,SAAS,EAAC,WAAW,YACxB,KAAC,YAAY,IAAC,OAAO,EAAC,qBAAqB,GAAG,GAC1C,CACP,CAAC,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,CAC7B,cAAK,SAAS,EAAC,sHAAsH,YAClI,YAAY,GACT,CACP,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC9B,cAAK,SAAS,EAAC,wCAAwC,iDAEjD,CACP,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,gCAAgC,YAC5C,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC3B,KAAC,cAAc,IAEb,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,GAAG,EAAE,CACX,eAAe,CAAC;wBACd,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,eAAe;wBACxB,UAAU,EACR,aAAa,EAAE,IAAI,IAAI,aAAa,EAAE,IAAI,IAAI,SAAS;wBACzD,KAAK;qBACN,CAAC,EAEJ,QAAQ,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,IAZ/B,KAAK,CAAC,EAAE,CAab,CACH,CAAC,GACE,CACP,IACG,CACP,CAAC;IAEF,MAAM,cAAc,GAAG,CACrB,eAAK,SAAS,EAAC,MAAM,iBAAa,0BAA0B,aAC1D,eAAK,SAAS,EAAC,WAAW,aACxB,cAAK,SAAS,EAAC,2CAA2C,kCAEpD,EACN,cAAK,SAAS,EAAC,8BAA8B,+IAGvC,IACF,EACL,iBAAiB,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAC9B,cAAK,SAAS,EAAC,wCAAwC,iGAGjD,CACP,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CACpE,eAAqB,SAAS,EAAC,MAAM,aACnC,eAAK,SAAS,EAAC,8CAA8C,aAC3D,cAAK,SAAS,EAAC,wDAAwD,YACpE,WAAW,CAAC,SAAS,CAAC,GACnB,EACN,KAAC,gBAAgB,IACf,IAAI,EAAE,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,EAClD,KAAK,EAAC,YAAY,EAClB,OAAO,EAAE,GAAG,EAAE,CACZ,eAAe,CAAC;oCACd,IAAI,EAAE,UAAU;oCAChB,SAAS;oCACT,WAAW,EAAE,WAAW,CAAC,SAAS,CAAC;iCACpC,CAAC,iBAEQ,uBAAuB,GACnC,IACE,EACN,cAAK,SAAS,EAAC,gCAAgC,YAC5C,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACtB,KAAC,cAAc,IAEb,KAAK,EAAE,KAAK,EACZ,OAAO,QACP,MAAM,EAAE,GAAG,EAAE,CACX,eAAe,CAAC;gCACd,IAAI,EAAE,UAAU;gCAChB,SAAS;gCACT,WAAW,EAAE,WAAW,CAAC,SAAS,CAAC;gCACnC,KAAK;6BACN,CAAC,EAEJ,QAAQ,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,IAX/B,KAAK,CAAC,EAAE,CAYb,CACH,CAAC,GACE,KAnCE,SAAS,CAoCb,CACP,CAAC,CACH,IACG,CACP,CAAC;IAEF,MAAM,aAAa,GAAG,CACpB,KAAC,mBAAmB,cAClB,cAAK,SAAS,EAAC,qCAAqC,YACjD,SAAS,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAC7B,WAAW,CACZ,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CACnC,cAAc,CACf,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,wCAAwC,mHAGjD,CACP,GACG,GACc,CACvB,CAAC;IAEF,MAAM,MAAM,GAAoB;QAC9B,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;KACzE,CAAC;IAEF,OAAO,CACL,8BACE,KAAC,QAAQ,IACP,MAAM,EAAE,MAAM,EACd,eAAe,EAAC,4BAA4B,EAC5C,SAAS,EAAC,YAAY,GACtB,EACF,KAAC,iBAAiB,IAChB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EACpC,OAAO,EAAE,iBAAiB,GAC1B,EACF,KAAC,WAAW,IACV,IAAI,EAAE,CAAC,CAAC,aAAa,EACrB,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAEvD,MAAC,kBAAkB,mBAAa,yBAAyB,aACvD,MAAC,iBAAiB,eAChB,KAAC,gBAAgB,gCAAiC,EAClD,KAAC,sBAAsB,cACpB,aAAa,EAAE,OAAO;wCACrB,CAAC,CAAC,mGAAmG;wCACrG,CAAC,CAAC,mDAAmD,GAChC,IACP,EACpB,MAAC,iBAAiB,eAChB,KAAC,iBAAiB,yBAA2B,EAC7C,KAAC,iBAAiB,mBACJ,gCAAgC,EAC5C,OAAO,EAAE,GAAG,EAAE;wCACZ,MAAM,KAAK,GAAG,aAAa,CAAC;wCAC5B,gBAAgB,CAAC,IAAI,CAAC,CAAC;wCACvB,IAAI,KAAK;4CAAE,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;oCACrC,CAAC,uBAGiB,IACF,IACD,GACT,IACb,CACJ,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,EACtB,KAAK,EACL,OAAO,EACP,MAAM,EACN,QAAQ,GAMT;IACC,MAAM,cAAc,GAAG,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG;QACX,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,cAAc,CAAC,OAAO,CAAC,EAAE;QACtE,KAAK,CAAC,SAAS,IAAI,IAAI;KACxB;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,KAAK,CAAC,CAAC;IAEf,OAAO,CACL,eACE,SAAS,EAAC,kCAAkC,iBAChC,gBAAgB,aAE5B,eAAK,SAAS,EAAC,gBAAgB,aAC5B,CAAC,KAAK,CAAC,KAAK,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAC3D,eAAK,SAAS,EAAC,qCAAqC,aACjD,KAAK,CAAC,KAAK,IAAI,CACd,eAAM,SAAS,EAAC,2CAA2C,YACxD,KAAK,CAAC,KAAK,GACP,CACR,EACA,UAAU,IAAI,CACb,eACE,SAAS,EAAC,mFAAmF,iBACjF,0BAA0B,EACtC,KAAK,EAAC,iEAAiE,0BAGlE,CACR,EAGA,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC7B,eAEE,SAAS,EAAC,mFAAmF,iBACjF,yBAAyB,YAEpC,KAAK,IAJD,KAAK,CAKL,CACR,CAAC,IACE,CACP,EACA,IAAI,IAAI,CACP,cAAK,SAAS,EAAC,uCAAuC,YAAE,IAAI,GAAO,CACpE,IACG,EACL,OAAO,IAAI,CAIV,eAAK,SAAS,EAAC,kCAAkC,aAC/C,KAAC,gBAAgB,IACf,IAAI,EAAE,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,EACpD,KAAK,EAAC,MAAM,EACZ,OAAO,EAAE,MAAM,iBACH,qBAAqB,GACjC,EACF,KAAC,gBAAgB,IACf,IAAI,EAAE,KAAC,UAAU,IAAC,IAAI,EAAC,IAAI,GAAG,EAC9B,KAAK,EAAC,QAAQ,EACd,OAAO,EAAE,QAAQ,iBACL,uBAAuB,GACnC,IACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type AgentMemoryEntry } from "../../services/agentService";
|
|
3
|
+
export declare const CONTENT_ROOT_ID = "0de95ae4-41ab-4d01-9eb0-67441b7c2450";
|
|
4
|
+
/**
|
|
5
|
+
* What the dialog creates or edits.
|
|
6
|
+
*
|
|
7
|
+
* The `guidance` kind is a content memory: attached to a content item, shared by everyone
|
|
8
|
+
* working below it. ("guidance" survives as the discriminant because the API scope name did.)
|
|
9
|
+
*
|
|
10
|
+
* - `guidance` without `entry`: create. The scope is always pickable; `scopeId` only
|
|
11
|
+
* pre-selects the picker (e.g. when adding from an open scope's detail pane).
|
|
12
|
+
* - `guidance` with `entry`: edit. The scope stays pickable - choosing a different item
|
|
13
|
+
* moves the memory there (the server authorizes write access on both ends).
|
|
14
|
+
* - `personal`: one of the user's own memories under an agent profile.
|
|
15
|
+
*/
|
|
16
|
+
export type MemoryEntryDialogTarget = {
|
|
17
|
+
kind: "guidance";
|
|
18
|
+
scopeId?: string;
|
|
19
|
+
scopeLabel?: string | null;
|
|
20
|
+
entry?: AgentMemoryEntry;
|
|
21
|
+
} | {
|
|
22
|
+
kind: "personal";
|
|
23
|
+
profileId: string;
|
|
24
|
+
profileName?: string;
|
|
25
|
+
entry?: AgentMemoryEntry;
|
|
26
|
+
};
|
|
27
|
+
interface MemoryEntryDialogProps {
|
|
28
|
+
/** Non-null opens the dialog. */
|
|
29
|
+
target: MemoryEntryDialogTarget | null;
|
|
30
|
+
onClose: () => void;
|
|
31
|
+
/**
|
|
32
|
+
* Called after a successful save with the stored entry. For guidance,
|
|
33
|
+
* `scopeId` is the scope the entry was attached to.
|
|
34
|
+
*/
|
|
35
|
+
onSaved: (memory: AgentMemoryEntry, scopeId?: string) => void | Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The one editor for memory entries in Settings - creating and editing, guidance and
|
|
39
|
+
* personal, all use this dialog so the fields, sizing and hints never diverge.
|
|
40
|
+
*
|
|
41
|
+
* (The chat tray deliberately does not use it: tray panels live inside a popover that
|
|
42
|
+
* unmounts on dismiss, so the tray keeps its small inline form.)
|
|
43
|
+
*/
|
|
44
|
+
export declare function MemoryEntryDialog({ target, onClose, onSaved, }: MemoryEntryDialogProps): React.JSX.Element;
|
|
45
|
+
export {};
|