@parhelia/core 0.3.12770 → 0.3.12777
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 +17 -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/ConfirmationDialog.d.ts +0 -1
- package/dist/editor/ConfirmationDialog.js +3 -6
- package/dist/editor/ConfirmationDialog.js.map +1 -1
- package/dist/editor/ContentTree.d.ts +12 -1
- package/dist/editor/ContentTree.js +20 -5
- 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 +109 -11
- 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 +11 -0
- package/dist/editor/ai/dialogs/offscreenPageCapture.js +77 -23
- 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.d.ts +1 -0
- package/dist/editor/ai/terminal/agentSessionSelectors.js +29 -3
- 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/AgentActivityOverviewPanel.js +1 -1
- package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.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 +2 -2
- package/dist/editor/ai/terminal/components/AgentProfileSwitcher.js.map +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 +42 -36
- package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
- package/dist/editor/ai/terminal/components/ApprovalCard.js +1 -1
- package/dist/editor/ai/terminal/components/ApprovalCard.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.d.ts +2 -1
- package/dist/editor/ai/terminal/components/ToolCallDisplay.js +10 -16
- 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 +37 -28
- 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/terminal/useAgentTerminalViewState.d.ts +1 -0
- package/dist/editor/ai/terminal/useAgentTerminalViewState.js +22 -1
- package/dist/editor/ai/terminal/useAgentTerminalViewState.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.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 +3 -6
- package/dist/editor/commands/componentCommands.js.map +1 -1
- package/dist/editor/commands/customCommandConverter.js.map +1 -1
- package/dist/editor/commands/itemCommands.js +20 -10
- package/dist/editor/commands/itemCommands.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 +2 -3
- package/dist/editor/context-menu/InsertMenu.js.map +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/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/FavoritesControls.js +8 -1
- package/dist/editor/menubar/FavoritesControls.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 +15 -5
- 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 +2 -2
- package/dist/editor/notifications/NotificationCenter.js.map +1 -1
- package/dist/editor/notifications/NotificationItem.js +16 -57
- package/dist/editor/notifications/NotificationItem.js.map +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 +50 -22
- 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 +4 -4
- package/dist/editor/page-editor-chrome/FrameMenu.js.map +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/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.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 +252 -121
- 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 +2 -0
- package/dist/editor/page-viewer/parentBridgeInjection.js +63 -16
- 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/Comment.js +12 -1
- package/dist/editor/reviews/Comment.js.map +1 -1
- package/dist/editor/reviews/CommentDisplayPopover.js +13 -2
- package/dist/editor/reviews/CommentDisplayPopover.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 +2 -3
- package/dist/editor/reviews/ReviewCard.js.map +1 -1
- package/dist/editor/reviews/ReviewDetail.js +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/SuggestedEdit.js +12 -1
- package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
- package/dist/editor/reviews/SuggestionCommentThread.js +12 -1
- package/dist/editor/reviews/SuggestionCommentThread.js.map +1 -1
- package/dist/editor/reviews/SuggestionDisplayPopover.js +14 -9
- package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
- package/dist/editor/reviews/suggestedEditState.js.map +1 -1
- package/dist/editor/reviews/useMultiReview.js +5 -2
- package/dist/editor/reviews/useMultiReview.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 +182 -61
- 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 +2 -2
- package/dist/editor/sidebar/NavigationPanelItem.js.map +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/HomeListRow.js +1 -1
- package/dist/editor/ui/HomeListRow.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/itemutils.js +0 -3
- package/dist/editor/utils/itemutils.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/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/ModernSplashScreen.js +3 -19
- package/dist/splash-screen/ModernSplashScreen.js.map +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 +3 -2
- package/styles.css +11 -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
|
@@ -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":"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"}
|
|
@@ -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 {};
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
import { Brain } from "lucide-react";
|
|
4
|
+
import { toast } from "sonner";
|
|
5
|
+
import { Button } from "../../../components/ui/button";
|
|
6
|
+
import { ActionButton } from "../../../components/ActionButton";
|
|
7
|
+
import { Input } from "../../../components/ui/input";
|
|
8
|
+
import { Textarea } from "../../../components/ui/textarea";
|
|
9
|
+
import { Dialog, DialogContent, DialogFooter, } from "../../../components/ui/dialog";
|
|
10
|
+
import { StyledDialogTitle } from "../../../components/ui/styled-dialog-title";
|
|
11
|
+
import { cn } from "../../../lib/utils";
|
|
12
|
+
import { LanguageSelectionGrid } from "../../../components/ui/LanguageSelectionGrid";
|
|
13
|
+
import { TreeItemPicker } from "../../personalization/TreeItemPicker";
|
|
14
|
+
import { saveAgentMemory, MEMORY_CONTENT_LIMITS, } from "../../services/agentService";
|
|
15
|
+
import { getLanguages } from "../../services/contentService";
|
|
16
|
+
export const CONTENT_ROOT_ID = "0de95ae4-41ab-4d01-9eb0-67441b7c2450"; // /sitecore/content
|
|
17
|
+
/**
|
|
18
|
+
* The one editor for memory entries in Settings - creating and editing, guidance and
|
|
19
|
+
* personal, all use this dialog so the fields, sizing and hints never diverge.
|
|
20
|
+
*
|
|
21
|
+
* (The chat tray deliberately does not use it: tray panels live inside a popover that
|
|
22
|
+
* unmounts on dismiss, so the tray keeps its small inline form.)
|
|
23
|
+
*/
|
|
24
|
+
export function MemoryEntryDialog({ target, onClose, onSaved, }) {
|
|
25
|
+
const [scopeId, setScopeId] = useState("");
|
|
26
|
+
const [languages, setLanguages] = useState([]);
|
|
27
|
+
const [loadMode, setLoadMode] = useState("eager");
|
|
28
|
+
const [title, setTitle] = useState("");
|
|
29
|
+
const [content, setContent] = useState("");
|
|
30
|
+
const [saving, setSaving] = useState(false);
|
|
31
|
+
const [error, setError] = useState(null);
|
|
32
|
+
// The system-wide language list, not editContext.itemLanguages: this dialog edits scopes
|
|
33
|
+
// that have nothing to do with the loaded item, and Settings has no editor shell anyway.
|
|
34
|
+
const [availableLanguages, setAvailableLanguages] = useState([]);
|
|
35
|
+
const languagesRequestedRef = useRef(false);
|
|
36
|
+
// Render from the last non-null target so the labels don't flash to the
|
|
37
|
+
// fallback wording while the close animation plays after target goes null.
|
|
38
|
+
const lastTargetRef = useRef(null);
|
|
39
|
+
if (target)
|
|
40
|
+
lastTargetRef.current = target;
|
|
41
|
+
const view = target ?? lastTargetRef.current;
|
|
42
|
+
const isGuidance = view?.kind === "guidance";
|
|
43
|
+
const isEdit = !!view?.entry;
|
|
44
|
+
// Seed the drafts whenever a new target opens the dialog.
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
if (!target)
|
|
47
|
+
return;
|
|
48
|
+
setScopeId(target.kind === "guidance"
|
|
49
|
+
? (target.entry?.scopeId ?? target.scopeId ?? "")
|
|
50
|
+
: "");
|
|
51
|
+
setLanguages(target.kind === "guidance" ? (target.entry?.languages ?? []) : []);
|
|
52
|
+
setLoadMode(target.entry?.loadMode ?? "eager");
|
|
53
|
+
setTitle(target.entry?.title ?? "");
|
|
54
|
+
setContent(target.entry?.content ?? "");
|
|
55
|
+
setError(null);
|
|
56
|
+
}, [target]);
|
|
57
|
+
// Fetched once, the first time a guidance target opens. A failure just leaves the grid
|
|
58
|
+
// empty: saving still works and the entry stays unrestricted, which is the safe default.
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
if (target?.kind !== "guidance" || languagesRequestedRef.current)
|
|
61
|
+
return;
|
|
62
|
+
languagesRequestedRef.current = true;
|
|
63
|
+
void (async () => {
|
|
64
|
+
try {
|
|
65
|
+
const result = await getLanguages();
|
|
66
|
+
const list = (result?.data ??
|
|
67
|
+
result ??
|
|
68
|
+
[]);
|
|
69
|
+
setAvailableLanguages(Array.isArray(list) ? list : []);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
console.error("Failed to load languages for memory entry dialog", err);
|
|
73
|
+
}
|
|
74
|
+
})();
|
|
75
|
+
}, [target]);
|
|
76
|
+
const languageOptions = useMemo(() => availableLanguages.map((language) => ({
|
|
77
|
+
code: language.languageCode,
|
|
78
|
+
name: language.name,
|
|
79
|
+
icon: language.icon,
|
|
80
|
+
})), [availableLanguages]);
|
|
81
|
+
const maxContentLength = MEMORY_CONTENT_LIMITS[loadMode];
|
|
82
|
+
// maxLength does not truncate a value that is already in the field, so switching an
|
|
83
|
+
// over-long entry back to "Always apply" has to block saving rather than silently send
|
|
84
|
+
// something the server will reject.
|
|
85
|
+
const overContentLimit = content.trim().length > maxContentLength;
|
|
86
|
+
const missingOnDemandTitle = loadMode === "ondemand" && !title.trim();
|
|
87
|
+
const canSave = !!target &&
|
|
88
|
+
!!content.trim() &&
|
|
89
|
+
!overContentLimit &&
|
|
90
|
+
!missingOnDemandTitle &&
|
|
91
|
+
(target.kind !== "guidance" || !!scopeId) &&
|
|
92
|
+
!saving;
|
|
93
|
+
const handleSave = async () => {
|
|
94
|
+
if (!target || !canSave)
|
|
95
|
+
return;
|
|
96
|
+
try {
|
|
97
|
+
setSaving(true);
|
|
98
|
+
setError(null);
|
|
99
|
+
const result = await saveAgentMemory({
|
|
100
|
+
id: target.entry?.id,
|
|
101
|
+
...(target.kind === "personal"
|
|
102
|
+
? { profileId: target.profileId }
|
|
103
|
+
: // Always explicit: this dialog knows the full selection, so an empty array
|
|
104
|
+
// deliberately clears a restriction the editor just removed.
|
|
105
|
+
{ scopeId, entryLanguages: languages }),
|
|
106
|
+
loadMode,
|
|
107
|
+
title: title.trim() || null,
|
|
108
|
+
content: content.trim(),
|
|
109
|
+
});
|
|
110
|
+
if (!result.success || !result.memory) {
|
|
111
|
+
setError(result.error || "Failed to save");
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
toast.success(isGuidance
|
|
115
|
+
? isEdit
|
|
116
|
+
? "Content memory updated"
|
|
117
|
+
: "Content memory added"
|
|
118
|
+
: isEdit
|
|
119
|
+
? "Memory updated"
|
|
120
|
+
: "Memory added");
|
|
121
|
+
await onSaved(result.memory, isGuidance ? scopeId : undefined);
|
|
122
|
+
onClose();
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
console.error("Failed to save memory entry", err);
|
|
126
|
+
setError(err instanceof Error ? err.message : "Failed to save");
|
|
127
|
+
}
|
|
128
|
+
finally {
|
|
129
|
+
setSaving(false);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
const dialogTitle = isGuidance
|
|
133
|
+
? isEdit
|
|
134
|
+
? "Edit content memory"
|
|
135
|
+
: "New content memory"
|
|
136
|
+
: isEdit
|
|
137
|
+
? "Edit memory"
|
|
138
|
+
: "New memory";
|
|
139
|
+
const subtitle = isGuidance
|
|
140
|
+
? "Tone of voice, terminology or style that AI should follow for a part of the content tree"
|
|
141
|
+
: "A durable fact or preference the agent keeps in mind when working with you";
|
|
142
|
+
const labelClass = "text-neutral-grey-100 block text-sm font-medium";
|
|
143
|
+
return (_jsx(Dialog, { open: !!target, onOpenChange: (open) => !open && onClose(), children: _jsxs(DialogContent, { className: "gap-0 p-0 sm:max-w-xl", "data-testid": "memory-entry-dialog", onKeyDown: (e) => {
|
|
144
|
+
if ((e.metaKey || e.ctrlKey) && e.key === "Enter") {
|
|
145
|
+
e.preventDefault();
|
|
146
|
+
void handleSave();
|
|
147
|
+
}
|
|
148
|
+
}, children: [_jsx(StyledDialogTitle, { icon: _jsx(Brain, { strokeWidth: 1 }), title: dialogTitle, subtitle: subtitle }), _jsxs("div", { className: "space-y-4 overflow-y-auto px-8 pt-6 pb-6", children: [_jsxs("div", { className: "space-y-2", children: [_jsxs("label", { htmlFor: "memory-entry-title", className: labelClass, children: ["Title", " ", _jsx("span", { className: "text-neutral-grey-50 font-normal", children: loadMode === "ondemand" ? "(required)" : "(optional)" })] }), _jsx(Input, { id: "memory-entry-title", value: title, onChange: (e) => setTitle(e.target.value), placeholder: isGuidance ? "Tone of voice" : "What this is about", maxLength: 200, "data-testid": "memory-entry-dialog-title" }), loadMode === "ondemand" && (_jsx("p", { className: "text-neutral-grey-50 text-xs", children: "The title is all the agent sees when deciding whether to load this memory, so make it descriptive." }))] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { className: labelClass, children: "When to apply" }), _jsx("div", { className: "border-border-default flex gap-1 rounded-[4px] border p-1", role: "radiogroup", "data-testid": "memory-entry-dialog-load-mode", children: [
|
|
149
|
+
["eager", "Always apply"],
|
|
150
|
+
["ondemand", "Load when relevant"],
|
|
151
|
+
].map(([mode, label]) => (_jsx("button", { type: "button", role: "radio", "aria-checked": loadMode === mode, onClick: () => setLoadMode(mode), className: cn("flex-1 rounded-[3px] px-3 py-1.5 text-sm transition-colors", loadMode === mode
|
|
152
|
+
? "bg-neutral-grey-10 text-neutral-grey-100 font-medium"
|
|
153
|
+
: "text-neutral-grey-50 hover:text-neutral-grey-100"), "data-testid": `memory-entry-dialog-load-mode-${mode}`, children: label }, mode))) }), _jsx("p", { className: "text-neutral-grey-50 text-xs", children: loadMode === "ondemand"
|
|
154
|
+
? "Kept out of the everyday prompt. The agent sees the title and loads the text when it looks relevant - use this for glossaries and other long reference material."
|
|
155
|
+
: "Injected into every prompt, so it always applies." })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "memory-entry-content", className: labelClass, children: "Text" }), _jsx(Textarea, { id: "memory-entry-content", value: content, onChange: (e) => setContent(e.target.value), placeholder: isGuidance
|
|
156
|
+
? "Address the reader as you. Keep sentences short. Never use exclamation marks."
|
|
157
|
+
: "What should the agent remember?", maxLength: maxContentLength, autoFocus: isEdit, className: "max-h-72 min-h-40 text-sm", "data-testid": "memory-entry-dialog-content" }), _jsxs("div", { className: "flex items-baseline justify-between gap-3", children: [_jsx("p", { className: "text-neutral-grey-50 text-xs", children: isGuidance
|
|
158
|
+
? "Applies to chat agents, inline AI edits, generators and autocomplete. Treated as a strong preference, not an enforced rule."
|
|
159
|
+
: "Injected into the agent's system prompt. The agent can also update its own memories as you work with it." }), _jsxs("span", { className: cn("shrink-0 text-[11px] tabular-nums", overContentLimit
|
|
160
|
+
? "text-feedback-red"
|
|
161
|
+
: "text-neutral-grey-50"), children: [content.length, "/", maxContentLength] })] }), overContentLimit && (_jsxs("p", { className: "text-feedback-red text-xs", children: ["Shorten the text to ", maxContentLength, " characters, or keep it as a \"Load when relevant\" memory."] }))] }), view?.kind === "guidance" ? (_jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "memory-entry-scope", className: labelClass, children: "Applies to" }), _jsx(TreeItemPicker, { value: scopeId, rootItemId: CONTENT_ROOT_ID, placeholder: "Select content...", onChange: setScopeId }), _jsx("p", { className: "text-neutral-grey-50 text-xs", children: view.entry
|
|
162
|
+
? "The item this memory is attached to. Picking a different item moves the memory there."
|
|
163
|
+
: "The item you pick and everything below it. Pick the root of a site for site-wide tone of voice." }), _jsxs("div", { className: "space-y-2 pt-2", children: [_jsxs("label", { className: labelClass, children: ["Languages", " ", _jsx("span", { className: "text-neutral-grey-50 font-normal", children: "(optional)" })] }), _jsx(LanguageSelectionGrid, { languages: languageOptions, selectedLanguageCodes: languages, onSelectedLanguageCodesChange: setLanguages, headerless: true, testId: "memory-entry-dialog-languages", bodyClassName: "max-h-40", emptyState: "No languages available." }), _jsx("p", { className: "text-neutral-grey-50 text-xs", children: "Leave empty to apply in every language, or limit this memory to the selected language versions." })] })] })) : view?.kind === "personal" && view.profileName ? (_jsxs("div", { className: "space-y-2", children: [_jsx("label", { className: labelClass, children: "Agent profile" }), _jsx("div", { className: "border-border-default bg-neutral-grey-5 rounded-[4px] border px-3 py-2", children: _jsx("span", { className: "text-neutral-grey-100 text-sm", children: view.profileName }) })] })) : null, error && (_jsx("div", { className: "border-feedback-red bg-feedback-red-light text-feedback-red rounded border p-2 text-xs whitespace-pre-wrap", children: error }))] }), _jsxs(DialogFooter, { className: "border-border-default gap-2 border-t pt-5 sm:gap-3", children: [_jsx(Button, { variant: "outline", onClick: onClose, disabled: saving, children: "Cancel" }), _jsx(ActionButton, { onClick: () => void handleSave(), disabled: !canSave, isLoading: saving, loadingText: "Saving...",
|
|
164
|
+
// Cancel inherits "lg" from the DialogFooter's ButtonSizeProvider; match it.
|
|
165
|
+
size: "lg", "data-testid": "memory-entry-dialog-save", children: isEdit ? "Save changes" : "Add memory" })] })] }) }));
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=MemoryEntryDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryEntryDialog.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/MemoryEntryDialog.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 { useState, useEffect, useMemo, useCallback } from "react";
|
|
3
3
|
import { Button } from "../../../components/ui/button";
|
|
4
4
|
import { SettingsPanelLayout } from "../SettingsPanelLayout";
|