@agimon-ai/po-web-dashboard 0.0.0-alpha.0
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/LICENSE +29 -0
- package/README.md +10 -0
- package/dist/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/core.cjs +222 -0
- package/dist/core.d.mts +21 -0
- package/dist/core.mjs +21 -0
- package/dist/index.cjs +546 -0
- package/dist/index.d.mts +81 -0
- package/dist/index.mjs +81 -0
- package/dist/testing.cjs +18 -0
- package/dist/testing.d.mts +6 -0
- package/dist/testing.mjs +6 -0
- package/dist/types/auth.cjs +20 -0
- package/dist/types/auth.cjs.map +1 -0
- package/dist/types/auth.d.mts +160 -0
- package/dist/types/auth.d.mts.map +1 -0
- package/dist/types/auth.mjs +19 -0
- package/dist/types/auth.mjs.map +1 -0
- package/dist/types/bridge.d.mts +18 -0
- package/dist/types/bridge.d.mts.map +1 -0
- package/dist/types/devProxy.cjs +41 -0
- package/dist/types/devProxy.cjs.map +1 -0
- package/dist/types/devProxy.d.mts +54 -0
- package/dist/types/devProxy.d.mts.map +1 -0
- package/dist/types/devProxy.mjs +39 -0
- package/dist/types/devProxy.mjs.map +1 -0
- package/dist/types/hub.cjs +220 -0
- package/dist/types/hub.cjs.map +1 -0
- package/dist/types/hub.d.mts +447 -0
- package/dist/types/hub.d.mts.map +1 -0
- package/dist/types/hub.mjs +179 -0
- package/dist/types/hub.mjs.map +1 -0
- package/dist/types/media.cjs +75 -0
- package/dist/types/media.cjs.map +1 -0
- package/dist/types/media.d.mts +22 -0
- package/dist/types/media.d.mts.map +1 -0
- package/dist/types/media.mjs +70 -0
- package/dist/types/media.mjs.map +1 -0
- package/dist/types/notification.cjs +19 -0
- package/dist/types/notification.cjs.map +1 -0
- package/dist/types/notification.d.mts +10 -0
- package/dist/types/notification.d.mts.map +1 -0
- package/dist/types/notification.mjs +19 -0
- package/dist/types/notification.mjs.map +1 -0
- package/dist/types/remoteAccess.cjs +92 -0
- package/dist/types/remoteAccess.cjs.map +1 -0
- package/dist/types/remoteAccess.d.mts +214 -0
- package/dist/types/remoteAccess.d.mts.map +1 -0
- package/dist/types/remoteAccess.mjs +68 -0
- package/dist/types/remoteAccess.mjs.map +1 -0
- package/dist/types/session.cjs +23 -0
- package/dist/types/session.cjs.map +1 -0
- package/dist/types/session.d.mts +29 -0
- package/dist/types/session.d.mts.map +1 -0
- package/dist/types/session.mjs +18 -0
- package/dist/types/session.mjs.map +1 -0
- package/dist/types/sessionMcp.d.mts +56 -0
- package/dist/types/sessionMcp.d.mts.map +1 -0
- package/dist/types/settings.cjs +18 -0
- package/dist/types/settings.cjs.map +1 -0
- package/dist/types/settings.d.mts +126 -0
- package/dist/types/settings.d.mts.map +1 -0
- package/dist/types/settings.mjs +12 -0
- package/dist/types/settings.mjs.map +1 -0
- package/dist/types.cjs +101 -0
- package/dist/types.d.mts +11 -0
- package/dist/types.mjs +9 -0
- package/dist/views.cjs +120 -0
- package/dist/views.d.mts +56 -0
- package/dist/views.mjs +56 -0
- package/dist/web/components/MascotMark.cjs +18 -0
- package/dist/web/components/MascotMark.cjs.map +1 -0
- package/dist/web/components/MascotMark.d.mts +9 -0
- package/dist/web/components/MascotMark.d.mts.map +1 -0
- package/dist/web/components/MascotMark.mjs +18 -0
- package/dist/web/components/MascotMark.mjs.map +1 -0
- package/dist/web/components/PluginSurface.cjs +15 -0
- package/dist/web/components/PluginSurface.cjs.map +1 -0
- package/dist/web/components/PluginSurface.d.mts +13 -0
- package/dist/web/components/PluginSurface.d.mts.map +1 -0
- package/dist/web/components/PluginSurface.mjs +15 -0
- package/dist/web/components/PluginSurface.mjs.map +1 -0
- package/dist/web/components/QrCode.cjs +37 -0
- package/dist/web/components/QrCode.cjs.map +1 -0
- package/dist/web/components/QrCode.d.mts +22 -0
- package/dist/web/components/QrCode.d.mts.map +1 -0
- package/dist/web/components/QrCode.mjs +37 -0
- package/dist/web/components/QrCode.mjs.map +1 -0
- package/dist/web/components/Remote.fixture.cjs +73 -0
- package/dist/web/components/Remote.fixture.cjs.map +1 -0
- package/dist/web/components/Remote.fixture.mjs +72 -0
- package/dist/web/components/Remote.fixture.mjs.map +1 -0
- package/dist/web/components/SessionMcp.cjs +279 -0
- package/dist/web/components/SessionMcp.cjs.map +1 -0
- package/dist/web/components/SessionMcp.d.mts +12 -0
- package/dist/web/components/SessionMcp.d.mts.map +1 -0
- package/dist/web/components/SessionMcp.mjs +278 -0
- package/dist/web/components/SessionMcp.mjs.map +1 -0
- package/dist/web/components/Story.fixture.cjs +124 -0
- package/dist/web/components/Story.fixture.cjs.map +1 -0
- package/dist/web/components/Story.fixture.d.mts +19 -0
- package/dist/web/components/Story.fixture.d.mts.map +1 -0
- package/dist/web/components/Story.fixture.mjs +119 -0
- package/dist/web/components/Story.fixture.mjs.map +1 -0
- package/dist/web/components/Template.fixture.cjs +67 -0
- package/dist/web/components/Template.fixture.cjs.map +1 -0
- package/dist/web/components/Template.fixture.d.mts +7 -0
- package/dist/web/components/Template.fixture.d.mts.map +1 -0
- package/dist/web/components/Template.fixture.mjs +65 -0
- package/dist/web/components/Template.fixture.mjs.map +1 -0
- package/dist/web/components/ToolRendererBoundary.cjs +23 -0
- package/dist/web/components/ToolRendererBoundary.cjs.map +1 -0
- package/dist/web/components/ToolRendererBoundary.d.mts +23 -0
- package/dist/web/components/ToolRendererBoundary.d.mts.map +1 -0
- package/dist/web/components/ToolRendererBoundary.mjs +23 -0
- package/dist/web/components/ToolRendererBoundary.mjs.map +1 -0
- package/dist/web/features/activity/ActivityDock.cjs +271 -0
- package/dist/web/features/activity/ActivityDock.cjs.map +1 -0
- package/dist/web/features/activity/ActivityDock.d.mts +22 -0
- package/dist/web/features/activity/ActivityDock.d.mts.map +1 -0
- package/dist/web/features/activity/ActivityDock.mjs +271 -0
- package/dist/web/features/activity/ActivityDock.mjs.map +1 -0
- package/dist/web/features/activity/ContextItemDialog.cjs +276 -0
- package/dist/web/features/activity/ContextItemDialog.cjs.map +1 -0
- package/dist/web/features/activity/ContextItemDialog.d.mts +16 -0
- package/dist/web/features/activity/ContextItemDialog.d.mts.map +1 -0
- package/dist/web/features/activity/ContextItemDialog.mjs +276 -0
- package/dist/web/features/activity/ContextItemDialog.mjs.map +1 -0
- package/dist/web/features/activity/ContextPanel.cjs +248 -0
- package/dist/web/features/activity/ContextPanel.cjs.map +1 -0
- package/dist/web/features/activity/ContextPanel.d.mts +4 -0
- package/dist/web/features/activity/ContextPanel.d.mts.map +1 -0
- package/dist/web/features/activity/ContextPanel.mjs +248 -0
- package/dist/web/features/activity/ContextPanel.mjs.map +1 -0
- package/dist/web/features/activity/DockTabs.cjs +47 -0
- package/dist/web/features/activity/DockTabs.cjs.map +1 -0
- package/dist/web/features/activity/DockTabs.d.mts +9 -0
- package/dist/web/features/activity/DockTabs.d.mts.map +1 -0
- package/dist/web/features/activity/DockTabs.mjs +47 -0
- package/dist/web/features/activity/DockTabs.mjs.map +1 -0
- package/dist/web/features/connection/RefusedCard.cjs +76 -0
- package/dist/web/features/connection/RefusedCard.cjs.map +1 -0
- package/dist/web/features/connection/RefusedCard.d.mts +5 -0
- package/dist/web/features/connection/RefusedCard.d.mts.map +1 -0
- package/dist/web/features/connection/RefusedCard.mjs +76 -0
- package/dist/web/features/connection/RefusedCard.mjs.map +1 -0
- package/dist/web/features/dialogs/DialogOverlay.cjs +164 -0
- package/dist/web/features/dialogs/DialogOverlay.cjs.map +1 -0
- package/dist/web/features/dialogs/DialogOverlay.d.mts +15 -0
- package/dist/web/features/dialogs/DialogOverlay.d.mts.map +1 -0
- package/dist/web/features/dialogs/DialogOverlay.mjs +164 -0
- package/dist/web/features/dialogs/DialogOverlay.mjs.map +1 -0
- package/dist/web/features/leader/CommandPalette.cjs +390 -0
- package/dist/web/features/leader/CommandPalette.cjs.map +1 -0
- package/dist/web/features/leader/CommandPalette.d.mts +14 -0
- package/dist/web/features/leader/CommandPalette.d.mts.map +1 -0
- package/dist/web/features/leader/CommandPalette.mjs +390 -0
- package/dist/web/features/leader/CommandPalette.mjs.map +1 -0
- package/dist/web/features/remote/DevProxyTargets.cjs +122 -0
- package/dist/web/features/remote/DevProxyTargets.cjs.map +1 -0
- package/dist/web/features/remote/DevProxyTargets.d.mts +15 -0
- package/dist/web/features/remote/DevProxyTargets.d.mts.map +1 -0
- package/dist/web/features/remote/DevProxyTargets.mjs +122 -0
- package/dist/web/features/remote/DevProxyTargets.mjs.map +1 -0
- package/dist/web/features/remote/HandoverProgress.cjs +28 -0
- package/dist/web/features/remote/HandoverProgress.cjs.map +1 -0
- package/dist/web/features/remote/HandoverProgress.d.mts +12 -0
- package/dist/web/features/remote/HandoverProgress.d.mts.map +1 -0
- package/dist/web/features/remote/HandoverProgress.mjs +28 -0
- package/dist/web/features/remote/HandoverProgress.mjs.map +1 -0
- package/dist/web/features/remote/PairedDeviceList.cjs +37 -0
- package/dist/web/features/remote/PairedDeviceList.cjs.map +1 -0
- package/dist/web/features/remote/PairedDeviceList.d.mts +5 -0
- package/dist/web/features/remote/PairedDeviceList.d.mts.map +1 -0
- package/dist/web/features/remote/PairedDeviceList.mjs +37 -0
- package/dist/web/features/remote/PairedDeviceList.mjs.map +1 -0
- package/dist/web/features/remote/PairingApprovalDialog.cjs +65 -0
- package/dist/web/features/remote/PairingApprovalDialog.cjs.map +1 -0
- package/dist/web/features/remote/PairingApprovalDialog.d.mts +11 -0
- package/dist/web/features/remote/PairingApprovalDialog.d.mts.map +1 -0
- package/dist/web/features/remote/PairingApprovalDialog.mjs +65 -0
- package/dist/web/features/remote/PairingApprovalDialog.mjs.map +1 -0
- package/dist/web/features/remote/RemoteAccessDialog.cjs +83 -0
- package/dist/web/features/remote/RemoteAccessDialog.cjs.map +1 -0
- package/dist/web/features/remote/RemoteAccessDialog.d.mts +11 -0
- package/dist/web/features/remote/RemoteAccessDialog.d.mts.map +1 -0
- package/dist/web/features/remote/RemoteAccessDialog.mjs +83 -0
- package/dist/web/features/remote/RemoteAccessDialog.mjs.map +1 -0
- package/dist/web/features/remote/RemoteAccessOptions.cjs +154 -0
- package/dist/web/features/remote/RemoteAccessOptions.cjs.map +1 -0
- package/dist/web/features/remote/RemoteAccessOptions.d.mts +11 -0
- package/dist/web/features/remote/RemoteAccessOptions.d.mts.map +1 -0
- package/dist/web/features/remote/RemoteAccessOptions.mjs +154 -0
- package/dist/web/features/remote/RemoteAccessOptions.mjs.map +1 -0
- package/dist/web/features/remote/RemoteAccessPairing.cjs +93 -0
- package/dist/web/features/remote/RemoteAccessPairing.cjs.map +1 -0
- package/dist/web/features/remote/RemoteAccessPairing.d.mts +5 -0
- package/dist/web/features/remote/RemoteAccessPairing.d.mts.map +1 -0
- package/dist/web/features/remote/RemoteAccessPairing.mjs +93 -0
- package/dist/web/features/remote/RemoteAccessPairing.mjs.map +1 -0
- package/dist/web/features/remote/SandboxWorkspaces.cjs +87 -0
- package/dist/web/features/remote/SandboxWorkspaces.cjs.map +1 -0
- package/dist/web/features/remote/SandboxWorkspaces.d.mts +7 -0
- package/dist/web/features/remote/SandboxWorkspaces.d.mts.map +1 -0
- package/dist/web/features/remote/SandboxWorkspaces.mjs +87 -0
- package/dist/web/features/remote/SandboxWorkspaces.mjs.map +1 -0
- package/dist/web/features/remote/TrustedDeviceList.cjs +65 -0
- package/dist/web/features/remote/TrustedDeviceList.cjs.map +1 -0
- package/dist/web/features/remote/TrustedDeviceList.d.mts +13 -0
- package/dist/web/features/remote/TrustedDeviceList.d.mts.map +1 -0
- package/dist/web/features/remote/TrustedDeviceList.mjs +64 -0
- package/dist/web/features/remote/TrustedDeviceList.mjs.map +1 -0
- package/dist/web/features/selection/SelectionBar.cjs +401 -0
- package/dist/web/features/selection/SelectionBar.cjs.map +1 -0
- package/dist/web/features/selection/SelectionBar.d.mts +14 -0
- package/dist/web/features/selection/SelectionBar.d.mts.map +1 -0
- package/dist/web/features/selection/SelectionBar.mjs +400 -0
- package/dist/web/features/selection/SelectionBar.mjs.map +1 -0
- package/dist/web/features/session/AgentLockPanel.cjs +31 -0
- package/dist/web/features/session/AgentLockPanel.cjs.map +1 -0
- package/dist/web/features/session/AgentLockPanel.mjs +31 -0
- package/dist/web/features/session/AgentLockPanel.mjs.map +1 -0
- package/dist/web/features/session/Composer.cjs +808 -0
- package/dist/web/features/session/Composer.cjs.map +1 -0
- package/dist/web/features/session/Composer.d.mts +21 -0
- package/dist/web/features/session/Composer.d.mts.map +1 -0
- package/dist/web/features/session/Composer.mjs +806 -0
- package/dist/web/features/session/Composer.mjs.map +1 -0
- package/dist/web/features/session/ComposerPrompt.cjs +47 -0
- package/dist/web/features/session/ComposerPrompt.cjs.map +1 -0
- package/dist/web/features/session/ComposerPrompt.d.mts +16 -0
- package/dist/web/features/session/ComposerPrompt.d.mts.map +1 -0
- package/dist/web/features/session/ComposerPrompt.mjs +47 -0
- package/dist/web/features/session/ComposerPrompt.mjs.map +1 -0
- package/dist/web/features/session/DormantPanel.cjs +61 -0
- package/dist/web/features/session/DormantPanel.cjs.map +1 -0
- package/dist/web/features/session/DormantPanel.d.mts +8 -0
- package/dist/web/features/session/DormantPanel.d.mts.map +1 -0
- package/dist/web/features/session/DormantPanel.mjs +61 -0
- package/dist/web/features/session/DormantPanel.mjs.map +1 -0
- package/dist/web/features/session/MentionPreviews.cjs +128 -0
- package/dist/web/features/session/MentionPreviews.cjs.map +1 -0
- package/dist/web/features/session/MentionPreviews.d.mts +17 -0
- package/dist/web/features/session/MentionPreviews.d.mts.map +1 -0
- package/dist/web/features/session/MentionPreviews.mjs +127 -0
- package/dist/web/features/session/MentionPreviews.mjs.map +1 -0
- package/dist/web/features/session/MessageMarkdown.cjs +20 -0
- package/dist/web/features/session/MessageMarkdown.cjs.map +1 -0
- package/dist/web/features/session/MessageMarkdown.d.mts +19 -0
- package/dist/web/features/session/MessageMarkdown.d.mts.map +1 -0
- package/dist/web/features/session/MessageMarkdown.mjs +20 -0
- package/dist/web/features/session/MessageMarkdown.mjs.map +1 -0
- package/dist/web/features/session/QueueSheet.cjs +189 -0
- package/dist/web/features/session/QueueSheet.cjs.map +1 -0
- package/dist/web/features/session/QueueSheet.d.mts +16 -0
- package/dist/web/features/session/QueueSheet.d.mts.map +1 -0
- package/dist/web/features/session/QueueSheet.mjs +189 -0
- package/dist/web/features/session/QueueSheet.mjs.map +1 -0
- package/dist/web/features/session/SessionActivity.cjs +88 -0
- package/dist/web/features/session/SessionActivity.cjs.map +1 -0
- package/dist/web/features/session/SessionActivity.d.mts +16 -0
- package/dist/web/features/session/SessionActivity.d.mts.map +1 -0
- package/dist/web/features/session/SessionActivity.mjs +87 -0
- package/dist/web/features/session/SessionActivity.mjs.map +1 -0
- package/dist/web/features/session/SessionTranscriptView.cjs +34 -0
- package/dist/web/features/session/SessionTranscriptView.cjs.map +1 -0
- package/dist/web/features/session/SessionTranscriptView.d.mts +16 -0
- package/dist/web/features/session/SessionTranscriptView.d.mts.map +1 -0
- package/dist/web/features/session/SessionTranscriptView.mjs +34 -0
- package/dist/web/features/session/SessionTranscriptView.mjs.map +1 -0
- package/dist/web/features/session/ThreadView.cjs +40 -0
- package/dist/web/features/session/ThreadView.cjs.map +1 -0
- package/dist/web/features/session/ThreadView.d.mts +18 -0
- package/dist/web/features/session/ThreadView.d.mts.map +1 -0
- package/dist/web/features/session/ThreadView.mjs +40 -0
- package/dist/web/features/session/ThreadView.mjs.map +1 -0
- package/dist/web/features/session/Timeline.cjs +620 -0
- package/dist/web/features/session/Timeline.cjs.map +1 -0
- package/dist/web/features/session/Timeline.d.mts +28 -0
- package/dist/web/features/session/Timeline.d.mts.map +1 -0
- package/dist/web/features/session/Timeline.mjs +619 -0
- package/dist/web/features/session/Timeline.mjs.map +1 -0
- package/dist/web/features/session/ToolCard.cjs +210 -0
- package/dist/web/features/session/ToolCard.cjs.map +1 -0
- package/dist/web/features/session/ToolCard.d.mts +16 -0
- package/dist/web/features/session/ToolCard.d.mts.map +1 -0
- package/dist/web/features/session/ToolCard.mjs +210 -0
- package/dist/web/features/session/ToolCard.mjs.map +1 -0
- package/dist/web/features/session/session.fixture.cjs +76 -0
- package/dist/web/features/session/session.fixture.cjs.map +1 -0
- package/dist/web/features/session/session.fixture.d.mts +6 -0
- package/dist/web/features/session/session.fixture.d.mts.map +1 -0
- package/dist/web/features/session/session.fixture.mjs +74 -0
- package/dist/web/features/session/session.fixture.mjs.map +1 -0
- package/dist/web/features/sessions/NewSessionDialog.cjs +70 -0
- package/dist/web/features/sessions/NewSessionDialog.cjs.map +1 -0
- package/dist/web/features/sessions/NewSessionDialog.d.mts +9 -0
- package/dist/web/features/sessions/NewSessionDialog.d.mts.map +1 -0
- package/dist/web/features/sessions/NewSessionDialog.mjs +70 -0
- package/dist/web/features/sessions/NewSessionDialog.mjs.map +1 -0
- package/dist/web/features/sessions/ResumeSessionDialog.cjs +131 -0
- package/dist/web/features/sessions/ResumeSessionDialog.cjs.map +1 -0
- package/dist/web/features/sessions/ResumeSessionDialog.d.mts +14 -0
- package/dist/web/features/sessions/ResumeSessionDialog.d.mts.map +1 -0
- package/dist/web/features/sessions/ResumeSessionDialog.mjs +131 -0
- package/dist/web/features/sessions/ResumeSessionDialog.mjs.map +1 -0
- package/dist/web/features/sessions/SessionRailDialogs.cjs +62 -0
- package/dist/web/features/sessions/SessionRailDialogs.cjs.map +1 -0
- package/dist/web/features/sessions/SessionRailDialogs.d.mts +10 -0
- package/dist/web/features/sessions/SessionRailDialogs.d.mts.map +1 -0
- package/dist/web/features/sessions/SessionRailDialogs.mjs +62 -0
- package/dist/web/features/sessions/SessionRailDialogs.mjs.map +1 -0
- package/dist/web/features/sessions/WelcomePanel.cjs +42 -0
- package/dist/web/features/sessions/WelcomePanel.cjs.map +1 -0
- package/dist/web/features/sessions/WelcomePanel.d.mts +16 -0
- package/dist/web/features/sessions/WelcomePanel.d.mts.map +1 -0
- package/dist/web/features/sessions/WelcomePanel.mjs +42 -0
- package/dist/web/features/sessions/WelcomePanel.mjs.map +1 -0
- package/dist/web/features/sessions/useNewSessionActions.cjs +38 -0
- package/dist/web/features/sessions/useNewSessionActions.cjs.map +1 -0
- package/dist/web/features/sessions/useNewSessionActions.d.mts +12 -0
- package/dist/web/features/sessions/useNewSessionActions.d.mts.map +1 -0
- package/dist/web/features/sessions/useNewSessionActions.mjs +38 -0
- package/dist/web/features/sessions/useNewSessionActions.mjs.map +1 -0
- package/dist/web/features/sessions/useSessionRail.cjs +302 -0
- package/dist/web/features/sessions/useSessionRail.cjs.map +1 -0
- package/dist/web/features/sessions/useSessionRail.d.mts +14 -0
- package/dist/web/features/sessions/useSessionRail.d.mts.map +1 -0
- package/dist/web/features/sessions/useSessionRail.mjs +302 -0
- package/dist/web/features/sessions/useSessionRail.mjs.map +1 -0
- package/dist/web/features/settings/AppearanceSettings.cjs +126 -0
- package/dist/web/features/settings/AppearanceSettings.cjs.map +1 -0
- package/dist/web/features/settings/AppearanceSettings.d.mts +12 -0
- package/dist/web/features/settings/AppearanceSettings.d.mts.map +1 -0
- package/dist/web/features/settings/AppearanceSettings.mjs +126 -0
- package/dist/web/features/settings/AppearanceSettings.mjs.map +1 -0
- package/dist/web/features/settings/ContributedSettings.cjs +257 -0
- package/dist/web/features/settings/ContributedSettings.cjs.map +1 -0
- package/dist/web/features/settings/ContributedSettings.d.mts +14 -0
- package/dist/web/features/settings/ContributedSettings.d.mts.map +1 -0
- package/dist/web/features/settings/ContributedSettings.mjs +257 -0
- package/dist/web/features/settings/ContributedSettings.mjs.map +1 -0
- package/dist/web/features/settings/ImageSettings.cjs +146 -0
- package/dist/web/features/settings/ImageSettings.cjs.map +1 -0
- package/dist/web/features/settings/ImageSettings.d.mts +12 -0
- package/dist/web/features/settings/ImageSettings.d.mts.map +1 -0
- package/dist/web/features/settings/ImageSettings.mjs +146 -0
- package/dist/web/features/settings/ImageSettings.mjs.map +1 -0
- package/dist/web/features/settings/LoginFlowDialog.cjs +226 -0
- package/dist/web/features/settings/LoginFlowDialog.cjs.map +1 -0
- package/dist/web/features/settings/LoginFlowDialog.d.mts +15 -0
- package/dist/web/features/settings/LoginFlowDialog.d.mts.map +1 -0
- package/dist/web/features/settings/LoginFlowDialog.mjs +225 -0
- package/dist/web/features/settings/LoginFlowDialog.mjs.map +1 -0
- package/dist/web/features/settings/NotificationSettings.cjs +69 -0
- package/dist/web/features/settings/NotificationSettings.cjs.map +1 -0
- package/dist/web/features/settings/NotificationSettings.d.mts +5 -0
- package/dist/web/features/settings/NotificationSettings.d.mts.map +1 -0
- package/dist/web/features/settings/NotificationSettings.mjs +69 -0
- package/dist/web/features/settings/NotificationSettings.mjs.map +1 -0
- package/dist/web/features/settings/PluginSettings.cjs +106 -0
- package/dist/web/features/settings/PluginSettings.cjs.map +1 -0
- package/dist/web/features/settings/PluginSettings.d.mts +10 -0
- package/dist/web/features/settings/PluginSettings.d.mts.map +1 -0
- package/dist/web/features/settings/PluginSettings.mjs +106 -0
- package/dist/web/features/settings/PluginSettings.mjs.map +1 -0
- package/dist/web/features/settings/ProviderSettings.cjs +323 -0
- package/dist/web/features/settings/ProviderSettings.cjs.map +1 -0
- package/dist/web/features/settings/ProviderSettings.d.mts +9 -0
- package/dist/web/features/settings/ProviderSettings.d.mts.map +1 -0
- package/dist/web/features/settings/ProviderSettings.mjs +323 -0
- package/dist/web/features/settings/ProviderSettings.mjs.map +1 -0
- package/dist/web/features/settings/RemoteControlSettings.cjs +50 -0
- package/dist/web/features/settings/RemoteControlSettings.cjs.map +1 -0
- package/dist/web/features/settings/RemoteControlSettings.d.mts +5 -0
- package/dist/web/features/settings/RemoteControlSettings.d.mts.map +1 -0
- package/dist/web/features/settings/RemoteControlSettings.mjs +50 -0
- package/dist/web/features/settings/RemoteControlSettings.mjs.map +1 -0
- package/dist/web/features/settings/RepositorySettings.cjs +318 -0
- package/dist/web/features/settings/RepositorySettings.cjs.map +1 -0
- package/dist/web/features/settings/RepositorySettings.d.mts +7 -0
- package/dist/web/features/settings/RepositorySettings.d.mts.map +1 -0
- package/dist/web/features/settings/RepositorySettings.mjs +318 -0
- package/dist/web/features/settings/RepositorySettings.mjs.map +1 -0
- package/dist/web/features/settings/RepositoryWorkspace.cjs +160 -0
- package/dist/web/features/settings/RepositoryWorkspace.cjs.map +1 -0
- package/dist/web/features/settings/RepositoryWorkspace.d.mts +10 -0
- package/dist/web/features/settings/RepositoryWorkspace.d.mts.map +1 -0
- package/dist/web/features/settings/RepositoryWorkspace.mjs +160 -0
- package/dist/web/features/settings/RepositoryWorkspace.mjs.map +1 -0
- package/dist/web/features/settings/SessionMcpSettings.cjs +488 -0
- package/dist/web/features/settings/SessionMcpSettings.cjs.map +1 -0
- package/dist/web/features/settings/SessionMcpSettings.d.mts +5 -0
- package/dist/web/features/settings/SessionMcpSettings.d.mts.map +1 -0
- package/dist/web/features/settings/SessionMcpSettings.mjs +488 -0
- package/dist/web/features/settings/SessionMcpSettings.mjs.map +1 -0
- package/dist/web/features/settings/SettingsMenu.cjs +135 -0
- package/dist/web/features/settings/SettingsMenu.cjs.map +1 -0
- package/dist/web/features/settings/SettingsMenu.d.mts +9 -0
- package/dist/web/features/settings/SettingsMenu.d.mts.map +1 -0
- package/dist/web/features/settings/SettingsMenu.mjs +135 -0
- package/dist/web/features/settings/SettingsMenu.mjs.map +1 -0
- package/dist/web/features/settings/SettingsPanelHost.cjs +32 -0
- package/dist/web/features/settings/SettingsPanelHost.cjs.map +1 -0
- package/dist/web/features/settings/SettingsPanelHost.d.mts +8 -0
- package/dist/web/features/settings/SettingsPanelHost.d.mts.map +1 -0
- package/dist/web/features/settings/SettingsPanelHost.mjs +32 -0
- package/dist/web/features/settings/SettingsPanelHost.mjs.map +1 -0
- package/dist/web/features/settings/TemplateSettings.cjs +177 -0
- package/dist/web/features/settings/TemplateSettings.cjs.map +1 -0
- package/dist/web/features/settings/TemplateSettings.d.mts +8 -0
- package/dist/web/features/settings/TemplateSettings.d.mts.map +1 -0
- package/dist/web/features/settings/TemplateSettings.mjs +177 -0
- package/dist/web/features/settings/TemplateSettings.mjs.map +1 -0
- package/dist/web/features/settings/TunnelSettings.cjs +182 -0
- package/dist/web/features/settings/TunnelSettings.cjs.map +1 -0
- package/dist/web/features/settings/TunnelSettings.d.mts +8 -0
- package/dist/web/features/settings/TunnelSettings.d.mts.map +1 -0
- package/dist/web/features/settings/TunnelSettings.mjs +182 -0
- package/dist/web/features/settings/TunnelSettings.mjs.map +1 -0
- package/dist/web/features/settings/settings.fixture.cjs +230 -0
- package/dist/web/features/settings/settings.fixture.cjs.map +1 -0
- package/dist/web/features/settings/settings.fixture.d.mts +6 -0
- package/dist/web/features/settings/settings.fixture.d.mts.map +1 -0
- package/dist/web/features/settings/settings.fixture.mjs +223 -0
- package/dist/web/features/settings/settings.fixture.mjs.map +1 -0
- package/dist/web/features/status/TopBar.cjs +200 -0
- package/dist/web/features/status/TopBar.cjs.map +1 -0
- package/dist/web/features/status/TopBar.d.mts +11 -0
- package/dist/web/features/status/TopBar.d.mts.map +1 -0
- package/dist/web/features/status/TopBar.mjs +200 -0
- package/dist/web/features/status/TopBar.mjs.map +1 -0
- package/dist/web/lib/authApi.cjs +77 -0
- package/dist/web/lib/authApi.cjs.map +1 -0
- package/dist/web/lib/authApi.d.mts +28 -0
- package/dist/web/lib/authApi.d.mts.map +1 -0
- package/dist/web/lib/authApi.mjs +72 -0
- package/dist/web/lib/authApi.mjs.map +1 -0
- package/dist/web/lib/browserNotifications.cjs +37 -0
- package/dist/web/lib/browserNotifications.cjs.map +1 -0
- package/dist/web/lib/browserNotifications.d.mts +12 -0
- package/dist/web/lib/browserNotifications.d.mts.map +1 -0
- package/dist/web/lib/browserNotifications.mjs +35 -0
- package/dist/web/lib/browserNotifications.mjs.map +1 -0
- package/dist/web/lib/browserTelemetry.cjs +158 -0
- package/dist/web/lib/browserTelemetry.cjs.map +1 -0
- package/dist/web/lib/browserTelemetry.d.mts +28 -0
- package/dist/web/lib/browserTelemetry.d.mts.map +1 -0
- package/dist/web/lib/browserTelemetry.mjs +154 -0
- package/dist/web/lib/browserTelemetry.mjs.map +1 -0
- package/dist/web/lib/commands.cjs +176 -0
- package/dist/web/lib/commands.cjs.map +1 -0
- package/dist/web/lib/commands.d.mts +53 -0
- package/dist/web/lib/commands.d.mts.map +1 -0
- package/dist/web/lib/commands.mjs +153 -0
- package/dist/web/lib/commands.mjs.map +1 -0
- package/dist/web/lib/composerSubmissions.cjs +20 -0
- package/dist/web/lib/composerSubmissions.cjs.map +1 -0
- package/dist/web/lib/composerSubmissions.d.mts +7 -0
- package/dist/web/lib/composerSubmissions.d.mts.map +1 -0
- package/dist/web/lib/composerSubmissions.mjs +19 -0
- package/dist/web/lib/composerSubmissions.mjs.map +1 -0
- package/dist/web/lib/composition.cjs +403 -0
- package/dist/web/lib/composition.cjs.map +1 -0
- package/dist/web/lib/composition.d.mts +137 -0
- package/dist/web/lib/composition.d.mts.map +1 -0
- package/dist/web/lib/composition.mjs +392 -0
- package/dist/web/lib/composition.mjs.map +1 -0
- package/dist/web/lib/contextComposition.cjs +132 -0
- package/dist/web/lib/contextComposition.cjs.map +1 -0
- package/dist/web/lib/contextComposition.d.mts +75 -0
- package/dist/web/lib/contextComposition.d.mts.map +1 -0
- package/dist/web/lib/contextComposition.mjs +127 -0
- package/dist/web/lib/contextComposition.mjs.map +1 -0
- package/dist/web/lib/contextDetailApi.cjs +61 -0
- package/dist/web/lib/contextDetailApi.cjs.map +1 -0
- package/dist/web/lib/contextDetailApi.d.mts +12 -0
- package/dist/web/lib/contextDetailApi.d.mts.map +1 -0
- package/dist/web/lib/contextDetailApi.mjs +61 -0
- package/dist/web/lib/contextDetailApi.mjs.map +1 -0
- package/dist/web/lib/dashboardRenderers.cjs +9 -0
- package/dist/web/lib/dashboardRenderers.cjs.map +1 -0
- package/dist/web/lib/dashboardRenderers.d.mts +12 -0
- package/dist/web/lib/dashboardRenderers.d.mts.map +1 -0
- package/dist/web/lib/dashboardRenderers.mjs +9 -0
- package/dist/web/lib/dashboardRenderers.mjs.map +1 -0
- package/dist/web/lib/dashboardRoute.cjs +27 -0
- package/dist/web/lib/dashboardRoute.cjs.map +1 -0
- package/dist/web/lib/dashboardRoute.d.mts +29 -0
- package/dist/web/lib/dashboardRoute.d.mts.map +1 -0
- package/dist/web/lib/dashboardRoute.mjs +26 -0
- package/dist/web/lib/dashboardRoute.mjs.map +1 -0
- package/dist/web/lib/dashboardTranscript.cjs +15 -0
- package/dist/web/lib/dashboardTranscript.cjs.map +1 -0
- package/dist/web/lib/dashboardTranscript.d.mts +6 -0
- package/dist/web/lib/dashboardTranscript.d.mts.map +1 -0
- package/dist/web/lib/dashboardTranscript.mjs +14 -0
- package/dist/web/lib/dashboardTranscript.mjs.map +1 -0
- package/dist/web/lib/devProxyApi.cjs +74 -0
- package/dist/web/lib/devProxyApi.cjs.map +1 -0
- package/dist/web/lib/devProxyApi.d.mts +21 -0
- package/dist/web/lib/devProxyApi.d.mts.map +1 -0
- package/dist/web/lib/devProxyApi.mjs +72 -0
- package/dist/web/lib/devProxyApi.mjs.map +1 -0
- package/dist/web/lib/fileMentions.cjs +30 -0
- package/dist/web/lib/fileMentions.cjs.map +1 -0
- package/dist/web/lib/fileMentions.d.mts +13 -0
- package/dist/web/lib/fileMentions.d.mts.map +1 -0
- package/dist/web/lib/fileMentions.mjs +29 -0
- package/dist/web/lib/fileMentions.mjs.map +1 -0
- package/dist/web/lib/hubApi.cjs +283 -0
- package/dist/web/lib/hubApi.cjs.map +1 -0
- package/dist/web/lib/hubApi.d.mts +109 -0
- package/dist/web/lib/hubApi.d.mts.map +1 -0
- package/dist/web/lib/hubApi.mjs +268 -0
- package/dist/web/lib/hubApi.mjs.map +1 -0
- package/dist/web/lib/leaderTree.cjs +150 -0
- package/dist/web/lib/leaderTree.cjs.map +1 -0
- package/dist/web/lib/leaderTree.d.mts +41 -0
- package/dist/web/lib/leaderTree.d.mts.map +1 -0
- package/dist/web/lib/leaderTree.mjs +149 -0
- package/dist/web/lib/leaderTree.mjs.map +1 -0
- package/dist/web/lib/livePush.cjs +97 -0
- package/dist/web/lib/livePush.cjs.map +1 -0
- package/dist/web/lib/livePush.d.mts +10 -0
- package/dist/web/lib/livePush.d.mts.map +1 -0
- package/dist/web/lib/livePush.mjs +94 -0
- package/dist/web/lib/livePush.mjs.map +1 -0
- package/dist/web/lib/modelContextAdapter.cjs +63 -0
- package/dist/web/lib/modelContextAdapter.cjs.map +1 -0
- package/dist/web/lib/modelContextAdapter.d.mts +11 -0
- package/dist/web/lib/modelContextAdapter.d.mts.map +1 -0
- package/dist/web/lib/modelContextAdapter.mjs +62 -0
- package/dist/web/lib/modelContextAdapter.mjs.map +1 -0
- package/dist/web/lib/piTransport.cjs +103 -0
- package/dist/web/lib/piTransport.cjs.map +1 -0
- package/dist/web/lib/piTransport.d.mts +8 -0
- package/dist/web/lib/piTransport.d.mts.map +1 -0
- package/dist/web/lib/piTransport.mjs +102 -0
- package/dist/web/lib/piTransport.mjs.map +1 -0
- package/dist/web/lib/pluginCompositions.cjs +57 -0
- package/dist/web/lib/pluginCompositions.cjs.map +1 -0
- package/dist/web/lib/pluginCompositions.d.mts +37 -0
- package/dist/web/lib/pluginCompositions.d.mts.map +1 -0
- package/dist/web/lib/pluginCompositions.mjs +52 -0
- package/dist/web/lib/pluginCompositions.mjs.map +1 -0
- package/dist/web/lib/pluginRegistry.cjs +675 -0
- package/dist/web/lib/pluginRegistry.cjs.map +1 -0
- package/dist/web/lib/pluginRegistry.d.mts +155 -0
- package/dist/web/lib/pluginRegistry.d.mts.map +1 -0
- package/dist/web/lib/pluginRegistry.mjs +633 -0
- package/dist/web/lib/pluginRegistry.mjs.map +1 -0
- package/dist/web/lib/pluginScopes.cjs +48 -0
- package/dist/web/lib/pluginScopes.cjs.map +1 -0
- package/dist/web/lib/pluginScopes.d.mts +8 -0
- package/dist/web/lib/pluginScopes.d.mts.map +1 -0
- package/dist/web/lib/pluginScopes.mjs +47 -0
- package/dist/web/lib/pluginScopes.mjs.map +1 -0
- package/dist/web/lib/pluginSlotProps.cjs +83 -0
- package/dist/web/lib/pluginSlotProps.cjs.map +1 -0
- package/dist/web/lib/pluginSlotProps.d.mts +21 -0
- package/dist/web/lib/pluginSlotProps.d.mts.map +1 -0
- package/dist/web/lib/pluginSlotProps.mjs +82 -0
- package/dist/web/lib/pluginSlotProps.mjs.map +1 -0
- package/dist/web/lib/promptFocus.cjs +30 -0
- package/dist/web/lib/promptFocus.cjs.map +1 -0
- package/dist/web/lib/promptFocus.d.mts +7 -0
- package/dist/web/lib/promptFocus.d.mts.map +1 -0
- package/dist/web/lib/promptFocus.mjs +29 -0
- package/dist/web/lib/promptFocus.mjs.map +1 -0
- package/dist/web/lib/protocolHubSocket.cjs +107 -0
- package/dist/web/lib/protocolHubSocket.cjs.map +1 -0
- package/dist/web/lib/protocolHubSocket.d.mts +18 -0
- package/dist/web/lib/protocolHubSocket.d.mts.map +1 -0
- package/dist/web/lib/protocolHubSocket.mjs +107 -0
- package/dist/web/lib/protocolHubSocket.mjs.map +1 -0
- package/dist/web/lib/protocolTimeline.cjs +86 -0
- package/dist/web/lib/protocolTimeline.cjs.map +1 -0
- package/dist/web/lib/protocolTimeline.d.mts +9 -0
- package/dist/web/lib/protocolTimeline.d.mts.map +1 -0
- package/dist/web/lib/protocolTimeline.mjs +85 -0
- package/dist/web/lib/protocolTimeline.mjs.map +1 -0
- package/dist/web/lib/qrMatrix.cjs +37 -0
- package/dist/web/lib/qrMatrix.cjs.map +1 -0
- package/dist/web/lib/qrMatrix.d.mts +5 -0
- package/dist/web/lib/qrMatrix.d.mts.map +1 -0
- package/dist/web/lib/qrMatrix.mjs +35 -0
- package/dist/web/lib/qrMatrix.mjs.map +1 -0
- package/dist/web/lib/remoteApi.cjs +100 -0
- package/dist/web/lib/remoteApi.cjs.map +1 -0
- package/dist/web/lib/remoteApi.d.mts +45 -0
- package/dist/web/lib/remoteApi.d.mts.map +1 -0
- package/dist/web/lib/remoteApi.mjs +92 -0
- package/dist/web/lib/remoteApi.mjs.map +1 -0
- package/dist/web/lib/sealedSession.cjs +81 -0
- package/dist/web/lib/sealedSession.cjs.map +1 -0
- package/dist/web/lib/sealedSession.d.mts +24 -0
- package/dist/web/lib/sealedSession.d.mts.map +1 -0
- package/dist/web/lib/sealedSession.mjs +75 -0
- package/dist/web/lib/sealedSession.mjs.map +1 -0
- package/dist/web/lib/sessionActivityRenderer.cjs +19 -0
- package/dist/web/lib/sessionActivityRenderer.cjs.map +1 -0
- package/dist/web/lib/sessionActivityRenderer.d.mts +10 -0
- package/dist/web/lib/sessionActivityRenderer.d.mts.map +1 -0
- package/dist/web/lib/sessionActivityRenderer.mjs +17 -0
- package/dist/web/lib/sessionActivityRenderer.mjs.map +1 -0
- package/dist/web/lib/sessionAsset.cjs +45 -0
- package/dist/web/lib/sessionAsset.cjs.map +1 -0
- package/dist/web/lib/sessionAsset.d.mts +17 -0
- package/dist/web/lib/sessionAsset.d.mts.map +1 -0
- package/dist/web/lib/sessionAsset.mjs +44 -0
- package/dist/web/lib/sessionAsset.mjs.map +1 -0
- package/dist/web/lib/sessionAvatar.cjs +18 -0
- package/dist/web/lib/sessionAvatar.cjs.map +1 -0
- package/dist/web/lib/sessionAvatar.d.mts +10 -0
- package/dist/web/lib/sessionAvatar.d.mts.map +1 -0
- package/dist/web/lib/sessionAvatar.mjs +18 -0
- package/dist/web/lib/sessionAvatar.mjs.map +1 -0
- package/dist/web/lib/sessionMcpApi.cjs +120 -0
- package/dist/web/lib/sessionMcpApi.cjs.map +1 -0
- package/dist/web/lib/sessionMcpApi.d.mts +27 -0
- package/dist/web/lib/sessionMcpApi.d.mts.map +1 -0
- package/dist/web/lib/sessionMcpApi.mjs +114 -0
- package/dist/web/lib/sessionMcpApi.mjs.map +1 -0
- package/dist/web/lib/sessionMcpPrompt.cjs +24 -0
- package/dist/web/lib/sessionMcpPrompt.cjs.map +1 -0
- package/dist/web/lib/sessionMcpPrompt.mjs +23 -0
- package/dist/web/lib/sessionMcpPrompt.mjs.map +1 -0
- package/dist/web/lib/sessionModel.cjs +970 -0
- package/dist/web/lib/sessionModel.cjs.map +1 -0
- package/dist/web/lib/sessionModel.d.mts +254 -0
- package/dist/web/lib/sessionModel.d.mts.map +1 -0
- package/dist/web/lib/sessionModel.mjs +958 -0
- package/dist/web/lib/sessionModel.mjs.map +1 -0
- package/dist/web/lib/sessionProtocolCommands.cjs +196 -0
- package/dist/web/lib/sessionProtocolCommands.cjs.map +1 -0
- package/dist/web/lib/sessionProtocolCommands.d.mts +15 -0
- package/dist/web/lib/sessionProtocolCommands.d.mts.map +1 -0
- package/dist/web/lib/sessionProtocolCommands.mjs +193 -0
- package/dist/web/lib/sessionProtocolCommands.mjs.map +1 -0
- package/dist/web/lib/sessionRailModel.cjs +107 -0
- package/dist/web/lib/sessionRailModel.cjs.map +1 -0
- package/dist/web/lib/sessionRailModel.d.mts +38 -0
- package/dist/web/lib/sessionRailModel.d.mts.map +1 -0
- package/dist/web/lib/sessionRailModel.mjs +104 -0
- package/dist/web/lib/sessionRailModel.mjs.map +1 -0
- package/dist/web/lib/sessionSummary.cjs +58 -0
- package/dist/web/lib/sessionSummary.cjs.map +1 -0
- package/dist/web/lib/sessionSummary.d.mts +39 -0
- package/dist/web/lib/sessionSummary.d.mts.map +1 -0
- package/dist/web/lib/sessionSummary.mjs +54 -0
- package/dist/web/lib/sessionSummary.mjs.map +1 -0
- package/dist/web/lib/sessionTranscriptRenderer.cjs +19 -0
- package/dist/web/lib/sessionTranscriptRenderer.cjs.map +1 -0
- package/dist/web/lib/sessionTranscriptRenderer.d.mts +11 -0
- package/dist/web/lib/sessionTranscriptRenderer.d.mts.map +1 -0
- package/dist/web/lib/sessionTranscriptRenderer.mjs +17 -0
- package/dist/web/lib/sessionTranscriptRenderer.mjs.map +1 -0
- package/dist/web/lib/settingsApi.cjs +237 -0
- package/dist/web/lib/settingsApi.cjs.map +1 -0
- package/dist/web/lib/settingsApi.d.mts +57 -0
- package/dist/web/lib/settingsApi.d.mts.map +1 -0
- package/dist/web/lib/settingsApi.mjs +230 -0
- package/dist/web/lib/settingsApi.mjs.map +1 -0
- package/dist/web/lib/settingsDraft.cjs +48 -0
- package/dist/web/lib/settingsDraft.cjs.map +1 -0
- package/dist/web/lib/settingsDraft.d.mts +28 -0
- package/dist/web/lib/settingsDraft.d.mts.map +1 -0
- package/dist/web/lib/settingsDraft.mjs +45 -0
- package/dist/web/lib/settingsDraft.mjs.map +1 -0
- package/dist/web/lib/settingsSections.cjs +108 -0
- package/dist/web/lib/settingsSections.cjs.map +1 -0
- package/dist/web/lib/settingsSections.d.mts +36 -0
- package/dist/web/lib/settingsSections.d.mts.map +1 -0
- package/dist/web/lib/settingsSections.mjs +105 -0
- package/dist/web/lib/settingsSections.mjs.map +1 -0
- package/dist/web/lib/statusLine.cjs +82 -0
- package/dist/web/lib/statusLine.cjs.map +1 -0
- package/dist/web/lib/statusLine.d.mts +27 -0
- package/dist/web/lib/statusLine.d.mts.map +1 -0
- package/dist/web/lib/statusLine.mjs +79 -0
- package/dist/web/lib/statusLine.mjs.map +1 -0
- package/dist/web/lib/stepUp.cjs +41 -0
- package/dist/web/lib/stepUp.cjs.map +1 -0
- package/dist/web/lib/stepUp.d.mts +18 -0
- package/dist/web/lib/stepUp.d.mts.map +1 -0
- package/dist/web/lib/stepUp.mjs +41 -0
- package/dist/web/lib/stepUp.mjs.map +1 -0
- package/dist/web/lib/templateCatalog.cjs +123 -0
- package/dist/web/lib/templateCatalog.cjs.map +1 -0
- package/dist/web/lib/templateCatalog.d.mts +38 -0
- package/dist/web/lib/templateCatalog.d.mts.map +1 -0
- package/dist/web/lib/templateCatalog.mjs +118 -0
- package/dist/web/lib/templateCatalog.mjs.map +1 -0
- package/dist/web/lib/threadRenderer.cjs +25 -0
- package/dist/web/lib/threadRenderer.cjs.map +1 -0
- package/dist/web/lib/threadRenderer.d.mts +17 -0
- package/dist/web/lib/threadRenderer.d.mts.map +1 -0
- package/dist/web/lib/threadRenderer.mjs +23 -0
- package/dist/web/lib/threadRenderer.mjs.map +1 -0
- package/dist/web/lib/timelineGroups.cjs +83 -0
- package/dist/web/lib/timelineGroups.cjs.map +1 -0
- package/dist/web/lib/timelineGroups.d.mts +36 -0
- package/dist/web/lib/timelineGroups.d.mts.map +1 -0
- package/dist/web/lib/timelineGroups.mjs +81 -0
- package/dist/web/lib/timelineGroups.mjs.map +1 -0
- package/dist/web/lib/toolCompletionTabs.cjs +98 -0
- package/dist/web/lib/toolCompletionTabs.cjs.map +1 -0
- package/dist/web/lib/toolCompletionTabs.d.mts +14 -0
- package/dist/web/lib/toolCompletionTabs.d.mts.map +1 -0
- package/dist/web/lib/toolCompletionTabs.mjs +98 -0
- package/dist/web/lib/toolCompletionTabs.mjs.map +1 -0
- package/dist/web/lib/toolMessageProps.cjs +19 -0
- package/dist/web/lib/toolMessageProps.cjs.map +1 -0
- package/dist/web/lib/toolMessageProps.d.mts +7 -0
- package/dist/web/lib/toolMessageProps.d.mts.map +1 -0
- package/dist/web/lib/toolMessageProps.mjs +19 -0
- package/dist/web/lib/toolMessageProps.mjs.map +1 -0
- package/dist/web/lib/toolPrompt.cjs +44 -0
- package/dist/web/lib/toolPrompt.cjs.map +1 -0
- package/dist/web/lib/toolPrompt.d.mts +34 -0
- package/dist/web/lib/toolPrompt.d.mts.map +1 -0
- package/dist/web/lib/toolPrompt.mjs +44 -0
- package/dist/web/lib/toolPrompt.mjs.map +1 -0
- package/dist/web/lib/transport.cjs +57 -0
- package/dist/web/lib/transport.cjs.map +1 -0
- package/dist/web/lib/transport.d.mts +40 -0
- package/dist/web/lib/transport.d.mts.map +1 -0
- package/dist/web/lib/transport.mjs +50 -0
- package/dist/web/lib/transport.mjs.map +1 -0
- package/dist/web/lib/useSessionMcp.cjs +65 -0
- package/dist/web/lib/useSessionMcp.cjs.map +1 -0
- package/dist/web/lib/useSessionMcp.d.mts +15 -0
- package/dist/web/lib/useSessionMcp.d.mts.map +1 -0
- package/dist/web/lib/useSessionMcp.mjs +65 -0
- package/dist/web/lib/useSessionMcp.mjs.map +1 -0
- package/dist/web/lib/webauthnClient.cjs +110 -0
- package/dist/web/lib/webauthnClient.cjs.map +1 -0
- package/dist/web/lib/webauthnClient.d.mts +32 -0
- package/dist/web/lib/webauthnClient.d.mts.map +1 -0
- package/dist/web/lib/webauthnClient.mjs +106 -0
- package/dist/web/lib/webauthnClient.mjs.map +1 -0
- package/dist/web/lib/webmcpSimulator.cjs +105 -0
- package/dist/web/lib/webmcpSimulator.cjs.map +1 -0
- package/dist/web/lib/webmcpSimulator.mjs +105 -0
- package/dist/web/lib/webmcpSimulator.mjs.map +1 -0
- package/dist/web/stores/captureStore.cjs +137 -0
- package/dist/web/stores/captureStore.cjs.map +1 -0
- package/dist/web/stores/captureStore.d.mts +13 -0
- package/dist/web/stores/captureStore.d.mts.map +1 -0
- package/dist/web/stores/captureStore.mjs +133 -0
- package/dist/web/stores/captureStore.mjs.map +1 -0
- package/dist/web/stores/composerStore.cjs +390 -0
- package/dist/web/stores/composerStore.cjs.map +1 -0
- package/dist/web/stores/composerStore.d.mts +101 -0
- package/dist/web/stores/composerStore.d.mts.map +1 -0
- package/dist/web/stores/composerStore.mjs +370 -0
- package/dist/web/stores/composerStore.mjs.map +1 -0
- package/dist/web/stores/composerSubmissionStore.cjs +88 -0
- package/dist/web/stores/composerSubmissionStore.cjs.map +1 -0
- package/dist/web/stores/composerSubmissionStore.d.mts +11 -0
- package/dist/web/stores/composerSubmissionStore.d.mts.map +1 -0
- package/dist/web/stores/composerSubmissionStore.mjs +87 -0
- package/dist/web/stores/composerSubmissionStore.mjs.map +1 -0
- package/dist/web/stores/dashboardStateStore.cjs +35 -0
- package/dist/web/stores/dashboardStateStore.cjs.map +1 -0
- package/dist/web/stores/dashboardStateStore.d.mts +11 -0
- package/dist/web/stores/dashboardStateStore.d.mts.map +1 -0
- package/dist/web/stores/dashboardStateStore.mjs +33 -0
- package/dist/web/stores/dashboardStateStore.mjs.map +1 -0
- package/dist/web/stores/devProxyStore.cjs +76 -0
- package/dist/web/stores/devProxyStore.cjs.map +1 -0
- package/dist/web/stores/devProxyStore.d.mts +25 -0
- package/dist/web/stores/devProxyStore.d.mts.map +1 -0
- package/dist/web/stores/devProxyStore.mjs +73 -0
- package/dist/web/stores/devProxyStore.mjs.map +1 -0
- package/dist/web/stores/dialogDraftStore.cjs +38 -0
- package/dist/web/stores/dialogDraftStore.cjs.map +1 -0
- package/dist/web/stores/dialogDraftStore.d.mts +13 -0
- package/dist/web/stores/dialogDraftStore.d.mts.map +1 -0
- package/dist/web/stores/dialogDraftStore.mjs +36 -0
- package/dist/web/stores/dialogDraftStore.mjs.map +1 -0
- package/dist/web/stores/fileLinkModesStore.cjs +20 -0
- package/dist/web/stores/fileLinkModesStore.cjs.map +1 -0
- package/dist/web/stores/fileLinkModesStore.d.mts +5 -0
- package/dist/web/stores/fileLinkModesStore.d.mts.map +1 -0
- package/dist/web/stores/fileLinkModesStore.mjs +20 -0
- package/dist/web/stores/fileLinkModesStore.mjs.map +1 -0
- package/dist/web/stores/menuStore.cjs +85 -0
- package/dist/web/stores/menuStore.cjs.map +1 -0
- package/dist/web/stores/menuStore.d.mts +42 -0
- package/dist/web/stores/menuStore.d.mts.map +1 -0
- package/dist/web/stores/menuStore.mjs +79 -0
- package/dist/web/stores/menuStore.mjs.map +1 -0
- package/dist/web/stores/newSessionStore.cjs +93 -0
- package/dist/web/stores/newSessionStore.cjs.map +1 -0
- package/dist/web/stores/newSessionStore.d.mts +30 -0
- package/dist/web/stores/newSessionStore.d.mts.map +1 -0
- package/dist/web/stores/newSessionStore.mjs +86 -0
- package/dist/web/stores/newSessionStore.mjs.map +1 -0
- package/dist/web/stores/pagedTranscriptStore.cjs +235 -0
- package/dist/web/stores/pagedTranscriptStore.cjs.map +1 -0
- package/dist/web/stores/pagedTranscriptStore.d.mts +12 -0
- package/dist/web/stores/pagedTranscriptStore.d.mts.map +1 -0
- package/dist/web/stores/pagedTranscriptStore.mjs +235 -0
- package/dist/web/stores/pagedTranscriptStore.mjs.map +1 -0
- package/dist/web/stores/paletteStore.cjs +37 -0
- package/dist/web/stores/paletteStore.cjs.map +1 -0
- package/dist/web/stores/paletteStore.d.mts +14 -0
- package/dist/web/stores/paletteStore.d.mts.map +1 -0
- package/dist/web/stores/paletteStore.mjs +34 -0
- package/dist/web/stores/paletteStore.mjs.map +1 -0
- package/dist/web/stores/railDialogStore.cjs +105 -0
- package/dist/web/stores/railDialogStore.cjs.map +1 -0
- package/dist/web/stores/railDialogStore.d.mts +32 -0
- package/dist/web/stores/railDialogStore.d.mts.map +1 -0
- package/dist/web/stores/railDialogStore.mjs +97 -0
- package/dist/web/stores/railDialogStore.mjs.map +1 -0
- package/dist/web/stores/remoteAccessStore.cjs +216 -0
- package/dist/web/stores/remoteAccessStore.cjs.map +1 -0
- package/dist/web/stores/remoteAccessStore.d.mts +48 -0
- package/dist/web/stores/remoteAccessStore.d.mts.map +1 -0
- package/dist/web/stores/remoteAccessStore.mjs +202 -0
- package/dist/web/stores/remoteAccessStore.mjs.map +1 -0
- package/dist/web/stores/sessionChannelHoldsStore.cjs +43 -0
- package/dist/web/stores/sessionChannelHoldsStore.cjs.map +1 -0
- package/dist/web/stores/sessionChannelHoldsStore.d.mts +9 -0
- package/dist/web/stores/sessionChannelHoldsStore.d.mts.map +1 -0
- package/dist/web/stores/sessionChannelHoldsStore.mjs +42 -0
- package/dist/web/stores/sessionChannelHoldsStore.mjs.map +1 -0
- package/dist/web/stores/sessionStore.cjs +610 -0
- package/dist/web/stores/sessionStore.cjs.map +1 -0
- package/dist/web/stores/sessionStore.d.mts +116 -0
- package/dist/web/stores/sessionStore.d.mts.map +1 -0
- package/dist/web/stores/sessionStore.mjs +568 -0
- package/dist/web/stores/sessionStore.mjs.map +1 -0
- package/dist/web/stores/sessionsStore.cjs +272 -0
- package/dist/web/stores/sessionsStore.cjs.map +1 -0
- package/dist/web/stores/sessionsStore.d.mts +74 -0
- package/dist/web/stores/sessionsStore.d.mts.map +1 -0
- package/dist/web/stores/sessionsStore.mjs +257 -0
- package/dist/web/stores/sessionsStore.mjs.map +1 -0
- package/dist/web/stores/settingsDraftStore.cjs +138 -0
- package/dist/web/stores/settingsDraftStore.cjs.map +1 -0
- package/dist/web/stores/settingsDraftStore.d.mts +27 -0
- package/dist/web/stores/settingsDraftStore.d.mts.map +1 -0
- package/dist/web/stores/settingsDraftStore.mjs +132 -0
- package/dist/web/stores/settingsDraftStore.mjs.map +1 -0
- package/dist/web/stores/templateStore.cjs +136 -0
- package/dist/web/stores/templateStore.cjs.map +1 -0
- package/dist/web/stores/templateStore.d.mts +20 -0
- package/dist/web/stores/templateStore.d.mts.map +1 -0
- package/dist/web/stores/templateStore.mjs +131 -0
- package/dist/web/stores/templateStore.mjs.map +1 -0
- package/dist/web/stores/themeStore.cjs +42 -0
- package/dist/web/stores/themeStore.cjs.map +1 -0
- package/dist/web/stores/themeStore.d.mts +20 -0
- package/dist/web/stores/themeStore.d.mts.map +1 -0
- package/dist/web/stores/themeStore.mjs +39 -0
- package/dist/web/stores/themeStore.mjs.map +1 -0
- package/dist/web/stores/threadStore.cjs +122 -0
- package/dist/web/stores/threadStore.cjs.map +1 -0
- package/dist/web/stores/threadStore.d.mts +24 -0
- package/dist/web/stores/threadStore.d.mts.map +1 -0
- package/dist/web/stores/threadStore.mjs +114 -0
- package/dist/web/stores/threadStore.mjs.map +1 -0
- package/dist/web/stores/toolPromptStore.cjs +15 -0
- package/dist/web/stores/toolPromptStore.cjs.map +1 -0
- package/dist/web/stores/toolPromptStore.d.mts +23 -0
- package/dist/web/stores/toolPromptStore.d.mts.map +1 -0
- package/dist/web/stores/toolPromptStore.mjs +14 -0
- package/dist/web/stores/toolPromptStore.mjs.map +1 -0
- package/dist/web/stores/transientTabsStore.cjs +66 -0
- package/dist/web/stores/transientTabsStore.cjs.map +1 -0
- package/dist/web/stores/transientTabsStore.d.mts +21 -0
- package/dist/web/stores/transientTabsStore.d.mts.map +1 -0
- package/dist/web/stores/transientTabsStore.mjs +59 -0
- package/dist/web/stores/transientTabsStore.mjs.map +1 -0
- package/dist/web/stores/uiStore.cjs +47 -0
- package/dist/web/stores/uiStore.cjs.map +1 -0
- package/dist/web/stores/uiStore.d.mts +18 -0
- package/dist/web/stores/uiStore.d.mts.map +1 -0
- package/dist/web/stores/uiStore.mjs +45 -0
- package/dist/web/stores/uiStore.mjs.map +1 -0
- package/dist/web/stores/useOpenTab.cjs +31 -0
- package/dist/web/stores/useOpenTab.cjs.map +1 -0
- package/dist/web/stores/useOpenTab.d.mts +9 -0
- package/dist/web/stores/useOpenTab.d.mts.map +1 -0
- package/dist/web/stores/useOpenTab.mjs +31 -0
- package/dist/web/stores/useOpenTab.mjs.map +1 -0
- package/dist/web/stores/usePluginSlotProps.cjs +115 -0
- package/dist/web/stores/usePluginSlotProps.cjs.map +1 -0
- package/dist/web/stores/usePluginSlotProps.d.mts +6 -0
- package/dist/web/stores/usePluginSlotProps.d.mts.map +1 -0
- package/dist/web/stores/usePluginSlotProps.mjs +115 -0
- package/dist/web/stores/usePluginSlotProps.mjs.map +1 -0
- package/dist/web/stores/useToolPrompt.cjs +42 -0
- package/dist/web/stores/useToolPrompt.cjs.map +1 -0
- package/dist/web/stores/useToolPrompt.d.mts +14 -0
- package/dist/web/stores/useToolPrompt.d.mts.map +1 -0
- package/dist/web/stores/useToolPrompt.mjs +42 -0
- package/dist/web/stores/useToolPrompt.mjs.map +1 -0
- package/dist/web/stores/useWebPluginRegistry.cjs +11 -0
- package/dist/web/stores/useWebPluginRegistry.cjs.map +1 -0
- package/dist/web/stores/useWebPluginRegistry.d.mts +5 -0
- package/dist/web/stores/useWebPluginRegistry.d.mts.map +1 -0
- package/dist/web/stores/useWebPluginRegistry.mjs +11 -0
- package/dist/web/stores/useWebPluginRegistry.mjs.map +1 -0
- package/dist/web/stores/workspaceAdmissionStore.cjs +67 -0
- package/dist/web/stores/workspaceAdmissionStore.cjs.map +1 -0
- package/dist/web/stores/workspaceAdmissionStore.d.mts +24 -0
- package/dist/web/stores/workspaceAdmissionStore.d.mts.map +1 -0
- package/dist/web/stores/workspaceAdmissionStore.mjs +64 -0
- package/dist/web/stores/workspaceAdmissionStore.mjs.map +1 -0
- package/dist/web/stores/workspacesStore.cjs +83 -0
- package/dist/web/stores/workspacesStore.cjs.map +1 -0
- package/dist/web/stores/workspacesStore.d.mts +17 -0
- package/dist/web/stores/workspacesStore.d.mts.map +1 -0
- package/dist/web/stores/workspacesStore.mjs +78 -0
- package/dist/web/stores/workspacesStore.mjs.map +1 -0
- package/llms.txt +3 -0
- package/package.json +107 -0
- package/styles/dashboard.css +2 -0
- package/styles/preview.css +3 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import { readRepositorySettings, writeRepositorySelection } from "../../lib/settingsApi.mjs";
|
|
2
|
+
import { sessionsStore } from "../../stores/sessionsStore.mjs";
|
|
3
|
+
import { refreshSessionFacts } from "../../stores/sessionStore.mjs";
|
|
4
|
+
import { useDashboardState } from "../../stores/dashboardStateStore.mjs";
|
|
5
|
+
import { useCallback, useEffect } from "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { Badge, Button, CheckIcon, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, SettingsActions, SettingsCard, SettingsDescription, SettingsHeader, SettingsNote, SettingsPage, SettingsRow, SettingsRowDescription, SettingsRowText, SettingsRowTitle, SettingsTitle } from "@agimon-ai/po-web-components";
|
|
8
|
+
//#region src/web/features/settings/RepositorySettings.tsx
|
|
9
|
+
/** Repository selection controls shared with package-owned management panels. */
|
|
10
|
+
const INHERIT_VALUE = "__inherit__";
|
|
11
|
+
function optionDetail(options, name) {
|
|
12
|
+
if (name === void 0) return "";
|
|
13
|
+
const option = options.find((candidate) => candidate.name === name);
|
|
14
|
+
if (option === void 0) return `Configured value '${name}' is not in the effective catalog.`;
|
|
15
|
+
return option.description ?? (option.layers ? `Layers: ${option.layers.join(", ") || "none"}.` : "");
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The title line, description and per-axis undo shared by every axis row.
|
|
19
|
+
*
|
|
20
|
+
* Origin is quiet on purpose: a catalog default says nothing, a value from the
|
|
21
|
+
* global config says so in faint text, and a value set here is marked by the
|
|
22
|
+
* row's jade edge (named for assistive tech) and offers Reset.
|
|
23
|
+
*/
|
|
24
|
+
function AxisText({ label, dirty, origin, busy, children, onRevert, onClear }) {
|
|
25
|
+
return /* @__PURE__ */ jsxs(SettingsRowText, {
|
|
26
|
+
className: "gap-1",
|
|
27
|
+
children: [/* @__PURE__ */ jsxs(SettingsRowTitle, {
|
|
28
|
+
className: "flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1",
|
|
29
|
+
children: [
|
|
30
|
+
label,
|
|
31
|
+
origin === "repository" ? /* @__PURE__ */ jsx("span", {
|
|
32
|
+
className: "sr-only",
|
|
33
|
+
children: ", set for this repository"
|
|
34
|
+
}) : null,
|
|
35
|
+
origin === "global" ? /* @__PURE__ */ jsx("span", {
|
|
36
|
+
className: "text-sm font-normal text-doom-dim",
|
|
37
|
+
children: "From global"
|
|
38
|
+
}) : null,
|
|
39
|
+
dirty ? /* @__PURE__ */ jsx(Badge, {
|
|
40
|
+
tone: "cyan",
|
|
41
|
+
children: "Unsaved"
|
|
42
|
+
}) : null,
|
|
43
|
+
dirty ? /* @__PURE__ */ jsx(Button, {
|
|
44
|
+
variant: "ghost",
|
|
45
|
+
size: "xs",
|
|
46
|
+
disabled: busy,
|
|
47
|
+
onClick: onRevert,
|
|
48
|
+
className: "text-doom-dim",
|
|
49
|
+
children: "Revert"
|
|
50
|
+
}) : origin === "repository" ? /* @__PURE__ */ jsx(Button, {
|
|
51
|
+
variant: "ghost",
|
|
52
|
+
size: "xs",
|
|
53
|
+
disabled: busy,
|
|
54
|
+
onClick: onClear,
|
|
55
|
+
className: "text-doom-dim",
|
|
56
|
+
children: "Reset"
|
|
57
|
+
}) : null
|
|
58
|
+
]
|
|
59
|
+
}), /* @__PURE__ */ jsx(SettingsRowDescription, { children })]
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function hasDraft(drafts, key) {
|
|
63
|
+
return Object.hasOwn(drafts, key);
|
|
64
|
+
}
|
|
65
|
+
function SingleAxis({ id, label, detail, options, effective, repositoryValue, origin, draft, dirty, busy, onChange, onRevert }) {
|
|
66
|
+
const value = dirty ? draft : repositoryValue;
|
|
67
|
+
const selected = value === null || value === void 0 ? INHERIT_VALUE : value;
|
|
68
|
+
const inherited = effective === void 0 ? "Inherit (none)" : `Inherit (${effective})`;
|
|
69
|
+
const shown = value === null || value === void 0 ? effective : value;
|
|
70
|
+
return /* @__PURE__ */ jsxs(SettingsRow, {
|
|
71
|
+
"data-testid": `repository-axis-${id}`,
|
|
72
|
+
"data-dirty": dirty,
|
|
73
|
+
changed: origin === "repository",
|
|
74
|
+
className: "items-start",
|
|
75
|
+
children: [/* @__PURE__ */ jsx(AxisText, {
|
|
76
|
+
label,
|
|
77
|
+
dirty,
|
|
78
|
+
origin,
|
|
79
|
+
busy,
|
|
80
|
+
onRevert,
|
|
81
|
+
onClear: () => onChange(null),
|
|
82
|
+
children: optionDetail(options, shown) || detail
|
|
83
|
+
}), /* @__PURE__ */ jsxs(Select, {
|
|
84
|
+
value: selected,
|
|
85
|
+
disabled: busy,
|
|
86
|
+
onValueChange: (next) => onChange(next === INHERIT_VALUE ? null : next),
|
|
87
|
+
children: [/* @__PURE__ */ jsx(SelectTrigger, {
|
|
88
|
+
"data-testid": `repository-select-${id}`,
|
|
89
|
+
"aria-label": label,
|
|
90
|
+
className: "w-full text-sm sm:w-64",
|
|
91
|
+
children: /* @__PURE__ */ jsx(SelectValue, {})
|
|
92
|
+
}), /* @__PURE__ */ jsxs(SelectContent, { children: [/* @__PURE__ */ jsx(SelectItem, {
|
|
93
|
+
value: INHERIT_VALUE,
|
|
94
|
+
children: inherited
|
|
95
|
+
}), options.map((option) => /* @__PURE__ */ jsx(SelectItem, {
|
|
96
|
+
value: option.name,
|
|
97
|
+
children: option.name
|
|
98
|
+
}, option.name))] })]
|
|
99
|
+
})]
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function DomainsAxis({ view, draft, dirty, busy, onChange, onRevert }) {
|
|
103
|
+
const axis = view.selection.domains;
|
|
104
|
+
const inherited = axis.effective ?? [];
|
|
105
|
+
const selected = dirty ? draft ?? inherited : axis.repository ?? inherited;
|
|
106
|
+
const selectedNames = new Set(selected);
|
|
107
|
+
const toggled = (name) => selectedNames.has(name) ? selected.filter((entry) => entry !== name) : [...selected, name];
|
|
108
|
+
return /* @__PURE__ */ jsxs(SettingsRow, {
|
|
109
|
+
"data-testid": "repository-axis-domains",
|
|
110
|
+
"data-dirty": dirty,
|
|
111
|
+
changed: axis.origin === "repository",
|
|
112
|
+
className: "items-start",
|
|
113
|
+
children: [/* @__PURE__ */ jsx(AxisText, {
|
|
114
|
+
label: "Domains",
|
|
115
|
+
dirty,
|
|
116
|
+
origin: axis.origin,
|
|
117
|
+
busy,
|
|
118
|
+
onRevert,
|
|
119
|
+
onClear: () => onChange(null),
|
|
120
|
+
children: "The plugin sets a new session in this repository loads. Pick any number."
|
|
121
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
122
|
+
role: "group",
|
|
123
|
+
"aria-label": "Domains",
|
|
124
|
+
className: "flex basis-full flex-wrap items-center gap-2",
|
|
125
|
+
children: [view.catalogs.domains.map((domain) => {
|
|
126
|
+
const active = selectedNames.has(domain.name);
|
|
127
|
+
return /* @__PURE__ */ jsxs(Button, {
|
|
128
|
+
variant: "ghost",
|
|
129
|
+
size: "sm",
|
|
130
|
+
"data-testid": `repository-domain-${domain.name}`,
|
|
131
|
+
"data-active": active,
|
|
132
|
+
"aria-pressed": active,
|
|
133
|
+
disabled: busy,
|
|
134
|
+
title: domain.description,
|
|
135
|
+
onClick: () => onChange(toggled(domain.name)),
|
|
136
|
+
className: active ? "gap-1.5 rounded-full border border-doom-green/50 bg-doom-green/10 pl-2 pr-3 font-medium text-doom-green hover:bg-doom-green/15 hover:text-doom-green" : "rounded-full border border-doom-border-soft px-3 text-doom-dim hover:border-doom-border hover:text-doom-hi",
|
|
137
|
+
children: [active ? /* @__PURE__ */ jsx(CheckIcon, {
|
|
138
|
+
"aria-hidden": true,
|
|
139
|
+
className: "size-3.5"
|
|
140
|
+
}) : null, domain.name]
|
|
141
|
+
}, domain.name);
|
|
142
|
+
}), view.catalogs.domains.length === 0 ? /* @__PURE__ */ jsx("span", {
|
|
143
|
+
className: "text-sm text-doom-dim",
|
|
144
|
+
children: "No domains are configured."
|
|
145
|
+
}) : null]
|
|
146
|
+
})]
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
function RepositorySettings({ repository }) {
|
|
150
|
+
const repositoryId = repository?.id ?? "";
|
|
151
|
+
const key = JSON.stringify(["repository", repositoryId]);
|
|
152
|
+
const [view, setView, viewState] = useDashboardState(`${key}/view`, void 0);
|
|
153
|
+
const [drafts, setDrafts] = useDashboardState(`${key}/drafts`, {});
|
|
154
|
+
const [busy, setBusy, busyState] = useDashboardState(`${key}/busy`, false);
|
|
155
|
+
const [error, setError] = useDashboardState(`${key}/error`, "");
|
|
156
|
+
const [note, setNote] = useDashboardState(`${key}/note`, "");
|
|
157
|
+
const dirty = Object.keys(drafts).length;
|
|
158
|
+
const reload = useCallback(async () => {
|
|
159
|
+
if (repositoryId === "") {
|
|
160
|
+
setView(void 0);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (busyState.state) return;
|
|
164
|
+
const previous = viewState.state;
|
|
165
|
+
const result = await readRepositorySettings(repositoryId);
|
|
166
|
+
if (busyState.state || viewState.state !== previous) return;
|
|
167
|
+
if (result.ok) {
|
|
168
|
+
setView(result.settings);
|
|
169
|
+
setError("");
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
setView(void 0);
|
|
173
|
+
setError(result.error);
|
|
174
|
+
}, [
|
|
175
|
+
repositoryId,
|
|
176
|
+
busyState,
|
|
177
|
+
viewState,
|
|
178
|
+
setView,
|
|
179
|
+
setError
|
|
180
|
+
]);
|
|
181
|
+
useEffect(() => {
|
|
182
|
+
reload();
|
|
183
|
+
}, [reload]);
|
|
184
|
+
const change = useCallback((key, value) => {
|
|
185
|
+
setNote("");
|
|
186
|
+
setDrafts((current) => ({
|
|
187
|
+
...current,
|
|
188
|
+
[key]: value
|
|
189
|
+
}));
|
|
190
|
+
}, [setNote, setDrafts]);
|
|
191
|
+
const revert = useCallback((key) => {
|
|
192
|
+
setDrafts((current) => {
|
|
193
|
+
const next = { ...current };
|
|
194
|
+
delete next[key];
|
|
195
|
+
return next;
|
|
196
|
+
});
|
|
197
|
+
}, [setDrafts]);
|
|
198
|
+
const save = useCallback(async () => {
|
|
199
|
+
if (busyState.state || view === void 0 || dirty === 0) return;
|
|
200
|
+
setBusy(true);
|
|
201
|
+
setError("");
|
|
202
|
+
const result = await writeRepositorySelection({
|
|
203
|
+
repositoryId: view.repository.id,
|
|
204
|
+
expectedHash: view.hash,
|
|
205
|
+
changes: drafts
|
|
206
|
+
});
|
|
207
|
+
setBusy(false);
|
|
208
|
+
if (!result.ok) {
|
|
209
|
+
setError(result.error);
|
|
210
|
+
await reload();
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
setView(result.settings);
|
|
214
|
+
setDrafts((current) => current === drafts ? {} : current);
|
|
215
|
+
setNote("Saved. Run po sync, and the next session starts with these.");
|
|
216
|
+
for (const sessionId of Object.keys(sessionsStore.state.byId)) refreshSessionFacts(sessionId);
|
|
217
|
+
}, [
|
|
218
|
+
busyState,
|
|
219
|
+
dirty,
|
|
220
|
+
drafts,
|
|
221
|
+
reload,
|
|
222
|
+
view,
|
|
223
|
+
setBusy,
|
|
224
|
+
setError,
|
|
225
|
+
setView,
|
|
226
|
+
setDrafts,
|
|
227
|
+
setNote
|
|
228
|
+
]);
|
|
229
|
+
const modeDirty = hasDraft(drafts, "majorMode");
|
|
230
|
+
const domainDirty = hasDraft(drafts, "domains");
|
|
231
|
+
const profileDirty = hasDraft(drafts, "profile");
|
|
232
|
+
return /* @__PURE__ */ jsxs(SettingsPage, {
|
|
233
|
+
"data-testid": "repository-settings",
|
|
234
|
+
children: [
|
|
235
|
+
/* @__PURE__ */ jsxs(SettingsHeader, { children: [/* @__PURE__ */ jsx(SettingsTitle, { children: "Defaults" }), /* @__PURE__ */ jsx(SettingsDescription, { children: "What a new session in this repository starts with. Sessions already open keep what they have." })] }),
|
|
236
|
+
repository === null ? /* @__PURE__ */ jsx(SettingsCard, { children: /* @__PURE__ */ jsx(SettingsRow, {
|
|
237
|
+
"data-testid": "repository-settings-empty",
|
|
238
|
+
children: /* @__PURE__ */ jsxs(SettingsRowText, { children: [/* @__PURE__ */ jsx(SettingsRowTitle, { children: "No repository yet" }), /* @__PURE__ */ jsxs(SettingsRowDescription, { children: [
|
|
239
|
+
"Open a session inside a Git or ",
|
|
240
|
+
/* @__PURE__ */ jsx("code", {
|
|
241
|
+
className: "font-mono",
|
|
242
|
+
children: ".po"
|
|
243
|
+
}),
|
|
244
|
+
" repository to set its defaults here."
|
|
245
|
+
] })] })
|
|
246
|
+
}) }) : null,
|
|
247
|
+
error === "" ? null : /* @__PURE__ */ jsx("p", {
|
|
248
|
+
"data-testid": "repository-settings-error",
|
|
249
|
+
role: "alert",
|
|
250
|
+
className: "text-sm leading-relaxed text-doom-red",
|
|
251
|
+
children: error
|
|
252
|
+
}),
|
|
253
|
+
view === void 0 ? null : /* @__PURE__ */ jsxs("div", {
|
|
254
|
+
className: "flex min-w-0 flex-col gap-4",
|
|
255
|
+
children: [/* @__PURE__ */ jsxs(SettingsCard, { children: [
|
|
256
|
+
/* @__PURE__ */ jsx(SingleAxis, {
|
|
257
|
+
id: "major-mode",
|
|
258
|
+
label: "Major mode",
|
|
259
|
+
detail: "The extensions and package layers a session is built from.",
|
|
260
|
+
options: view.catalogs.majorModes,
|
|
261
|
+
effective: view.selection.majorMode.effective,
|
|
262
|
+
repositoryValue: view.selection.majorMode.repository,
|
|
263
|
+
origin: view.selection.majorMode.origin,
|
|
264
|
+
draft: modeDirty ? drafts.majorMode : void 0,
|
|
265
|
+
dirty: modeDirty,
|
|
266
|
+
busy,
|
|
267
|
+
onChange: (value) => change("majorMode", value),
|
|
268
|
+
onRevert: () => revert("majorMode")
|
|
269
|
+
}),
|
|
270
|
+
/* @__PURE__ */ jsx(DomainsAxis, {
|
|
271
|
+
view,
|
|
272
|
+
draft: domainDirty ? drafts.domains : void 0,
|
|
273
|
+
dirty: domainDirty,
|
|
274
|
+
busy,
|
|
275
|
+
onChange: (value) => change("domains", value),
|
|
276
|
+
onRevert: () => revert("domains")
|
|
277
|
+
}),
|
|
278
|
+
/* @__PURE__ */ jsx(SingleAxis, {
|
|
279
|
+
id: "profile",
|
|
280
|
+
label: "Profile",
|
|
281
|
+
detail: "The persona a new session in this repository starts with.",
|
|
282
|
+
options: view.catalogs.profiles,
|
|
283
|
+
effective: view.selection.profile.effective,
|
|
284
|
+
repositoryValue: view.selection.profile.repository,
|
|
285
|
+
origin: view.selection.profile.origin,
|
|
286
|
+
draft: profileDirty ? drafts.profile : void 0,
|
|
287
|
+
dirty: profileDirty,
|
|
288
|
+
busy,
|
|
289
|
+
onChange: (value) => change("profile", value),
|
|
290
|
+
onRevert: () => revert("profile")
|
|
291
|
+
})
|
|
292
|
+
] }), /* @__PURE__ */ jsxs(SettingsActions, { children: [
|
|
293
|
+
/* @__PURE__ */ jsx(Button, {
|
|
294
|
+
variant: dirty > 0 ? "primary" : "outline",
|
|
295
|
+
size: "sm",
|
|
296
|
+
"data-testid": "repository-settings-save",
|
|
297
|
+
loading: busy,
|
|
298
|
+
disabled: busy || dirty === 0,
|
|
299
|
+
onClick: () => void save(),
|
|
300
|
+
children: "Save defaults"
|
|
301
|
+
}),
|
|
302
|
+
dirty === 0 ? null : /* @__PURE__ */ jsx(Button, {
|
|
303
|
+
variant: "ghost",
|
|
304
|
+
size: "sm",
|
|
305
|
+
disabled: busy,
|
|
306
|
+
onClick: () => setDrafts({}),
|
|
307
|
+
children: "Discard"
|
|
308
|
+
}),
|
|
309
|
+
/* @__PURE__ */ jsx(SettingsNote, { children: dirty > 0 ? `${String(dirty)} unsaved ${dirty === 1 ? "change" : "changes"}.` : note })
|
|
310
|
+
] })]
|
|
311
|
+
})
|
|
312
|
+
]
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
//#endregion
|
|
316
|
+
export { RepositorySettings };
|
|
317
|
+
|
|
318
|
+
//# sourceMappingURL=RepositorySettings.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RepositorySettings.mjs","names":[],"sources":["../../../../src/web/features/settings/RepositorySettings.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n CheckIcon,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n SettingsActions,\n SettingsCard,\n SettingsDescription,\n SettingsHeader,\n SettingsNote,\n SettingsPage,\n SettingsRow,\n SettingsRowDescription,\n SettingsRowText,\n SettingsRowTitle,\n SettingsTitle,\n} from '@agimon-ai/po-web-components';\nimport type { ReactNode } from 'react';\nimport { useCallback, useEffect } from 'react';\n\nimport type {\n RepositoryCatalogOption,\n RepositorySelectionChanges,\n RepositorySettingsView,\n SettingsOrigin,\n SettingsRepository,\n} from '../../../types/settings';\nimport { readRepositorySettings, writeRepositorySelection } from '../../lib/settingsApi';\nimport { useDashboardState } from '../../stores/dashboardStateStore';\nimport { sessionsStore } from '../../stores/sessionsStore';\nimport { refreshSessionFacts } from '../../stores/sessionStore';\n\n/** Repository selection controls shared with package-owned management panels. */\n\nconst INHERIT_VALUE = '__inherit__';\n\nfunction optionDetail(options: readonly RepositoryCatalogOption[], name: string | undefined): string {\n if (name === undefined) return '';\n const option = options.find((candidate) => candidate.name === name);\n if (option === undefined) return `Configured value '${name}' is not in the effective catalog.`;\n return option.description ?? (option.layers ? `Layers: ${option.layers.join(', ') || 'none'}.` : '');\n}\n\n/**\n * The title line, description and per-axis undo shared by every axis row.\n *\n * Origin is quiet on purpose: a catalog default says nothing, a value from the\n * global config says so in faint text, and a value set here is marked by the\n * row's jade edge (named for assistive tech) and offers Reset.\n */\nfunction AxisText({\n label,\n dirty,\n origin,\n busy,\n children,\n onRevert,\n onClear,\n}: {\n label: string;\n dirty: boolean;\n origin: SettingsOrigin;\n busy: boolean;\n children: ReactNode;\n onRevert: () => void;\n onClear: () => void;\n}) {\n return (\n <SettingsRowText className=\"gap-1\">\n <SettingsRowTitle className=\"flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1\">\n {label}\n {origin === 'repository' ? <span className=\"sr-only\">, set for this repository</span> : null}\n {origin === 'global' ? <span className=\"text-sm font-normal text-doom-dim\">From global</span> : null}\n {dirty ? <Badge tone=\"cyan\">Unsaved</Badge> : null}\n {dirty ? (\n <Button variant=\"ghost\" size=\"xs\" disabled={busy} onClick={onRevert} className=\"text-doom-dim\">\n Revert\n </Button>\n ) : origin === 'repository' ? (\n <Button variant=\"ghost\" size=\"xs\" disabled={busy} onClick={onClear} className=\"text-doom-dim\">\n Reset\n </Button>\n ) : null}\n </SettingsRowTitle>\n <SettingsRowDescription>{children}</SettingsRowDescription>\n </SettingsRowText>\n );\n}\n\nfunction hasDraft<K extends keyof RepositorySelectionChanges>(drafts: RepositorySelectionChanges, key: K): boolean {\n return Object.hasOwn(drafts, key);\n}\n\ninterface SingleAxisProps {\n id: 'major-mode' | 'profile';\n label: string;\n detail: string;\n options: readonly RepositoryCatalogOption[];\n effective: string | undefined;\n repositoryValue: string | undefined;\n origin: SettingsOrigin;\n draft: string | null | undefined;\n dirty: boolean;\n busy: boolean;\n onChange: (value: string | null) => void;\n onRevert: () => void;\n}\n\nfunction SingleAxis({\n id,\n label,\n detail,\n options,\n effective,\n repositoryValue,\n origin,\n draft,\n dirty,\n busy,\n onChange,\n onRevert,\n}: SingleAxisProps) {\n const value = dirty ? draft : repositoryValue;\n const selected = value === null || value === undefined ? INHERIT_VALUE : value;\n const inherited = effective === undefined ? 'Inherit (none)' : `Inherit (${effective})`;\n const shown = value === null || value === undefined ? effective : value;\n return (\n <SettingsRow\n data-testid={`repository-axis-${id}`}\n data-dirty={dirty}\n changed={origin === 'repository'}\n className=\"items-start\"\n >\n <AxisText\n label={label}\n dirty={dirty}\n origin={origin}\n busy={busy}\n onRevert={onRevert}\n onClear={() => onChange(null)}\n >\n {optionDetail(options, shown) || detail}\n </AxisText>\n <Select value={selected} disabled={busy} onValueChange={(next) => onChange(next === INHERIT_VALUE ? null : next)}>\n <SelectTrigger data-testid={`repository-select-${id}`} aria-label={label} className=\"w-full text-sm sm:w-64\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={INHERIT_VALUE}>{inherited}</SelectItem>\n {options.map((option) => (\n <SelectItem key={option.name} value={option.name}>\n {option.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </SettingsRow>\n );\n}\n\ninterface DomainsAxisProps {\n view: RepositorySettingsView;\n draft: readonly string[] | null | undefined;\n dirty: boolean;\n busy: boolean;\n onChange: (value: readonly string[] | null) => void;\n onRevert: () => void;\n}\n\nfunction DomainsAxis({ view, draft, dirty, busy, onChange, onRevert }: DomainsAxisProps) {\n const axis = view.selection.domains;\n const inherited = axis.effective ?? [];\n const selected = dirty ? (draft ?? inherited) : (axis.repository ?? inherited);\n const selectedNames = new Set(selected);\n const toggled = (name: string): readonly string[] =>\n selectedNames.has(name) ? selected.filter((entry) => entry !== name) : [...selected, name];\n\n return (\n <SettingsRow\n data-testid=\"repository-axis-domains\"\n data-dirty={dirty}\n changed={axis.origin === 'repository'}\n className=\"items-start\"\n >\n <AxisText\n label=\"Domains\"\n dirty={dirty}\n origin={axis.origin}\n busy={busy}\n onRevert={onRevert}\n onClear={() => onChange(null)}\n >\n The plugin sets a new session in this repository loads. Pick any number.\n </AxisText>\n <div role=\"group\" aria-label=\"Domains\" className=\"flex basis-full flex-wrap items-center gap-2\">\n {view.catalogs.domains.map((domain) => {\n const active = selectedNames.has(domain.name);\n return (\n <Button\n key={domain.name}\n variant=\"ghost\"\n size=\"sm\"\n data-testid={`repository-domain-${domain.name}`}\n data-active={active}\n aria-pressed={active}\n disabled={busy}\n title={domain.description}\n onClick={() => onChange(toggled(domain.name))}\n className={\n active\n ? 'gap-1.5 rounded-full border border-doom-green/50 bg-doom-green/10 pl-2 pr-3 font-medium text-doom-green hover:bg-doom-green/15 hover:text-doom-green'\n : 'rounded-full border border-doom-border-soft px-3 text-doom-dim hover:border-doom-border hover:text-doom-hi'\n }\n >\n {active ? <CheckIcon aria-hidden className=\"size-3.5\" /> : null}\n {domain.name}\n </Button>\n );\n })}\n {view.catalogs.domains.length === 0 ? (\n <span className=\"text-sm text-doom-dim\">No domains are configured.</span>\n ) : null}\n </div>\n </SettingsRow>\n );\n}\n\nexport function RepositorySettings({ repository }: { repository: SettingsRepository | null }) {\n const repositoryId = repository?.id ?? '';\n const key = JSON.stringify(['repository', repositoryId]);\n const [view, setView, viewState] = useDashboardState<RepositorySettingsView | undefined>(`${key}/view`, undefined);\n const [drafts, setDrafts] = useDashboardState<RepositorySelectionChanges>(`${key}/drafts`, {});\n const [busy, setBusy, busyState] = useDashboardState(`${key}/busy`, false);\n const [error, setError] = useDashboardState(`${key}/error`, '');\n const [note, setNote] = useDashboardState(`${key}/note`, '');\n const dirty = Object.keys(drafts).length;\n\n const reload = useCallback(async (): Promise<void> => {\n if (repositoryId === '') {\n setView(undefined);\n return;\n }\n if (busyState.state) return;\n const previous = viewState.state;\n const result = await readRepositorySettings(repositoryId);\n if (busyState.state || viewState.state !== previous) return;\n if (result.ok) {\n setView(result.settings);\n setError('');\n return;\n }\n setView(undefined);\n setError(result.error);\n }, [repositoryId, busyState, viewState, setView, setError]);\n\n useEffect(() => {\n // eslint-disable-next-line react/set-state-in-effect -- reads the repository settings over HTTP; the state is the response.\n void reload();\n }, [reload]);\n\n const change = useCallback(\n <K extends keyof RepositorySelectionChanges>(key: K, value: RepositorySelectionChanges[K]) => {\n setNote('');\n setDrafts((current) => ({ ...current, [key]: value }));\n },\n [setNote, setDrafts],\n );\n\n const revert = useCallback(\n (key: keyof RepositorySelectionChanges) => {\n setDrafts((current) => {\n const next = { ...current };\n delete next[key];\n return next;\n });\n },\n [setDrafts],\n );\n\n const save = useCallback(async (): Promise<void> => {\n if (busyState.state || view === undefined || dirty === 0) return;\n setBusy(true);\n setError('');\n const result = await writeRepositorySelection({\n repositoryId: view.repository.id,\n expectedHash: view.hash,\n changes: drafts,\n });\n setBusy(false);\n if (!result.ok) {\n setError(result.error);\n await reload();\n return;\n }\n setView(result.settings);\n setDrafts((current) => (current === drafts ? {} : current));\n setNote('Saved. Run po sync, and the next session starts with these.');\n for (const sessionId of Object.keys(sessionsStore.state.byId)) refreshSessionFacts(sessionId);\n }, [busyState, dirty, drafts, reload, view, setBusy, setError, setView, setDrafts, setNote]);\n\n const modeDirty = hasDraft(drafts, 'majorMode');\n const domainDirty = hasDraft(drafts, 'domains');\n const profileDirty = hasDraft(drafts, 'profile');\n\n return (\n <SettingsPage data-testid=\"repository-settings\">\n <SettingsHeader>\n <SettingsTitle>Defaults</SettingsTitle>\n <SettingsDescription>\n What a new session in this repository starts with. Sessions already open keep what they have.\n </SettingsDescription>\n </SettingsHeader>\n\n {repository === null ? (\n <SettingsCard>\n <SettingsRow data-testid=\"repository-settings-empty\">\n <SettingsRowText>\n <SettingsRowTitle>No repository yet</SettingsRowTitle>\n <SettingsRowDescription>\n Open a session inside a Git or <code className=\"font-mono\">.po</code> repository to set its defaults\n here.\n </SettingsRowDescription>\n </SettingsRowText>\n </SettingsRow>\n </SettingsCard>\n ) : null}\n\n {error === '' ? null : (\n <p data-testid=\"repository-settings-error\" role=\"alert\" className=\"text-sm leading-relaxed text-doom-red\">\n {error}\n </p>\n )}\n\n {view === undefined ? null : (\n <div className=\"flex min-w-0 flex-col gap-4\">\n <SettingsCard>\n <SingleAxis\n id=\"major-mode\"\n label=\"Major mode\"\n detail=\"The extensions and package layers a session is built from.\"\n options={view.catalogs.majorModes}\n effective={view.selection.majorMode.effective}\n repositoryValue={view.selection.majorMode.repository}\n origin={view.selection.majorMode.origin}\n draft={modeDirty ? drafts.majorMode : undefined}\n dirty={modeDirty}\n busy={busy}\n onChange={(value) => change('majorMode', value)}\n onRevert={() => revert('majorMode')}\n />\n <DomainsAxis\n view={view}\n draft={domainDirty ? drafts.domains : undefined}\n dirty={domainDirty}\n busy={busy}\n onChange={(value) => change('domains', value)}\n onRevert={() => revert('domains')}\n />\n <SingleAxis\n id=\"profile\"\n label=\"Profile\"\n detail=\"The persona a new session in this repository starts with.\"\n options={view.catalogs.profiles}\n effective={view.selection.profile.effective}\n repositoryValue={view.selection.profile.repository}\n origin={view.selection.profile.origin}\n draft={profileDirty ? drafts.profile : undefined}\n dirty={profileDirty}\n busy={busy}\n onChange={(value) => change('profile', value)}\n onRevert={() => revert('profile')}\n />\n </SettingsCard>\n <SettingsActions>\n <Button\n variant={dirty > 0 ? 'primary' : 'outline'}\n size=\"sm\"\n data-testid=\"repository-settings-save\"\n loading={busy}\n disabled={busy || dirty === 0}\n onClick={() => void save()}\n >\n Save defaults\n </Button>\n {dirty === 0 ? null : (\n <Button variant=\"ghost\" size=\"sm\" disabled={busy} onClick={() => setDrafts({})}>\n Discard\n </Button>\n )}\n <SettingsNote>\n {dirty > 0 ? `${String(dirty)} unsaved ${dirty === 1 ? 'change' : 'changes'}.` : note}\n </SettingsNote>\n </SettingsActions>\n </div>\n )}\n </SettingsPage>\n );\n}\n"],"mappings":";;;;;;;;;AAsCA,MAAM,gBAAgB;AAEtB,SAAS,aAAa,SAA6C,MAAkC;CACnG,IAAI,SAAS,KAAA,GAAW,OAAO;CAC/B,MAAM,SAAS,QAAQ,MAAM,cAAc,UAAU,SAAS,IAAI;CAClE,IAAI,WAAW,KAAA,GAAW,OAAO,qBAAqB,KAAK;CAC3D,OAAO,OAAO,gBAAgB,OAAO,SAAS,WAAW,OAAO,OAAO,KAAK,IAAI,KAAK,OAAO,KAAK;AACnG;;;;;;;;AASA,SAAS,SAAS,EAChB,OACA,OACA,QACA,MACA,UACA,UACA,WASC;CACD,OACE,qBAAC,iBAAD;EAAiB,WAAU;EAA3B,UAAA,CACE,qBAAC,kBAAD;GAAkB,WAAU;GAA5B,UAAA;IACG;IACA,WAAW,eAAe,oBAAC,QAAD;KAAM,WAAU;KAAU,UAAA;IAA+B,CAAA,IAAI;IACvF,WAAW,WAAW,oBAAC,QAAD;KAAM,WAAU;KAAoC,UAAA;IAAiB,CAAA,IAAI;IAC/F,QAAQ,oBAAC,OAAD;KAAO,MAAK;KAAO,UAAA;IAAc,CAAA,IAAI;IAC7C,QACC,oBAAC,QAAD;KAAQ,SAAQ;KAAQ,MAAK;KAAK,UAAU;KAAM,SAAS;KAAU,WAAU;KAAgB,UAAA;IAEvF,CAAA,IACN,WAAW,eACb,oBAAC,QAAD;KAAQ,SAAQ;KAAQ,MAAK;KAAK,UAAU;KAAM,SAAS;KAAS,WAAU;KAAgB,UAAA;IAEtF,CAAA,IACN;GACY;EAClB,CAAA,GAAA,oBAAC,wBAAD,EAAyB,SAAiC,CAAA,CAC3C;;AAErB;AAEA,SAAS,SAAqD,QAAoC,KAAiB;CACjH,OAAO,OAAO,OAAO,QAAQ,GAAG;AAClC;AAiBA,SAAS,WAAW,EAClB,IACA,OACA,QACA,SACA,WACA,iBACA,QACA,OACA,OACA,MACA,UACA,YACkB;CAClB,MAAM,QAAQ,QAAQ,QAAQ;CAC9B,MAAM,WAAW,UAAU,QAAQ,UAAU,KAAA,IAAY,gBAAgB;CACzE,MAAM,YAAY,cAAc,KAAA,IAAY,mBAAmB,YAAY,UAAU;CACrF,MAAM,QAAQ,UAAU,QAAQ,UAAU,KAAA,IAAY,YAAY;CAClE,OACE,qBAAC,aAAD;EACE,eAAa,mBAAmB;EAChC,cAAY;EACZ,SAAS,WAAW;EACpB,WAAU;EAJZ,UAAA,CAME,oBAAC,UAAD;GACS;GACA;GACC;GACF;GACI;GACV,eAAe,SAAS,IAAI;GAE3B,UAAA,aAAa,SAAS,KAAK,KAAK;EACzB,CAAA,GACV,qBAAC,QAAD;GAAQ,OAAO;GAAU,UAAU;GAAM,gBAAgB,SAAS,SAAS,SAAS,gBAAgB,OAAO,IAAI;GAA/G,UAAA,CACE,oBAAC,eAAD;IAAe,eAAa,qBAAqB;IAAM,cAAY;IAAO,WAAU;IAClF,UAAA,oBAAC,aAAD,CAAc,CAAA;GACD,CAAA,GACf,qBAAC,eAAD,EAAA,UAAA,CACE,oBAAC,YAAD;IAAY,OAAO;IAAgB,UAAA;GAAsB,CAAA,GACxD,QAAQ,KAAK,WACZ,oBAAC,YAAD;IAA8B,OAAO,OAAO;IACzC,UAAA,OAAO;GACE,GAFK,OAAO,IAEZ,CACb,CACY,EAAA,CAAA,CACT;EACG,CAAA,CAAA;;AAEjB;AAWA,SAAS,YAAY,EAAE,MAAM,OAAO,OAAO,MAAM,UAAU,YAA8B;CACvF,MAAM,OAAO,KAAK,UAAU;CAC5B,MAAM,YAAY,KAAK,aAAa,CAAC;CACrC,MAAM,WAAW,QAAS,SAAS,YAAc,KAAK,cAAc;CACpE,MAAM,gBAAgB,IAAI,IAAI,QAAQ;CACtC,MAAM,WAAW,SACf,cAAc,IAAI,IAAI,IAAI,SAAS,QAAQ,UAAU,UAAU,IAAI,IAAI,CAAC,GAAG,UAAU,IAAI;CAE3F,OACE,qBAAC,aAAD;EACE,eAAY;EACZ,cAAY;EACZ,SAAS,KAAK,WAAW;EACzB,WAAU;EAJZ,UAAA,CAME,oBAAC,UAAD;GACE,OAAM;GACC;GACP,QAAQ,KAAK;GACP;GACI;GACV,eAAe,SAAS,IAAI;GAC7B,UAAA;EAES,CAAA,GACV,qBAAC,OAAD;GAAK,MAAK;GAAQ,cAAW;GAAU,WAAU;GAAjD,UAAA,CACG,KAAK,SAAS,QAAQ,KAAK,WAAW;IACrC,MAAM,SAAS,cAAc,IAAI,OAAO,IAAI;IAC5C,OACE,qBAAC,QAAD;KAEE,SAAQ;KACR,MAAK;KACL,eAAa,qBAAqB,OAAO;KACzC,eAAa;KACb,gBAAc;KACd,UAAU;KACV,OAAO,OAAO;KACd,eAAe,SAAS,QAAQ,OAAO,IAAI,CAAC;KAC5C,WACE,SACI,yJACA;KAbR,UAAA,CAgBG,SAAS,oBAAC,WAAD;MAAW,eAAA;MAAY,WAAU;KAAY,CAAA,IAAI,MAC1D,OAAO,IACF;IAjBD,GAAA,OAAO,IAiBN;GAEZ,CAAC,GACA,KAAK,SAAS,QAAQ,WAAW,IAChC,oBAAC,QAAD;IAAM,WAAU;IAAwB,UAAA;GAAgC,CAAA,IACtE,IACD;EACM,CAAA,CAAA;;AAEjB;AAEA,SAAgB,mBAAmB,EAAE,cAAyD;CAC5F,MAAM,eAAe,YAAY,MAAM;CACvC,MAAM,MAAM,KAAK,UAAU,CAAC,cAAc,YAAY,CAAC;CACvD,MAAM,CAAC,MAAM,SAAS,aAAa,kBAAsD,GAAG,IAAI,QAAQ,KAAA,CAAS;CACjH,MAAM,CAAC,QAAQ,aAAa,kBAA8C,GAAG,IAAI,UAAU,CAAC,CAAC;CAC7F,MAAM,CAAC,MAAM,SAAS,aAAa,kBAAkB,GAAG,IAAI,QAAQ,KAAK;CACzE,MAAM,CAAC,OAAO,YAAY,kBAAkB,GAAG,IAAI,SAAS,EAAE;CAC9D,MAAM,CAAC,MAAM,WAAW,kBAAkB,GAAG,IAAI,QAAQ,EAAE;CAC3D,MAAM,QAAQ,OAAO,KAAK,MAAM,CAAC,CAAC;CAElC,MAAM,SAAS,YAAY,YAA2B;EACpD,IAAI,iBAAiB,IAAI;GACvB,QAAQ,KAAA,CAAS;GACjB;EACF;EACA,IAAI,UAAU,OAAO;EACrB,MAAM,WAAW,UAAU;EAC3B,MAAM,SAAS,MAAM,uBAAuB,YAAY;EACxD,IAAI,UAAU,SAAS,UAAU,UAAU,UAAU;EACrD,IAAI,OAAO,IAAI;GACb,QAAQ,OAAO,QAAQ;GACvB,SAAS,EAAE;GACX;EACF;EACA,QAAQ,KAAA,CAAS;EACjB,SAAS,OAAO,KAAK;CACvB,GAAG;EAAC;EAAc;EAAW;EAAW;EAAS;CAAQ,CAAC;CAE1D,gBAAgB;EAEd,OAAY;CACd,GAAG,CAAC,MAAM,CAAC;CAEX,MAAM,SAAS,aACgC,KAAQ,UAAyC;EAC5F,QAAQ,EAAE;EACV,WAAW,aAAa;GAAE,GAAG;IAAU,MAAM;EAAM,EAAE;CACvD,GACA,CAAC,SAAS,SAAS,CACrB;CAEA,MAAM,SAAS,aACZ,QAA0C;EACzC,WAAW,YAAY;GACrB,MAAM,OAAO,EAAE,GAAG,QAAQ;GAC1B,OAAO,KAAK;GACZ,OAAO;EACT,CAAC;CACH,GACA,CAAC,SAAS,CACZ;CAEA,MAAM,OAAO,YAAY,YAA2B;EAClD,IAAI,UAAU,SAAS,SAAS,KAAA,KAAa,UAAU,GAAG;EAC1D,QAAQ,IAAI;EACZ,SAAS,EAAE;EACX,MAAM,SAAS,MAAM,yBAAyB;GAC5C,cAAc,KAAK,WAAW;GAC9B,cAAc,KAAK;GACnB,SAAS;EACX,CAAC;EACD,QAAQ,KAAK;EACb,IAAI,CAAC,OAAO,IAAI;GACd,SAAS,OAAO,KAAK;GACrB,MAAM,OAAO;GACb;EACF;EACA,QAAQ,OAAO,QAAQ;EACvB,WAAW,YAAa,YAAY,SAAS,CAAC,IAAI,OAAQ;EAC1D,QAAQ,6DAA6D;EACrE,KAAK,MAAM,aAAa,OAAO,KAAK,cAAc,MAAM,IAAI,GAAG,oBAAoB,SAAS;CAC9F,GAAG;EAAC;EAAW;EAAO;EAAQ;EAAQ;EAAM;EAAS;EAAU;EAAS;EAAW;CAAO,CAAC;CAE3F,MAAM,YAAY,SAAS,QAAQ,WAAW;CAC9C,MAAM,cAAc,SAAS,QAAQ,SAAS;CAC9C,MAAM,eAAe,SAAS,QAAQ,SAAS;CAE/C,OACE,qBAAC,cAAD;EAAc,eAAY;EAA1B,UAAA;GACE,qBAAC,gBAAD,EAAA,UAAA,CACE,oBAAC,eAAD,EAAA,UAAe,WAAuB,CAAA,GACtC,oBAAC,qBAAD,EAAA,UAAqB,gGAEA,CAAA,CACP,EAAA,CAAA;GAEf,eAAe,OACd,oBAAC,cAAD,EAAA,UACE,oBAAC,aAAD;IAAa,eAAY;IACvB,UAAA,qBAAC,iBAAD,EAAA,UAAA,CACE,oBAAC,kBAAD,EAAA,UAAkB,oBAAmC,CAAA,GACrD,qBAAC,wBAAD,EAAA,UAAA;KAAwB;KACS,oBAAC,QAAD;MAAM,WAAU;MAAY,UAAA;KAAS,CAAA;KAAC;IAE/C,EAAA,CAAA,CACT,EAAA,CAAA;GACN,CAAA,EACD,CAAA,IACZ;GAEH,UAAU,KAAK,OACd,oBAAC,KAAD;IAAG,eAAY;IAA4B,MAAK;IAAQ,WAAU;IAC/D,UAAA;GACA,CAAA;GAGJ,SAAS,KAAA,IAAY,OACpB,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,qBAAC,cAAD,EAAA,UAAA;KACE,oBAAC,YAAD;MACE,IAAG;MACH,OAAM;MACN,QAAO;MACP,SAAS,KAAK,SAAS;MACvB,WAAW,KAAK,UAAU,UAAU;MACpC,iBAAiB,KAAK,UAAU,UAAU;MAC1C,QAAQ,KAAK,UAAU,UAAU;MACjC,OAAO,YAAY,OAAO,YAAY,KAAA;MACtC,OAAO;MACD;MACN,WAAW,UAAU,OAAO,aAAa,KAAK;MAC9C,gBAAgB,OAAO,WAAW;KACnC,CAAA;KACD,oBAAC,aAAD;MACQ;MACN,OAAO,cAAc,OAAO,UAAU,KAAA;MACtC,OAAO;MACD;MACN,WAAW,UAAU,OAAO,WAAW,KAAK;MAC5C,gBAAgB,OAAO,SAAS;KACjC,CAAA;KACD,oBAAC,YAAD;MACE,IAAG;MACH,OAAM;MACN,QAAO;MACP,SAAS,KAAK,SAAS;MACvB,WAAW,KAAK,UAAU,QAAQ;MAClC,iBAAiB,KAAK,UAAU,QAAQ;MACxC,QAAQ,KAAK,UAAU,QAAQ;MAC/B,OAAO,eAAe,OAAO,UAAU,KAAA;MACvC,OAAO;MACD;MACN,WAAW,UAAU,OAAO,WAAW,KAAK;MAC5C,gBAAgB,OAAO,SAAS;KACjC,CAAA;IACW,EAAA,CAAA,GACd,qBAAC,iBAAD,EAAA,UAAA;KACE,oBAAC,QAAD;MACE,SAAS,QAAQ,IAAI,YAAY;MACjC,MAAK;MACL,eAAY;MACZ,SAAS;MACT,UAAU,QAAQ,UAAU;MAC5B,eAAe,KAAK,KAAK;MAC1B,UAAA;KAEO,CAAA;KACP,UAAU,IAAI,OACb,oBAAC,QAAD;MAAQ,SAAQ;MAAQ,MAAK;MAAK,UAAU;MAAM,eAAe,UAAU,CAAC,CAAC;MAAG,UAAA;KAExE,CAAA;KAEV,oBAAC,cAAD,EAAA,UACG,QAAQ,IAAI,GAAG,OAAO,KAAK,EAAE,WAAW,UAAU,IAAI,WAAW,UAAU,KAAK,KACrE,CAAA;IACC,EAAA,CAAA,CACd;;EAEK;;AAElB"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
const require_sealedSession = require("../../lib/sealedSession.cjs");
|
|
2
|
+
const require_stepUp = require("../../lib/stepUp.cjs");
|
|
3
|
+
const require_pluginCompositions = require("../../lib/pluginCompositions.cjs");
|
|
4
|
+
const require_settingsApi = require("../../lib/settingsApi.cjs");
|
|
5
|
+
const require_workspacesStore = require("../../stores/workspacesStore.cjs");
|
|
6
|
+
const require_ContributedSettings = require("./ContributedSettings.cjs");
|
|
7
|
+
const require_RepositorySettings = require("./RepositorySettings.cjs");
|
|
8
|
+
const require_SettingsMenu = require("./SettingsMenu.cjs");
|
|
9
|
+
let react = require("react");
|
|
10
|
+
let _tanstack_react_store = require("@tanstack/react-store");
|
|
11
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
12
|
+
let _agimon_ai_po_web_components = require("@agimon-ai/po-web-components");
|
|
13
|
+
//#region src/web/features/settings/RepositoryWorkspace.tsx
|
|
14
|
+
const LAST_REPOSITORY_KEY = "po.settings.repository";
|
|
15
|
+
const requestThroughSealedSession = (input, init) => require_sealedSession.sealedHttpSession.fetch(input, init);
|
|
16
|
+
function rememberedRepository() {
|
|
17
|
+
try {
|
|
18
|
+
return localStorage.getItem(LAST_REPOSITORY_KEY) ?? "";
|
|
19
|
+
} catch {
|
|
20
|
+
return "";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function rememberRepository(repositoryId) {
|
|
24
|
+
try {
|
|
25
|
+
localStorage.setItem(LAST_REPOSITORY_KEY, repositoryId);
|
|
26
|
+
} catch {}
|
|
27
|
+
}
|
|
28
|
+
function RepositoryWorkspace({ current, initialRepositoryId, onRepositoryChange, onReady }) {
|
|
29
|
+
const workspaceFingerprint = (0, _tanstack_react_store.useStore)(require_workspacesStore.workspacesStore, (state) => state.order.join("\n"));
|
|
30
|
+
const [repositories, setRepositories] = (0, react.useState)([]);
|
|
31
|
+
const [repositoryId, setRepositoryId] = (0, react.useState)(() => initialRepositoryId ?? rememberedRepository());
|
|
32
|
+
const [loading, setLoading] = (0, react.useState)(true);
|
|
33
|
+
const repository = (0, react.useMemo)(() => repositories.find((candidate) => candidate.id === repositoryId) ?? null, [repositories, repositoryId]);
|
|
34
|
+
(0, react.useEffect)(() => {
|
|
35
|
+
let currentRequest = true;
|
|
36
|
+
setLoading(true);
|
|
37
|
+
require_settingsApi.listSettingsRepositories().then((found) => {
|
|
38
|
+
if (!currentRequest) return;
|
|
39
|
+
setRepositories(found);
|
|
40
|
+
setRepositoryId((selected) => {
|
|
41
|
+
const next = found.some((candidate) => candidate.id === selected) ? selected : found.find((candidate) => candidate.active)?.id ?? found[0]?.id ?? "";
|
|
42
|
+
if (next) rememberRepository(next);
|
|
43
|
+
return next;
|
|
44
|
+
});
|
|
45
|
+
setLoading(false);
|
|
46
|
+
});
|
|
47
|
+
return () => {
|
|
48
|
+
currentRequest = false;
|
|
49
|
+
};
|
|
50
|
+
}, [workspaceFingerprint]);
|
|
51
|
+
(0, react.useEffect)(() => {
|
|
52
|
+
if (loading) return;
|
|
53
|
+
let cancelled = false;
|
|
54
|
+
require_pluginCompositions.focusWorkspaceWebPlugins(repositoryId || null).then(() => {
|
|
55
|
+
if (!cancelled) onReady?.(true);
|
|
56
|
+
}).catch((error) => console.error(error));
|
|
57
|
+
return () => {
|
|
58
|
+
cancelled = true;
|
|
59
|
+
};
|
|
60
|
+
}, [
|
|
61
|
+
repositoryId,
|
|
62
|
+
loading,
|
|
63
|
+
onReady
|
|
64
|
+
]);
|
|
65
|
+
const selectRepository = (next) => {
|
|
66
|
+
setRepositoryId(next);
|
|
67
|
+
rememberRepository(next);
|
|
68
|
+
onRepositoryChange?.(next);
|
|
69
|
+
};
|
|
70
|
+
const panel = current.repositoryPanel;
|
|
71
|
+
const Panel = panel?.component;
|
|
72
|
+
const groups = [{
|
|
73
|
+
label: "Open",
|
|
74
|
+
items: repositories.filter((candidate) => candidate.active)
|
|
75
|
+
}, {
|
|
76
|
+
label: "Recent",
|
|
77
|
+
items: repositories.filter((candidate) => !candidate.active)
|
|
78
|
+
}].filter((group) => group.items.length > 0);
|
|
79
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
80
|
+
className: "flex min-h-0 flex-1 flex-col",
|
|
81
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
82
|
+
className: "flex min-w-0 shrink-0 items-center gap-3 border-b border-doom-border-soft px-3 py-2.5 sm:px-5 lg:px-6",
|
|
83
|
+
children: [
|
|
84
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.Select, {
|
|
85
|
+
value: repositoryId,
|
|
86
|
+
disabled: loading || repositories.length === 0,
|
|
87
|
+
onValueChange: selectRepository,
|
|
88
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SelectTrigger, {
|
|
89
|
+
"data-testid": "repository-workspace-picker",
|
|
90
|
+
"aria-label": "Repository",
|
|
91
|
+
className: "w-48 shrink-0 text-sm font-medium sm:w-60",
|
|
92
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SelectValue, { placeholder: loading ? "Reading repositories…" : "Pick a repository" })
|
|
93
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SelectContent, { children: groups.map((group) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SelectGroup, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SelectLabel, { children: group.label }), group.items.map((candidate) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SelectItem, {
|
|
94
|
+
value: candidate.id,
|
|
95
|
+
children: candidate.name
|
|
96
|
+
}, candidate.id))] }, group.label)) })]
|
|
97
|
+
}),
|
|
98
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
99
|
+
title: repository?.path,
|
|
100
|
+
className: "min-w-0 flex-1 truncate font-mono text-sm text-doom-dim",
|
|
101
|
+
children: repository?.path
|
|
102
|
+
}),
|
|
103
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
|
|
104
|
+
variant: "ghost",
|
|
105
|
+
size: "icon-md",
|
|
106
|
+
"aria-label": "Refresh repositories",
|
|
107
|
+
title: "Refresh repositories",
|
|
108
|
+
loading,
|
|
109
|
+
disabled: loading,
|
|
110
|
+
onClick: () => {
|
|
111
|
+
setLoading(true);
|
|
112
|
+
require_settingsApi.listSettingsRepositories().then((found) => {
|
|
113
|
+
setRepositories(found);
|
|
114
|
+
setLoading(false);
|
|
115
|
+
});
|
|
116
|
+
},
|
|
117
|
+
className: "shrink-0 text-doom-dim",
|
|
118
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.RefreshIcon, {
|
|
119
|
+
"aria-hidden": true,
|
|
120
|
+
className: "size-4"
|
|
121
|
+
})
|
|
122
|
+
})
|
|
123
|
+
]
|
|
124
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
125
|
+
className: "flex min-h-0 flex-1 flex-col lg:flex-row",
|
|
126
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_SettingsMenu.SettingsMenu, {
|
|
127
|
+
active: current.id,
|
|
128
|
+
workspace: "repository",
|
|
129
|
+
repositoryId
|
|
130
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("section", {
|
|
131
|
+
"data-testid": "settings-content",
|
|
132
|
+
className: "min-w-0 flex-1 overflow-y-auto px-3 py-3 sm:px-5 sm:py-5 lg:px-8",
|
|
133
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
134
|
+
className: "mx-auto flex w-full max-w-[720px] flex-col gap-8",
|
|
135
|
+
children: [
|
|
136
|
+
current.id === "repositories" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_RepositorySettings.RepositorySettings, { repository }) : null,
|
|
137
|
+
current.contribution === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ContributedSettings.ContributedSettings, {
|
|
138
|
+
section: current.contribution,
|
|
139
|
+
scope: "repository",
|
|
140
|
+
repoRoot: repository?.path ?? "",
|
|
141
|
+
workspaceId: repository?.id
|
|
142
|
+
}),
|
|
143
|
+
panel === void 0 || Panel === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsPage, {
|
|
144
|
+
"data-testid": `repository-settings-panel-${panel.pluginId}`,
|
|
145
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsHeader, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsTitle, { children: panel.label }), panel.detail ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsDescription, { children: panel.detail }) : null] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Panel, {
|
|
146
|
+
repository,
|
|
147
|
+
request: requestThroughSealedSession,
|
|
148
|
+
requestWithStepUp: require_stepUp.fetchWithStepUp
|
|
149
|
+
})]
|
|
150
|
+
})
|
|
151
|
+
]
|
|
152
|
+
})
|
|
153
|
+
})]
|
|
154
|
+
})]
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
//#endregion
|
|
158
|
+
exports.RepositoryWorkspace = RepositoryWorkspace;
|
|
159
|
+
|
|
160
|
+
//# sourceMappingURL=RepositoryWorkspace.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RepositoryWorkspace.cjs","names":["sealedHttpSession","useStore","workspacesStore","useState","useMemo","listSettingsRepositories","focusWorkspaceWebPlugins","Select","SelectTrigger","SelectValue","SelectContent","SelectGroup","SelectLabel","SelectItem","Button","RefreshIcon","SettingsMenu","RepositorySettings","ContributedSettings","SettingsPage","SettingsHeader","SettingsTitle","SettingsDescription","fetchWithStepUp"],"sources":["../../../../src/web/features/settings/RepositoryWorkspace.tsx"],"sourcesContent":["import {\n Button,\n RefreshIcon,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectTrigger,\n SelectValue,\n SettingsDescription,\n SettingsHeader,\n SettingsPage,\n SettingsTitle,\n} from '@agimon-ai/po-web-components';\nimport { useStore } from '@tanstack/react-store';\nimport { useEffect, useMemo, useState } from 'react';\n\nimport type { SettingsRepository } from '../../../types/settings';\nimport { focusWorkspaceWebPlugins } from '../../lib/pluginCompositions';\nimport { sealedHttpSession } from '../../lib/sealedSession';\nimport { listSettingsRepositories } from '../../lib/settingsApi';\nimport type { SettingsSection } from '../../lib/settingsSections';\nimport { fetchWithStepUp } from '../../lib/stepUp';\nimport { workspacesStore } from '../../stores/workspacesStore';\nimport { ContributedSettings } from './ContributedSettings';\nimport { RepositorySettings } from './RepositorySettings';\nimport { SettingsMenu } from './SettingsMenu';\n\nconst LAST_REPOSITORY_KEY = 'po.settings.repository';\n\nconst requestThroughSealedSession = (input: string, init?: RequestInit): Promise<Response> =>\n sealedHttpSession.fetch(input, init);\n\nfunction rememberedRepository(): string {\n try {\n return localStorage.getItem(LAST_REPOSITORY_KEY) ?? '';\n } catch {\n return '';\n }\n}\n\nfunction rememberRepository(repositoryId: string): void {\n try {\n localStorage.setItem(LAST_REPOSITORY_KEY, repositoryId);\n } catch {\n // Browser storage is optional. The picker still works for this page load.\n }\n}\n\nexport function RepositoryWorkspace({\n current,\n initialRepositoryId,\n onRepositoryChange,\n onReady,\n}: {\n current: SettingsSection;\n initialRepositoryId?: string;\n onRepositoryChange?: (repositoryId: string) => void;\n onReady?: (ready: boolean) => void;\n}) {\n const workspaceFingerprint = useStore(workspacesStore, (state) => state.order.join('\\n'));\n const [repositories, setRepositories] = useState<readonly SettingsRepository[]>([]);\n const [repositoryId, setRepositoryId] = useState(() => initialRepositoryId ?? rememberedRepository());\n const [loading, setLoading] = useState(true);\n const repository = useMemo(\n () => repositories.find((candidate) => candidate.id === repositoryId) ?? null,\n [repositories, repositoryId],\n );\n\n useEffect(() => {\n let currentRequest = true;\n // eslint-disable-next-line react/set-state-in-effect -- marks the in-flight request that lists the hub's repositories over HTTP.\n setLoading(true);\n void listSettingsRepositories().then((found) => {\n if (!currentRequest) return;\n setRepositories(found);\n setRepositoryId((selected) => {\n const next = found.some((candidate) => candidate.id === selected)\n ? selected\n : (found.find((candidate) => candidate.active)?.id ?? found[0]?.id ?? '');\n if (next) rememberRepository(next);\n return next;\n });\n setLoading(false);\n });\n return () => {\n currentRequest = false;\n };\n }, [workspaceFingerprint]);\n\n useEffect(() => {\n if (loading) return;\n let cancelled = false;\n void focusWorkspaceWebPlugins(repositoryId || null)\n .then(() => {\n if (!cancelled) onReady?.(true);\n })\n .catch((error: unknown) => console.error(error));\n return () => {\n cancelled = true;\n };\n }, [repositoryId, loading, onReady]);\n\n const selectRepository = (next: string): void => {\n setRepositoryId(next);\n rememberRepository(next);\n onRepositoryChange?.(next);\n };\n const panel = current.repositoryPanel;\n const Panel = panel?.component;\n // Open and recent are where a repository is, not what it is called, so the\n // menu groups by them instead of repeating a status after every name.\n const groups = [\n { label: 'Open', items: repositories.filter((candidate) => candidate.active) },\n { label: 'Recent', items: repositories.filter((candidate) => !candidate.active) },\n ].filter((group) => group.items.length > 0);\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col\">\n <div className=\"flex min-w-0 shrink-0 items-center gap-3 border-b border-doom-border-soft px-3 py-2.5 sm:px-5 lg:px-6\">\n <Select value={repositoryId} disabled={loading || repositories.length === 0} onValueChange={selectRepository}>\n <SelectTrigger\n data-testid=\"repository-workspace-picker\"\n aria-label=\"Repository\"\n className=\"w-48 shrink-0 text-sm font-medium sm:w-60\"\n >\n <SelectValue placeholder={loading ? 'Reading repositories…' : 'Pick a repository'} />\n </SelectTrigger>\n <SelectContent>\n {groups.map((group) => (\n <SelectGroup key={group.label}>\n <SelectLabel>{group.label}</SelectLabel>\n {group.items.map((candidate) => (\n <SelectItem key={candidate.id} value={candidate.id}>\n {candidate.name}\n </SelectItem>\n ))}\n </SelectGroup>\n ))}\n </SelectContent>\n </Select>\n <span title={repository?.path} className=\"min-w-0 flex-1 truncate font-mono text-sm text-doom-dim\">\n {repository?.path}\n </span>\n <Button\n variant=\"ghost\"\n size=\"icon-md\"\n aria-label=\"Refresh repositories\"\n title=\"Refresh repositories\"\n loading={loading}\n disabled={loading}\n onClick={() => {\n setLoading(true);\n void listSettingsRepositories().then((found) => {\n setRepositories(found);\n setLoading(false);\n });\n }}\n className=\"shrink-0 text-doom-dim\"\n >\n <RefreshIcon aria-hidden className=\"size-4\" />\n </Button>\n </div>\n <div className=\"flex min-h-0 flex-1 flex-col lg:flex-row\">\n <SettingsMenu active={current.id} workspace=\"repository\" repositoryId={repositoryId} />\n <section\n data-testid=\"settings-content\"\n className=\"min-w-0 flex-1 overflow-y-auto px-3 py-3 sm:px-5 sm:py-5 lg:px-8\"\n >\n {/* Same column width the general workspace uses. */}\n <div className=\"mx-auto flex w-full max-w-[720px] flex-col gap-8\">\n {current.id === 'repositories' ? <RepositorySettings repository={repository} /> : null}\n {current.contribution === undefined ? null : (\n <ContributedSettings\n section={current.contribution}\n scope=\"repository\"\n repoRoot={repository?.path ?? ''}\n workspaceId={repository?.id}\n />\n )}\n {panel === undefined || Panel === undefined ? null : (\n <SettingsPage data-testid={`repository-settings-panel-${panel.pluginId}`}>\n <SettingsHeader>\n <SettingsTitle>{panel.label}</SettingsTitle>\n {panel.detail ? <SettingsDescription>{panel.detail}</SettingsDescription> : null}\n </SettingsHeader>\n <Panel\n repository={repository}\n request={requestThroughSealedSession}\n requestWithStepUp={fetchWithStepUp}\n />\n </SettingsPage>\n )}\n </div>\n </section>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AA6BA,MAAM,sBAAsB;AAE5B,MAAM,+BAA+B,OAAe,SAClDA,sBAAAA,kBAAkB,MAAM,OAAO,IAAI;AAErC,SAAS,uBAA+B;CACtC,IAAI;EACF,OAAO,aAAa,QAAQ,mBAAmB,KAAK;CACtD,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAS,mBAAmB,cAA4B;CACtD,IAAI;EACF,aAAa,QAAQ,qBAAqB,YAAY;CACxD,QAAQ,CAER;AACF;AAEA,SAAgB,oBAAoB,EAClC,SACA,qBACA,oBACA,WAMC;CACD,MAAM,wBAAA,GAAuBC,sBAAAA,SAAAA,CAASC,wBAAAA,kBAAkB,UAAU,MAAM,MAAM,KAAK,IAAI,CAAC;CACxF,MAAM,CAAC,cAAc,oBAAA,GAAmBC,MAAAA,SAAAA,CAAwC,CAAC,CAAC;CAClF,MAAM,CAAC,cAAc,oBAAA,GAAmBA,MAAAA,SAAAA,OAAe,uBAAuB,qBAAqB,CAAC;CACpG,MAAM,CAAC,SAAS,eAAA,GAAcA,MAAAA,SAAAA,CAAS,IAAI;CAC3C,MAAM,cAAA,GAAaC,MAAAA,QAAAA,OACX,aAAa,MAAM,cAAc,UAAU,OAAO,YAAY,KAAK,MACzE,CAAC,cAAc,YAAY,CAC7B;CAEA,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,IAAI,iBAAiB;EAErB,WAAW,IAAI;EACf,oBAAKC,yBAAyB,CAAC,CAAC,MAAM,UAAU;GAC9C,IAAI,CAAC,gBAAgB;GACrB,gBAAgB,KAAK;GACrB,iBAAiB,aAAa;IAC5B,MAAM,OAAO,MAAM,MAAM,cAAc,UAAU,OAAO,QAAQ,IAC5D,WACC,MAAM,MAAM,cAAc,UAAU,MAAM,CAAC,EAAE,MAAM,MAAM,EAAE,EAAE,MAAM;IACxE,IAAI,MAAM,mBAAmB,IAAI;IACjC,OAAO;GACT,CAAC;GACD,WAAW,KAAK;EAClB,CAAC;EACD,aAAa;GACX,iBAAiB;EACnB;CACF,GAAG,CAAC,oBAAoB,CAAC;CAEzB,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,IAAI,SAAS;EACb,IAAI,YAAY;EAChB,2BAAKC,yBAAyB,gBAAgB,IAAI,CAAC,CAChD,WAAW;GACV,IAAI,CAAC,WAAW,UAAU,IAAI;EAChC,CAAC,CAAC,CACD,OAAO,UAAmB,QAAQ,MAAM,KAAK,CAAC;EACjD,aAAa;GACX,YAAY;EACd;CACF,GAAG;EAAC;EAAc;EAAS;CAAO,CAAC;CAEnC,MAAM,oBAAoB,SAAuB;EAC/C,gBAAgB,IAAI;EACpB,mBAAmB,IAAI;EACvB,qBAAqB,IAAI;CAC3B;CACA,MAAM,QAAQ,QAAQ;CACtB,MAAM,QAAQ,OAAO;CAGrB,MAAM,SAAS,CACb;EAAE,OAAO;EAAQ,OAAO,aAAa,QAAQ,cAAc,UAAU,MAAM;CAAE,GAC7E;EAAE,OAAO;EAAU,OAAO,aAAa,QAAQ,cAAc,CAAC,UAAU,MAAM;CAAE,CAClF,CAAC,CAAC,QAAQ,UAAU,MAAM,MAAM,SAAS,CAAC;CAE1C,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,QAAD;KAAQ,OAAO;KAAc,UAAU,WAAW,aAAa,WAAW;KAAG,eAAe;KAA5F,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,eAAD;MACE,eAAY;MACZ,cAAW;MACX,WAAU;MAEV,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,aAAD,EAAa,aAAa,UAAU,0BAA0B,oBAAsB,CAAA;KACvE,CAAA,GACf,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,eAAD,EAAA,UACG,OAAO,KAAK,UACX,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,aAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,aAAD,EAAA,UAAc,MAAM,MAAmB,CAAA,GACtC,MAAM,MAAM,KAAK,cAChB,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,YAAD;MAA+B,OAAO,UAAU;MAC7C,UAAA,UAAU;KACD,GAFK,UAAU,EAEf,CACb,CACU,EAAA,GAPK,MAAM,KAOX,CACd,EACY,CAAA,CACT;;IACR,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;KAAM,OAAO,YAAY;KAAM,WAAU;KACtC,UAAA,YAAY;IACT,CAAA;IACN,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,QAAD;KACE,SAAQ;KACR,MAAK;KACL,cAAW;KACX,OAAM;KACG;KACT,UAAU;KACV,eAAe;MACb,WAAW,IAAI;MACf,oBAAKT,yBAAyB,CAAC,CAAC,MAAM,UAAU;OAC9C,gBAAgB,KAAK;OACrB,WAAW,KAAK;MAClB,CAAC;KACH;KACA,WAAU;KAEV,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACU,6BAAAA,aAAD;MAAa,eAAA;MAAY,WAAU;KAAU,CAAA;IACvC,CAAA;GACL;EACL,CAAA,GAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,cAAD;IAAc,QAAQ,QAAQ;IAAI,WAAU;IAA2B;GAAe,CAAA,GACtF,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;IACE,eAAY;IACZ,WAAU;IAGV,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MACG,QAAQ,OAAO,iBAAiB,iBAAA,GAAA,kBAAA,IAAA,CAACC,2BAAAA,oBAAD,EAAgC,WAAa,CAAA,IAAI;MACjF,QAAQ,iBAAiB,KAAA,IAAY,OACpC,iBAAA,GAAA,kBAAA,IAAA,CAACC,4BAAAA,qBAAD;OACE,SAAS,QAAQ;OACjB,OAAM;OACN,UAAU,YAAY,QAAQ;OAC9B,aAAa,YAAY;MAC1B,CAAA;MAEF,UAAU,KAAA,KAAa,UAAU,KAAA,IAAY,OAC5C,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,cAAD;OAAc,eAAa,6BAA6B,MAAM;OAA9D,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,gBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,eAAD,EAAA,UAAgB,MAAM,MAAqB,CAAA,GAC1C,MAAM,SAAS,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,qBAAD,EAAA,UAAsB,MAAM,OAA4B,CAAA,IAAI,IAC9D,EAAA,CAAA,GAChB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;QACc;QACZ,SAAS;QACT,mBAAmBC,eAAAA;OACpB,CAAA,CACW;;KAEb;;GACE,CAAA,CACN;EACF,CAAA,CAAA;;AAET"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SettingsSection } from "../../lib/settingsSections.mjs";
|
|
2
|
+
//#region src/web/features/settings/RepositoryWorkspace.d.ts
|
|
3
|
+
export declare function RepositoryWorkspace({ current, initialRepositoryId, onRepositoryChange, onReady }: {
|
|
4
|
+
current: SettingsSection;
|
|
5
|
+
initialRepositoryId?: string;
|
|
6
|
+
onRepositoryChange?: (repositoryId: string) => void;
|
|
7
|
+
onReady?: (ready: boolean) => void;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
//#endregion
|
|
10
|
+
//# sourceMappingURL=RepositoryWorkspace.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RepositoryWorkspace.d.mts","names":[],"sources":["../../../../src/web/features/settings/RepositoryWorkspace.tsx"],"mappings":";;wBAkDgB,sBACd,SACA,qBACA,oBACA;EAEA,SAAS;EACT;EACA,sBAAsB;EACtB,WAAW;oBACZ,IAAA"}
|