@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,135 @@
|
|
|
1
|
+
const require_settingsSections = require("../../lib/settingsSections.cjs");
|
|
2
|
+
let react = require("react");
|
|
3
|
+
let _tanstack_react_router = require("@tanstack/react-router");
|
|
4
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
5
|
+
let _agimon_ai_po_web_components = require("@agimon-ai/po-web-components");
|
|
6
|
+
//#region src/web/features/settings/SettingsMenu.tsx
|
|
7
|
+
function SectionLinks({ active, sections, onNavigate, repositoryId }) {
|
|
8
|
+
return sections.map((section) => {
|
|
9
|
+
const current = section.id === active;
|
|
10
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.NavTab, {
|
|
11
|
+
asChild: true,
|
|
12
|
+
active: current,
|
|
13
|
+
className: "relative min-h-9 min-w-0 rounded-md px-3 py-2 text-doom-text focus-visible:ring-2 focus-visible:ring-doom-green data-[active=true]:bg-doom-panel data-[active=true]:font-semibold data-[active=true]:text-doom-hi data-[active=true]:before:absolute data-[active=true]:before:inset-y-2 data-[active=true]:before:left-0 data-[active=true]:before:w-0.5 data-[active=true]:before:rounded-full data-[active=true]:before:bg-doom-green",
|
|
14
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_tanstack_react_router.Link, {
|
|
15
|
+
to: "/settings/$section",
|
|
16
|
+
params: { section: section.id },
|
|
17
|
+
search: { workspace: repositoryId },
|
|
18
|
+
"data-testid": `settings-section-${section.id}`,
|
|
19
|
+
"aria-current": current ? "page" : void 0,
|
|
20
|
+
onClick: onNavigate,
|
|
21
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
22
|
+
className: "block truncate first-letter:uppercase",
|
|
23
|
+
children: section.label
|
|
24
|
+
})
|
|
25
|
+
})
|
|
26
|
+
}, section.id);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/** Host pages first, then what plugins added, so a reader knows who owns a setting. */
|
|
30
|
+
function SectionGroups(props) {
|
|
31
|
+
const { workspace, sections, ...links } = props;
|
|
32
|
+
const fromPlugin = (section) => section.contribution !== void 0 || section.panel !== void 0 || section.repositoryPanel !== void 0;
|
|
33
|
+
return [{
|
|
34
|
+
label: workspace,
|
|
35
|
+
sections: sections.filter((section) => !fromPlugin(section))
|
|
36
|
+
}, {
|
|
37
|
+
label: "from plugins",
|
|
38
|
+
sections: sections.filter(fromPlugin)
|
|
39
|
+
}].filter((group) => group.sections.length > 0).map((group, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
40
|
+
className: `flex flex-col gap-0.5 ${index > 0 ? "pt-5" : ""}`,
|
|
41
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SectionLabel, {
|
|
42
|
+
className: "px-3 pb-2",
|
|
43
|
+
children: group.label
|
|
44
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SectionLinks, {
|
|
45
|
+
...links,
|
|
46
|
+
sections: group.sections
|
|
47
|
+
})]
|
|
48
|
+
}, group.label));
|
|
49
|
+
}
|
|
50
|
+
function SettingsMenu({ active, workspace, repositoryId }) {
|
|
51
|
+
const [open, setOpen] = (0, react.useState)(false);
|
|
52
|
+
const sections = require_settingsSections.settingsSections(workspace);
|
|
53
|
+
const current = sections.find((section) => section.id === active) ?? sections[0];
|
|
54
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
55
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
56
|
+
className: "shrink-0 border-b border-doom-border bg-doom-panel/40 p-2 lg:hidden",
|
|
57
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.Button, {
|
|
58
|
+
variant: "outline",
|
|
59
|
+
size: "sm",
|
|
60
|
+
"data-testid": "settings-menu-open",
|
|
61
|
+
"aria-haspopup": "dialog",
|
|
62
|
+
"aria-expanded": open,
|
|
63
|
+
onClick: () => setOpen(true),
|
|
64
|
+
className: "h-auto w-full justify-between gap-3 px-3 py-2 text-left whitespace-normal",
|
|
65
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
66
|
+
className: "flex min-w-0 items-center gap-2.5",
|
|
67
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.GearIcon, { className: "h-3.5 w-3.5 shrink-0 text-doom-green" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
68
|
+
className: "flex min-w-0 flex-col gap-0.5",
|
|
69
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
70
|
+
className: "truncate text-base font-medium text-doom-hi first-letter:uppercase",
|
|
71
|
+
children: current?.label ?? workspace
|
|
72
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
73
|
+
className: "truncate text-sm font-normal text-doom-dim",
|
|
74
|
+
children: current?.detail
|
|
75
|
+
})]
|
|
76
|
+
})]
|
|
77
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.ChevronUpIcon, { className: "h-3.5 w-3.5 shrink-0 text-doom-faint" })]
|
|
78
|
+
})
|
|
79
|
+
}),
|
|
80
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("nav", {
|
|
81
|
+
"data-testid": "settings-menu",
|
|
82
|
+
"aria-label": `${workspace} settings sections`,
|
|
83
|
+
className: "hidden w-56 shrink-0 flex-col overflow-y-auto border-r border-doom-border-soft px-3 py-6 lg:flex",
|
|
84
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SectionGroups, {
|
|
85
|
+
active,
|
|
86
|
+
workspace,
|
|
87
|
+
sections,
|
|
88
|
+
repositoryId
|
|
89
|
+
})
|
|
90
|
+
}),
|
|
91
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Dialog, {
|
|
92
|
+
open,
|
|
93
|
+
onOpenChange: setOpen,
|
|
94
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.DialogContent, {
|
|
95
|
+
width: "lg",
|
|
96
|
+
"data-testid": "settings-menu-sheet",
|
|
97
|
+
"aria-describedby": void 0,
|
|
98
|
+
className: "top-auto bottom-0 left-0 max-h-[min(72dvh,560px)] !w-full !max-w-none translate-x-0 translate-y-0 rounded-t-xl rounded-b-none border-x-0 border-b-0 data-[state=open]:animate-none lg:hidden",
|
|
99
|
+
children: [
|
|
100
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
101
|
+
"aria-hidden": true,
|
|
102
|
+
className: "mx-auto mt-2 h-1 w-10 shrink-0 rounded-full bg-doom-border"
|
|
103
|
+
}),
|
|
104
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.DialogHeader, {
|
|
105
|
+
dismissible: true,
|
|
106
|
+
closeLabel: "close settings menu",
|
|
107
|
+
className: "py-2.5",
|
|
108
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.DialogTitle, {
|
|
109
|
+
className: "first-letter:uppercase",
|
|
110
|
+
children: [workspace, " settings"]
|
|
111
|
+
})
|
|
112
|
+
}),
|
|
113
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.DialogBody, {
|
|
114
|
+
className: "gap-1 p-2 pb-[max(0.75rem,env(safe-area-inset-bottom))]",
|
|
115
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("nav", {
|
|
116
|
+
"aria-label": `${workspace} settings sections`,
|
|
117
|
+
className: "flex flex-col",
|
|
118
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SectionGroups, {
|
|
119
|
+
active,
|
|
120
|
+
workspace,
|
|
121
|
+
sections,
|
|
122
|
+
repositoryId,
|
|
123
|
+
onNavigate: () => setOpen(false)
|
|
124
|
+
})
|
|
125
|
+
})
|
|
126
|
+
})
|
|
127
|
+
]
|
|
128
|
+
})
|
|
129
|
+
})
|
|
130
|
+
] });
|
|
131
|
+
}
|
|
132
|
+
//#endregion
|
|
133
|
+
exports.SettingsMenu = SettingsMenu;
|
|
134
|
+
|
|
135
|
+
//# sourceMappingURL=SettingsMenu.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingsMenu.cjs","names":["NavTab","Link","SectionLabel","useState","settingsSections","Button","GearIcon","ChevronUpIcon","Dialog","DialogContent","DialogHeader","DialogTitle","DialogBody"],"sources":["../../../../src/web/features/settings/SettingsMenu.tsx"],"sourcesContent":["import {\n Button,\n ChevronUpIcon,\n Dialog,\n DialogBody,\n DialogContent,\n DialogHeader,\n DialogTitle,\n GearIcon,\n NavTab,\n SectionLabel,\n} from '@agimon-ai/po-web-components';\nimport { Link } from '@tanstack/react-router';\nimport { useState } from 'react';\n\nimport { settingsSections, type SettingsSection, type SettingsWorkspace } from '../../lib/settingsSections';\n\nfunction SectionLinks({\n active,\n sections,\n onNavigate,\n repositoryId,\n}: {\n active: string | undefined;\n sections: readonly SettingsSection[];\n onNavigate?: () => void;\n repositoryId?: string;\n}) {\n return sections.map((section) => {\n const current = section.id === active;\n return (\n <NavTab\n key={section.id}\n asChild\n active={current}\n className=\"relative min-h-9 min-w-0 rounded-md px-3 py-2 text-doom-text focus-visible:ring-2 focus-visible:ring-doom-green data-[active=true]:bg-doom-panel data-[active=true]:font-semibold data-[active=true]:text-doom-hi data-[active=true]:before:absolute data-[active=true]:before:inset-y-2 data-[active=true]:before:left-0 data-[active=true]:before:w-0.5 data-[active=true]:before:rounded-full data-[active=true]:before:bg-doom-green\"\n >\n <Link\n to=\"/settings/$section\"\n params={{ section: section.id }}\n search={{ workspace: repositoryId }}\n data-testid={`settings-section-${section.id}`}\n aria-current={current ? 'page' : undefined}\n onClick={onNavigate}\n >\n <span className=\"block truncate first-letter:uppercase\">{section.label}</span>\n </Link>\n </NavTab>\n );\n });\n}\n\n/** Host pages first, then what plugins added, so a reader knows who owns a setting. */\nfunction SectionGroups(props: {\n active: string | undefined;\n workspace: SettingsWorkspace;\n sections: readonly SettingsSection[];\n onNavigate?: () => void;\n repositoryId?: string;\n}) {\n const { workspace, sections, ...links } = props;\n const fromPlugin = (section: SettingsSection) =>\n section.contribution !== undefined || section.panel !== undefined || section.repositoryPanel !== undefined;\n const groups = [\n { label: workspace, sections: sections.filter((section) => !fromPlugin(section)) },\n { label: 'from plugins', sections: sections.filter(fromPlugin) },\n ].filter((group) => group.sections.length > 0);\n return groups.map((group, index) => (\n <div key={group.label} className={`flex flex-col gap-0.5 ${index > 0 ? 'pt-5' : ''}`}>\n <SectionLabel className=\"px-3 pb-2\">{group.label}</SectionLabel>\n <SectionLinks {...links} sections={group.sections} />\n </div>\n ));\n}\n\nexport function SettingsMenu({\n active,\n workspace,\n repositoryId,\n}: {\n active: string | undefined;\n workspace: SettingsWorkspace;\n repositoryId?: string;\n}) {\n const [open, setOpen] = useState(false);\n const sections = settingsSections(workspace);\n const current = sections.find((section) => section.id === active) ?? sections[0];\n\n return (\n <>\n <div className=\"shrink-0 border-b border-doom-border bg-doom-panel/40 p-2 lg:hidden\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n data-testid=\"settings-menu-open\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n onClick={() => setOpen(true)}\n className=\"h-auto w-full justify-between gap-3 px-3 py-2 text-left whitespace-normal\"\n >\n <span className=\"flex min-w-0 items-center gap-2.5\">\n <GearIcon className=\"h-3.5 w-3.5 shrink-0 text-doom-green\" />\n <span className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"truncate text-base font-medium text-doom-hi first-letter:uppercase\">\n {current?.label ?? workspace}\n </span>\n <span className=\"truncate text-sm font-normal text-doom-dim\">{current?.detail}</span>\n </span>\n </span>\n <ChevronUpIcon className=\"h-3.5 w-3.5 shrink-0 text-doom-faint\" />\n </Button>\n </div>\n\n <nav\n data-testid=\"settings-menu\"\n aria-label={`${workspace} settings sections`}\n className=\"hidden w-56 shrink-0 flex-col overflow-y-auto border-r border-doom-border-soft px-3 py-6 lg:flex\"\n >\n <SectionGroups active={active} workspace={workspace} sections={sections} repositoryId={repositoryId} />\n </nav>\n\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogContent\n width=\"lg\"\n data-testid=\"settings-menu-sheet\"\n aria-describedby={undefined}\n className=\"top-auto bottom-0 left-0 max-h-[min(72dvh,560px)] !w-full !max-w-none translate-x-0 translate-y-0 rounded-t-xl rounded-b-none border-x-0 border-b-0 data-[state=open]:animate-none lg:hidden\"\n >\n <span aria-hidden className=\"mx-auto mt-2 h-1 w-10 shrink-0 rounded-full bg-doom-border\" />\n <DialogHeader dismissible closeLabel=\"close settings menu\" className=\"py-2.5\">\n <DialogTitle className=\"first-letter:uppercase\">{workspace} settings</DialogTitle>\n </DialogHeader>\n <DialogBody className=\"gap-1 p-2 pb-[max(0.75rem,env(safe-area-inset-bottom))]\">\n <nav aria-label={`${workspace} settings sections`} className=\"flex flex-col\">\n <SectionGroups\n active={active}\n workspace={workspace}\n sections={sections}\n repositoryId={repositoryId}\n onNavigate={() => setOpen(false)}\n />\n </nav>\n </DialogBody>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SettingsWorkspace } from "../../lib/settingsSections.mjs";
|
|
2
|
+
//#region src/web/features/settings/SettingsMenu.d.ts
|
|
3
|
+
export declare function SettingsMenu({ active, workspace, repositoryId }: {
|
|
4
|
+
active: string | undefined;
|
|
5
|
+
workspace: SettingsWorkspace;
|
|
6
|
+
repositoryId?: string;
|
|
7
|
+
}): import("react").JSX.Element;
|
|
8
|
+
//#endregion
|
|
9
|
+
//# sourceMappingURL=SettingsMenu.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingsMenu.d.mts","names":[],"sources":["../../../../src/web/features/settings/SettingsMenu.tsx"],"mappings":";;wBA2EgB,eACd,QACA,WACA;EAEA;EACA,WAAW;EACX;oBACD,IAAA"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { settingsSections } from "../../lib/settingsSections.mjs";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { Link } from "@tanstack/react-router";
|
|
4
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { Button, ChevronUpIcon, Dialog, DialogBody, DialogContent, DialogHeader, DialogTitle, GearIcon, NavTab, SectionLabel } from "@agimon-ai/po-web-components";
|
|
6
|
+
//#region src/web/features/settings/SettingsMenu.tsx
|
|
7
|
+
function SectionLinks({ active, sections, onNavigate, repositoryId }) {
|
|
8
|
+
return sections.map((section) => {
|
|
9
|
+
const current = section.id === active;
|
|
10
|
+
return /* @__PURE__ */ jsx(NavTab, {
|
|
11
|
+
asChild: true,
|
|
12
|
+
active: current,
|
|
13
|
+
className: "relative min-h-9 min-w-0 rounded-md px-3 py-2 text-doom-text focus-visible:ring-2 focus-visible:ring-doom-green data-[active=true]:bg-doom-panel data-[active=true]:font-semibold data-[active=true]:text-doom-hi data-[active=true]:before:absolute data-[active=true]:before:inset-y-2 data-[active=true]:before:left-0 data-[active=true]:before:w-0.5 data-[active=true]:before:rounded-full data-[active=true]:before:bg-doom-green",
|
|
14
|
+
children: /* @__PURE__ */ jsx(Link, {
|
|
15
|
+
to: "/settings/$section",
|
|
16
|
+
params: { section: section.id },
|
|
17
|
+
search: { workspace: repositoryId },
|
|
18
|
+
"data-testid": `settings-section-${section.id}`,
|
|
19
|
+
"aria-current": current ? "page" : void 0,
|
|
20
|
+
onClick: onNavigate,
|
|
21
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
22
|
+
className: "block truncate first-letter:uppercase",
|
|
23
|
+
children: section.label
|
|
24
|
+
})
|
|
25
|
+
})
|
|
26
|
+
}, section.id);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/** Host pages first, then what plugins added, so a reader knows who owns a setting. */
|
|
30
|
+
function SectionGroups(props) {
|
|
31
|
+
const { workspace, sections, ...links } = props;
|
|
32
|
+
const fromPlugin = (section) => section.contribution !== void 0 || section.panel !== void 0 || section.repositoryPanel !== void 0;
|
|
33
|
+
return [{
|
|
34
|
+
label: workspace,
|
|
35
|
+
sections: sections.filter((section) => !fromPlugin(section))
|
|
36
|
+
}, {
|
|
37
|
+
label: "from plugins",
|
|
38
|
+
sections: sections.filter(fromPlugin)
|
|
39
|
+
}].filter((group) => group.sections.length > 0).map((group, index) => /* @__PURE__ */ jsxs("div", {
|
|
40
|
+
className: `flex flex-col gap-0.5 ${index > 0 ? "pt-5" : ""}`,
|
|
41
|
+
children: [/* @__PURE__ */ jsx(SectionLabel, {
|
|
42
|
+
className: "px-3 pb-2",
|
|
43
|
+
children: group.label
|
|
44
|
+
}), /* @__PURE__ */ jsx(SectionLinks, {
|
|
45
|
+
...links,
|
|
46
|
+
sections: group.sections
|
|
47
|
+
})]
|
|
48
|
+
}, group.label));
|
|
49
|
+
}
|
|
50
|
+
function SettingsMenu({ active, workspace, repositoryId }) {
|
|
51
|
+
const [open, setOpen] = useState(false);
|
|
52
|
+
const sections = settingsSections(workspace);
|
|
53
|
+
const current = sections.find((section) => section.id === active) ?? sections[0];
|
|
54
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
55
|
+
/* @__PURE__ */ jsx("div", {
|
|
56
|
+
className: "shrink-0 border-b border-doom-border bg-doom-panel/40 p-2 lg:hidden",
|
|
57
|
+
children: /* @__PURE__ */ jsxs(Button, {
|
|
58
|
+
variant: "outline",
|
|
59
|
+
size: "sm",
|
|
60
|
+
"data-testid": "settings-menu-open",
|
|
61
|
+
"aria-haspopup": "dialog",
|
|
62
|
+
"aria-expanded": open,
|
|
63
|
+
onClick: () => setOpen(true),
|
|
64
|
+
className: "h-auto w-full justify-between gap-3 px-3 py-2 text-left whitespace-normal",
|
|
65
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
66
|
+
className: "flex min-w-0 items-center gap-2.5",
|
|
67
|
+
children: [/* @__PURE__ */ jsx(GearIcon, { className: "h-3.5 w-3.5 shrink-0 text-doom-green" }), /* @__PURE__ */ jsxs("span", {
|
|
68
|
+
className: "flex min-w-0 flex-col gap-0.5",
|
|
69
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
70
|
+
className: "truncate text-base font-medium text-doom-hi first-letter:uppercase",
|
|
71
|
+
children: current?.label ?? workspace
|
|
72
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
73
|
+
className: "truncate text-sm font-normal text-doom-dim",
|
|
74
|
+
children: current?.detail
|
|
75
|
+
})]
|
|
76
|
+
})]
|
|
77
|
+
}), /* @__PURE__ */ jsx(ChevronUpIcon, { className: "h-3.5 w-3.5 shrink-0 text-doom-faint" })]
|
|
78
|
+
})
|
|
79
|
+
}),
|
|
80
|
+
/* @__PURE__ */ jsx("nav", {
|
|
81
|
+
"data-testid": "settings-menu",
|
|
82
|
+
"aria-label": `${workspace} settings sections`,
|
|
83
|
+
className: "hidden w-56 shrink-0 flex-col overflow-y-auto border-r border-doom-border-soft px-3 py-6 lg:flex",
|
|
84
|
+
children: /* @__PURE__ */ jsx(SectionGroups, {
|
|
85
|
+
active,
|
|
86
|
+
workspace,
|
|
87
|
+
sections,
|
|
88
|
+
repositoryId
|
|
89
|
+
})
|
|
90
|
+
}),
|
|
91
|
+
/* @__PURE__ */ jsx(Dialog, {
|
|
92
|
+
open,
|
|
93
|
+
onOpenChange: setOpen,
|
|
94
|
+
children: /* @__PURE__ */ jsxs(DialogContent, {
|
|
95
|
+
width: "lg",
|
|
96
|
+
"data-testid": "settings-menu-sheet",
|
|
97
|
+
"aria-describedby": void 0,
|
|
98
|
+
className: "top-auto bottom-0 left-0 max-h-[min(72dvh,560px)] !w-full !max-w-none translate-x-0 translate-y-0 rounded-t-xl rounded-b-none border-x-0 border-b-0 data-[state=open]:animate-none lg:hidden",
|
|
99
|
+
children: [
|
|
100
|
+
/* @__PURE__ */ jsx("span", {
|
|
101
|
+
"aria-hidden": true,
|
|
102
|
+
className: "mx-auto mt-2 h-1 w-10 shrink-0 rounded-full bg-doom-border"
|
|
103
|
+
}),
|
|
104
|
+
/* @__PURE__ */ jsx(DialogHeader, {
|
|
105
|
+
dismissible: true,
|
|
106
|
+
closeLabel: "close settings menu",
|
|
107
|
+
className: "py-2.5",
|
|
108
|
+
children: /* @__PURE__ */ jsxs(DialogTitle, {
|
|
109
|
+
className: "first-letter:uppercase",
|
|
110
|
+
children: [workspace, " settings"]
|
|
111
|
+
})
|
|
112
|
+
}),
|
|
113
|
+
/* @__PURE__ */ jsx(DialogBody, {
|
|
114
|
+
className: "gap-1 p-2 pb-[max(0.75rem,env(safe-area-inset-bottom))]",
|
|
115
|
+
children: /* @__PURE__ */ jsx("nav", {
|
|
116
|
+
"aria-label": `${workspace} settings sections`,
|
|
117
|
+
className: "flex flex-col",
|
|
118
|
+
children: /* @__PURE__ */ jsx(SectionGroups, {
|
|
119
|
+
active,
|
|
120
|
+
workspace,
|
|
121
|
+
sections,
|
|
122
|
+
repositoryId,
|
|
123
|
+
onNavigate: () => setOpen(false)
|
|
124
|
+
})
|
|
125
|
+
})
|
|
126
|
+
})
|
|
127
|
+
]
|
|
128
|
+
})
|
|
129
|
+
})
|
|
130
|
+
] });
|
|
131
|
+
}
|
|
132
|
+
//#endregion
|
|
133
|
+
export { SettingsMenu };
|
|
134
|
+
|
|
135
|
+
//# sourceMappingURL=SettingsMenu.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingsMenu.mjs","names":[],"sources":["../../../../src/web/features/settings/SettingsMenu.tsx"],"sourcesContent":["import {\n Button,\n ChevronUpIcon,\n Dialog,\n DialogBody,\n DialogContent,\n DialogHeader,\n DialogTitle,\n GearIcon,\n NavTab,\n SectionLabel,\n} from '@agimon-ai/po-web-components';\nimport { Link } from '@tanstack/react-router';\nimport { useState } from 'react';\n\nimport { settingsSections, type SettingsSection, type SettingsWorkspace } from '../../lib/settingsSections';\n\nfunction SectionLinks({\n active,\n sections,\n onNavigate,\n repositoryId,\n}: {\n active: string | undefined;\n sections: readonly SettingsSection[];\n onNavigate?: () => void;\n repositoryId?: string;\n}) {\n return sections.map((section) => {\n const current = section.id === active;\n return (\n <NavTab\n key={section.id}\n asChild\n active={current}\n className=\"relative min-h-9 min-w-0 rounded-md px-3 py-2 text-doom-text focus-visible:ring-2 focus-visible:ring-doom-green data-[active=true]:bg-doom-panel data-[active=true]:font-semibold data-[active=true]:text-doom-hi data-[active=true]:before:absolute data-[active=true]:before:inset-y-2 data-[active=true]:before:left-0 data-[active=true]:before:w-0.5 data-[active=true]:before:rounded-full data-[active=true]:before:bg-doom-green\"\n >\n <Link\n to=\"/settings/$section\"\n params={{ section: section.id }}\n search={{ workspace: repositoryId }}\n data-testid={`settings-section-${section.id}`}\n aria-current={current ? 'page' : undefined}\n onClick={onNavigate}\n >\n <span className=\"block truncate first-letter:uppercase\">{section.label}</span>\n </Link>\n </NavTab>\n );\n });\n}\n\n/** Host pages first, then what plugins added, so a reader knows who owns a setting. */\nfunction SectionGroups(props: {\n active: string | undefined;\n workspace: SettingsWorkspace;\n sections: readonly SettingsSection[];\n onNavigate?: () => void;\n repositoryId?: string;\n}) {\n const { workspace, sections, ...links } = props;\n const fromPlugin = (section: SettingsSection) =>\n section.contribution !== undefined || section.panel !== undefined || section.repositoryPanel !== undefined;\n const groups = [\n { label: workspace, sections: sections.filter((section) => !fromPlugin(section)) },\n { label: 'from plugins', sections: sections.filter(fromPlugin) },\n ].filter((group) => group.sections.length > 0);\n return groups.map((group, index) => (\n <div key={group.label} className={`flex flex-col gap-0.5 ${index > 0 ? 'pt-5' : ''}`}>\n <SectionLabel className=\"px-3 pb-2\">{group.label}</SectionLabel>\n <SectionLinks {...links} sections={group.sections} />\n </div>\n ));\n}\n\nexport function SettingsMenu({\n active,\n workspace,\n repositoryId,\n}: {\n active: string | undefined;\n workspace: SettingsWorkspace;\n repositoryId?: string;\n}) {\n const [open, setOpen] = useState(false);\n const sections = settingsSections(workspace);\n const current = sections.find((section) => section.id === active) ?? sections[0];\n\n return (\n <>\n <div className=\"shrink-0 border-b border-doom-border bg-doom-panel/40 p-2 lg:hidden\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n data-testid=\"settings-menu-open\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n onClick={() => setOpen(true)}\n className=\"h-auto w-full justify-between gap-3 px-3 py-2 text-left whitespace-normal\"\n >\n <span className=\"flex min-w-0 items-center gap-2.5\">\n <GearIcon className=\"h-3.5 w-3.5 shrink-0 text-doom-green\" />\n <span className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"truncate text-base font-medium text-doom-hi first-letter:uppercase\">\n {current?.label ?? workspace}\n </span>\n <span className=\"truncate text-sm font-normal text-doom-dim\">{current?.detail}</span>\n </span>\n </span>\n <ChevronUpIcon className=\"h-3.5 w-3.5 shrink-0 text-doom-faint\" />\n </Button>\n </div>\n\n <nav\n data-testid=\"settings-menu\"\n aria-label={`${workspace} settings sections`}\n className=\"hidden w-56 shrink-0 flex-col overflow-y-auto border-r border-doom-border-soft px-3 py-6 lg:flex\"\n >\n <SectionGroups active={active} workspace={workspace} sections={sections} repositoryId={repositoryId} />\n </nav>\n\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogContent\n width=\"lg\"\n data-testid=\"settings-menu-sheet\"\n aria-describedby={undefined}\n className=\"top-auto bottom-0 left-0 max-h-[min(72dvh,560px)] !w-full !max-w-none translate-x-0 translate-y-0 rounded-t-xl rounded-b-none border-x-0 border-b-0 data-[state=open]:animate-none lg:hidden\"\n >\n <span aria-hidden className=\"mx-auto mt-2 h-1 w-10 shrink-0 rounded-full bg-doom-border\" />\n <DialogHeader dismissible closeLabel=\"close settings menu\" className=\"py-2.5\">\n <DialogTitle className=\"first-letter:uppercase\">{workspace} settings</DialogTitle>\n </DialogHeader>\n <DialogBody className=\"gap-1 p-2 pb-[max(0.75rem,env(safe-area-inset-bottom))]\">\n <nav aria-label={`${workspace} settings sections`} className=\"flex flex-col\">\n <SectionGroups\n active={active}\n workspace={workspace}\n sections={sections}\n repositoryId={repositoryId}\n onNavigate={() => setOpen(false)}\n />\n </nav>\n </DialogBody>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const require_sealedSession = require("../../lib/sealedSession.cjs");
|
|
2
|
+
const require_stepUp = require("../../lib/stepUp.cjs");
|
|
3
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
4
|
+
let _agimon_ai_po_web_components = require("@agimon-ai/po-web-components");
|
|
5
|
+
//#region src/web/features/settings/SettingsPanelHost.tsx
|
|
6
|
+
/**
|
|
7
|
+
* The frame around a settings page a package draws itself.
|
|
8
|
+
*
|
|
9
|
+
* The host keeps the heading here rather than leaving it to the plugin, so a
|
|
10
|
+
* self-drawn page carries the same label and detail the menu showed and the
|
|
11
|
+
* reader does not have to trust each package to repeat them. Everything below
|
|
12
|
+
* the heading belongs to the package.
|
|
13
|
+
*
|
|
14
|
+
* The transport is the host's for the same reason the repository panel's is:
|
|
15
|
+
* only the host knows whether the page is being read over a tunnel, and a
|
|
16
|
+
* plugin calling bare fetch would send plaintext to the relay.
|
|
17
|
+
*/
|
|
18
|
+
const requestThroughSealedSession = (input, init) => require_sealedSession.sealedHttpSession.fetch(input, init);
|
|
19
|
+
function SettingsPanelHost({ panel }) {
|
|
20
|
+
const Panel = panel.component;
|
|
21
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsPage, {
|
|
22
|
+
"data-testid": `settings-panel-${panel.id}`,
|
|
23
|
+
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, {
|
|
24
|
+
request: requestThroughSealedSession,
|
|
25
|
+
requestWithStepUp: require_stepUp.fetchWithStepUp
|
|
26
|
+
})]
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
exports.SettingsPanelHost = SettingsPanelHost;
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=SettingsPanelHost.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingsPanelHost.cjs","names":["sealedHttpSession","SettingsPage","SettingsHeader","SettingsTitle","SettingsDescription","fetchWithStepUp"],"sources":["../../../../src/web/features/settings/SettingsPanelHost.tsx"],"sourcesContent":["import { SettingsDescription, SettingsHeader, SettingsPage, SettingsTitle } from '@agimon-ai/po-web-components';\n\nimport type { InstalledSettingsPanel } from '../../lib/pluginRegistry';\nimport { sealedHttpSession } from '../../lib/sealedSession';\nimport { fetchWithStepUp } from '../../lib/stepUp';\n\n/**\n * The frame around a settings page a package draws itself.\n *\n * The host keeps the heading here rather than leaving it to the plugin, so a\n * self-drawn page carries the same label and detail the menu showed and the\n * reader does not have to trust each package to repeat them. Everything below\n * the heading belongs to the package.\n *\n * The transport is the host's for the same reason the repository panel's is:\n * only the host knows whether the page is being read over a tunnel, and a\n * plugin calling bare fetch would send plaintext to the relay.\n */\n\nconst requestThroughSealedSession = (input: string, init?: RequestInit): Promise<Response> =>\n sealedHttpSession.fetch(input, init);\n\ninterface SettingsPanelHostProps {\n panel: InstalledSettingsPanel;\n}\n\nexport function SettingsPanelHost({ panel }: SettingsPanelHostProps) {\n const Panel = panel.component;\n return (\n <SettingsPage data-testid={`settings-panel-${panel.id}`}>\n <SettingsHeader>\n <SettingsTitle>{panel.label}</SettingsTitle>\n {panel.detail ? <SettingsDescription>{panel.detail}</SettingsDescription> : null}\n </SettingsHeader>\n <Panel request={requestThroughSealedSession} requestWithStepUp={fetchWithStepUp} />\n </SettingsPage>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAmBA,MAAM,+BAA+B,OAAe,SAClDA,sBAAAA,kBAAkB,MAAM,OAAO,IAAI;AAMrC,SAAgB,kBAAkB,EAAE,SAAiC;CACnE,MAAM,QAAQ,MAAM;CACpB,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,cAAD;EAAc,eAAa,kBAAkB,MAAM;EAAnD,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;GAAO,SAAS;GAA6B,mBAAmBC,eAAAA;EAAkB,CAAA,CACtE;;AAElB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InstalledSettingsPanel } from "../../lib/pluginRegistry.mjs";
|
|
2
|
+
//#region src/web/features/settings/SettingsPanelHost.d.ts
|
|
3
|
+
interface SettingsPanelHostProps {
|
|
4
|
+
panel: InstalledSettingsPanel;
|
|
5
|
+
}
|
|
6
|
+
export declare function SettingsPanelHost({ panel }: SettingsPanelHostProps): import("react").JSX.Element;
|
|
7
|
+
//#endregion
|
|
8
|
+
//# sourceMappingURL=SettingsPanelHost.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingsPanelHost.d.mts","names":[],"sources":["../../../../src/web/features/settings/SettingsPanelHost.tsx"],"mappings":";;UAsBU;EACR,OAAO;;wBAGO,oBAAoB,SAAS,yCAAsB,IAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { sealedHttpSession } from "../../lib/sealedSession.mjs";
|
|
2
|
+
import { fetchWithStepUp } from "../../lib/stepUp.mjs";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { SettingsDescription, SettingsHeader, SettingsPage, SettingsTitle } from "@agimon-ai/po-web-components";
|
|
5
|
+
//#region src/web/features/settings/SettingsPanelHost.tsx
|
|
6
|
+
/**
|
|
7
|
+
* The frame around a settings page a package draws itself.
|
|
8
|
+
*
|
|
9
|
+
* The host keeps the heading here rather than leaving it to the plugin, so a
|
|
10
|
+
* self-drawn page carries the same label and detail the menu showed and the
|
|
11
|
+
* reader does not have to trust each package to repeat them. Everything below
|
|
12
|
+
* the heading belongs to the package.
|
|
13
|
+
*
|
|
14
|
+
* The transport is the host's for the same reason the repository panel's is:
|
|
15
|
+
* only the host knows whether the page is being read over a tunnel, and a
|
|
16
|
+
* plugin calling bare fetch would send plaintext to the relay.
|
|
17
|
+
*/
|
|
18
|
+
const requestThroughSealedSession = (input, init) => sealedHttpSession.fetch(input, init);
|
|
19
|
+
function SettingsPanelHost({ panel }) {
|
|
20
|
+
const Panel = panel.component;
|
|
21
|
+
return /* @__PURE__ */ jsxs(SettingsPage, {
|
|
22
|
+
"data-testid": `settings-panel-${panel.id}`,
|
|
23
|
+
children: [/* @__PURE__ */ jsxs(SettingsHeader, { children: [/* @__PURE__ */ jsx(SettingsTitle, { children: panel.label }), panel.detail ? /* @__PURE__ */ jsx(SettingsDescription, { children: panel.detail }) : null] }), /* @__PURE__ */ jsx(Panel, {
|
|
24
|
+
request: requestThroughSealedSession,
|
|
25
|
+
requestWithStepUp: fetchWithStepUp
|
|
26
|
+
})]
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { SettingsPanelHost };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=SettingsPanelHost.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingsPanelHost.mjs","names":[],"sources":["../../../../src/web/features/settings/SettingsPanelHost.tsx"],"sourcesContent":["import { SettingsDescription, SettingsHeader, SettingsPage, SettingsTitle } from '@agimon-ai/po-web-components';\n\nimport type { InstalledSettingsPanel } from '../../lib/pluginRegistry';\nimport { sealedHttpSession } from '../../lib/sealedSession';\nimport { fetchWithStepUp } from '../../lib/stepUp';\n\n/**\n * The frame around a settings page a package draws itself.\n *\n * The host keeps the heading here rather than leaving it to the plugin, so a\n * self-drawn page carries the same label and detail the menu showed and the\n * reader does not have to trust each package to repeat them. Everything below\n * the heading belongs to the package.\n *\n * The transport is the host's for the same reason the repository panel's is:\n * only the host knows whether the page is being read over a tunnel, and a\n * plugin calling bare fetch would send plaintext to the relay.\n */\n\nconst requestThroughSealedSession = (input: string, init?: RequestInit): Promise<Response> =>\n sealedHttpSession.fetch(input, init);\n\ninterface SettingsPanelHostProps {\n panel: InstalledSettingsPanel;\n}\n\nexport function SettingsPanelHost({ panel }: SettingsPanelHostProps) {\n const Panel = panel.component;\n return (\n <SettingsPage data-testid={`settings-panel-${panel.id}`}>\n <SettingsHeader>\n <SettingsTitle>{panel.label}</SettingsTitle>\n {panel.detail ? <SettingsDescription>{panel.detail}</SettingsDescription> : null}\n </SettingsHeader>\n <Panel request={requestThroughSealedSession} requestWithStepUp={fetchWithStepUp} />\n </SettingsPage>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAmBA,MAAM,+BAA+B,OAAe,SAClD,kBAAkB,MAAM,OAAO,IAAI;AAMrC,SAAgB,kBAAkB,EAAE,SAAiC;CACnE,MAAM,QAAQ,MAAM;CACpB,OACE,qBAAC,cAAD;EAAc,eAAa,kBAAkB,MAAM;EAAnD,UAAA,CACE,qBAAC,gBAAD,EAAA,UAAA,CACE,oBAAC,eAAD,EAAA,UAAgB,MAAM,MAAqB,CAAA,GAC1C,MAAM,SAAS,oBAAC,qBAAD,EAAA,UAAsB,MAAM,OAA4B,CAAA,IAAI,IAC9D,EAAA,CAAA,GAChB,oBAAC,OAAD;GAAO,SAAS;GAA6B,mBAAmB;EAAkB,CAAA,CACtE;;AAElB"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
const require_templateCatalog = require("../../lib/templateCatalog.cjs");
|
|
2
|
+
const require_pluginRegistry = require("../../lib/pluginRegistry.cjs");
|
|
3
|
+
const require_pluginCompositions = require("../../lib/pluginCompositions.cjs");
|
|
4
|
+
const require_templateStore = require("../../stores/templateStore.cjs");
|
|
5
|
+
const require_useWebPluginRegistry = require("../../stores/useWebPluginRegistry.cjs");
|
|
6
|
+
const require_workspacesStore = require("../../stores/workspacesStore.cjs");
|
|
7
|
+
const require_dashboardStateStore = require("../../stores/dashboardStateStore.cjs");
|
|
8
|
+
let _tanstack_react_store = require("@tanstack/react-store");
|
|
9
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
10
|
+
let _agimon_ai_po_web_components = require("@agimon-ai/po-web-components");
|
|
11
|
+
//#region src/web/features/settings/TemplateSettings.tsx
|
|
12
|
+
const WORKSPACE_TARGET = "workspace:";
|
|
13
|
+
/** Select only admitted template contributions, and make the config write destination explicit. */
|
|
14
|
+
function TemplateSettings({ target, onTargetChange }) {
|
|
15
|
+
require_useWebPluginRegistry.useWebPluginRegistry();
|
|
16
|
+
const workspaces = (0, _tanstack_react_store.useStore)(require_workspacesStore.workspacesStore, (state) => state);
|
|
17
|
+
const workspaceId = target.startsWith(WORKSPACE_TARGET) ? target.slice(10) : void 0;
|
|
18
|
+
const configuration = require_templateStore.useTemplateConfiguration(workspaceId);
|
|
19
|
+
const catalog = require_pluginRegistry.webTemplateCatalog(workspaceId === void 0 ? { scope: "global" } : {
|
|
20
|
+
scope: "workspace",
|
|
21
|
+
workspaceId
|
|
22
|
+
});
|
|
23
|
+
const configured = require_templateStore.configuredTemplate(configuration);
|
|
24
|
+
const resolved = require_templateCatalog.resolveWebTemplate(catalog.templates, configured);
|
|
25
|
+
const [draft, setDraft] = require_dashboardStateStore.useDashboardState("template/draft", null);
|
|
26
|
+
const choice = draft?.target === target ? draft.id : resolved.template?.id;
|
|
27
|
+
const busy = configuration.saving || configuration.loading;
|
|
28
|
+
const origin = configuration.config?.values["web.template"]?.origin ?? "default";
|
|
29
|
+
const missingWorkspace = workspaceId !== void 0 && workspaces.byId[workspaceId] === void 0;
|
|
30
|
+
const changed = choice !== void 0 && choice !== configured;
|
|
31
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsSection, {
|
|
32
|
+
"data-testid": "template-settings",
|
|
33
|
+
children: [
|
|
34
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsSectionHeader, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsSectionTitle, { children: "Layout" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsSectionDescription, { children: "The arrangement Po opens with. Set it for everyone, or let one workspace choose its own." })] }),
|
|
35
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
36
|
+
className: "flex min-w-0 flex-wrap items-center gap-x-3 gap-y-2",
|
|
37
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
38
|
+
id: "template-scope-label",
|
|
39
|
+
className: "text-sm text-doom-dim",
|
|
40
|
+
children: "Applies to"
|
|
41
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.Select, {
|
|
42
|
+
value: target,
|
|
43
|
+
onValueChange: (value) => {
|
|
44
|
+
onTargetChange(value);
|
|
45
|
+
setDraft(null);
|
|
46
|
+
},
|
|
47
|
+
disabled: configuration.saving,
|
|
48
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SelectTrigger, {
|
|
49
|
+
"aria-labelledby": "template-scope-label",
|
|
50
|
+
"data-testid": "template-scope",
|
|
51
|
+
className: "w-auto min-w-56 max-w-full",
|
|
52
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SelectValue, {})
|
|
53
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SelectContent, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SelectItem, {
|
|
54
|
+
value: "global",
|
|
55
|
+
children: "Global default"
|
|
56
|
+
}), workspaces.order.map((id) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SelectItem, {
|
|
57
|
+
value: `${WORKSPACE_TARGET}${id}`,
|
|
58
|
+
children: ["Workspace: ", workspaces.byId[id]?.root ?? id]
|
|
59
|
+
}, id))] })]
|
|
60
|
+
})]
|
|
61
|
+
}),
|
|
62
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.RadioGroup, {
|
|
63
|
+
"aria-label": "Layout",
|
|
64
|
+
value: choice ?? "",
|
|
65
|
+
onValueChange: (id) => setDraft({
|
|
66
|
+
target,
|
|
67
|
+
id
|
|
68
|
+
}),
|
|
69
|
+
className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
|
|
70
|
+
disabled: busy || missingWorkspace,
|
|
71
|
+
children: catalog.templates.map((template) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.RadioGroupCard, {
|
|
72
|
+
value: template.id,
|
|
73
|
+
"data-testid": `template-${template.id}`,
|
|
74
|
+
"data-selected": choice === template.id,
|
|
75
|
+
className: "flex items-start gap-2 rounded-lg p-4",
|
|
76
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
77
|
+
className: "flex min-w-0 flex-1 flex-col gap-1",
|
|
78
|
+
children: [
|
|
79
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
80
|
+
className: "text-base font-semibold text-doom-hi",
|
|
81
|
+
children: template.label
|
|
82
|
+
}),
|
|
83
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
84
|
+
className: "text-sm leading-relaxed text-doom-dim",
|
|
85
|
+
children: template.description
|
|
86
|
+
}),
|
|
87
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
88
|
+
className: "font-mono text-sm text-doom-dim",
|
|
89
|
+
children: template.pluginId
|
|
90
|
+
})
|
|
91
|
+
]
|
|
92
|
+
}), choice === template.id ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.CheckIcon, { className: "size-4 shrink-0 text-doom-green" }) : null]
|
|
93
|
+
}, template.id))
|
|
94
|
+
}),
|
|
95
|
+
resolved.warning ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("output", {
|
|
96
|
+
className: "block text-sm text-doom-yellow",
|
|
97
|
+
children: resolved.warning
|
|
98
|
+
}) : null,
|
|
99
|
+
catalog.diagnostics.map((diagnostic, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("output", {
|
|
100
|
+
className: "block text-sm text-doom-yellow",
|
|
101
|
+
children: diagnostic.message
|
|
102
|
+
}, `${diagnostic.pluginId}:${index}`)),
|
|
103
|
+
configuration.error ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
104
|
+
role: "alert",
|
|
105
|
+
"data-testid": "template-save-error",
|
|
106
|
+
className: "text-sm text-doom-red",
|
|
107
|
+
children: configuration.error
|
|
108
|
+
}) : null,
|
|
109
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsActions, { children: [
|
|
110
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
|
|
111
|
+
"data-testid": "template-save",
|
|
112
|
+
size: "sm",
|
|
113
|
+
variant: changed ? "primary" : "outline",
|
|
114
|
+
disabled: busy || missingWorkspace || choice === void 0 || configuration.config === void 0,
|
|
115
|
+
onClick: () => {
|
|
116
|
+
if (choice !== void 0) require_templateStore.saveTemplateDefault(choice, workspaceId).then((saved) => {
|
|
117
|
+
if (saved) {
|
|
118
|
+
setDraft(null);
|
|
119
|
+
require_pluginCompositions.reloadWebTemplateDecision();
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
},
|
|
123
|
+
children: configuration.saving ? "Saving…" : "Set as default"
|
|
124
|
+
}),
|
|
125
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
|
|
126
|
+
"data-testid": "template-inherit",
|
|
127
|
+
size: "sm",
|
|
128
|
+
variant: "ghost",
|
|
129
|
+
disabled: busy || missingWorkspace || configuration.config === void 0,
|
|
130
|
+
onClick: () => {
|
|
131
|
+
require_templateStore.saveTemplateDefault(null, workspaceId).then((saved) => {
|
|
132
|
+
if (saved) {
|
|
133
|
+
setDraft(null);
|
|
134
|
+
require_pluginCompositions.reloadWebTemplateDecision();
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
},
|
|
138
|
+
children: workspaceId === void 0 ? "Use automatic fallback" : "Inherit global default"
|
|
139
|
+
}),
|
|
140
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
|
|
141
|
+
"data-testid": "template-reload",
|
|
142
|
+
size: "sm",
|
|
143
|
+
variant: "ghost",
|
|
144
|
+
disabled: busy,
|
|
145
|
+
onClick: () => {
|
|
146
|
+
require_templateStore.refreshTemplateConfiguration(workspaceId).then(() => require_pluginCompositions.reloadWebTemplateDecision());
|
|
147
|
+
},
|
|
148
|
+
children: "Reload configuration"
|
|
149
|
+
})
|
|
150
|
+
] }),
|
|
151
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsNote, {
|
|
152
|
+
"data-testid": "template-origin",
|
|
153
|
+
children: [
|
|
154
|
+
"Saved to",
|
|
155
|
+
" ",
|
|
156
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", {
|
|
157
|
+
className: "font-mono",
|
|
158
|
+
children: workspaceId === void 0 ? "~/.po/config.yaml" : `${configuration.config?.repoRoot ?? workspaces.byId[workspaceId]?.root ?? workspaceId}/.po/config.yaml`
|
|
159
|
+
}),
|
|
160
|
+
". Currently using",
|
|
161
|
+
" ",
|
|
162
|
+
configured === void 0 ? "automatic fallback" : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", {
|
|
163
|
+
className: "font-mono",
|
|
164
|
+
children: configured
|
|
165
|
+
}),
|
|
166
|
+
" (",
|
|
167
|
+
origin,
|
|
168
|
+
")."
|
|
169
|
+
]
|
|
170
|
+
})
|
|
171
|
+
]
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
//#endregion
|
|
175
|
+
exports.TemplateSettings = TemplateSettings;
|
|
176
|
+
|
|
177
|
+
//# sourceMappingURL=TemplateSettings.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateSettings.cjs","names":["useStore","workspacesStore","useTemplateConfiguration","webTemplateCatalog","configuredTemplate","resolveWebTemplate","useDashboardState","SettingsSection","SettingsSectionHeader","SettingsSectionTitle","SettingsSectionDescription","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","RadioGroup","RadioGroupCard","CheckIcon","SettingsActions","Button","saveTemplateDefault","reloadWebTemplateDecision","refreshTemplateConfiguration","SettingsNote"],"sources":["../../../../src/web/features/settings/TemplateSettings.tsx"],"sourcesContent":["import {\n Button,\n CheckIcon,\n RadioGroup,\n RadioGroupCard,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n SettingsActions,\n SettingsNote,\n SettingsSection,\n SettingsSectionDescription,\n SettingsSectionHeader,\n SettingsSectionTitle,\n} from '@agimon-ai/po-web-components';\nimport { useStore } from '@tanstack/react-store';\n\nimport { reloadWebTemplateDecision } from '../../lib/pluginCompositions';\nimport { webTemplateCatalog } from '../../lib/pluginRegistry';\nimport { resolveWebTemplate } from '../../lib/templateCatalog';\nimport { useDashboardState } from '../../stores/dashboardStateStore';\nimport {\n configuredTemplate,\n refreshTemplateConfiguration,\n saveTemplateDefault,\n useTemplateConfiguration,\n} from '../../stores/templateStore';\nimport { useWebPluginRegistry } from '../../stores/useWebPluginRegistry';\nimport { workspacesStore } from '../../stores/workspacesStore';\n\nconst WORKSPACE_TARGET = 'workspace:';\n/** Select only admitted template contributions, and make the config write destination explicit. */\nexport function TemplateSettings({\n target,\n onTargetChange,\n}: {\n target: string;\n onTargetChange: (target: string) => void;\n}) {\n useWebPluginRegistry();\n const workspaces = useStore(workspacesStore, (state) => state);\n const workspaceId = target.startsWith(WORKSPACE_TARGET) ? target.slice(WORKSPACE_TARGET.length) : undefined;\n const configuration = useTemplateConfiguration(workspaceId);\n const catalog = webTemplateCatalog(\n workspaceId === undefined ? { scope: 'global' } : { scope: 'workspace', workspaceId },\n );\n const configured = configuredTemplate(configuration);\n const resolved = resolveWebTemplate(catalog.templates, configured);\n const [draft, setDraft] = useDashboardState<{ target: string; id: string } | null>('template/draft', null);\n const choice = draft?.target === target ? draft.id : resolved.template?.id;\n const busy = configuration.saving || configuration.loading;\n const origin = configuration.config?.values['web.template']?.origin ?? 'default';\n const missingWorkspace = workspaceId !== undefined && workspaces.byId[workspaceId] === undefined;\n const changed = choice !== undefined && choice !== configured;\n return (\n <SettingsSection data-testid=\"template-settings\">\n <SettingsSectionHeader>\n <SettingsSectionTitle>Layout</SettingsSectionTitle>\n <SettingsSectionDescription>\n The arrangement Po opens with. Set it for everyone, or let one workspace choose its own.\n </SettingsSectionDescription>\n </SettingsSectionHeader>\n <div className=\"flex min-w-0 flex-wrap items-center gap-x-3 gap-y-2\">\n <span id=\"template-scope-label\" className=\"text-sm text-doom-dim\">\n Applies to\n </span>\n <Select\n value={target}\n onValueChange={(value) => {\n onTargetChange(value);\n setDraft(null);\n }}\n disabled={configuration.saving}\n >\n <SelectTrigger\n aria-labelledby=\"template-scope-label\"\n data-testid=\"template-scope\"\n className=\"w-auto min-w-56 max-w-full\"\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"global\">Global default</SelectItem>\n {workspaces.order.map((id) => (\n <SelectItem key={id} value={`${WORKSPACE_TARGET}${id}`}>\n Workspace: {workspaces.byId[id]?.root ?? id}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <RadioGroup\n aria-label=\"Layout\"\n value={choice ?? ''}\n onValueChange={(id) => setDraft({ target, id })}\n className=\"grid grid-cols-1 gap-3 sm:grid-cols-2\"\n disabled={busy || missingWorkspace}\n >\n {catalog.templates.map((template) => (\n <RadioGroupCard\n key={template.id}\n value={template.id}\n data-testid={`template-${template.id}`}\n data-selected={choice === template.id}\n className=\"flex items-start gap-2 rounded-lg p-4\"\n >\n <span className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <span className=\"text-base font-semibold text-doom-hi\">{template.label}</span>\n <span className=\"text-sm leading-relaxed text-doom-dim\">{template.description}</span>\n <span className=\"font-mono text-sm text-doom-dim\">{template.pluginId}</span>\n </span>\n {choice === template.id ? <CheckIcon className=\"size-4 shrink-0 text-doom-green\" /> : null}\n </RadioGroupCard>\n ))}\n </RadioGroup>\n {resolved.warning ? <output className=\"block text-sm text-doom-yellow\">{resolved.warning}</output> : null}\n {catalog.diagnostics.map((diagnostic, index) => (\n <output key={`${diagnostic.pluginId}:${index}`} className=\"block text-sm text-doom-yellow\">\n {diagnostic.message}\n </output>\n ))}\n {configuration.error ? (\n <p role=\"alert\" data-testid=\"template-save-error\" className=\"text-sm text-doom-red\">\n {configuration.error}\n </p>\n ) : null}\n <SettingsActions>\n <Button\n data-testid=\"template-save\"\n size=\"sm\"\n variant={changed ? 'primary' : 'outline'}\n disabled={busy || missingWorkspace || choice === undefined || configuration.config === undefined}\n onClick={() => {\n if (choice !== undefined)\n void saveTemplateDefault(choice, workspaceId).then((saved) => {\n if (saved) {\n setDraft(null);\n void reloadWebTemplateDecision();\n }\n });\n }}\n >\n {configuration.saving ? 'Saving…' : 'Set as default'}\n </Button>\n <Button\n data-testid=\"template-inherit\"\n size=\"sm\"\n variant=\"ghost\"\n disabled={busy || missingWorkspace || configuration.config === undefined}\n onClick={() => {\n void saveTemplateDefault(null, workspaceId).then((saved) => {\n if (saved) {\n setDraft(null);\n void reloadWebTemplateDecision();\n }\n });\n }}\n >\n {workspaceId === undefined ? 'Use automatic fallback' : 'Inherit global default'}\n </Button>\n <Button\n data-testid=\"template-reload\"\n size=\"sm\"\n variant=\"ghost\"\n disabled={busy}\n onClick={() => {\n void refreshTemplateConfiguration(workspaceId).then(() => reloadWebTemplateDecision());\n }}\n >\n Reload configuration\n </Button>\n </SettingsActions>\n <SettingsNote data-testid=\"template-origin\">\n Saved to{' '}\n <code className=\"font-mono\">\n {workspaceId === undefined\n ? '~/.po/config.yaml'\n : `${configuration.config?.repoRoot ?? workspaces.byId[workspaceId]?.root ?? workspaceId}/.po/config.yaml`}\n </code>\n . Currently using{' '}\n {configured === undefined ? 'automatic fallback' : <code className=\"font-mono\">{configured}</code>} ({origin}).\n </SettingsNote>\n </SettingsSection>\n );\n}\n"],"mappings":"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"}
|