@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,225 @@
|
|
|
1
|
+
import { useDashboardState } from "../../stores/dashboardStateStore.mjs";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Button, Dialog, DialogBody, DialogContent, DialogFooter, DialogHeader, DialogTitle, Input, Spinner } from "@agimon-ai/po-web-components";
|
|
4
|
+
//#region src/web/features/settings/LoginFlowDialog.tsx
|
|
5
|
+
const METHOD_LABEL = {
|
|
6
|
+
api_key: "API key",
|
|
7
|
+
oauth: "OAuth"
|
|
8
|
+
};
|
|
9
|
+
/** Button's link variant plus the wrapping a full auth URL needs. */
|
|
10
|
+
const linkClass = "inline break-all decoration-doom-blue/40 hover:decoration-doom-blue";
|
|
11
|
+
function FlowEvent({ event }) {
|
|
12
|
+
if (event.type === "auth_url") return /* @__PURE__ */ jsxs("div", {
|
|
13
|
+
className: "flex flex-col gap-1 text-sm text-doom-text",
|
|
14
|
+
children: [
|
|
15
|
+
/* @__PURE__ */ jsx("span", { children: "Open this link to sign in:" }),
|
|
16
|
+
/* @__PURE__ */ jsx(Button, {
|
|
17
|
+
asChild: true,
|
|
18
|
+
variant: "link",
|
|
19
|
+
size: "xs",
|
|
20
|
+
className: linkClass,
|
|
21
|
+
children: /* @__PURE__ */ jsx("a", {
|
|
22
|
+
"data-testid": "login-flow-auth-url",
|
|
23
|
+
href: event.url,
|
|
24
|
+
target: "_blank",
|
|
25
|
+
rel: "noreferrer",
|
|
26
|
+
children: event.url
|
|
27
|
+
})
|
|
28
|
+
}),
|
|
29
|
+
event.instructions ? /* @__PURE__ */ jsx("span", {
|
|
30
|
+
className: "text-doom-dim",
|
|
31
|
+
children: event.instructions
|
|
32
|
+
}) : null
|
|
33
|
+
]
|
|
34
|
+
});
|
|
35
|
+
if (event.type === "device_code") return /* @__PURE__ */ jsx("div", {
|
|
36
|
+
className: "flex flex-col gap-1 text-sm text-doom-text",
|
|
37
|
+
children: /* @__PURE__ */ jsxs("span", { children: [
|
|
38
|
+
"Enter the code",
|
|
39
|
+
" ",
|
|
40
|
+
/* @__PURE__ */ jsx("span", {
|
|
41
|
+
"data-testid": "login-flow-device-code",
|
|
42
|
+
className: "font-mono font-medium text-doom-hi",
|
|
43
|
+
children: event.userCode
|
|
44
|
+
}),
|
|
45
|
+
" ",
|
|
46
|
+
"at",
|
|
47
|
+
" ",
|
|
48
|
+
/* @__PURE__ */ jsx("a", {
|
|
49
|
+
href: event.verificationUri,
|
|
50
|
+
target: "_blank",
|
|
51
|
+
rel: "noreferrer",
|
|
52
|
+
className: linkClass,
|
|
53
|
+
children: event.verificationUri
|
|
54
|
+
})
|
|
55
|
+
] })
|
|
56
|
+
});
|
|
57
|
+
if (event.type === "info") return /* @__PURE__ */ jsxs("div", {
|
|
58
|
+
className: "flex flex-col gap-1 text-sm text-doom-text",
|
|
59
|
+
children: [/* @__PURE__ */ jsx("span", { children: event.message }), event.links?.map((link) => /* @__PURE__ */ jsx("a", {
|
|
60
|
+
href: link.url,
|
|
61
|
+
target: "_blank",
|
|
62
|
+
rel: "noreferrer",
|
|
63
|
+
className: linkClass,
|
|
64
|
+
children: link.label ?? link.url
|
|
65
|
+
}, link.url))]
|
|
66
|
+
});
|
|
67
|
+
return /* @__PURE__ */ jsx("span", {
|
|
68
|
+
className: "text-sm text-doom-dim",
|
|
69
|
+
children: event.message
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function PromptField({ prompt, value, remote, onChange, onSubmit, onSelect }) {
|
|
73
|
+
if (prompt.type === "select") return /* @__PURE__ */ jsxs("div", {
|
|
74
|
+
"data-testid": "login-prompt",
|
|
75
|
+
"data-prompt-type": prompt.type,
|
|
76
|
+
className: "flex flex-col gap-2",
|
|
77
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
78
|
+
className: "text-sm text-doom-text",
|
|
79
|
+
children: prompt.message
|
|
80
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
81
|
+
className: "flex flex-col gap-1",
|
|
82
|
+
children: (prompt.options ?? []).map((option) => /* @__PURE__ */ jsxs(Button, {
|
|
83
|
+
variant: "outline",
|
|
84
|
+
"data-testid": `login-prompt-option-${option.id}`,
|
|
85
|
+
onClick: () => onSelect(option.id),
|
|
86
|
+
className: "h-auto flex-col items-start gap-0.5 px-2.5 py-1.5 text-left whitespace-normal focus-visible:border-doom-blue/50 focus-visible:ring-0",
|
|
87
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
88
|
+
className: "text-base font-medium text-doom-hi",
|
|
89
|
+
children: option.label
|
|
90
|
+
}), option.description ? /* @__PURE__ */ jsx("span", {
|
|
91
|
+
className: "text-sm text-doom-dim",
|
|
92
|
+
children: option.description
|
|
93
|
+
}) : null]
|
|
94
|
+
}, option.id))
|
|
95
|
+
})]
|
|
96
|
+
});
|
|
97
|
+
return /* @__PURE__ */ jsxs("label", {
|
|
98
|
+
"data-testid": "login-prompt",
|
|
99
|
+
"data-prompt-type": prompt.type,
|
|
100
|
+
className: "flex flex-col gap-1",
|
|
101
|
+
children: [
|
|
102
|
+
/* @__PURE__ */ jsx("span", {
|
|
103
|
+
className: "text-sm text-doom-text",
|
|
104
|
+
children: prompt.message
|
|
105
|
+
}),
|
|
106
|
+
remote && prompt.type === "manual_code" ? /* @__PURE__ */ jsx("span", {
|
|
107
|
+
"data-testid": "login-prompt-remote-hint",
|
|
108
|
+
className: "text-sm text-doom-dim",
|
|
109
|
+
children: "The page it sends you to will not load from here. Copy the whole address from your browser's address bar and paste it below."
|
|
110
|
+
}) : null,
|
|
111
|
+
/* @__PURE__ */ jsxs("div", {
|
|
112
|
+
className: "flex items-center gap-2",
|
|
113
|
+
children: [/* @__PURE__ */ jsx(Input, {
|
|
114
|
+
"data-testid": "login-prompt-input",
|
|
115
|
+
type: prompt.type === "secret" ? "password" : "text",
|
|
116
|
+
value,
|
|
117
|
+
autoFocus: true,
|
|
118
|
+
autoComplete: "off",
|
|
119
|
+
placeholder: prompt.placeholder,
|
|
120
|
+
onChange: (event) => onChange(event.target.value),
|
|
121
|
+
onKeyDown: (event) => {
|
|
122
|
+
if (event.key === "Enter") onSubmit();
|
|
123
|
+
},
|
|
124
|
+
className: "flex-1"
|
|
125
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
126
|
+
variant: "primary",
|
|
127
|
+
"data-testid": "login-prompt-submit",
|
|
128
|
+
disabled: value.trim() === "",
|
|
129
|
+
onClick: onSubmit,
|
|
130
|
+
children: "Continue"
|
|
131
|
+
})]
|
|
132
|
+
})
|
|
133
|
+
]
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* A provider's login, rendered from the hub's snapshots: the links and codes
|
|
138
|
+
* it announced, the one question it is waiting on, and how it ended.
|
|
139
|
+
*/
|
|
140
|
+
function LoginFlowDialog({ flow, onAnswer, onCancel, onClose }) {
|
|
141
|
+
const prompt = flow.prompt;
|
|
142
|
+
const promptId = JSON.stringify([flow.id, prompt?.id]);
|
|
143
|
+
const running = flow.status === "running";
|
|
144
|
+
const [value, setValue] = useDashboardState("providers/answer", "");
|
|
145
|
+
const [lastPromptId, setLastPromptId] = useDashboardState("providers/prompt", promptId);
|
|
146
|
+
if (lastPromptId !== promptId || !running && value !== "") {
|
|
147
|
+
setLastPromptId(promptId);
|
|
148
|
+
setValue("");
|
|
149
|
+
}
|
|
150
|
+
const submit = () => {
|
|
151
|
+
if (!prompt || value.trim() === "") return;
|
|
152
|
+
onAnswer(prompt.id, value);
|
|
153
|
+
};
|
|
154
|
+
let outcome;
|
|
155
|
+
if (flow.status === "succeeded") outcome = {
|
|
156
|
+
text: `You're signed in to ${flow.providerName}. Every session can use it now.`,
|
|
157
|
+
className: "text-doom-green"
|
|
158
|
+
};
|
|
159
|
+
else if (flow.status === "failed") outcome = {
|
|
160
|
+
text: flow.error ?? "Sign-in failed.",
|
|
161
|
+
className: "text-doom-red"
|
|
162
|
+
};
|
|
163
|
+
else if (flow.status === "cancelled") outcome = {
|
|
164
|
+
text: "Sign-in cancelled.",
|
|
165
|
+
className: "text-doom-dim"
|
|
166
|
+
};
|
|
167
|
+
return /* @__PURE__ */ jsx(Dialog, {
|
|
168
|
+
open: true,
|
|
169
|
+
onOpenChange: (next) => {
|
|
170
|
+
if (next) return;
|
|
171
|
+
if (running) onCancel();
|
|
172
|
+
else onClose();
|
|
173
|
+
},
|
|
174
|
+
children: /* @__PURE__ */ jsxs(DialogContent, {
|
|
175
|
+
width: "md",
|
|
176
|
+
"data-testid": "login-flow",
|
|
177
|
+
"data-status": flow.status,
|
|
178
|
+
"aria-describedby": void 0,
|
|
179
|
+
children: [/* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsxs(DialogTitle, { children: ["Sign in to ", flow.providerName] }), /* @__PURE__ */ jsx("span", {
|
|
180
|
+
className: "text-sm text-doom-dim",
|
|
181
|
+
children: METHOD_LABEL[flow.type]
|
|
182
|
+
})] }), /* @__PURE__ */ jsxs(DialogBody, { children: [
|
|
183
|
+
flow.events.length > 0 ? /* @__PURE__ */ jsx("ol", {
|
|
184
|
+
"data-testid": "login-flow-events",
|
|
185
|
+
className: "flex flex-col gap-2",
|
|
186
|
+
children: flow.events.map((event, index) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(FlowEvent, { event }) }, index))
|
|
187
|
+
}) : null,
|
|
188
|
+
running && prompt ? /* @__PURE__ */ jsx(PromptField, {
|
|
189
|
+
prompt,
|
|
190
|
+
value,
|
|
191
|
+
remote: flow.remote === true,
|
|
192
|
+
onChange: setValue,
|
|
193
|
+
onSubmit: submit,
|
|
194
|
+
onSelect: (optionId) => onAnswer(prompt.id, optionId)
|
|
195
|
+
}) : null,
|
|
196
|
+
running && !prompt ? /* @__PURE__ */ jsxs("p", {
|
|
197
|
+
"data-testid": "login-flow-waiting",
|
|
198
|
+
className: "flex items-center gap-2 text-sm text-doom-dim",
|
|
199
|
+
children: [/* @__PURE__ */ jsx(Spinner, {}), flow.events.length === 0 ? "Starting…" : `Waiting for ${flow.providerName}…`]
|
|
200
|
+
}) : null,
|
|
201
|
+
outcome ? /* @__PURE__ */ jsx("p", {
|
|
202
|
+
"data-testid": "login-flow-result",
|
|
203
|
+
className: `text-sm ${outcome.className}`,
|
|
204
|
+
children: outcome.text
|
|
205
|
+
}) : null,
|
|
206
|
+
/* @__PURE__ */ jsx(DialogFooter, { children: running ? /* @__PURE__ */ jsx(Button, {
|
|
207
|
+
variant: "outline",
|
|
208
|
+
"data-testid": "login-flow-cancel",
|
|
209
|
+
onClick: onCancel,
|
|
210
|
+
children: "Cancel"
|
|
211
|
+
}) : /* @__PURE__ */ jsx(Button, {
|
|
212
|
+
variant: "outline",
|
|
213
|
+
"data-testid": "login-flow-close",
|
|
214
|
+
autoFocus: true,
|
|
215
|
+
onClick: onClose,
|
|
216
|
+
children: flow.status === "succeeded" ? "Done" : "Close"
|
|
217
|
+
}) })
|
|
218
|
+
] })]
|
|
219
|
+
})
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
//#endregion
|
|
223
|
+
export { LoginFlowDialog, METHOD_LABEL };
|
|
224
|
+
|
|
225
|
+
//# sourceMappingURL=LoginFlowDialog.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoginFlowDialog.mjs","names":[],"sources":["../../../../src/web/features/settings/LoginFlowDialog.tsx"],"sourcesContent":["import {\n Button,\n Dialog,\n DialogBody,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n Input,\n Spinner,\n} from '@agimon-ai/po-web-components';\n\nimport type { AuthMethodType, LoginEvent, LoginFlowSnapshot, LoginPromptView } from '../../../types/auth';\nimport { useDashboardState } from '../../stores/dashboardStateStore';\n\nexport const METHOD_LABEL: Readonly<Record<AuthMethodType, string>> = { api_key: 'API key', oauth: 'OAuth' };\n\n/** Button's link variant plus the wrapping a full auth URL needs. */\nconst linkClass = 'inline break-all decoration-doom-blue/40 hover:decoration-doom-blue';\n\nfunction FlowEvent({ event }: { event: LoginEvent }) {\n if (event.type === 'auth_url') {\n return (\n <div className=\"flex flex-col gap-1 text-sm text-doom-text\">\n <span>Open this link to sign in:</span>\n <Button asChild variant=\"link\" size=\"xs\" className={linkClass}>\n <a data-testid=\"login-flow-auth-url\" href={event.url} target=\"_blank\" rel=\"noreferrer\">\n {event.url}\n </a>\n </Button>\n {event.instructions ? <span className=\"text-doom-dim\">{event.instructions}</span> : null}\n </div>\n );\n }\n if (event.type === 'device_code') {\n return (\n <div className=\"flex flex-col gap-1 text-sm text-doom-text\">\n <span>\n Enter the code{' '}\n <span data-testid=\"login-flow-device-code\" className=\"font-mono font-medium text-doom-hi\">\n {event.userCode}\n </span>{' '}\n at{' '}\n <a href={event.verificationUri} target=\"_blank\" rel=\"noreferrer\" className={linkClass}>\n {event.verificationUri}\n </a>\n </span>\n </div>\n );\n }\n if (event.type === 'info') {\n return (\n <div className=\"flex flex-col gap-1 text-sm text-doom-text\">\n <span>{event.message}</span>\n {event.links?.map((link) => (\n <a key={link.url} href={link.url} target=\"_blank\" rel=\"noreferrer\" className={linkClass}>\n {link.label ?? link.url}\n </a>\n ))}\n </div>\n );\n }\n return <span className=\"text-sm text-doom-dim\">{event.message}</span>;\n}\n\nfunction PromptField({\n prompt,\n value,\n remote,\n onChange,\n onSubmit,\n onSelect,\n}: {\n prompt: LoginPromptView;\n value: string;\n remote: boolean;\n onChange: (value: string) => void;\n onSubmit: () => void;\n onSelect: (optionId: string) => void;\n}) {\n if (prompt.type === 'select') {\n return (\n <div data-testid=\"login-prompt\" data-prompt-type={prompt.type} className=\"flex flex-col gap-2\">\n <span className=\"text-sm text-doom-text\">{prompt.message}</span>\n <div className=\"flex flex-col gap-1\">\n {(prompt.options ?? []).map((option) => (\n <Button\n key={option.id}\n variant=\"outline\"\n data-testid={`login-prompt-option-${option.id}`}\n onClick={() => onSelect(option.id)}\n className=\"h-auto flex-col items-start gap-0.5 px-2.5 py-1.5 text-left whitespace-normal focus-visible:border-doom-blue/50 focus-visible:ring-0\"\n >\n <span className=\"text-base font-medium text-doom-hi\">{option.label}</span>\n {option.description ? <span className=\"text-sm text-doom-dim\">{option.description}</span> : null}\n </Button>\n ))}\n </div>\n </div>\n );\n }\n return (\n <label data-testid=\"login-prompt\" data-prompt-type={prompt.type} className=\"flex flex-col gap-1\">\n <span className=\"text-sm text-doom-text\">{prompt.message}</span>\n {/* The provider redirects to a loopback address that belongs to whichever\n machine the browser runs on, so a remote tab lands on an error page.\n The URL still carries the code, which is what this asks for. */}\n {remote && prompt.type === 'manual_code' ? (\n <span data-testid=\"login-prompt-remote-hint\" className=\"text-sm text-doom-dim\">\n The page it sends you to will not load from here. Copy the whole address from your browser's address bar\n and paste it below.\n </span>\n ) : null}\n <div className=\"flex items-center gap-2\">\n <Input\n data-testid=\"login-prompt-input\"\n type={prompt.type === 'secret' ? 'password' : 'text'}\n value={value}\n autoFocus\n autoComplete=\"off\"\n placeholder={prompt.placeholder}\n onChange={(event) => onChange(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === 'Enter') onSubmit();\n }}\n className=\"flex-1\"\n />\n <Button variant=\"primary\" data-testid=\"login-prompt-submit\" disabled={value.trim() === ''} onClick={onSubmit}>\n Continue\n </Button>\n </div>\n </label>\n );\n}\n\n/**\n * A provider's login, rendered from the hub's snapshots: the links and codes\n * it announced, the one question it is waiting on, and how it ended.\n */\nexport function LoginFlowDialog({\n flow,\n onAnswer,\n onCancel,\n onClose,\n}: {\n flow: LoginFlowSnapshot;\n onAnswer: (promptId: string, value: string) => void;\n onCancel: () => void;\n onClose: () => void;\n}) {\n const prompt = flow.prompt;\n const promptId = JSON.stringify([flow.id, prompt?.id]);\n const running = flow.status === 'running';\n const [value, setValue] = useDashboardState('providers/answer', '');\n const [lastPromptId, setLastPromptId] = useDashboardState('providers/prompt', promptId);\n if (lastPromptId !== promptId || (!running && value !== '')) {\n setLastPromptId(promptId);\n setValue('');\n }\n\n const submit = (): void => {\n if (!prompt || value.trim() === '') return;\n onAnswer(prompt.id, value);\n };\n\n let outcome: { text: string; className: string } | undefined;\n if (flow.status === 'succeeded')\n outcome = {\n text: `You're signed in to ${flow.providerName}. Every session can use it now.`,\n className: 'text-doom-green',\n };\n else if (flow.status === 'failed') outcome = { text: flow.error ?? 'Sign-in failed.', className: 'text-doom-red' };\n else if (flow.status === 'cancelled') outcome = { text: 'Sign-in cancelled.', className: 'text-doom-dim' };\n\n return (\n <Dialog\n open\n onOpenChange={(next) => {\n if (next) return;\n // Escape or an outside click abandons a live sign-in, and simply\n // dismisses a finished one.\n if (running) onCancel();\n else onClose();\n }}\n >\n <DialogContent width=\"md\" data-testid=\"login-flow\" data-status={flow.status} aria-describedby={undefined}>\n <DialogHeader>\n <DialogTitle>Sign in to {flow.providerName}</DialogTitle>\n <span className=\"text-sm text-doom-dim\">{METHOD_LABEL[flow.type]}</span>\n </DialogHeader>\n <DialogBody>\n {flow.events.length > 0 ? (\n <ol data-testid=\"login-flow-events\" className=\"flex flex-col gap-2\">\n {flow.events.map((event, index) => (\n <li key={index}>\n <FlowEvent event={event} />\n </li>\n ))}\n </ol>\n ) : null}\n {running && prompt ? (\n <PromptField\n prompt={prompt}\n value={value}\n remote={flow.remote === true}\n onChange={setValue}\n onSubmit={submit}\n onSelect={(optionId) => onAnswer(prompt.id, optionId)}\n />\n ) : null}\n {running && !prompt ? (\n <p data-testid=\"login-flow-waiting\" className=\"flex items-center gap-2 text-sm text-doom-dim\">\n <Spinner />\n {flow.events.length === 0 ? 'Starting…' : `Waiting for ${flow.providerName}…`}\n </p>\n ) : null}\n {outcome ? (\n <p data-testid=\"login-flow-result\" className={`text-sm ${outcome.className}`}>\n {outcome.text}\n </p>\n ) : null}\n <DialogFooter>\n {running ? (\n <Button variant=\"outline\" data-testid=\"login-flow-cancel\" onClick={onCancel}>\n Cancel\n </Button>\n ) : (\n <Button variant=\"outline\" data-testid=\"login-flow-close\" autoFocus onClick={onClose}>\n {flow.status === 'succeeded' ? 'Done' : 'Close'}\n </Button>\n )}\n </DialogFooter>\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
const require_browserNotifications = require("../../lib/browserNotifications.cjs");
|
|
2
|
+
const require_livePush = require("../../lib/livePush.cjs");
|
|
3
|
+
let react = require("react");
|
|
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/NotificationSettings.tsx
|
|
7
|
+
const STATUS_COPY = {
|
|
8
|
+
granted: "Allowed in this browser.",
|
|
9
|
+
denied: "Blocked in this browser. Turn them on in your browser's site settings.",
|
|
10
|
+
default: "This browser hasn't been asked yet.",
|
|
11
|
+
unsupported: "This browser doesn't support notifications.",
|
|
12
|
+
"request-error": "The browser couldn't finish the request. Try again."
|
|
13
|
+
};
|
|
14
|
+
const PUSH_COPY = {
|
|
15
|
+
enabled: "On for this paired device.",
|
|
16
|
+
disabled: "Off. Turn on to hear from Po when the app is closed.",
|
|
17
|
+
denied: "Notifications are blocked in this browser.",
|
|
18
|
+
unsupported: "Not available in this browser. On iPhone, add Po to your Home Screen first.",
|
|
19
|
+
error: "Po couldn't update the alert subscription. Try again."
|
|
20
|
+
};
|
|
21
|
+
/** Browser-owned notification permission plus an ephemeral, device-bound Push subscription. */
|
|
22
|
+
function NotificationSettings() {
|
|
23
|
+
const [status, setStatus] = (0, react.useState)(require_browserNotifications.browserNotificationPermission);
|
|
24
|
+
const [pushStatus, setPushStatus] = (0, react.useState)("disabled");
|
|
25
|
+
(0, react.useEffect)(() => {
|
|
26
|
+
require_livePush.livePushStatus().then(setPushStatus);
|
|
27
|
+
}, []);
|
|
28
|
+
const enable = async () => {
|
|
29
|
+
setPushStatus(await require_livePush.enableLivePush());
|
|
30
|
+
setStatus(require_browserNotifications.browserNotificationPermission());
|
|
31
|
+
};
|
|
32
|
+
const disable = async () => {
|
|
33
|
+
setPushStatus(await require_livePush.disableLivePush());
|
|
34
|
+
};
|
|
35
|
+
const allow = async () => {
|
|
36
|
+
setStatus(await require_browserNotifications.requestBrowserNotificationPermission());
|
|
37
|
+
};
|
|
38
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsPage, {
|
|
39
|
+
"data-testid": "notification-settings",
|
|
40
|
+
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: "Notifications" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsDescription, { children: "An open page shows the full notification. When Po is closed you get a short alert with no session content, and alerts missed while offline are not replayed." })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsCard, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsRow, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsRowText, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsRowTitle, { children: "Browser notifications" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsRowDescription, {
|
|
41
|
+
"data-testid": "notification-permission-status",
|
|
42
|
+
children: STATUS_COPY[status]
|
|
43
|
+
})] }), status === "default" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
|
|
44
|
+
size: "sm",
|
|
45
|
+
variant: "outline",
|
|
46
|
+
"data-testid": "browser-notification-request",
|
|
47
|
+
onClick: () => void allow(),
|
|
48
|
+
children: "Allow"
|
|
49
|
+
}) : null] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsRow, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsRowText, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsRowTitle, { children: "Alerts when Po is closed" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsRowDescription, {
|
|
50
|
+
"data-testid": "push-subscription-status",
|
|
51
|
+
children: PUSH_COPY[pushStatus]
|
|
52
|
+
})] }), pushStatus === "enabled" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
|
|
53
|
+
size: "sm",
|
|
54
|
+
variant: "outline",
|
|
55
|
+
"data-testid": "push-disable",
|
|
56
|
+
onClick: () => void disable(),
|
|
57
|
+
children: "Turn off"
|
|
58
|
+
}) : pushStatus !== "denied" && pushStatus !== "unsupported" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
|
|
59
|
+
size: "sm",
|
|
60
|
+
"data-testid": "notification-permission-request",
|
|
61
|
+
onClick: () => void enable(),
|
|
62
|
+
children: "Turn on"
|
|
63
|
+
}) : null] })] })]
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
exports.NotificationSettings = NotificationSettings;
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=NotificationSettings.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotificationSettings.cjs","names":["useState","browserNotificationPermission","livePushStatus","enableLivePush","disableLivePush","requestBrowserNotificationPermission","SettingsPage","SettingsHeader","SettingsTitle","SettingsDescription","SettingsCard","SettingsRow","SettingsRowText","SettingsRowTitle","SettingsRowDescription","Button"],"sources":["../../../../src/web/features/settings/NotificationSettings.tsx"],"sourcesContent":["import {\n Button,\n SettingsCard,\n SettingsDescription,\n SettingsHeader,\n SettingsPage,\n SettingsRow,\n SettingsRowDescription,\n SettingsRowText,\n SettingsRowTitle,\n SettingsTitle,\n} from '@agimon-ai/po-web-components';\nimport { useEffect, useState } from 'react';\n\nimport {\n browserNotificationPermission,\n requestBrowserNotificationPermission,\n type BrowserNotificationPermissionStatus,\n} from '../../lib/browserNotifications';\nimport { disableLivePush, enableLivePush, livePushStatus, type LivePushStatus } from '../../lib/livePush';\n\nconst STATUS_COPY: Record<BrowserNotificationPermissionStatus, string> = {\n granted: 'Allowed in this browser.',\n denied: \"Blocked in this browser. Turn them on in your browser's site settings.\",\n default: \"This browser hasn't been asked yet.\",\n unsupported: \"This browser doesn't support notifications.\",\n 'request-error': \"The browser couldn't finish the request. Try again.\",\n};\n\nconst PUSH_COPY: Record<LivePushStatus, string> = {\n enabled: 'On for this paired device.',\n disabled: 'Off. Turn on to hear from Po when the app is closed.',\n denied: 'Notifications are blocked in this browser.',\n unsupported: 'Not available in this browser. On iPhone, add Po to your Home Screen first.',\n error: \"Po couldn't update the alert subscription. Try again.\",\n};\n\n/** Browser-owned notification permission plus an ephemeral, device-bound Push subscription. */\nexport function NotificationSettings() {\n const [status, setStatus] = useState<BrowserNotificationPermissionStatus>(browserNotificationPermission);\n const [pushStatus, setPushStatus] = useState<LivePushStatus>('disabled');\n\n useEffect(() => {\n void livePushStatus().then(setPushStatus);\n }, []);\n\n const enable = async (): Promise<void> => {\n setPushStatus(await enableLivePush());\n setStatus(browserNotificationPermission());\n };\n\n const disable = async (): Promise<void> => {\n setPushStatus(await disableLivePush());\n };\n\n const allow = async (): Promise<void> => {\n setStatus(await requestBrowserNotificationPermission());\n };\n\n return (\n <SettingsPage data-testid=\"notification-settings\">\n <SettingsHeader>\n <SettingsTitle>Notifications</SettingsTitle>\n <SettingsDescription>\n An open page shows the full notification. When Po is closed you get a short alert with no session content, and\n alerts missed while offline are not replayed.\n </SettingsDescription>\n </SettingsHeader>\n <SettingsCard>\n <SettingsRow>\n <SettingsRowText>\n <SettingsRowTitle>Browser notifications</SettingsRowTitle>\n <SettingsRowDescription data-testid=\"notification-permission-status\">\n {STATUS_COPY[status]}\n </SettingsRowDescription>\n </SettingsRowText>\n {status === 'default' ? (\n <Button size=\"sm\" variant=\"outline\" data-testid=\"browser-notification-request\" onClick={() => void allow()}>\n Allow\n </Button>\n ) : null}\n </SettingsRow>\n <SettingsRow>\n <SettingsRowText>\n <SettingsRowTitle>Alerts when Po is closed</SettingsRowTitle>\n <SettingsRowDescription data-testid=\"push-subscription-status\">\n {PUSH_COPY[pushStatus]}\n </SettingsRowDescription>\n </SettingsRowText>\n {pushStatus === 'enabled' ? (\n <Button size=\"sm\" variant=\"outline\" data-testid=\"push-disable\" onClick={() => void disable()}>\n Turn off\n </Button>\n ) : pushStatus !== 'denied' && pushStatus !== 'unsupported' ? (\n <Button size=\"sm\" data-testid=\"notification-permission-request\" onClick={() => void enable()}>\n Turn on\n </Button>\n ) : null}\n </SettingsRow>\n </SettingsCard>\n </SettingsPage>\n );\n}\n"],"mappings":";;;;;;AAqBA,MAAM,cAAmE;CACvE,SAAS;CACT,QAAQ;CACR,SAAS;CACT,aAAa;CACb,iBAAiB;AACnB;AAEA,MAAM,YAA4C;CAChD,SAAS;CACT,UAAU;CACV,QAAQ;CACR,aAAa;CACb,OAAO;AACT;;AAGA,SAAgB,uBAAuB;CACrC,MAAM,CAAC,QAAQ,cAAA,GAAaA,MAAAA,SAAAA,CAA8CC,6BAAAA,6BAA6B;CACvG,MAAM,CAAC,YAAY,kBAAA,GAAiBD,MAAAA,SAAAA,CAAyB,UAAU;CAEvE,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,iBAAKE,eAAe,CAAC,CAAC,KAAK,aAAa;CAC1C,GAAG,CAAC,CAAC;CAEL,MAAM,SAAS,YAA2B;EACxC,cAAc,MAAMC,iBAAAA,eAAe,CAAC;EACpC,UAAUF,6BAAAA,8BAA8B,CAAC;CAC3C;CAEA,MAAM,UAAU,YAA2B;EACzC,cAAc,MAAMG,iBAAAA,gBAAgB,CAAC;CACvC;CAEA,MAAM,QAAQ,YAA2B;EACvC,UAAU,MAAMC,6BAAAA,qCAAqC,CAAC;CACxD;CAEA,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,cAAD;EAAc,eAAY;EAA1B,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,gBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,eAAD,EAAA,UAAe,gBAA4B,CAAA,GAC3C,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,qBAAD,EAAA,UAAqB,+JAGA,CAAA,CACP,EAAA,CAAA,GAChB,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,aAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,iBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,kBAAD,EAAA,UAAkB,wBAAuC,CAAA,GACzD,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,wBAAD;GAAwB,eAAY;GACjC,UAAA,YAAY;EACS,CAAA,CACT,EAAA,CAAA,GAChB,WAAW,YACV,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,QAAD;GAAQ,MAAK;GAAK,SAAQ;GAAU,eAAY;GAA+B,eAAe,KAAK,MAAM;GAAG,UAAA;EAEpG,CAAA,IACN,IACO,EAAA,CAAA,GACb,iBAAA,GAAA,kBAAA,KAAA,CAACJ,6BAAAA,aAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,iBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,kBAAD,EAAA,UAAkB,2BAA0C,CAAA,GAC5D,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,wBAAD;GAAwB,eAAY;GACjC,UAAA,UAAU;EACW,CAAA,CACT,EAAA,CAAA,GAChB,eAAe,YACd,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,QAAD;GAAQ,MAAK;GAAK,SAAQ;GAAU,eAAY;GAAe,eAAe,KAAK,QAAQ;GAAG,UAAA;EAEtF,CAAA,IACN,eAAe,YAAY,eAAe,gBAC5C,iBAAA,GAAA,kBAAA,IAAA,CAACA,6BAAAA,QAAD;GAAQ,MAAK;GAAK,eAAY;GAAkC,eAAe,KAAK,OAAO;GAAG,UAAA;EAEtF,CAAA,IACN,IACO,EAAA,CAAA,CACD,EAAA,CAAA,CACF;;AAElB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
//#region src/web/features/settings/NotificationSettings.d.ts
|
|
2
|
+
/** Browser-owned notification permission plus an ephemeral, device-bound Push subscription. */
|
|
3
|
+
export declare function NotificationSettings(): import("react").JSX.Element;
|
|
4
|
+
//#endregion
|
|
5
|
+
//# sourceMappingURL=NotificationSettings.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotificationSettings.d.mts","names":[],"sources":["../../../../src/web/features/settings/NotificationSettings.tsx"],"mappings":";;wBAsCgB,wCAAoB,IAAA"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { browserNotificationPermission, requestBrowserNotificationPermission } from "../../lib/browserNotifications.mjs";
|
|
2
|
+
import { disableLivePush, enableLivePush, livePushStatus } from "../../lib/livePush.mjs";
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { Button, SettingsCard, SettingsDescription, SettingsHeader, SettingsPage, SettingsRow, SettingsRowDescription, SettingsRowText, SettingsRowTitle, SettingsTitle } from "@agimon-ai/po-web-components";
|
|
6
|
+
//#region src/web/features/settings/NotificationSettings.tsx
|
|
7
|
+
const STATUS_COPY = {
|
|
8
|
+
granted: "Allowed in this browser.",
|
|
9
|
+
denied: "Blocked in this browser. Turn them on in your browser's site settings.",
|
|
10
|
+
default: "This browser hasn't been asked yet.",
|
|
11
|
+
unsupported: "This browser doesn't support notifications.",
|
|
12
|
+
"request-error": "The browser couldn't finish the request. Try again."
|
|
13
|
+
};
|
|
14
|
+
const PUSH_COPY = {
|
|
15
|
+
enabled: "On for this paired device.",
|
|
16
|
+
disabled: "Off. Turn on to hear from Po when the app is closed.",
|
|
17
|
+
denied: "Notifications are blocked in this browser.",
|
|
18
|
+
unsupported: "Not available in this browser. On iPhone, add Po to your Home Screen first.",
|
|
19
|
+
error: "Po couldn't update the alert subscription. Try again."
|
|
20
|
+
};
|
|
21
|
+
/** Browser-owned notification permission plus an ephemeral, device-bound Push subscription. */
|
|
22
|
+
function NotificationSettings() {
|
|
23
|
+
const [status, setStatus] = useState(browserNotificationPermission);
|
|
24
|
+
const [pushStatus, setPushStatus] = useState("disabled");
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
livePushStatus().then(setPushStatus);
|
|
27
|
+
}, []);
|
|
28
|
+
const enable = async () => {
|
|
29
|
+
setPushStatus(await enableLivePush());
|
|
30
|
+
setStatus(browserNotificationPermission());
|
|
31
|
+
};
|
|
32
|
+
const disable = async () => {
|
|
33
|
+
setPushStatus(await disableLivePush());
|
|
34
|
+
};
|
|
35
|
+
const allow = async () => {
|
|
36
|
+
setStatus(await requestBrowserNotificationPermission());
|
|
37
|
+
};
|
|
38
|
+
return /* @__PURE__ */ jsxs(SettingsPage, {
|
|
39
|
+
"data-testid": "notification-settings",
|
|
40
|
+
children: [/* @__PURE__ */ jsxs(SettingsHeader, { children: [/* @__PURE__ */ jsx(SettingsTitle, { children: "Notifications" }), /* @__PURE__ */ jsx(SettingsDescription, { children: "An open page shows the full notification. When Po is closed you get a short alert with no session content, and alerts missed while offline are not replayed." })] }), /* @__PURE__ */ jsxs(SettingsCard, { children: [/* @__PURE__ */ jsxs(SettingsRow, { children: [/* @__PURE__ */ jsxs(SettingsRowText, { children: [/* @__PURE__ */ jsx(SettingsRowTitle, { children: "Browser notifications" }), /* @__PURE__ */ jsx(SettingsRowDescription, {
|
|
41
|
+
"data-testid": "notification-permission-status",
|
|
42
|
+
children: STATUS_COPY[status]
|
|
43
|
+
})] }), status === "default" ? /* @__PURE__ */ jsx(Button, {
|
|
44
|
+
size: "sm",
|
|
45
|
+
variant: "outline",
|
|
46
|
+
"data-testid": "browser-notification-request",
|
|
47
|
+
onClick: () => void allow(),
|
|
48
|
+
children: "Allow"
|
|
49
|
+
}) : null] }), /* @__PURE__ */ jsxs(SettingsRow, { children: [/* @__PURE__ */ jsxs(SettingsRowText, { children: [/* @__PURE__ */ jsx(SettingsRowTitle, { children: "Alerts when Po is closed" }), /* @__PURE__ */ jsx(SettingsRowDescription, {
|
|
50
|
+
"data-testid": "push-subscription-status",
|
|
51
|
+
children: PUSH_COPY[pushStatus]
|
|
52
|
+
})] }), pushStatus === "enabled" ? /* @__PURE__ */ jsx(Button, {
|
|
53
|
+
size: "sm",
|
|
54
|
+
variant: "outline",
|
|
55
|
+
"data-testid": "push-disable",
|
|
56
|
+
onClick: () => void disable(),
|
|
57
|
+
children: "Turn off"
|
|
58
|
+
}) : pushStatus !== "denied" && pushStatus !== "unsupported" ? /* @__PURE__ */ jsx(Button, {
|
|
59
|
+
size: "sm",
|
|
60
|
+
"data-testid": "notification-permission-request",
|
|
61
|
+
onClick: () => void enable(),
|
|
62
|
+
children: "Turn on"
|
|
63
|
+
}) : null] })] })]
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
export { NotificationSettings };
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=NotificationSettings.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotificationSettings.mjs","names":[],"sources":["../../../../src/web/features/settings/NotificationSettings.tsx"],"sourcesContent":["import {\n Button,\n SettingsCard,\n SettingsDescription,\n SettingsHeader,\n SettingsPage,\n SettingsRow,\n SettingsRowDescription,\n SettingsRowText,\n SettingsRowTitle,\n SettingsTitle,\n} from '@agimon-ai/po-web-components';\nimport { useEffect, useState } from 'react';\n\nimport {\n browserNotificationPermission,\n requestBrowserNotificationPermission,\n type BrowserNotificationPermissionStatus,\n} from '../../lib/browserNotifications';\nimport { disableLivePush, enableLivePush, livePushStatus, type LivePushStatus } from '../../lib/livePush';\n\nconst STATUS_COPY: Record<BrowserNotificationPermissionStatus, string> = {\n granted: 'Allowed in this browser.',\n denied: \"Blocked in this browser. Turn them on in your browser's site settings.\",\n default: \"This browser hasn't been asked yet.\",\n unsupported: \"This browser doesn't support notifications.\",\n 'request-error': \"The browser couldn't finish the request. Try again.\",\n};\n\nconst PUSH_COPY: Record<LivePushStatus, string> = {\n enabled: 'On for this paired device.',\n disabled: 'Off. Turn on to hear from Po when the app is closed.',\n denied: 'Notifications are blocked in this browser.',\n unsupported: 'Not available in this browser. On iPhone, add Po to your Home Screen first.',\n error: \"Po couldn't update the alert subscription. Try again.\",\n};\n\n/** Browser-owned notification permission plus an ephemeral, device-bound Push subscription. */\nexport function NotificationSettings() {\n const [status, setStatus] = useState<BrowserNotificationPermissionStatus>(browserNotificationPermission);\n const [pushStatus, setPushStatus] = useState<LivePushStatus>('disabled');\n\n useEffect(() => {\n void livePushStatus().then(setPushStatus);\n }, []);\n\n const enable = async (): Promise<void> => {\n setPushStatus(await enableLivePush());\n setStatus(browserNotificationPermission());\n };\n\n const disable = async (): Promise<void> => {\n setPushStatus(await disableLivePush());\n };\n\n const allow = async (): Promise<void> => {\n setStatus(await requestBrowserNotificationPermission());\n };\n\n return (\n <SettingsPage data-testid=\"notification-settings\">\n <SettingsHeader>\n <SettingsTitle>Notifications</SettingsTitle>\n <SettingsDescription>\n An open page shows the full notification. When Po is closed you get a short alert with no session content, and\n alerts missed while offline are not replayed.\n </SettingsDescription>\n </SettingsHeader>\n <SettingsCard>\n <SettingsRow>\n <SettingsRowText>\n <SettingsRowTitle>Browser notifications</SettingsRowTitle>\n <SettingsRowDescription data-testid=\"notification-permission-status\">\n {STATUS_COPY[status]}\n </SettingsRowDescription>\n </SettingsRowText>\n {status === 'default' ? (\n <Button size=\"sm\" variant=\"outline\" data-testid=\"browser-notification-request\" onClick={() => void allow()}>\n Allow\n </Button>\n ) : null}\n </SettingsRow>\n <SettingsRow>\n <SettingsRowText>\n <SettingsRowTitle>Alerts when Po is closed</SettingsRowTitle>\n <SettingsRowDescription data-testid=\"push-subscription-status\">\n {PUSH_COPY[pushStatus]}\n </SettingsRowDescription>\n </SettingsRowText>\n {pushStatus === 'enabled' ? (\n <Button size=\"sm\" variant=\"outline\" data-testid=\"push-disable\" onClick={() => void disable()}>\n Turn off\n </Button>\n ) : pushStatus !== 'denied' && pushStatus !== 'unsupported' ? (\n <Button size=\"sm\" data-testid=\"notification-permission-request\" onClick={() => void enable()}>\n Turn on\n </Button>\n ) : null}\n </SettingsRow>\n </SettingsCard>\n </SettingsPage>\n );\n}\n"],"mappings":";;;;;;AAqBA,MAAM,cAAmE;CACvE,SAAS;CACT,QAAQ;CACR,SAAS;CACT,aAAa;CACb,iBAAiB;AACnB;AAEA,MAAM,YAA4C;CAChD,SAAS;CACT,UAAU;CACV,QAAQ;CACR,aAAa;CACb,OAAO;AACT;;AAGA,SAAgB,uBAAuB;CACrC,MAAM,CAAC,QAAQ,aAAa,SAA8C,6BAA6B;CACvG,MAAM,CAAC,YAAY,iBAAiB,SAAyB,UAAU;CAEvE,gBAAgB;EACd,eAAoB,CAAC,CAAC,KAAK,aAAa;CAC1C,GAAG,CAAC,CAAC;CAEL,MAAM,SAAS,YAA2B;EACxC,cAAc,MAAM,eAAe,CAAC;EACpC,UAAU,8BAA8B,CAAC;CAC3C;CAEA,MAAM,UAAU,YAA2B;EACzC,cAAc,MAAM,gBAAgB,CAAC;CACvC;CAEA,MAAM,QAAQ,YAA2B;EACvC,UAAU,MAAM,qCAAqC,CAAC;CACxD;CAEA,OACE,qBAAC,cAAD;EAAc,eAAY;EAA1B,UAAA,CACE,qBAAC,gBAAD,EAAA,UAAA,CACE,oBAAC,eAAD,EAAA,UAAe,gBAA4B,CAAA,GAC3C,oBAAC,qBAAD,EAAA,UAAqB,+JAGA,CAAA,CACP,EAAA,CAAA,GAChB,qBAAC,cAAD,EAAA,UAAA,CACE,qBAAC,aAAD,EAAA,UAAA,CACE,qBAAC,iBAAD,EAAA,UAAA,CACE,oBAAC,kBAAD,EAAA,UAAkB,wBAAuC,CAAA,GACzD,oBAAC,wBAAD;GAAwB,eAAY;GACjC,UAAA,YAAY;EACS,CAAA,CACT,EAAA,CAAA,GAChB,WAAW,YACV,oBAAC,QAAD;GAAQ,MAAK;GAAK,SAAQ;GAAU,eAAY;GAA+B,eAAe,KAAK,MAAM;GAAG,UAAA;EAEpG,CAAA,IACN,IACO,EAAA,CAAA,GACb,qBAAC,aAAD,EAAA,UAAA,CACE,qBAAC,iBAAD,EAAA,UAAA,CACE,oBAAC,kBAAD,EAAA,UAAkB,2BAA0C,CAAA,GAC5D,oBAAC,wBAAD;GAAwB,eAAY;GACjC,UAAA,UAAU;EACW,CAAA,CACT,EAAA,CAAA,GAChB,eAAe,YACd,oBAAC,QAAD;GAAQ,MAAK;GAAK,SAAQ;GAAU,eAAY;GAAe,eAAe,KAAK,QAAQ;GAAG,UAAA;EAEtF,CAAA,IACN,eAAe,YAAY,eAAe,gBAC5C,oBAAC,QAAD;GAAQ,MAAK;GAAK,eAAY;GAAkC,eAAe,KAAK,OAAO;GAAG,UAAA;EAEtF,CAAA,IACN,IACO,EAAA,CAAA,CACD,EAAA,CAAA,CACF;;AAElB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
const require_pluginRegistry = require("../../lib/pluginRegistry.cjs");
|
|
2
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
3
|
+
let _agimon_ai_po_web_components = require("@agimon-ai/po-web-components");
|
|
4
|
+
//#region src/web/features/settings/PluginSettings.tsx
|
|
5
|
+
/** What one plugin contributes, as counts: enough to see it landed without opening its code. */
|
|
6
|
+
function contributions(plugin) {
|
|
7
|
+
const parts = [];
|
|
8
|
+
const scopes = [plugin, ...[
|
|
9
|
+
plugin.global,
|
|
10
|
+
plugin.workspace,
|
|
11
|
+
plugin.session
|
|
12
|
+
].filter((scope) => scope !== void 0)];
|
|
13
|
+
const count = (label, select) => {
|
|
14
|
+
const total = scopes.reduce((sum, scope) => sum + (select(scope)?.length ?? 0), 0);
|
|
15
|
+
if (total > 0) parts.push(`${String(total)} ${label}`);
|
|
16
|
+
};
|
|
17
|
+
count("tabs", (scope) => scope.tabs);
|
|
18
|
+
count("channels", (scope) => scope.channels);
|
|
19
|
+
count("tool renderers", (scope) => scope.toolRenderers);
|
|
20
|
+
count("activity groups", (scope) => scope.activityGroups);
|
|
21
|
+
count("activity sections", (scope) => scope.activitySections);
|
|
22
|
+
count("composer menu items", (scope) => scope.composerMenuItems);
|
|
23
|
+
count("minor modes", (scope) => scope.minorModes);
|
|
24
|
+
count("selection axes", (scope) => scope.selectionAxes);
|
|
25
|
+
count("leader bindings", (scope) => scope.leaderBindings);
|
|
26
|
+
count("slots", (scope) => scope.slots);
|
|
27
|
+
count("fills", (scope) => scope.fills);
|
|
28
|
+
return parts;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The plugins page: the web plugins this bundle carries and what the install
|
|
32
|
+
* had to resolve between them. Both are read once from the registry, which
|
|
33
|
+
* is complete before the first render; a plugin comes or goes with the next
|
|
34
|
+
* po sync, never at runtime.
|
|
35
|
+
*/
|
|
36
|
+
function PluginSettings() {
|
|
37
|
+
const plugins = require_pluginRegistry.installedWebPlugins();
|
|
38
|
+
const diagnostics = require_pluginRegistry.webPluginDiagnostics();
|
|
39
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsPage, {
|
|
40
|
+
"data-testid": "settings-plugins",
|
|
41
|
+
children: [
|
|
42
|
+
/* @__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: "Plugins" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsDescription, { children: [
|
|
43
|
+
"The web plugins built into this copy of Po, and anything Po had to settle between them. Run",
|
|
44
|
+
" ",
|
|
45
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", {
|
|
46
|
+
className: "font-mono",
|
|
47
|
+
children: "po sync"
|
|
48
|
+
}),
|
|
49
|
+
" after installing a package to add its plugin here."
|
|
50
|
+
] })] }),
|
|
51
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsSection, { children: [/* @__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: "Installed" }), plugins.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
52
|
+
className: "text-sm text-doom-dim tabular-nums",
|
|
53
|
+
children: [plugins.length, " plugins"]
|
|
54
|
+
}) : null] }), plugins.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsCard, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsRow, {
|
|
55
|
+
"data-testid": "settings-plugins-empty",
|
|
56
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsRowText, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsRowTitle, { children: "No web plugins yet" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsRowDescription, { children: [
|
|
57
|
+
"Run ",
|
|
58
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", {
|
|
59
|
+
className: "font-mono",
|
|
60
|
+
children: "po sync"
|
|
61
|
+
}),
|
|
62
|
+
" to build the installed packages into Po."
|
|
63
|
+
] })] })
|
|
64
|
+
}) }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsCard, {
|
|
65
|
+
asChild: true,
|
|
66
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", { children: plugins.map((plugin) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsRow, {
|
|
67
|
+
asChild: true,
|
|
68
|
+
className: "py-3",
|
|
69
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", {
|
|
70
|
+
"data-testid": `settings-plugin-${plugin.id}`,
|
|
71
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsRowText, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsRowTitle, {
|
|
72
|
+
className: "font-mono first-letter:normal-case",
|
|
73
|
+
children: plugin.id
|
|
74
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsRowDescription, { children: contributions(plugin).join(" · ") || "No contributions" })] })
|
|
75
|
+
})
|
|
76
|
+
}, plugin.id)) })
|
|
77
|
+
})] }),
|
|
78
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsSection, { children: [/* @__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: "Conflicts" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsSectionDescription, { children: "When two plugins want the same tab, tool, group or key, Po keeps one and notes the other here instead of breaking the page." })] }), diagnostics.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsCard, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsRow, {
|
|
79
|
+
"data-testid": "settings-plugin-diagnostics-empty",
|
|
80
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsRowText, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsRowTitle, { children: "Nothing to settle" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsRowDescription, { children: "No two plugins asked for the same name." })] })
|
|
81
|
+
}) }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsCard, {
|
|
82
|
+
asChild: true,
|
|
83
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", { children: diagnostics.map((diagnostic, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsRow, {
|
|
84
|
+
asChild: true,
|
|
85
|
+
className: "py-3",
|
|
86
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", {
|
|
87
|
+
"data-testid": `settings-plugin-diagnostic-${diagnostic.pluginId}`,
|
|
88
|
+
"data-kind": diagnostic.kind,
|
|
89
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsRowText, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.SettingsRowTitle, {
|
|
90
|
+
className: "font-mono first-letter:normal-case",
|
|
91
|
+
children: [
|
|
92
|
+
diagnostic.pluginId,
|
|
93
|
+
" · ",
|
|
94
|
+
diagnostic.kind
|
|
95
|
+
]
|
|
96
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SettingsRowDescription, { children: diagnostic.message })] })
|
|
97
|
+
})
|
|
98
|
+
}, `${diagnostic.pluginId}:${diagnostic.kind}:${String(index)}`)) })
|
|
99
|
+
})] })
|
|
100
|
+
]
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
//#endregion
|
|
104
|
+
exports.PluginSettings = PluginSettings;
|
|
105
|
+
|
|
106
|
+
//# sourceMappingURL=PluginSettings.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginSettings.cjs","names":["installedWebPlugins","webPluginDiagnostics","SettingsPage","SettingsHeader","SettingsTitle","SettingsDescription","SettingsSection","SettingsSectionHeader","SettingsSectionTitle","SettingsCard","SettingsRow","SettingsRowText","SettingsRowTitle","SettingsRowDescription","SettingsSectionDescription"],"sources":["../../../../src/web/features/settings/PluginSettings.tsx"],"sourcesContent":["import type { WebPluginContributions, WebPluginDefinition } from '@agimon-ai/po-core/web';\nimport {\n SettingsCard,\n SettingsDescription,\n SettingsHeader,\n SettingsPage,\n SettingsRow,\n SettingsRowDescription,\n SettingsRowText,\n SettingsRowTitle,\n SettingsSection,\n SettingsSectionDescription,\n SettingsSectionHeader,\n SettingsSectionTitle,\n SettingsTitle,\n} from '@agimon-ai/po-web-components';\n\nimport { installedWebPlugins, webPluginDiagnostics } from '../../lib/pluginRegistry';\n\n/** What one plugin contributes, as counts: enough to see it landed without opening its code. */\nfunction contributions(plugin: WebPluginDefinition): string[] {\n const parts: string[] = [];\n const scopes: readonly WebPluginContributions[] = [\n plugin,\n ...[plugin.global, plugin.workspace, plugin.session].filter(\n (scope): scope is WebPluginContributions => scope !== undefined,\n ),\n ];\n const count = (label: string, select: (scope: WebPluginContributions) => readonly unknown[] | undefined): void => {\n const total = scopes.reduce((sum, scope) => sum + (select(scope)?.length ?? 0), 0);\n if (total > 0) parts.push(`${String(total)} ${label}`);\n };\n count('tabs', (scope) => scope.tabs);\n count('channels', (scope) => scope.channels);\n count('tool renderers', (scope) => scope.toolRenderers);\n count('activity groups', (scope) => scope.activityGroups);\n count('activity sections', (scope) => scope.activitySections);\n count('composer menu items', (scope) => scope.composerMenuItems);\n count('minor modes', (scope) => scope.minorModes);\n count('selection axes', (scope) => scope.selectionAxes);\n count('leader bindings', (scope) => scope.leaderBindings);\n count('slots', (scope) => scope.slots);\n count('fills', (scope) => scope.fills);\n return parts;\n}\n\n/**\n * The plugins page: the web plugins this bundle carries and what the install\n * had to resolve between them. Both are read once from the registry, which\n * is complete before the first render; a plugin comes or goes with the next\n * po sync, never at runtime.\n */\nexport function PluginSettings() {\n const plugins = installedWebPlugins();\n const diagnostics = webPluginDiagnostics();\n return (\n <SettingsPage data-testid=\"settings-plugins\">\n <SettingsHeader>\n <SettingsTitle>Plugins</SettingsTitle>\n <SettingsDescription>\n The web plugins built into this copy of Po, and anything Po had to settle between them. Run{' '}\n <code className=\"font-mono\">po sync</code> after installing a package to add its plugin here.\n </SettingsDescription>\n </SettingsHeader>\n\n <SettingsSection>\n <SettingsSectionHeader>\n <SettingsSectionTitle>Installed</SettingsSectionTitle>\n {plugins.length > 0 ? (\n <span className=\"text-sm text-doom-dim tabular-nums\">{plugins.length} plugins</span>\n ) : null}\n </SettingsSectionHeader>\n {plugins.length === 0 ? (\n <SettingsCard>\n <SettingsRow data-testid=\"settings-plugins-empty\">\n <SettingsRowText>\n <SettingsRowTitle>No web plugins yet</SettingsRowTitle>\n <SettingsRowDescription>\n Run <code className=\"font-mono\">po sync</code> to build the installed packages into Po.\n </SettingsRowDescription>\n </SettingsRowText>\n </SettingsRow>\n </SettingsCard>\n ) : (\n <SettingsCard asChild>\n <ul>\n {plugins.map((plugin) => (\n <SettingsRow asChild key={plugin.id} className=\"py-3\">\n <li data-testid={`settings-plugin-${plugin.id}`}>\n <SettingsRowText>\n <SettingsRowTitle className=\"font-mono first-letter:normal-case\">{plugin.id}</SettingsRowTitle>\n {/* Wraps rather than truncates: a clipped \"2 lea…\" tells the\n reader less than nothing about what the plugin contributed. */}\n <SettingsRowDescription>\n {contributions(plugin).join(' · ') || 'No contributions'}\n </SettingsRowDescription>\n </SettingsRowText>\n </li>\n </SettingsRow>\n ))}\n </ul>\n </SettingsCard>\n )}\n </SettingsSection>\n\n <SettingsSection>\n <SettingsSectionHeader>\n <SettingsSectionTitle>Conflicts</SettingsSectionTitle>\n <SettingsSectionDescription>\n When two plugins want the same tab, tool, group or key, Po keeps one and notes the other here instead of\n breaking the page.\n </SettingsSectionDescription>\n </SettingsSectionHeader>\n {diagnostics.length === 0 ? (\n <SettingsCard>\n <SettingsRow data-testid=\"settings-plugin-diagnostics-empty\">\n <SettingsRowText>\n <SettingsRowTitle>Nothing to settle</SettingsRowTitle>\n <SettingsRowDescription>No two plugins asked for the same name.</SettingsRowDescription>\n </SettingsRowText>\n </SettingsRow>\n </SettingsCard>\n ) : (\n <SettingsCard asChild>\n <ul>\n {diagnostics.map((diagnostic, index) => (\n <SettingsRow\n asChild\n key={`${diagnostic.pluginId}:${diagnostic.kind}:${String(index)}`}\n className=\"py-3\"\n >\n <li data-testid={`settings-plugin-diagnostic-${diagnostic.pluginId}`} data-kind={diagnostic.kind}>\n <SettingsRowText>\n <SettingsRowTitle className=\"font-mono first-letter:normal-case\">\n {diagnostic.pluginId} · {diagnostic.kind}\n </SettingsRowTitle>\n <SettingsRowDescription>{diagnostic.message}</SettingsRowDescription>\n </SettingsRowText>\n </li>\n </SettingsRow>\n ))}\n </ul>\n </SettingsCard>\n )}\n </SettingsSection>\n </SettingsPage>\n );\n}\n"],"mappings":";;;;;AAoBA,SAAS,cAAc,QAAuC;CAC5D,MAAM,QAAkB,CAAC;CACzB,MAAM,SAA4C,CAChD,QACA,GAAG;EAAC,OAAO;EAAQ,OAAO;EAAW,OAAO;CAAO,CAAC,CAAC,QAClD,UAA2C,UAAU,KAAA,CACxD,CACF;CACA,MAAM,SAAS,OAAe,WAAoF;EAChH,MAAM,QAAQ,OAAO,QAAQ,KAAK,UAAU,OAAO,OAAO,KAAK,CAAC,EAAE,UAAU,IAAI,CAAC;EACjF,IAAI,QAAQ,GAAG,MAAM,KAAK,GAAG,OAAO,KAAK,EAAE,GAAG,OAAO;CACvD;CACA,MAAM,SAAS,UAAU,MAAM,IAAI;CACnC,MAAM,aAAa,UAAU,MAAM,QAAQ;CAC3C,MAAM,mBAAmB,UAAU,MAAM,aAAa;CACtD,MAAM,oBAAoB,UAAU,MAAM,cAAc;CACxD,MAAM,sBAAsB,UAAU,MAAM,gBAAgB;CAC5D,MAAM,wBAAwB,UAAU,MAAM,iBAAiB;CAC/D,MAAM,gBAAgB,UAAU,MAAM,UAAU;CAChD,MAAM,mBAAmB,UAAU,MAAM,aAAa;CACtD,MAAM,oBAAoB,UAAU,MAAM,cAAc;CACxD,MAAM,UAAU,UAAU,MAAM,KAAK;CACrC,MAAM,UAAU,UAAU,MAAM,KAAK;CACrC,OAAO;AACT;;;;;;;AAQA,SAAgB,iBAAiB;CAC/B,MAAM,UAAUA,uBAAAA,oBAAoB;CACpC,MAAM,cAAcC,uBAAAA,qBAAqB;CACzC,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,cAAD;EAAc,eAAY;EAA1B,UAAA;GACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,gBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,eAAD,EAAA,UAAe,UAAsB,CAAA,GACrC,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,qBAAD,EAAA,UAAA;IAAqB;IACyE;IAC5F,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;KAAM,WAAU;KAAY,UAAA;IAAa,CAAA;IAAC;GACvB,EAAA,CAAA,CACP,EAAA,CAAA;GAEhB,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,iBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,uBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,sBAAD,EAAA,UAAsB,YAA+B,CAAA,GACpD,QAAQ,SAAS,IAChB,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;IAAM,WAAU;IAAhB,UAAA,CAAsD,QAAQ,QAAO,UAAc;GACjF,CAAA,IAAA,IACiB,EAAA,CAAA,GACtB,QAAQ,WAAW,IAClB,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,cAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,aAAD;IAAa,eAAY;IACvB,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,iBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,kBAAD,EAAA,UAAkB,qBAAoC,CAAA,GACtD,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,wBAAD,EAAA,UAAA;KAAwB;KAClB,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;MAAM,WAAU;MAAY,UAAA;KAAa,CAAA;KAAC;IACxB,EAAA,CAAA,CACT,EAAA,CAAA;GACN,CAAA,EACD,CAAA,IAEd,iBAAA,GAAA,kBAAA,IAAA,CAACJ,6BAAAA,cAAD;IAAc,SAAA;IACZ,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,MAAD,EAAA,UACG,QAAQ,KAAK,WACZ,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,aAAD;KAAa,SAAA;KAAwB,WAAU;KAC7C,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,MAAD;MAAI,eAAa,mBAAmB,OAAO;MACzC,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,iBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,kBAAD;OAAkB,WAAU;OAAsC,UAAA,OAAO;MAAqB,CAAA,GAG9F,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,wBAAD,EAAA,UACG,cAAc,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,mBAChB,CAAA,CACT,EAAA,CAAA;KACf,CAAA;IACO,GAXa,OAAO,EAWpB,CACd,EACC,CAAA;GACQ,CAAA,CAED,EAAA,CAAA;GAEjB,iBAAA,GAAA,kBAAA,KAAA,CAACP,6BAAAA,iBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,uBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,sBAAD,EAAA,UAAsB,YAA+B,CAAA,GACrD,iBAAA,GAAA,kBAAA,IAAA,CAACM,6BAAAA,4BAAD,EAAA,UAA4B,8HAGA,CAAA,CACP,EAAA,CAAA,GACtB,YAAY,WAAW,IACtB,iBAAA,GAAA,kBAAA,IAAA,CAACL,6BAAAA,cAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,aAAD;IAAa,eAAY;IACvB,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,iBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,kBAAD,EAAA,UAAkB,oBAAmC,CAAA,GACrD,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,wBAAD,EAAA,UAAwB,0CAA+D,CAAA,CACxE,EAAA,CAAA;GACN,CAAA,EACD,CAAA,IAEd,iBAAA,GAAA,kBAAA,IAAA,CAACJ,6BAAAA,cAAD;IAAc,SAAA;IACZ,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,MAAD,EAAA,UACG,YAAY,KAAK,YAAY,UAC5B,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,aAAD;KACE,SAAA;KAEA,WAAU;KAEV,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,MAAD;MAAI,eAAa,8BAA8B,WAAW;MAAY,aAAW,WAAW;MAC1F,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,iBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,kBAAD;OAAkB,WAAU;OAA5B,UAAA;QACG,WAAW;QAAS;QAAI,WAAW;OACpB;MAClB,CAAA,GAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,wBAAD,EAAA,UAAyB,WAAW,QAAgC,CAAA,CACrD,EAAA,CAAA;KACf,CAAA;IACO,GAXN,GAAG,WAAW,SAAS,GAAG,WAAW,KAAK,GAAG,OAAO,KAAK,GAWnD,CACd,EACC,CAAA;GACQ,CAAA,CAED,EAAA,CAAA;EACL;;AAElB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//#region src/web/features/settings/PluginSettings.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The plugins page: the web plugins this bundle carries and what the install
|
|
4
|
+
* had to resolve between them. Both are read once from the registry, which
|
|
5
|
+
* is complete before the first render; a plugin comes or goes with the next
|
|
6
|
+
* po sync, never at runtime.
|
|
7
|
+
*/
|
|
8
|
+
export declare function PluginSettings(): import("react").JSX.Element;
|
|
9
|
+
//#endregion
|
|
10
|
+
//# sourceMappingURL=PluginSettings.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginSettings.d.mts","names":[],"sources":["../../../../src/web/features/settings/PluginSettings.tsx"],"mappings":";;;;;;;wBAoDgB,kCAAc,IAAA"}
|