@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,403 @@
|
|
|
1
|
+
const require_pluginRegistry = require("./pluginRegistry.cjs");
|
|
2
|
+
const require_statusLine = require("./statusLine.cjs");
|
|
3
|
+
let react = require("react");
|
|
4
|
+
//#region src/web/lib/composition.ts
|
|
5
|
+
const AXIS_LIST_SEPARATOR = ",";
|
|
6
|
+
/**
|
|
7
|
+
* The fallback axis table for the packaged bundle; a synced bundle carries
|
|
8
|
+
* each axis as its owning package's plugin declaration, and the registry
|
|
9
|
+
* list wins whenever any plugin declares one. Exported only so the workspace
|
|
10
|
+
* composition test can hold it equal to what the packages declare.
|
|
11
|
+
*/
|
|
12
|
+
const PACKAGED_SELECTION_AXES = [{
|
|
13
|
+
name: "profile",
|
|
14
|
+
command: "profile",
|
|
15
|
+
statusKey: "doom-profile",
|
|
16
|
+
emptyLabel: "no profile",
|
|
17
|
+
order: 10
|
|
18
|
+
}, {
|
|
19
|
+
name: "domains",
|
|
20
|
+
command: "domains",
|
|
21
|
+
statusKey: "doom-domain",
|
|
22
|
+
emptyLabel: "no domains",
|
|
23
|
+
multi: true,
|
|
24
|
+
order: 20
|
|
25
|
+
}];
|
|
26
|
+
/**
|
|
27
|
+
* The declared axes the session actually offers: an axis whose status key
|
|
28
|
+
* the session never published stays off the bar entirely, which is how a
|
|
29
|
+
* package withholds its axis when there is nothing to select.
|
|
30
|
+
*/
|
|
31
|
+
function selectionAxes(statuses) {
|
|
32
|
+
const declared = require_pluginRegistry.pluginSelectionAxes();
|
|
33
|
+
return (declared.length > 0 ? declared : PACKAGED_SELECTION_AXES).flatMap((source) => {
|
|
34
|
+
const raw = statuses[source.statusKey];
|
|
35
|
+
if (raw === void 0) return [];
|
|
36
|
+
const multi = source.multi === true;
|
|
37
|
+
const values = (multi ? require_statusLine.stripAnsi(raw).split(AXIS_LIST_SEPARATOR) : [require_statusLine.stripAnsi(raw)]).map((value) => value.trim()).filter(Boolean);
|
|
38
|
+
return [{
|
|
39
|
+
name: source.name,
|
|
40
|
+
command: source.command,
|
|
41
|
+
values,
|
|
42
|
+
emptyLabel: source.emptyLabel,
|
|
43
|
+
multi
|
|
44
|
+
}];
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The fallback minor-mode table for the packaged bundle.
|
|
49
|
+
*
|
|
50
|
+
* A synced bundle carries each mode as its package's own web plugin
|
|
51
|
+
* contribution, and the registry list wins whenever any plugin declares one.
|
|
52
|
+
* This literal survives only so the built-in-only bundle keeps rendering the
|
|
53
|
+
* modes Po ships; help is listed without a signal on purpose: it
|
|
54
|
+
* registers no footer entry, so the cockpit reports it as unavailable rather
|
|
55
|
+
* than guessing it is off. Exported only for the workspace composition test.
|
|
56
|
+
*/
|
|
57
|
+
const PACKAGED_MINOR_MODES = [
|
|
58
|
+
{
|
|
59
|
+
name: "help",
|
|
60
|
+
keys: "h e"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: "plan",
|
|
64
|
+
keys: "p e",
|
|
65
|
+
statusKey: "plan-mode"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: "loop",
|
|
69
|
+
keys: "l l",
|
|
70
|
+
statusKey: "doom-loop"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: "goal",
|
|
74
|
+
keys: "g e",
|
|
75
|
+
statusKey: "goal"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: "author",
|
|
79
|
+
keys: "o a"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: "workflow",
|
|
83
|
+
keys: "w e",
|
|
84
|
+
widgetKey: "workflow-mcp-progress"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: "voice",
|
|
88
|
+
modeId: "voice-auto",
|
|
89
|
+
keys: "v e",
|
|
90
|
+
statusKey: "doom-voice"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: "computer use",
|
|
94
|
+
modeId: "computer-use",
|
|
95
|
+
keys: "c e",
|
|
96
|
+
statusKey: "doom-computer-use-mode",
|
|
97
|
+
hideWhenMissing: true,
|
|
98
|
+
desktopOnly: true
|
|
99
|
+
}
|
|
100
|
+
];
|
|
101
|
+
/** The declared source a catalog mode corresponds to, by id, id stem, or label. */
|
|
102
|
+
function sourceFor(sources, mode) {
|
|
103
|
+
const candidates = /* @__PURE__ */ new Set([
|
|
104
|
+
mode.id.toLowerCase(),
|
|
105
|
+
mode.id.toLowerCase().split(".")[0],
|
|
106
|
+
mode.label.toLowerCase()
|
|
107
|
+
]);
|
|
108
|
+
return sources.find((source) => [source.name, source.modeId].some((identity) => identity !== void 0 && candidates.has(identity.toLowerCase())));
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Catalog-backed rows: the runtime's own activation state per mode, with the
|
|
112
|
+
* declared leader keys attached where a plugin documents them. Declared modes
|
|
113
|
+
* the catalog does not know are still listed, as unavailable, so a mode that
|
|
114
|
+
* is missing from a composition stays visible rather than silently gone.
|
|
115
|
+
*/
|
|
116
|
+
function catalogMinorModes(sources, projection) {
|
|
117
|
+
const rows = projection.modes.filter((mode) => !sourceFor(sources, mode)?.desktopOnly || require_pluginRegistry.isDesktopClient()).map((mode) => {
|
|
118
|
+
const source = sourceFor(sources, mode);
|
|
119
|
+
const on = mode.activation === "active" || mode.activation === "deactivating";
|
|
120
|
+
const blocked = mode.actions.length > 0 && mode.actions.every((action) => !action.enabled);
|
|
121
|
+
const reason = blocked ? mode.actions.find((action) => action.disabledReason)?.disabledReason ?? "" : "";
|
|
122
|
+
return {
|
|
123
|
+
name: source?.name ?? mode.label.toLowerCase(),
|
|
124
|
+
id: mode.id,
|
|
125
|
+
keys: source?.keys ?? "",
|
|
126
|
+
availability: blocked && !on ? "unavailable" : on ? "on" : "off",
|
|
127
|
+
...source?.activityGroup === void 0 ? {} : { activityGroup: source.activityGroup },
|
|
128
|
+
detail: mode.detail ?? (mode.activation === "activating" ? "activating" : ""),
|
|
129
|
+
unavailableReason: reason
|
|
130
|
+
};
|
|
131
|
+
});
|
|
132
|
+
const seen = new Set(rows.map((row) => row.name));
|
|
133
|
+
for (const source of sources) {
|
|
134
|
+
if (source.hideWhenMissing === true || source.desktopOnly && !require_pluginRegistry.isDesktopClient()) continue;
|
|
135
|
+
if (!seen.has(source.name)) rows.push({
|
|
136
|
+
name: source.name,
|
|
137
|
+
id: source.modeId ?? source.name,
|
|
138
|
+
keys: source.keys,
|
|
139
|
+
availability: "unavailable",
|
|
140
|
+
...source.activityGroup === void 0 ? {} : { activityGroup: source.activityGroup },
|
|
141
|
+
detail: "",
|
|
142
|
+
unavailableReason: "No package in this session registers this mode."
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
return rows;
|
|
146
|
+
}
|
|
147
|
+
function minorModes(statuses, widgets, projection = null) {
|
|
148
|
+
const declared = require_pluginRegistry.pluginMinorModes();
|
|
149
|
+
const sources = declared.length > 0 ? declared : PACKAGED_MINOR_MODES;
|
|
150
|
+
if (projection) return catalogMinorModes(sources, projection);
|
|
151
|
+
return sources.flatMap((source) => {
|
|
152
|
+
if (source.desktopOnly && !require_pluginRegistry.isDesktopClient()) return [];
|
|
153
|
+
if (source.statusKey !== void 0) {
|
|
154
|
+
const raw = statuses[source.statusKey];
|
|
155
|
+
if (raw === void 0) {
|
|
156
|
+
if (source.hideWhenMissing === true) return [];
|
|
157
|
+
return [{
|
|
158
|
+
name: source.name,
|
|
159
|
+
id: source.modeId ?? source.name,
|
|
160
|
+
keys: source.keys,
|
|
161
|
+
availability: "unavailable",
|
|
162
|
+
...source.activityGroup === void 0 ? {} : { activityGroup: source.activityGroup },
|
|
163
|
+
detail: "",
|
|
164
|
+
unavailableReason: "This session has not reported the mode."
|
|
165
|
+
}];
|
|
166
|
+
}
|
|
167
|
+
const detail = require_statusLine.stripAnsi(raw).trim();
|
|
168
|
+
return {
|
|
169
|
+
name: source.name,
|
|
170
|
+
id: source.modeId ?? source.name,
|
|
171
|
+
keys: source.keys,
|
|
172
|
+
availability: detail ? "on" : "off",
|
|
173
|
+
...source.activityGroup === void 0 ? {} : { activityGroup: source.activityGroup },
|
|
174
|
+
detail,
|
|
175
|
+
unavailableReason: ""
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
if (source.widgetKey !== void 0 && widgets.includes(source.widgetKey)) return {
|
|
179
|
+
name: source.name,
|
|
180
|
+
id: source.modeId ?? source.name,
|
|
181
|
+
keys: source.keys,
|
|
182
|
+
availability: "off",
|
|
183
|
+
...source.activityGroup === void 0 ? {} : { activityGroup: source.activityGroup },
|
|
184
|
+
detail: "",
|
|
185
|
+
unavailableReason: ""
|
|
186
|
+
};
|
|
187
|
+
return {
|
|
188
|
+
name: source.name,
|
|
189
|
+
id: source.name,
|
|
190
|
+
keys: source.keys,
|
|
191
|
+
availability: "unavailable",
|
|
192
|
+
...source.activityGroup === void 0 ? {} : { activityGroup: source.activityGroup },
|
|
193
|
+
detail: "",
|
|
194
|
+
unavailableReason: "This session has not reported the mode."
|
|
195
|
+
};
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
/** Subscribe to package-owned activity sources, rewiring when the focused composition changes. */
|
|
199
|
+
function subscribeActivitySources(listener) {
|
|
200
|
+
let subscriptions = [];
|
|
201
|
+
const unsubscribeSources = () => {
|
|
202
|
+
subscriptions.forEach((unsubscribe) => unsubscribe());
|
|
203
|
+
subscriptions = [];
|
|
204
|
+
};
|
|
205
|
+
const subscribeSources = () => {
|
|
206
|
+
subscriptions = require_pluginRegistry.pluginActivityGroups().flatMap((source) => source.activeSource === void 0 ? [] : [source.activeSource.subscribe(listener)]);
|
|
207
|
+
};
|
|
208
|
+
subscribeSources();
|
|
209
|
+
const unsubscribeRegistry = require_pluginRegistry.subscribeWebPluginRegistry(() => {
|
|
210
|
+
unsubscribeSources();
|
|
211
|
+
subscribeSources();
|
|
212
|
+
listener();
|
|
213
|
+
});
|
|
214
|
+
return () => {
|
|
215
|
+
unsubscribeRegistry();
|
|
216
|
+
unsubscribeSources();
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
function activitySourceFingerprint(sessionId) {
|
|
220
|
+
const activeSources = require_pluginRegistry.pluginActivityGroups().map((source) => source.activeSource?.isActive(sessionId) === true ? "1" : "0").join("");
|
|
221
|
+
return `${require_pluginRegistry.webPluginRegistryRevision()}:${activeSources}`;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* The groups available in this plugin composition. Status and widget signals
|
|
225
|
+
* reveal legacy groups. A package-owned active source also reveals its group,
|
|
226
|
+
* including while idle, so the section can remain a stable launcher unless it
|
|
227
|
+
* opts into `hideWhenEmpty`.
|
|
228
|
+
*
|
|
229
|
+
* A group that declared `hideWhenEmpty` goes away once its session stops
|
|
230
|
+
* reporting. Clearing a status reaches the page as an empty string rather than
|
|
231
|
+
* an absent key, because the same map tells the selection bar which minor modes
|
|
232
|
+
* exist and an absent key means "not reported" there. Emptiness is read here,
|
|
233
|
+
* where only the dock is looking.
|
|
234
|
+
*/
|
|
235
|
+
function activityGroups(statuses, widgets, sessionId = null) {
|
|
236
|
+
const groups = [];
|
|
237
|
+
for (const source of require_pluginRegistry.pluginActivityGroups()) {
|
|
238
|
+
const tab = source.transientTab === void 0 ? {} : { transientTab: source.transientTab };
|
|
239
|
+
const placement = {
|
|
240
|
+
...source.placement === void 0 ? {} : { placement: source.placement },
|
|
241
|
+
...source.marksBackgroundWork === false ? { marksBackgroundWork: false } : {},
|
|
242
|
+
...source.icon === void 0 ? {} : { icon: source.icon }
|
|
243
|
+
};
|
|
244
|
+
if (source.statusKey !== void 0 && statuses[source.statusKey] !== void 0) {
|
|
245
|
+
const summary = require_statusLine.stripAnsi(statuses[source.statusKey] ?? "").trim();
|
|
246
|
+
const active = source.activeSource?.isActive(sessionId) ?? (source.marksBackgroundWork !== false && summary.length > 0);
|
|
247
|
+
if (summary.length === 0 && source.hideWhenEmpty === true && !active) continue;
|
|
248
|
+
groups.push({
|
|
249
|
+
name: source.name,
|
|
250
|
+
keys: source.keys,
|
|
251
|
+
summary,
|
|
252
|
+
active,
|
|
253
|
+
...tab,
|
|
254
|
+
...placement
|
|
255
|
+
});
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
if (source.widgetKeys !== void 0 && source.widgetKeys.some((key) => widgets.includes(key))) {
|
|
259
|
+
const activeKeys = source.activeWidgetKeys ?? source.widgetKeys;
|
|
260
|
+
const active = source.activeSource?.isActive(sessionId) ?? (source.marksBackgroundWork !== false && activeKeys.some((key) => widgets.includes(key)));
|
|
261
|
+
groups.push({
|
|
262
|
+
name: source.name,
|
|
263
|
+
keys: source.keys,
|
|
264
|
+
summary: "",
|
|
265
|
+
active,
|
|
266
|
+
...tab,
|
|
267
|
+
...placement
|
|
268
|
+
});
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
if (source.activeSource !== void 0) {
|
|
272
|
+
const active = source.activeSource.isActive(sessionId);
|
|
273
|
+
if (source.hideWhenEmpty === true && !active) continue;
|
|
274
|
+
groups.push({
|
|
275
|
+
name: source.name,
|
|
276
|
+
keys: source.keys,
|
|
277
|
+
summary: "",
|
|
278
|
+
active,
|
|
279
|
+
...tab,
|
|
280
|
+
...placement
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return groups;
|
|
285
|
+
}
|
|
286
|
+
/** Dock faces update when the active session composition changes. */
|
|
287
|
+
function useDockFaces(sessionId) {
|
|
288
|
+
(0, react.useSyncExternalStore)(require_pluginRegistry.subscribeWebPluginRegistry, require_pluginRegistry.webPluginRegistryRevision, require_pluginRegistry.webPluginRegistryRevision);
|
|
289
|
+
const subscribe = (listener) => {
|
|
290
|
+
const releases = require_pluginRegistry.pluginDockFaces().flatMap((face) => face.visibility ? [face.visibility.subscribe(listener)] : []);
|
|
291
|
+
return () => releases.forEach((release) => release());
|
|
292
|
+
};
|
|
293
|
+
const snapshot = () => require_pluginRegistry.pluginDockFaces().map((face) => face.visibility?.isVisible(sessionId) !== false ? "1" : "0").join("");
|
|
294
|
+
(0, react.useSyncExternalStore)(subscribe, snapshot, snapshot);
|
|
295
|
+
return require_pluginRegistry.pluginDockFaces().filter((face) => face.visibility?.isVisible(sessionId) !== false);
|
|
296
|
+
}
|
|
297
|
+
/** Activity groups that update when either host signals or a plugin's session store changes. */
|
|
298
|
+
function useActivityGroups(statuses, widgets, sessionId) {
|
|
299
|
+
(0, react.useSyncExternalStore)(subscribeActivitySources, () => activitySourceFingerprint(sessionId), () => activitySourceFingerprint(sessionId));
|
|
300
|
+
return activityGroups(statuses, widgets, sessionId);
|
|
301
|
+
}
|
|
302
|
+
let fileLinkModes;
|
|
303
|
+
const modeBindings = /* @__PURE__ */ new Set();
|
|
304
|
+
/** Binds host session facts without making the composition library own session state. */
|
|
305
|
+
function bindFileLinkModes(source) {
|
|
306
|
+
fileLinkModes = source;
|
|
307
|
+
modeBindings.forEach((listener) => listener());
|
|
308
|
+
return () => {
|
|
309
|
+
if (fileLinkModes !== source) return;
|
|
310
|
+
fileLinkModes = void 0;
|
|
311
|
+
modeBindings.forEach((listener) => listener());
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
function subscribeFileLinks(sessionId, listener) {
|
|
315
|
+
let unsubscribeModes = fileLinkModes?.subscribe(sessionId, listener);
|
|
316
|
+
const rebindModes = () => {
|
|
317
|
+
unsubscribeModes?.();
|
|
318
|
+
unsubscribeModes = fileLinkModes?.subscribe(sessionId, listener);
|
|
319
|
+
listener();
|
|
320
|
+
};
|
|
321
|
+
modeBindings.add(rebindModes);
|
|
322
|
+
let subscriptions = [];
|
|
323
|
+
const unsubscribeSources = () => {
|
|
324
|
+
subscriptions.forEach((unsubscribe) => unsubscribe());
|
|
325
|
+
subscriptions = [];
|
|
326
|
+
};
|
|
327
|
+
const subscribeSources = () => {
|
|
328
|
+
subscriptions = require_pluginRegistry.pluginFileLinks().map((source) => source.subscribe(listener));
|
|
329
|
+
};
|
|
330
|
+
subscribeSources();
|
|
331
|
+
const unsubscribeRegistry = require_pluginRegistry.subscribeWebPluginRegistry(() => {
|
|
332
|
+
unsubscribeSources();
|
|
333
|
+
subscribeSources();
|
|
334
|
+
listener();
|
|
335
|
+
});
|
|
336
|
+
return () => {
|
|
337
|
+
modeBindings.delete(rebindModes);
|
|
338
|
+
unsubscribeModes?.();
|
|
339
|
+
unsubscribeRegistry();
|
|
340
|
+
unsubscribeSources();
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
function activeFileLinkSources(sessionId) {
|
|
344
|
+
const enabled = new Set(fileLinkModes?.active(sessionId) ?? []);
|
|
345
|
+
return require_pluginRegistry.pluginFileLinks().filter((source) => source.requiredMinorMode === void 0 || enabled.has(source.requiredMinorMode));
|
|
346
|
+
}
|
|
347
|
+
function fileLinkFingerprint(sessionId) {
|
|
348
|
+
const sourceFingerprints = activeFileLinkSources(sessionId).map((source) => `${source.requiredMinorMode ?? ""}:${source.fingerprint(sessionId)}`).join("\n");
|
|
349
|
+
return `${require_pluginRegistry.webPluginRegistryRevision()}:${sourceFingerprints}`;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* The tab a path opens, from the first source that claims it.
|
|
353
|
+
*
|
|
354
|
+
* A path no source claims is not a link. The host cannot tell a file name from
|
|
355
|
+
* a class name, and the plugin that tracks the session's files can, so the
|
|
356
|
+
* decision belongs there rather than in a heuristic here.
|
|
357
|
+
*/
|
|
358
|
+
function fileLinkFor(sessionId, path) {
|
|
359
|
+
for (const source of activeFileLinkSources(sessionId)) {
|
|
360
|
+
const tab = source.resolve(sessionId, path);
|
|
361
|
+
if (tab !== void 0) return tab;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* The tab a path the caller is sure about opens: a tool call's path argument,
|
|
366
|
+
* not a token spotted in prose.
|
|
367
|
+
*
|
|
368
|
+
* A source that offers `openPath` answers here, and it may claim a file the
|
|
369
|
+
* session never changed, which `resolve` deliberately will not. Sources
|
|
370
|
+
* without it fall back to the same guess prose gets.
|
|
371
|
+
*/
|
|
372
|
+
function fileTabForPath(sessionId, path) {
|
|
373
|
+
for (const source of activeFileLinkSources(sessionId)) {
|
|
374
|
+
const tab = source.openPath?.(sessionId, path) ?? source.resolve(sessionId, path);
|
|
375
|
+
if (tab !== void 0) return tab;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Resolves the paths a message names against the plugins that track them.
|
|
380
|
+
*
|
|
381
|
+
* The resolver's identity is stable while the linkable set is, so a component
|
|
382
|
+
* that hands it to a renderer does not rebuild that renderer on every frame of
|
|
383
|
+
* a streaming reply.
|
|
384
|
+
*/
|
|
385
|
+
function useFileLinks(sessionId) {
|
|
386
|
+
const fingerprint = (0, react.useSyncExternalStore)((0, react.useCallback)((listener) => subscribeFileLinks(sessionId, listener), [sessionId]), () => fileLinkFingerprint(sessionId), () => fileLinkFingerprint(sessionId));
|
|
387
|
+
return (0, react.useCallback)((path) => fileLinkFor(sessionId, path), [sessionId, fingerprint]);
|
|
388
|
+
}
|
|
389
|
+
//#endregion
|
|
390
|
+
exports.PACKAGED_MINOR_MODES = PACKAGED_MINOR_MODES;
|
|
391
|
+
exports.PACKAGED_SELECTION_AXES = PACKAGED_SELECTION_AXES;
|
|
392
|
+
exports.activityGroups = activityGroups;
|
|
393
|
+
exports.bindFileLinkModes = bindFileLinkModes;
|
|
394
|
+
exports.fileLinkFor = fileLinkFor;
|
|
395
|
+
exports.fileTabForPath = fileTabForPath;
|
|
396
|
+
exports.minorModes = minorModes;
|
|
397
|
+
exports.selectionAxes = selectionAxes;
|
|
398
|
+
exports.subscribeActivitySources = subscribeActivitySources;
|
|
399
|
+
exports.useActivityGroups = useActivityGroups;
|
|
400
|
+
exports.useDockFaces = useDockFaces;
|
|
401
|
+
exports.useFileLinks = useFileLinks;
|
|
402
|
+
|
|
403
|
+
//# sourceMappingURL=composition.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition.cjs","names":["pluginSelectionAxes","stripAnsi","isDesktopClient","pluginMinorModes","pluginActivityGroups","subscribeWebPluginRegistry","webPluginRegistryRevision","pluginDockFaces","pluginFileLinks","useSyncExternalStore","useCallback"],"sources":["../../../src/web/lib/composition.ts"],"sourcesContent":["import type {\n ActivityGroupContribution,\n DockFaceContribution,\n SelectionAxisContribution,\n TransientTab,\n} from '@agimon-ai/po-core/web';\nimport { useCallback, useSyncExternalStore } from 'react';\n\nimport type { MinorModeProjection, MinorModeRecordProjection } from '../../types/hub';\nimport {\n isDesktopClient,\n pluginActivityGroups,\n pluginDockFaces,\n pluginFileLinks,\n pluginMinorModes,\n pluginSelectionAxes,\n subscribeWebPluginRegistry,\n webPluginRegistryRevision,\n} from './pluginRegistry';\nimport { stripAnsi } from './statusLine';\n\nexport interface SelectionAxis {\n name: string;\n command: string;\n /** The current selections, empty while the session reports none; one at most unless multi. */\n values: string[];\n emptyLabel: string;\n multi: boolean;\n}\n\nconst AXIS_LIST_SEPARATOR = ',';\n\n/**\n * The fallback axis table for the packaged bundle; a synced bundle carries\n * each axis as its owning package's plugin declaration, and the registry\n * list wins whenever any plugin declares one. Exported only so the workspace\n * composition test can hold it equal to what the packages declare.\n */\nexport const PACKAGED_SELECTION_AXES: readonly SelectionAxisContribution[] = [\n { name: 'profile', command: 'profile', statusKey: 'doom-profile', emptyLabel: 'no profile', order: 10 },\n { name: 'domains', command: 'domains', statusKey: 'doom-domain', emptyLabel: 'no domains', multi: true, order: 20 },\n];\n\n/**\n * The declared axes the session actually offers: an axis whose status key\n * the session never published stays off the bar entirely, which is how a\n * package withholds its axis when there is nothing to select.\n */\nexport function selectionAxes(statuses: Record<string, string>): SelectionAxis[] {\n const declared = pluginSelectionAxes();\n const sources: readonly SelectionAxisContribution[] = declared.length > 0 ? declared : PACKAGED_SELECTION_AXES;\n return sources.flatMap((source) => {\n const raw = statuses[source.statusKey];\n if (raw === undefined) return [];\n const multi = source.multi === true;\n const values = (multi ? stripAnsi(raw).split(AXIS_LIST_SEPARATOR) : [stripAnsi(raw)])\n .map((value) => value.trim())\n .filter(Boolean);\n return [{ name: source.name, command: source.command, values, emptyLabel: source.emptyLabel, multi }];\n });\n}\n\nexport type MinorModeAvailability = 'unavailable' | 'off' | 'on';\n\nexport interface MinorMode {\n name: string;\n /** The catalog id /minor accepts; the display name until the catalog reports. */\n id: string;\n /** Leader Space key path, as the TUI documents it. */\n keys: string;\n availability: MinorModeAvailability;\n /** What the mode itself is reporting while on. */\n detail: string;\n /** Activity group to focus instead of invoking the mode command from the cockpit. */\n activityGroup?: string;\n /**\n * Why the mode cannot be driven from here, in the words of the mode itself.\n * Empty when it can. A mode may be installed and still refuse a cockpit:\n * autonomous voice captures from the terminal's own microphone, which a\n * browser talking to a headless agent does not have.\n */\n unavailableReason: string;\n}\n\nexport interface MinorModeSource {\n name: string;\n /** The catalog mode this row drives, when the runtime registers it under another id. */\n modeId?: string;\n /** Leader Space key path, as the TUI documents it. */\n keys: string;\n /** Activity group to focus instead of invoking the mode command from the cockpit. */\n activityGroup?: string;\n statusKey?: string;\n widgetKey?: string;\n hideWhenMissing?: boolean;\n desktopOnly?: boolean;\n}\n\n/**\n * The fallback minor-mode table for the packaged bundle.\n *\n * A synced bundle carries each mode as its package's own web plugin\n * contribution, and the registry list wins whenever any plugin declares one.\n * This literal survives only so the built-in-only bundle keeps rendering the\n * modes Po ships; help is listed without a signal on purpose: it\n * registers no footer entry, so the cockpit reports it as unavailable rather\n * than guessing it is off. Exported only for the workspace composition test.\n */\nexport const PACKAGED_MINOR_MODES: readonly MinorModeSource[] = [\n { name: 'help', keys: 'h e' },\n { name: 'plan', keys: 'p e', statusKey: 'plan-mode' },\n { name: 'loop', keys: 'l l', statusKey: 'doom-loop' },\n { name: 'goal', keys: 'g e', statusKey: 'goal' },\n { name: 'author', keys: 'o a' },\n { name: 'workflow', keys: 'w e', widgetKey: 'workflow-mcp-progress' },\n // `v e` drives autonomous capture, which the runtime registers as 'voice-auto'.\n { name: 'voice', modeId: 'voice-auto', keys: 'v e', statusKey: 'doom-voice' },\n {\n name: 'computer use',\n modeId: 'computer-use',\n keys: 'c e',\n statusKey: 'doom-computer-use-mode',\n hideWhenMissing: true,\n desktopOnly: true,\n },\n];\n\n/** The declared source a catalog mode corresponds to, by id, id stem, or label. */\nfunction sourceFor(sources: readonly MinorModeSource[], mode: MinorModeRecordProjection): MinorModeSource | undefined {\n const candidates = new Set([mode.id.toLowerCase(), mode.id.toLowerCase().split('.')[0], mode.label.toLowerCase()]);\n return sources.find((source) =>\n [source.name, source.modeId].some((identity) => identity !== undefined && candidates.has(identity.toLowerCase())),\n );\n}\n\n/**\n * Catalog-backed rows: the runtime's own activation state per mode, with the\n * declared leader keys attached where a plugin documents them. Declared modes\n * the catalog does not know are still listed, as unavailable, so a mode that\n * is missing from a composition stays visible rather than silently gone.\n */\nfunction catalogMinorModes(sources: readonly MinorModeSource[], projection: MinorModeProjection): MinorMode[] {\n const rows: MinorMode[] = projection.modes\n .filter((mode) => !sourceFor(sources, mode)?.desktopOnly || isDesktopClient())\n .map((mode) => {\n const source = sourceFor(sources, mode);\n const on = mode.activation === 'active' || mode.activation === 'deactivating';\n // The catalog says per action whether it can run here and why not. A mode\n // with nothing runnable is offered as a row that cannot be clicked rather\n // than one that answers \"no actions available\" after the fact.\n const blocked = mode.actions.length > 0 && mode.actions.every((action) => !action.enabled);\n const reason = blocked ? (mode.actions.find((action) => action.disabledReason)?.disabledReason ?? '') : '';\n return {\n name: source?.name ?? mode.label.toLowerCase(),\n id: mode.id,\n keys: source?.keys ?? '',\n availability: blocked && !on ? 'unavailable' : on ? 'on' : 'off',\n ...(source?.activityGroup === undefined ? {} : { activityGroup: source.activityGroup }),\n detail: mode.detail ?? (mode.activation === 'activating' ? 'activating' : ''),\n unavailableReason: reason,\n };\n });\n const seen = new Set(rows.map((row) => row.name));\n for (const source of sources) {\n if (source.hideWhenMissing === true || (source.desktopOnly && !isDesktopClient())) continue;\n if (!seen.has(source.name)) {\n rows.push({\n name: source.name,\n id: source.modeId ?? source.name,\n keys: source.keys,\n availability: 'unavailable',\n ...(source.activityGroup === undefined ? {} : { activityGroup: source.activityGroup }),\n detail: '',\n unavailableReason: 'No package in this session registers this mode.',\n });\n }\n }\n return rows;\n}\n\nexport function minorModes(\n statuses: Record<string, string>,\n widgets: readonly string[],\n projection: MinorModeProjection | null = null,\n): MinorMode[] {\n const declared = pluginMinorModes();\n const sources: readonly MinorModeSource[] = declared.length > 0 ? declared : PACKAGED_MINOR_MODES;\n if (projection) return catalogMinorModes(sources, projection);\n return sources.flatMap((source) => {\n if (source.desktopOnly && !isDesktopClient()) return [];\n if (source.statusKey !== undefined) {\n const raw = statuses[source.statusKey];\n if (raw === undefined) {\n if (source.hideWhenMissing === true) return [];\n return [\n {\n name: source.name,\n id: source.modeId ?? source.name,\n keys: source.keys,\n availability: 'unavailable' as const,\n ...(source.activityGroup === undefined ? {} : { activityGroup: source.activityGroup }),\n detail: '',\n unavailableReason: 'This session has not reported the mode.',\n },\n ];\n }\n const detail = stripAnsi(raw).trim();\n return {\n name: source.name,\n id: source.modeId ?? source.name,\n keys: source.keys,\n availability: detail ? ('on' as const) : ('off' as const),\n ...(source.activityGroup === undefined ? {} : { activityGroup: source.activityGroup }),\n detail,\n unavailableReason: '',\n };\n }\n if (source.widgetKey !== undefined && widgets.includes(source.widgetKey)) {\n return {\n name: source.name,\n id: source.modeId ?? source.name,\n keys: source.keys,\n availability: 'off' as const,\n ...(source.activityGroup === undefined ? {} : { activityGroup: source.activityGroup }),\n detail: '',\n unavailableReason: '',\n };\n }\n return {\n name: source.name,\n id: source.name,\n keys: source.keys,\n availability: 'unavailable' as const,\n ...(source.activityGroup === undefined ? {} : { activityGroup: source.activityGroup }),\n detail: '',\n unavailableReason: 'This session has not reported the mode.',\n };\n });\n}\n\nexport interface ActivityGroup {\n name: string;\n keys: string;\n /** The heading visual its package declares; the dock draws a generic one without it. */\n icon?: ActivityGroupContribution['icon'];\n /** What the publishing extension is reporting, empty when it reports nothing. */\n summary: string;\n active: boolean;\n marksBackgroundWork?: boolean;\n /** The temporary tab the group's name opens, when its package declares one. */\n transientTab?: () => TransientTab;\n /** Keeps the group visible below the dock's scrolling ordinary groups. */\n placement?: 'bottom';\n}\n\n/** Subscribe to package-owned activity sources, rewiring when the focused composition changes. */\nexport function subscribeActivitySources(listener: () => void): () => void {\n let subscriptions: (() => void)[] = [];\n const unsubscribeSources = (): void => {\n subscriptions.forEach((unsubscribe) => unsubscribe());\n subscriptions = [];\n };\n const subscribeSources = (): void => {\n subscriptions = pluginActivityGroups().flatMap((source) =>\n source.activeSource === undefined ? [] : [source.activeSource.subscribe(listener)],\n );\n };\n subscribeSources();\n const unsubscribeRegistry = subscribeWebPluginRegistry(() => {\n unsubscribeSources();\n subscribeSources();\n listener();\n });\n return () => {\n unsubscribeRegistry();\n unsubscribeSources();\n };\n}\n\nfunction activitySourceFingerprint(sessionId: string | null): string {\n const activeSources = pluginActivityGroups()\n .map((source) => (source.activeSource?.isActive(sessionId) === true ? '1' : '0'))\n .join('');\n return `${webPluginRegistryRevision()}:${activeSources}`;\n}\n\n/**\n * The groups available in this plugin composition. Status and widget signals\n * reveal legacy groups. A package-owned active source also reveals its group,\n * including while idle, so the section can remain a stable launcher unless it\n * opts into `hideWhenEmpty`.\n *\n * A group that declared `hideWhenEmpty` goes away once its session stops\n * reporting. Clearing a status reaches the page as an empty string rather than\n * an absent key, because the same map tells the selection bar which minor modes\n * exist and an absent key means \"not reported\" there. Emptiness is read here,\n * where only the dock is looking.\n */\nexport function activityGroups(\n statuses: Record<string, string>,\n widgets: readonly string[],\n sessionId: string | null = null,\n): ActivityGroup[] {\n const groups: ActivityGroup[] = [];\n for (const source of pluginActivityGroups()) {\n const tab = source.transientTab === undefined ? {} : { transientTab: source.transientTab };\n const placement = {\n ...(source.placement === undefined ? {} : { placement: source.placement }),\n ...(source.marksBackgroundWork === false ? { marksBackgroundWork: false } : {}),\n ...(source.icon === undefined ? {} : { icon: source.icon }),\n };\n if (source.statusKey !== undefined && statuses[source.statusKey] !== undefined) {\n const summary = stripAnsi(statuses[source.statusKey] ?? '').trim();\n const active =\n source.activeSource?.isActive(sessionId) ?? (source.marksBackgroundWork !== false && summary.length > 0);\n if (summary.length === 0 && source.hideWhenEmpty === true && !active) continue;\n groups.push({ name: source.name, keys: source.keys, summary, active, ...tab, ...placement });\n continue;\n }\n if (source.widgetKeys !== undefined && source.widgetKeys.some((key) => widgets.includes(key))) {\n const activeKeys = source.activeWidgetKeys ?? source.widgetKeys;\n const active =\n source.activeSource?.isActive(sessionId) ??\n (source.marksBackgroundWork !== false && activeKeys.some((key) => widgets.includes(key)));\n groups.push({ name: source.name, keys: source.keys, summary: '', active, ...tab, ...placement });\n continue;\n }\n if (source.activeSource !== undefined) {\n const active = source.activeSource.isActive(sessionId);\n if (source.hideWhenEmpty === true && !active) continue;\n groups.push({\n name: source.name,\n keys: source.keys,\n summary: '',\n active,\n ...tab,\n ...placement,\n });\n }\n }\n return groups;\n}\n\n/** Dock faces update when the active session composition changes. */\nexport function useDockFaces(sessionId: string | null): readonly DockFaceContribution[] {\n useSyncExternalStore(subscribeWebPluginRegistry, webPluginRegistryRevision, webPluginRegistryRevision);\n const subscribe = (listener: () => void) => {\n const releases = pluginDockFaces().flatMap((face) =>\n face.visibility ? [face.visibility.subscribe(listener)] : [],\n );\n return () => releases.forEach((release) => release());\n };\n const snapshot = () =>\n pluginDockFaces()\n .map((face) => (face.visibility?.isVisible(sessionId) !== false ? '1' : '0'))\n .join('');\n useSyncExternalStore(subscribe, snapshot, snapshot);\n return pluginDockFaces().filter((face) => face.visibility?.isVisible(sessionId) !== false);\n}\n\n/** Activity groups that update when either host signals or a plugin's session store changes. */\nexport function useActivityGroups(\n statuses: Record<string, string>,\n widgets: readonly string[],\n sessionId: string | null,\n): ActivityGroup[] {\n useSyncExternalStore(\n subscribeActivitySources,\n () => activitySourceFingerprint(sessionId),\n () => activitySourceFingerprint(sessionId),\n );\n return activityGroups(statuses, widgets, sessionId);\n}\n\n/** The tab one path opens, or undefined when no installed plugin recognises it. */\nexport type FileLinkResolver = (path: string) => TransientTab | undefined;\n\ninterface FileLinkModes {\n active(sessionId: string | null): readonly string[];\n subscribe(sessionId: string | null, listener: () => void): () => void;\n}\nlet fileLinkModes: FileLinkModes | undefined;\nconst modeBindings = new Set<() => void>();\n\n/** Binds host session facts without making the composition library own session state. */\nexport function bindFileLinkModes(source: FileLinkModes): () => void {\n fileLinkModes = source;\n modeBindings.forEach((listener) => listener());\n return () => {\n if (fileLinkModes !== source) return;\n fileLinkModes = undefined;\n modeBindings.forEach((listener) => listener());\n };\n}\nfunction subscribeFileLinks(sessionId: string | null, listener: () => void): () => void {\n let unsubscribeModes = fileLinkModes?.subscribe(sessionId, listener);\n const rebindModes = () => {\n unsubscribeModes?.();\n unsubscribeModes = fileLinkModes?.subscribe(sessionId, listener);\n listener();\n };\n modeBindings.add(rebindModes);\n let subscriptions: (() => void)[] = [];\n const unsubscribeSources = (): void => {\n subscriptions.forEach((unsubscribe) => unsubscribe());\n subscriptions = [];\n };\n const subscribeSources = (): void => {\n subscriptions = pluginFileLinks().map((source) => source.subscribe(listener));\n };\n subscribeSources();\n const unsubscribeRegistry = subscribeWebPluginRegistry(() => {\n unsubscribeSources();\n subscribeSources();\n listener();\n });\n return () => {\n modeBindings.delete(rebindModes);\n unsubscribeModes?.();\n unsubscribeRegistry();\n unsubscribeSources();\n };\n}\n\nfunction activeFileLinkSources(sessionId: string | null) {\n const enabled = new Set(fileLinkModes?.active(sessionId) ?? []);\n return pluginFileLinks().filter(\n (source) => source.requiredMinorMode === undefined || enabled.has(source.requiredMinorMode),\n );\n}\n\nfunction fileLinkFingerprint(sessionId: string | null): string {\n const sourceFingerprints = activeFileLinkSources(sessionId)\n .map((source) => `${source.requiredMinorMode ?? ''}:${source.fingerprint(sessionId)}`)\n .join('\\n');\n return `${webPluginRegistryRevision()}:${sourceFingerprints}`;\n}\n\n/**\n * The tab a path opens, from the first source that claims it.\n *\n * A path no source claims is not a link. The host cannot tell a file name from\n * a class name, and the plugin that tracks the session's files can, so the\n * decision belongs there rather than in a heuristic here.\n */\nexport function fileLinkFor(sessionId: string | null, path: string): TransientTab | undefined {\n for (const source of activeFileLinkSources(sessionId)) {\n const tab = source.resolve(sessionId, path);\n if (tab !== undefined) return tab;\n }\n return undefined;\n}\n\n/**\n * The tab a path the caller is sure about opens: a tool call's path argument,\n * not a token spotted in prose.\n *\n * A source that offers `openPath` answers here, and it may claim a file the\n * session never changed, which `resolve` deliberately will not. Sources\n * without it fall back to the same guess prose gets.\n */\nexport function fileTabForPath(sessionId: string | null, path: string): TransientTab | undefined {\n for (const source of activeFileLinkSources(sessionId)) {\n const tab = source.openPath?.(sessionId, path) ?? source.resolve(sessionId, path);\n if (tab !== undefined) return tab;\n }\n return undefined;\n}\n/**\n * Resolves the paths a message names against the plugins that track them.\n *\n * The resolver's identity is stable while the linkable set is, so a component\n * that hands it to a renderer does not rebuild that renderer on every frame of\n * a streaming reply.\n */\nexport function useFileLinks(sessionId: string | null): FileLinkResolver {\n const fingerprint = useSyncExternalStore(\n useCallback((listener: () => void) => subscribeFileLinks(sessionId, listener), [sessionId]),\n () => fileLinkFingerprint(sessionId),\n () => fileLinkFingerprint(sessionId),\n );\n return useCallback(\n (path: string) => fileLinkFor(sessionId, path),\n // The fingerprint is the dependency: the same path resolves differently\n // once the session's set of tracked files changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps -- fingerprint is a deliberate identity buster, not a value the callback reads.\n [sessionId, fingerprint],\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { MinorModeProjection } from "../../types/hub.mjs";
|
|
2
|
+
import { ActivityGroupContribution, DockFaceContribution, SelectionAxisContribution, TransientTab } from "@agimon-ai/po-core/web";
|
|
3
|
+
//#region src/web/lib/composition.d.ts
|
|
4
|
+
export interface SelectionAxis {
|
|
5
|
+
name: string;
|
|
6
|
+
command: string;
|
|
7
|
+
/** The current selections, empty while the session reports none; one at most unless multi. */
|
|
8
|
+
values: string[];
|
|
9
|
+
emptyLabel: string;
|
|
10
|
+
multi: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The fallback axis table for the packaged bundle; a synced bundle carries
|
|
14
|
+
* each axis as its owning package's plugin declaration, and the registry
|
|
15
|
+
* list wins whenever any plugin declares one. Exported only so the workspace
|
|
16
|
+
* composition test can hold it equal to what the packages declare.
|
|
17
|
+
*/
|
|
18
|
+
export declare const PACKAGED_SELECTION_AXES: readonly SelectionAxisContribution[];
|
|
19
|
+
/**
|
|
20
|
+
* The declared axes the session actually offers: an axis whose status key
|
|
21
|
+
* the session never published stays off the bar entirely, which is how a
|
|
22
|
+
* package withholds its axis when there is nothing to select.
|
|
23
|
+
*/
|
|
24
|
+
export declare function selectionAxes(statuses: Record<string, string>): SelectionAxis[];
|
|
25
|
+
export type MinorModeAvailability = 'unavailable' | 'off' | 'on';
|
|
26
|
+
export interface MinorMode {
|
|
27
|
+
name: string;
|
|
28
|
+
/** The catalog id /minor accepts; the display name until the catalog reports. */
|
|
29
|
+
id: string;
|
|
30
|
+
/** Leader Space key path, as the TUI documents it. */
|
|
31
|
+
keys: string;
|
|
32
|
+
availability: MinorModeAvailability;
|
|
33
|
+
/** What the mode itself is reporting while on. */
|
|
34
|
+
detail: string;
|
|
35
|
+
/** Activity group to focus instead of invoking the mode command from the cockpit. */
|
|
36
|
+
activityGroup?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Why the mode cannot be driven from here, in the words of the mode itself.
|
|
39
|
+
* Empty when it can. A mode may be installed and still refuse a cockpit:
|
|
40
|
+
* autonomous voice captures from the terminal's own microphone, which a
|
|
41
|
+
* browser talking to a headless agent does not have.
|
|
42
|
+
*/
|
|
43
|
+
unavailableReason: string;
|
|
44
|
+
}
|
|
45
|
+
export interface MinorModeSource {
|
|
46
|
+
name: string;
|
|
47
|
+
/** The catalog mode this row drives, when the runtime registers it under another id. */
|
|
48
|
+
modeId?: string;
|
|
49
|
+
/** Leader Space key path, as the TUI documents it. */
|
|
50
|
+
keys: string;
|
|
51
|
+
/** Activity group to focus instead of invoking the mode command from the cockpit. */
|
|
52
|
+
activityGroup?: string;
|
|
53
|
+
statusKey?: string;
|
|
54
|
+
widgetKey?: string;
|
|
55
|
+
hideWhenMissing?: boolean;
|
|
56
|
+
desktopOnly?: boolean;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The fallback minor-mode table for the packaged bundle.
|
|
60
|
+
*
|
|
61
|
+
* A synced bundle carries each mode as its package's own web plugin
|
|
62
|
+
* contribution, and the registry list wins whenever any plugin declares one.
|
|
63
|
+
* This literal survives only so the built-in-only bundle keeps rendering the
|
|
64
|
+
* modes Po ships; help is listed without a signal on purpose: it
|
|
65
|
+
* registers no footer entry, so the cockpit reports it as unavailable rather
|
|
66
|
+
* than guessing it is off. Exported only for the workspace composition test.
|
|
67
|
+
*/
|
|
68
|
+
export declare const PACKAGED_MINOR_MODES: readonly MinorModeSource[];
|
|
69
|
+
export declare function minorModes(statuses: Record<string, string>, widgets: readonly string[], projection?: MinorModeProjection | null): MinorMode[];
|
|
70
|
+
export interface ActivityGroup {
|
|
71
|
+
name: string;
|
|
72
|
+
keys: string;
|
|
73
|
+
/** The heading visual its package declares; the dock draws a generic one without it. */
|
|
74
|
+
icon?: ActivityGroupContribution['icon'];
|
|
75
|
+
/** What the publishing extension is reporting, empty when it reports nothing. */
|
|
76
|
+
summary: string;
|
|
77
|
+
active: boolean;
|
|
78
|
+
marksBackgroundWork?: boolean;
|
|
79
|
+
/** The temporary tab the group's name opens, when its package declares one. */
|
|
80
|
+
transientTab?: () => TransientTab;
|
|
81
|
+
/** Keeps the group visible below the dock's scrolling ordinary groups. */
|
|
82
|
+
placement?: 'bottom';
|
|
83
|
+
}
|
|
84
|
+
/** Subscribe to package-owned activity sources, rewiring when the focused composition changes. */
|
|
85
|
+
export declare function subscribeActivitySources(listener: () => void): () => void;
|
|
86
|
+
/**
|
|
87
|
+
* The groups available in this plugin composition. Status and widget signals
|
|
88
|
+
* reveal legacy groups. A package-owned active source also reveals its group,
|
|
89
|
+
* including while idle, so the section can remain a stable launcher unless it
|
|
90
|
+
* opts into `hideWhenEmpty`.
|
|
91
|
+
*
|
|
92
|
+
* A group that declared `hideWhenEmpty` goes away once its session stops
|
|
93
|
+
* reporting. Clearing a status reaches the page as an empty string rather than
|
|
94
|
+
* an absent key, because the same map tells the selection bar which minor modes
|
|
95
|
+
* exist and an absent key means "not reported" there. Emptiness is read here,
|
|
96
|
+
* where only the dock is looking.
|
|
97
|
+
*/
|
|
98
|
+
export declare function activityGroups(statuses: Record<string, string>, widgets: readonly string[], sessionId?: string | null): ActivityGroup[];
|
|
99
|
+
/** Dock faces update when the active session composition changes. */
|
|
100
|
+
export declare function useDockFaces(sessionId: string | null): readonly DockFaceContribution[];
|
|
101
|
+
/** Activity groups that update when either host signals or a plugin's session store changes. */
|
|
102
|
+
export declare function useActivityGroups(statuses: Record<string, string>, widgets: readonly string[], sessionId: string | null): ActivityGroup[];
|
|
103
|
+
/** The tab one path opens, or undefined when no installed plugin recognises it. */
|
|
104
|
+
export type FileLinkResolver = (path: string) => TransientTab | undefined;
|
|
105
|
+
interface FileLinkModes {
|
|
106
|
+
active(sessionId: string | null): readonly string[];
|
|
107
|
+
subscribe(sessionId: string | null, listener: () => void): () => void;
|
|
108
|
+
}
|
|
109
|
+
/** Binds host session facts without making the composition library own session state. */
|
|
110
|
+
export declare function bindFileLinkModes(source: FileLinkModes): () => void;
|
|
111
|
+
/**
|
|
112
|
+
* The tab a path opens, from the first source that claims it.
|
|
113
|
+
*
|
|
114
|
+
* A path no source claims is not a link. The host cannot tell a file name from
|
|
115
|
+
* a class name, and the plugin that tracks the session's files can, so the
|
|
116
|
+
* decision belongs there rather than in a heuristic here.
|
|
117
|
+
*/
|
|
118
|
+
export declare function fileLinkFor(sessionId: string | null, path: string): TransientTab | undefined;
|
|
119
|
+
/**
|
|
120
|
+
* The tab a path the caller is sure about opens: a tool call's path argument,
|
|
121
|
+
* not a token spotted in prose.
|
|
122
|
+
*
|
|
123
|
+
* A source that offers `openPath` answers here, and it may claim a file the
|
|
124
|
+
* session never changed, which `resolve` deliberately will not. Sources
|
|
125
|
+
* without it fall back to the same guess prose gets.
|
|
126
|
+
*/
|
|
127
|
+
export declare function fileTabForPath(sessionId: string | null, path: string): TransientTab | undefined;
|
|
128
|
+
/**
|
|
129
|
+
* Resolves the paths a message names against the plugins that track them.
|
|
130
|
+
*
|
|
131
|
+
* The resolver's identity is stable while the linkable set is, so a component
|
|
132
|
+
* that hands it to a renderer does not rebuild that renderer on every frame of
|
|
133
|
+
* a streaming reply.
|
|
134
|
+
*/
|
|
135
|
+
export declare function useFileLinks(sessionId: string | null): FileLinkResolver;
|
|
136
|
+
//#endregion
|
|
137
|
+
//# sourceMappingURL=composition.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition.d.mts","names":[],"sources":["../../../src/web/lib/composition.ts"],"mappings":";;;iBAqBiB;EACf;EACA;;EAEA;EACA;EACA;;;;;;;;qBAWW,kCAAkC;;;;;;wBAU/B,cAAc,UAAU,yBAAyB;YAcrD;iBAEK;EACf;;EAEA;;EAEA;EACA,cAAc;;EAEd;;EAEA;;;;;;;EAOA;;iBAGe;EACf;;EAEA;;EAEA;;EAEA;EACA;EACA;EACA;EACA;;;;;;;;;;;;qBAaW,+BAA+B;wBAwE5B,WACd,UAAU,wBACV,4BACA,aAAY,6BACX;iBAwDc;EACf;EACA;;EAEA,OAAO;;EAEP;EACA;EACA;;EAEA,qBAAqB;;EAErB;;;wBAIc,yBAAyB;;;;;;;;;;;;;wBA0CzB,eACd,UAAU,wBACV,4BACA,4BACC;;wBA0Ca,aAAa,oCAAoC;;wBAiBjD,kBACd,UAAU,wBACV,4BACA,2BACC;;YAUS,oBAAoB,iBAAiB;UAEvC;EACR,OAAO;EACP,UAAU,0BAA0B;;;wBAMtB,kBAAkB,QAAQ;;;;;;;;wBA4D1B,YAAY,0BAA0B,eAAe;;;;;;;;;wBAgBrD,eAAe,0BAA0B,eAAe;;;;;;;;wBAcxD,aAAa,2BAA2B"}
|